LaFonera Software Universal-Repeater

From DD-WRT Wiki

Jump to: navigation, search

You are here: DD-WRT wiki mainpage / LaFonera / Software / Universal-Repeater


Contents

[edit] Lets try something different

i saw a nice webpage for the original fonera-firmware. With the script "ponte2" universal repeating should be possible.

So i decided to port it to work on dd-wrt. Yet I think the basic functionality is running, but it should be tested and some things should be changed.

I placed the files which are nessesary on my websrver and made them available to the rest of you.

To install the script you just run these commands:

cd /tmp
rm -r universalRepeating
rm -r universalRepeating.tar.gz
wget http://www.wildblue.de/universalRepeating.tar.gz
tar xzvf universalRepeating.tar.gz
cd universalRepeating/etc/
cp ponte2.conf.txt ponte2.conf
cp ponte2 universalRepeating


in the console. A directory named /tmp/universalRepeating will be created. You can start the script with the command: "sh universalRepeating"

You can change the file and repost it here, to apply more functionality to this script.

I made it as good working as possible, but i think some things are not working yet, so please take a look over it to make it working 100%.

feel free to contact me at ben(at)wildblue.de


[edit] the script

here is the source:

#!/bin/sh
# /etc/ponte2 
#****************************************************************************
#  20070325 version
# more about this script can be found at: http://www.blogin.it/fonera4.php
# ansanto@interfree.it
#****************************************************************************

#----------------------------------------------------------------------------
# setup_env.  Function that setups environment 
setup_env () {
# Set the default values of all environment variables here
logDir=/var/log
tmpDir=/tmp
acl_list=/etc/acl_list.conf
myself=`basename $0`
logFile=$logDir/$myself.log
oggi=$(date)
IWCONFIG=/usr/sbin/iwconfig
IFCONFIG=/sbin/ifconfig
WLANCONFIG=/usr/sbin/wlanconfig
IWPRIV=/usr/sbin/iwpriv
NETFILTER=/usr/sbin/iptables
ROUTE=/sbin/route
rm -f /tmp/results

echo "$oggi: start"
echo "$oggi: start" >> $logFile
if [ -f /tmp/universalRepeating/etc/ponte2.conf ]; then
	. /tmp/universalRepeating/etc/ponte2.conf
else
	echo "/tmp/universalRepeating/etc/ponte2.conf not found"
	echo "/tmp/universalRepeating/etc/ponte2.conf not found" >> $logFile
	echo "stop and exit"	
	echo "stop and exit" >> $logFile
	exit 1
fi

# ip_forward is set to 1 by default in fonera configuration
# echo 1 > /proc/sys/net/ipv4/ip_forward

# stop daemons
local web=httpd
local cron=crond
local dns=dnsmasq
#if [ ! -z "$( pidof $web )" ]; then
#  kill $(pidof $web) > /dev/null
#fi
if [ ! -z "$( pidof $cron )" ]; then
  kill $(pidof $cron) > /dev/null
fi
if [ ! -z "$( pidof $dns )" ]; then
  kill $(pidof $dns) >> /dev/null
fi
killall -9 udhcpc > /dev/null

# flush_netfilter tables
$NETFILTER -F
$NETFILTER -P INPUT ACCEPT
$NETFILTER -P OUTPUT ACCEPT
$NETFILTER -P FORWARD ACCEPT
$NETFILTER -t nat -F
echo "netfilter tables flushed"
echo "netfilter tables flushed" >> $logFile
} # setup_env


#-------------------------------------------------------------------------------
# hardening Function that sets some TCP/IP parameters
hardening () {
if [ $khard == 1 ]; then
  # Disable tcp_sack support
  echo "0" > /proc/sys/net/ipv4/tcp_sack
  # Disable TCP window_scaling
  echo "0" > /proc/sys/net/ipv4/tcp_window_scaling
  # Disable source routing
  echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route
  echo "0" > /proc/sys/net/ipv4/conf/lo/accept_source_route
  echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
  echo "0" > /proc/sys/net/ipv4/conf/ath0/accept_source_route
  echo "0" > /proc/sys/net/ipv4/conf/ath1/accept_source_route
  echo "0" > /proc/sys/net/ipv4/conf/default/accept_source_route
  # Enable TCP SYN Cookie potection
  echo "1" > /proc/sys/net/ipv4/tcp_syncookies
  # No ICMP Redirect
  echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
  echo "0" > /proc/sys/net/ipv4/conf/lo/accept_redirects
  echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_redirects
  echo "0" > /proc/sys/net/ipv4/conf/ath0/accept_redirects
  echo "0" > /proc/sys/net/ipv4/conf/ath1/accept_redirects
  echo "0" > /proc/sys/net/ipv4/conf/default/accept_redirects
  # Enable IP spoofing protection 
  echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
  echo "1" > /proc/sys/net/ipv4/conf/lo/rp_filter
  echo "1" > /proc/sys/net/ipv4/conf/eth0/rp_filter
  echo "1" > /proc/sys/net/ipv4/conf/ath0/rp_filter
  echo "1" > /proc/sys/net/ipv4/conf/ath1/rp_filter
  echo "1" > /proc/sys/net/ipv4/conf/default/rp_filter
  echo "fonera hardened"
  echo "fonera hardened" >> $logFile
fi  

if [ $klog == 1 ]; then
  echo "1" > /proc/sys/net/ipv4/conf/all/log_martians = 1
  echo "1" > /proc/sys/net/ipv4/conf/lo/log_martians = 1
  echo "1" > /proc/sys/net/ipv4/conf/eth0/log_martians = 1
  echo "1" > /proc/sys/net/ipv4/conf/ath0/log_martians = 1
  echo "1" > /proc/sys/net/ipv4/conf/ath1/log_martians = 1
  echo "1" > /proc/sys/net/ipv4/conf/default/log_martians = 1
  echo "logging malicyous packests activated"
  echo "logging malicyous packests activated" >> $logFile
fi
} # hardening


#-------------------------------------------------------------------------------
# vaps. Function that destsoys VAP and create new
vaps () {
# bring down first VAP ath0
$WLANCONFIG ath0 destroy

# bring down second VAP ath0
$WLANCONFIG ath1 destroy

# bring up first VAP ath0 as Access Point
$WLANCONFIG ath0 create wlandev wifi0 wlanmode ap
echo "created VAP ath0 as AP"
echo "created VAP ath0 as AP" >> $logFile
# bring up second VAP ath1 as station managed
# nosbeacon disables the use of hardware beacon timers for ath1
# (the station should not modify the TSF clock for the AP)
$WLANCONFIG ath1 create wlandev wifi0 wlanmode sta nosbeacon
echo "created VAP ath1 as station"
echo "created VAP ath1 as station" >> $logFile
} # vaps


#-------------------------------------------------------------------------------
create_MONITOR () {
# bring up VAP ath2 in monitor mode 
if [ $modeMonitor == 1 ]; then
  case $kheaders in
    11) # Only 802.11 headers
    echo '801' > /proc/sys/net/ath0/dev_type
    ;;
    2) # Prism2 headers
    echo '802' > /proc/sys/net/ath0/dev_type
    ;;
    3) # Radiotap headers
    echo '803' > /proc/sys/net/ath0/dev_type
    ;;
    4) # Atheros Descriptors
    echo '804' > /proc/sys/net/ath0/dev_type 
    ;;
  esac
  $WLANCONFIG ath2 create wlandev wifi0 wlanmode monitor
  $IFCONFIG ath2 up
  echo "created VAP ath2 as monitor"
  echo "created VAP ath2 as monitor" >> $logFile
fi
} # create_MONITOR


#-------------------------------------------------------------------------------
# setup_AP. Function that setup ath0 as an Access Point
setup_AP () {
# wireless mode
# does not work on dd-wrt
#case $wMode in
#  0) $IWPRIV ath0 mode auto ;;
#  1) $IWPRIV ath0 mode 11a  ;;
#  2) $IWPRIV ath0 mode 11b  ;;
#  3) $IWPRIV ath0 mode 11g  ;;
#  4) $IWPRIV ath0 mode fh   ;;
#  5) $IWPRIV ath0 mode 11adt/111at ;;
#  6) $IWPRIV ath0 mode 11gdt/11gt  ;;
#  7) $IWPRIV ath0 mode 11ast ;;
#esac  

if [ $kssid == 1 ]; then 
  $IWCONFIG ath1 | grep ESSID > /tmp/universalRepeating/ponte_per
  INI=32
  FIN=$(cat /tmp/universalRepeating/ponte_per | wc -c)
  : $((FIN = $FIN - 4))
  AP=$(cut /tmp/universalRepeating/ponte_per -c $INI-$FIN)
  $IWCONFIG ath0 essid "relay_$AP"
  echo "ath0 is relay for "$AP
  echo "ath0 is relay for "$AP >> $logFile
  else
  $IWCONFIG ath0 essid "$SSID_ath0"
fi

# WEP key
case $kwep in
  1) #WEP key as ASII string
  $IWCONFIG ath0 key s:$WepKey_ath0
  echo "ath0 WEP key: "$WepKey_ath0
  echo "ath0 WEP key: "$WepKey_ath0 >> $logFile
  ;;
  2) #targeted external AP via WEP key in hex
  $IWCONFIG ath0 key $WepKey_ath0
  echo "ath0 WEP key: "$WepKey_ath0
  echo "ath0 WEP key: "$WepKey_ath0 >> $logFile
  ;;
esac

# enable 802.11 SSID broadcsating on ath0
$IWPRIV ath0 hide_ssid 0
if [ $hideSSID == 1 ]; then
  $IWPRIV ath0 hide_ssid 1
fi

# ACL management
case $aclMode in
  1) # only allow MACSs in the ACL list
  $IWPRIV ath0 maccmd 3
  $IWPRIV ath0 maccmd 1
  for i in $(cat $acl_list); do
    $IWPRIV ath0 addmac $i
  done
  ;;
  2) # only deny MACs in the ACL list
  $IWPRIV ath0 maccmd 3
  $IWPRIV ath0 maccmd 2
  for i in $(cat $acl_list); do
    $IWPRIV ath0 addmac $i
  done
  ;;
  *) # no ACL checking is performed
  $IWPRIV ath0 maccmd 0
  ;;
esac  
} # setup_AP


#-------------------------------------------------------------------------------
# setup_STA. Function that setup ath1 as repeater
setup_STA () {
  case $kwepSta in
    0) # no encryption
      case $ath1_mode in
      1) # point an external AP automatically with no encryption
      $IWCONFIG ath1 ap auto
      echo "ath1 interface automatically (no encryption): "
      echo "ath1 interface automatically (no encryption): "$TargetSsid
      ;;
      2) # point an external AP by SSID with no encryption
      $IWCONFIG ath1 mode managed essid $TargetSsid
      echo "ath1 interface via SSID (no encryption): "$TargetSsid
      echo "ath1 interface via SSID (no encryption): "$TargetSsid >> $logFile
      ;;
      3) # point an external AP by MAC with no encryption
      $IWCONFIG ath1 mode managed ap $TargetMac
      echo "ath1 interface via MAC (no encryption): "$TargetMac
      echo "ath1 interface via MAC (no encryption): "$TargetMac >> $logFile
      ;;
      esac
    ;;

    1) # WEP key as ASCII string
      case $ath1_mode in
      1) # point an external AP automatically with WEP encryption (ASCII)
         # not working without encryption !
      echo "(error) point an external AP automatically with WEP encryption (WEP ASCII)"
      echo "(error) point an external AP automatically with WEP encryption (WEP ASCII)" >> $logFile
      exit 1
      ;;
      2) # point an external AP by SSID with WEP encryption (ASCII)
      $IWCONFIG ath1 key "s:$WepKey_ath1"
      $IWCONFIG ath1 mode managed essid $TargetSsid
      echo "ath1 interface via SSID (WEP ASCII) : "$TargetSsid" ("$WepKey_ath1")"
      echo "ath1 interface via SSID (WEP ASCII) : "$TargetSsid" ("$WepKey_ath1")" >> $logFile
      ;;
      3) # point an external AP by MAC with WEP encryption (ASCII)
      $IWCONFIG ath1 key "s:$WepKey_ath1"
      $IWCONFIG ath1 mode managed ap $TargetMac
      echo "ath1 interface via MAC  (WEP ASCII) : "$TargetMac" ("$WepKey_ath1")"
      echo "ath1 interface via MAC  (WEP ASCII) : "$TargetMac" ("$WepKey_ath1")" >> $logFile
      ;;
      esac
    ;;

    2) # WEP key as HEX string
      case $ath1_mode in
      1) # point an external AP automatically with WEP encryption (HEX)
         # not working without encryption !
      echo "(error) point an external AP automatically with WEP encryption (WEP HEX)"
      echo "(error) point an external AP automatically with WEP encryption (WEP HEX)" >> $logFile
      exit 1
      ;;
      2) # point an external AP by SSID with WEP encryption (HEX)
      $IWCONFIG ath1 key "$WepKey_ath1"
      $IWCONFIG ath1 mode managed essid $TargetSsid
      echo "ath1 interface via SSID (WEP HEX) : "$TargetSsid" ("$WepKey_ath1")"
      echo "ath1 interface via SSID (WEP HEX) : "$TargetSsid" ("$WepKey_ath1")" >> $logFile
      ;;
      3) # point an external AP by MAC with WEP encryption (HEX)
      $IWCONFIG ath1 key "$WepKey_ath1"
      $IWCONFIG ath1 mode managed ap $TargetMac
      echo "ath1 interface via MAC (WEP HEX) : "$TargetMac" ("$WepKey_ath1")"
      echo "ath1 interface via MAC (WEP HEX) : "$TargetMac" ("$WepKey_ath1")" >> $logFile
      ;;
      esac
    ;;
  esac

# IP config for ath1
if [ $ath1_mode == 1 ]; then 
  #simply discover strongest external AP   dyanamic IP configuration
  /sbin/udhcpc -i ath1 >> $logFile
  $IWCONFIG ath1 | grep ESSID | awk '"external AP " {print $4}' >> $logFile
  echo "ath1 interface via external dhcp"
  echo "ath1 interface via external dhcp" >> $logFile  
  else 
  # satic IP configuration
  $IFCONFIG ath1 $IP_ath1 netmask $MASK_ath1 up
  $ROUTE del default 
  $ROUTE add default gw $DFGW
  echo "nameserver " $NAMESERVER1  > /etc/resolv.conf
  echo "nameserver " $NAMESERVER2 >> /etc/resolv.conf
fi

$NETFILTER -t nat -A POSTROUTING -o ath1 -j MASQUERADE
} # setup_STA


#-------------------------------------------------------------------------------
# setup_2ifaces. Function that sets up 2 IP interface (eth0 and ath0)
setup_ifaces () {
# static eth0 IP configuration
$IFCONFIG eth0 $IP_eth0 netmask $MASK_eth0 up
echo "eth0 interface: "$IP_eth0/$MASK_eth0
echo "eth0 interface: "$IP_eth0/$MASK_eth0 >> $logFile
# static ath0 IP configuration
$IFCONFIG ath0 $IP_ath0 netmask $MASK_ath0 up
echo "ath0 interface: "$IP_ath0/$MASK_ath0
echo "ath0 interface: "$IP_ath0/$MASK_ath0 >> $logFile
} # setup_2ifaces


#-------------------------------------------------------------------------------
# setup_bridge. Function that setup a bridge between eth0 and ath0
setup_bridge () {
$IFCONFIG eth0 0.0.0.0 up
$IFCONFIG ath0 0.0.0.0 up
# bring up a bridge called br0
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 ath0
# static br0 IP configuration
$IFCONFIG br0 $IP_br0 netmask $MASK_br0 up
echo "br0 interface: "$IP_br0/$MASK_br0
echo "br0 interface: "$IP_br0/$MASK_br0 >> $logFile
} # setup bridge


#-------------------------------------------------------------------------------
# std_routing. Standard routing
std_routing () {
# forwarding between the subnets
echo 1
echo 1 > /proc/sys/net/ipv4/ip_forward
$NETFILTER -t nat -A POSTROUTING -o ath1 -j MASQUERADE
# support for p2p
if [ $btorrent == 1 ]; then
  BTports="6890 6891 6892 6893 6894 6895 6896 6897 6898 6899"
  for pt in $BTports; do
    $NETFILTER -t nat -A PREROUTING -i ath1 -p tcp --dport $pt -j DNAT --to $IP_client_btorrent:$pt
  done
fi
if [ $xmule == 1 ]; then
  echo "32752"
  echo "32752" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
  $NETFILTER -t nat -A PREROUTING -i ath1 -p tcp --dport 4662 -j DNAT --to $IP_client_xmule:4662
  $NETFILTER -t nat -A PREROUTING -i ath1 -p udp --dport 4672 -j DNAT --to $IP_client_xmule:4672
fi
} # std_routing


#-------------------------------------------------------------------------------
# main
#-------------------------------------------------------------------------------
#clear
# learn environment
setup_env

# bring up WIRELESS
vaps
setup_STA
setup_AP

# create monitor interface
if [ $modeMonitor == 1 ]; then 
  create_MONITOR
fi

# bring up IP
# two separated interfaces (ath0 eth0) or a bridge (br0)
if [ $bridge_mode == 1 ]; then 
  setup_bridge
  $NETFILTER -t nat -A POSTROUTING -o br0 -j MASQUERADE  
  else
  setup_2ifaces
  $NETFILTER -t nat -A POSTROUTING -o eth0 -j MASQUERADE
fi

# start DHCP
if [ $kdhcp == 1 ]; then
  /usr/sbin/dnsmasq -a $IP_dhcp
fi

# hardening some TCP/IP parameters
hardening
# and setting some netfilter rules 
std_routing
# so, show results
$IWCONFIG > /tmp/results
$IFCONFIG >> /tmp/results
#clear
more /tmp/results
exit 0

# have fun!


[edit] the config file

And the config-file:

# /etc/ponte2.conf.txt
# 20070325 version
#
# be careful:
# EDIT THIS FILE AND SAVE AS /ETC/PONTE2.CONF
# 
# NO SPACE BETWEEN = AND VALUE
# parameter = value <---- WRONG 
# parameter=value   <---- RIGHT 
#
#-------------------
# only-Access-Point
#-------------------
# set only_AP=1 if you plan to use Fonera only as Access Point (bridging its eth0)
# The only-Access-Point mode NEEDS bridge_mode=1 in bridge configuration.
# It's also recomended to set kdhcp=1 in order to start DHCP service listening on br0
only_AP=0
# If only_AP=1 uncomment for SSID broadcasted by AP
#only_AP_essid=fonera
#
#--------------------------------
# configuring Access Point (ath0)
#--------------------------------
# wireless mode - default is 0 - only change if you know what you are doing!
#wMode=0	#wireless mode auto
#wMode=1	#wireless mode 11a
#wMode=2	#wireless mode 11b
#wMode=3	#wireless mode 11g
#wMode=4	#wireless mode fh
#wMode=5	#wireless mode 11adt/111at
#wMode=6	#wireless mode 11gdt/11gt
#wMode=7	#wireless mode 11ast
wMode=0
#
# access control list based on MAC
# you must create the file /etc/acl_list.conf with
# ONLY one mac address per line
aclMode=0 
# 
# do not edit kwep!
Kwep=0
#
# SSID auto detect
kssid=1
# SSID is manual
#kssid=0
#SSID_ath0=
#
# 802.11 SSID broadcasting on ath0
# enable
hideSSID=0
# disable
#hideSSID=1
#
# !! if you plan to use a bridge you can skip the IP configuration !!
# IP configuration for ath0
# wifi iface of your pc must be in this subnet
IP_ath0=192.168.1.30
MASK_ath0=255.255.255.0
#
#---------------------------------------
# configuring eth0 interface (wired lan)
#---------------------------------------
# !! if you plan to use bridge you can skip !!
IP_eth0=192.168.1.3
MASK_eth0=255.255.255.0
#
#----------------------------------------
# configuring bridge br0 (ath0 - eth0)
#----------------------------------------
#bridge_mode=0
bridge_mode=1
IP_br0=192.168.1.3
MASK_br0=255.255.255.0
#
# ------------
# DHCP service
# ------------
# Remember: you must edit /etc/dnsmasq.conf 
#kdhcp=0
kdhcp=1
# dnsmasq listen-on address
# Using the bridge this is the IP address of br0 !
IP_dhcp=192.168.1.3
#
#-------------------------------------
# configuring Station (ath1)
#-------------------------------------
# discovering stronger external AP and his dhcpd 
#ath1_mode=1 
#
# targeted external AP by SSID
ath1_mode=2
TargetSsid=Bodelschwinghstr38
#
# targeted external AP by MAC
#ath1_mode=3
#TargetMac=aa:bb:cc:dd:ee:ff
#
# targeted external AP via WPA-PSK (WPA personal)
# need /etc/wpa_supplicant.conf !
#ath1_mode=4
#TargetWpa=WPA_PASSPHRASE
#
# targeted external AP via WEP
# no
#kwepSta=0
# yes, key as ASCII string (51)
#kwepSta=1
# yes, key in hex (52)
kwepSta=2
# put here the key
WepKey_ath1=ab280781ba280781ab28071981
#
# static IP configuration
IP_ath1=192.168.1.3
MASK_ath1=255.255.255.0
# default gateway
DFGW=192.168.1.2
# name servers
NAMESERVER1=151.99.125.3
NAMESERVER2=159.213.32.232
#
#--------------------
# p2p port forwarding 
#--------------------
#xmule=1
#IP_client_xmule=192.168.10.20
xmule=0
#
#btorrent=1
#IP_client_btorrent=192.168.10.20
btorrent=0
#
#----------------------------------
# use of a monitor interface
#----------------------------------
modeMonitor=0
#modeMonitor=1
# By default, monitor mode receives packets with prism2 headers prepended on them.
# To change this, you must set the appropriate value for kheaders (default=2)
kheaders=2
#
#---------------------------------
# hardening some TCP/IP parameters
#---------------------------------
#khard=1
khard=0
#
#----------------------------------
# logging malicyous TCP/IP packests
#----------------------------------
#klog=1
klog=0
#
# the end




[edit] Notes

THIS GUIDE DOES NOT WORK AT THIS TIME. DO NOT EXPECT IT TO WORK. THIS NOTICE WILL BE REMOVED WHEN IT DOES.

A working method is presented at http://www.blogin.it/fonera4.php [link is dead.]

[edit] Introduction

This How-To provides step-by-step instructions for creating a Universal Wireless Repeater appliance: a device that you can place anywhere and it will wirelessly repeat the strongest signal, onto another wireless network (with or without security). This functionality is also known as Wireless Client Bridge, or Range Expander. Unlike WDS, once you have this appliance setup, it will work with any open network.

Architecturally the repeater connects to another wireless router as a client, getting a single IP address via DHCP. Effectively the SSID network it connects to becomes your ISP. Therefore you (the client) will operate in your own IP address space, which is different from address space the repeater connects to.

For example:

In a given neighborhood, there are 3 open access wireless networks, jojo, linksys and internetmad. The repeater automatically receives an IP address from jojo. Let's say jojo is using 192.168.1.0/24, and your DDWRT router receives the address 192.168.1.139. The repeater is configured to use 172.16.100.0/24. From your laptop, you associate with the SSID "repeater" and you receive the address 172.16.101.100 via DHCP. As far as your laptop is concerned you are talking to repeater. As far as repeater is concerned, its gateway is "jojo" and jojo probably has another gateway via cable modem or DSL.

[edit] Prerequisites

It takes me just a couple minutes to follow these instructions (but I've done this before).

[edit] Instructions

1. Install DD-WRT v24 beta (v23 will not work).

  • Build 2006-0911 is known to be stable for repeater mode. Users also report success with newer builds like 2007-0109.
  • Keep ethernet cable connected for these instructions (to have connectivity across wireless network changes).


2. Go to tab "Setup", sub-tab "Basic Setup":

  • Change "local IP address" to a unique subnet (different than device you wish to repeat), such as 192.168.69.1.
  • Save settings.

Image:Uwr_screen1.JPG


3. Point your browser to the new IP address you chose in the previous step. Go to tab "Security", sub-tab "Firewall":

  • Uncheck all check boxes and set firewall to "disable".
  • Save settings.

Image:Uwr_screen2.JPG


4. Go to tab "Wireless", sub-tab "Basic Settings":

  • Set Wireless Mode to "Repeater"
  • Click on "Add" under Virtual Interfaces, and enter an SSID (such as "repeater") and set "Wireless Network Name (SSID)" to the network you wish to repeat (and AP Isolation is "disabled" and Network Configuration is "Bridged"). If you want the source network (the one you're repeating) to be dynamically acquired, see steps below.
  • Note: the screenshot is from build 2006-0911. In newer builds there is a Network Configuration option (Bridged/Unbridged) for both Physical and Virtual Interfaces. For both options, set Network Configuration to "Bridged".
  • Optional: Set Wireless Channel to "Auto" (or your preferred channel), and set Sensitivy Range to "0" for performance enhancements.
  • Click "Save Settings".

Image:Uwr_screen3.JPG


5. To repeat any network dynamically (make this a universal wireless repeater), the following will make the repeater connect to the first available SSID:

  • Go to tab "Administration", subtab "Command".
  • Copy and paste the following into the edit box:
nvram set wl_ssid=""
  • Click the Save Startup button.
  • Note: this will not automatically repeat secure/encrypted networks. If your source network uses WEP or WPK, enter the ssid under the Physical Interface in step 4 instead, and proceed to the next step.


6. You may use security (WEP, WPA, etc) in repeater mode. An example application of this would be to make the repeated network private (for your use only).

  • Go to tab "Wireless", sub-tab "Wireless Security".
  • Setup WEP (or other security) under virtual interface.
  • Configure your client/computer to use the same security.

Image:Uwr_screen4.JPG

  • Notice in the screenshot above you may also configure security for the physical interface (source) network if you wish to repeat a secure network. In the example this is disabled. If you enable this, the dynamic repeating functionality may not work (since you're hard configuring the source network).
  • Note: for build 2006-0911, only one interface can have security - not both simultaneously. This is fixed in latest builds (2007-0109 and newer). See "Known Issues" below.


7. The first time you connect to the repeater (wirelessly), or after disconnect, you may need to perform a "repair wireless network connection". For example, in XP, right click on the wireless icon and select "Repair".


[edit] Optimizations

8. If you wish to dynamically repeat the STRONGEST signal (a more sophisticated version of #5 above) please read the AutoAP Wiki Article.

AutoAP is a script that continuously scans for open wifi connections, tests them for validity, and connects to the strongest signal. If the connection is lost, the script scans again and finds the strongest valid signal again, and maintains a continuous connection to the internet in a mobile or portable environment. The script paremeters are highly configurable, including ability to configure secure connections.


9. For optional repeater performance enhancements:

  • Go to tab "Wireless", subtab "Advanced Settings". Set "Preamble" to "Short". Set "Xmit Power" to higher than default (I use 200). Click "Save Settings".

[edit] Troubleshooting

  • If you are having problems getting repeater mode working, first setup Client Mode or Client-Bridged Mode as a test. Once you have client mode working, then switch to repeater mode (keeping all your other settings) - verify its still working, and then add the virtual interface(s).
  • The first time you connect to the repeater (wirelessly), or after disconnect, you may need to perform a "repair wireless network connection". For example, in XP, right click on the wireless icon and select "Repair".
  • See Known Issues below.


[edit] Known Issues

  • Build 0911: Bugtracker has an entry "Cannot use two SSIDs with different encryption settings at the same time." For repeater mode, this may mean you cannot have security on the physical and virtual interface at the same time for some builds. See bugtracker entry. This seems resolved in build 2007-0109.