123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492 |
- The WiFi settings are configured in the file \texttt{/etc/config/wireless}
- (currently supported on Broadcom, Atheros and mac80211). When booting the router for the first time
- it should detect your card and create a sample configuration file. By default '\texttt{option network lan}' is
- commented. This prevents unsecured sharing of the network over the wireless interface.
- Each wireless driver has its own configuration script in \texttt{/lib/wifi/driver\_name.sh} which handles
- driver specific options and configurations. This script is also calling driver specific binaries like wlc for
- Broadcom, or hostapd and wpa\_supplicant for atheros and mac80211.
- The reason for using such architecture, is that it abstracts the driver configuration.
- \paragraph{Generic Broadcom wireless config:}
- \begin{Verbatim}
- config wifi-device "wl0"
- option type "broadcom"
- option channel "5"
- config wifi-iface
- option device "wl0"
- # option network lan
- option mode "ap"
- option ssid "OpenWrt"
- option hidden "0"
- option encryption "none"
- \end{Verbatim}
- \paragraph{Generic Atheros wireless config:}
- \begin{Verbatim}
- config wifi-device "wifi0"
- option type "atheros"
- option channel "5"
- option hwmode "11g"
- config wifi-iface
- option device "wifi0"
- # option network lan
- option mode "ap"
- option ssid "OpenWrt"
- option hidden "0"
- option encryption "none"
- \end{Verbatim}
- \paragraph{Generic mac80211 wireless config:}
- \begin{Verbatim}
- config wifi-device "wifi0"
- option type "mac80211"
- option channel "5"
- config wifi-iface
- option device "wlan0"
- # option network lan
- option mode "ap"
- option ssid "OpenWrt"
- option hidden "0"
- option encryption "none"
- \end{Verbatim}
- \paragraph{Generic multi-radio Atheros wireless config:}
- \begin{Verbatim}
- config wifi-device wifi0
- option type atheros
- option channel 1
- config wifi-iface
- option device wifi0
- # option network lan
- option mode ap
- option ssid OpenWrt_private
- option hidden 0
- option encryption none
- config wifi-device wifi1
- option type atheros
- option channel 11
- config wifi-iface
- option device wifi1
- # option network lan
- option mode ap
- option ssid OpenWrt_public
- option hidden 1
- option encryption none
- \end{Verbatim}
- There are two types of config sections in this file. The '\texttt{wifi-device}' refers to
- the physical wifi interface and '\texttt{wifi-iface}' configures a virtual interface on top
- of that (if supported by the driver).
- A full outline of the wireless configuration file with description of each field:
- \begin{Verbatim}
- config wifi-device wifi device name
- option type broadcom, atheros, mac80211
- option country us, uk, fr, de, etc.
- option channel 1-14
- option maxassoc 1-128 (broadcom only)
- option distance 1-n (meters)
- option hwmode 11b, 11g, 11a, 11bg (atheros, mac80211)
- option rxantenna 0,1,2 (atheros, broadcom)
- option txantenna 0,1,2 (atheros, broadcom)
- option txpower transmission power in dBm
- config wifi-iface
- option network the interface you want wifi to bridge with
- option device wifi0, wifi1, wifi2, wifiN
- option mode ap, sta, adhoc, monitor, mesh, or wds
- option txpower (deprecated) transmission power in dBm
- option ssid ssid name
- option bssid bssid address
- option encryption none, wep, psk, psk2, wpa, wpa2
- option key encryption key
- option key1 key 1
- option key2 key 2
- option key3 key 3
- option key4 key 4
- option passphrase 0,1
- option server ip address
- option port port
- option hidden 0,1
- option isolate 0,1 (broadcom)
- option doth 0,1 (atheros, broadcom)
- option wmm 0,1 (atheros, broadcom)
- \end{Verbatim}
- \paragraph{Options for the \texttt{wifi-device}:}
- \begin{itemize}
- \item \texttt{type} \\
- The driver to use for this interface.
-
- \item \texttt{country} \\
- The country code used to determine the regulatory settings.
- \item \texttt{channel} \\
- The wifi channel (e.g. 1-14, depending on your country setting).
- \item \texttt{maxassoc} \\
- Optional: Maximum number of associated clients. This feature is supported only on the Broadcom chipsets.
- \item \texttt{distance} \\
- Optional: Distance between the ap and the furthest client in meters. This feature is supported only on the Atheros chipsets.
- \item \texttt{mode} \\
- The frequency band (\texttt{b}, \texttt{g}, \texttt{bg}, \texttt{a}). This feature is only supported on the Atheros chipsets.
- \item \texttt{diversity} \\
- Optional: Enable diversity for the Wi-Fi device. This feature is supported only on the Atheros chipsets.
- \item \texttt{rxantenna} \\
- Optional: Antenna identifier (0, 1 or 2) for reception. This feature is supported by Atheros and some Broadcom chipsets.
- \item \texttt{txantenna} \\
- Optional: Antenna identifier (0, 1 or 2) for emission. This feature is supported by Atheros and some Broadcom chipsets.
- \item \texttt{txpower}
- Set the transmission power to be used. The amount is specified in dBm.
- \end{itemize}
- \paragraph{Options for the \texttt{wifi-iface}:}
- \begin{itemize}
- \item \texttt{network} \\
- Selects the interface section from \texttt{/etc/config/network} to be
- used with this interface
- \item \texttt{device} \\
- Set the wifi device name.
- \item \texttt{mode} \\
- Operating mode:
- \begin{itemize}
- \item \texttt{ap} \\
- Access point mode
- \item \texttt{sta} \\
- Client mode
- \item \texttt{adhoc} \\
- Ad-Hoc mode
- \item \texttt{monitor} \\
- Monitor mode
- \item \texttt{mesh} \\
- Mesh Point mode (802.11s)
- \item \texttt{wds} \\
- WDS point-to-point link
- \end{itemize}
- \item \texttt{ssid}
- Set the SSID to be used on the wifi device.
- \item \texttt{bssid}
- Set the BSSID address to be used for wds to set the mac address of the other wds unit.
- \item \texttt{txpower}
- (Deprecated, set in wifi-device) Set the transmission power to be used. The amount is specified in dBm.
- \item \texttt{encryption} \\
- Encryption setting. Accepts the following values:
- \begin{itemize}
- \item \texttt{none}
- \item \texttt{wep}
- \item \texttt{psk}, \texttt{psk2} \\
- WPA(2) Pre-shared Key
- \item \texttt{wpa}, \texttt{wpa2} \\
- WPA(2) RADIUS
- \end{itemize}
- \item \texttt{key, key1, key2, key3, key4} (wep, wpa and psk) \\
- WEP key, WPA key (PSK mode) or the RADIUS shared secret (WPA RADIUS mode)
- \item \texttt{passphrase} (wpa) \\
- 0 treats the wpa psk as a text passphrase; 1 treats wpa psk as
- encoded passphrase. You can generate an encoded passphrase with
- the wpa\_passphrase utility. This is especially useful if your
- passphrase contains special characters. This option only works
- when using mac80211 or atheros type devices.
- \item \texttt{server} (wpa) \\
- The RADIUS server ip address
- \item \texttt{port} (wpa) \\
- The RADIUS server port (defaults to 1812)
- \item \texttt{hidden} \\
- 0 broadcasts the ssid; 1 disables broadcasting of the ssid
- \item \texttt{isolate} \\
- Optional: Isolation is a mode usually set on hotspots that limits the clients to communicate only with the AP and not with other wireless clients.
- 0 disables ap isolation (default); 1 enables ap isolation.
- \item \texttt{doth} \\
- Optional: Toggle 802.11h mode.
- 0 disables 802.11h (default); 1 enables it.
- \item \texttt{wmm} \\
- Optional: Toggle 802.11e mode.
- 0 disables 802.11e (default); 1 enables it.
- \end{itemize}
- \paragraph{Mesh Point}
- Mesh Point (802.11s) is only supported by some mac80211 drivers. It requires the iw package
- to be installed to setup mesh links. OpenWrt creates mshN mesh point interfaces. A sample
- configuration looks like this:
- \begin{Verbatim}
- config wifi-device "wlan0"
- option type "mac80211"
- option channel "5"
- config wifi-iface
- option device "wlan0"
- option network lan
- option mode "mesh"
- option mesh_id "OpenWrt"
- \end{Verbatim}
- \paragraph{Wireless Distribution System}
- WDS is a non-standard mode which will be working between two Broadcom devices for instance
- but not between a Broadcom and Atheros device.
- \subparagraph{Unencrypted WDS connections}
- This configuration example shows you how to setup unencrypted WDS connections.
- We assume that the peer configured as below as the BSSID ca:fe:ba:be:00:01
- and the remote WDS endpoint ca:fe:ba:be:00:02 (option bssid field).
- \begin{Verbatim}
- config wifi-device "wl0"
- option type "broadcom"
- option channel "5"
- config wifi-iface
- option device "wl0"
- option network lan
- option mode "ap"
- option ssid "OpenWrt"
- option hidden "0"
- option encryption "none"
- config wifi-iface
- option device "wl0"
- option network lan
- option mode wds
- option ssid "OpenWrt WDS"
- option bssid "ca:fe:ba:be:00:02"
- \end{Verbatim}
- \subparagraph{Encrypted WDS connections}
- It is also possible to encrypt WDS connections. \texttt{psk}, \texttt{psk2} and
- \texttt{psk+psk2} modes are supported. Configuration below is an example
- configuration using Pre-Shared-Keys with AES algorithm.
- \begin{Verbatim}
- config wifi-device wl0
- option type broadcom
- option channel 5
- config wifi-iface
- option device "wl0"
- option network lan
- option mode ap
- option ssid "OpenWrt"
- option encryption psk2
- option key "<key for clients>"
- config wifi-iface
- option device "wl0"
- option network lan
- option mode wds
- option bssid ca:fe:ba:be:00:02
- option ssid "OpenWrt WDS"
- option encryption psk2
- option key "<psk for WDS>"
- \end{Verbatim}
- \paragraph{802.1x configurations}
- OpenWrt supports both 802.1x client and Access Point
- configurations. 802.1x client is only working with
- drivers supported by wpa-supplicant. Configuration
- only supports EAP types TLS, TTLS or PEAP.
- \subparagraph{EAP-TLS}
- \begin{Verbatim}
- config wifi-iface
- option device "ath0"
- option network lan
- option ssid OpenWrt
- option eap_type tls
- option ca_cert "/etc/config/certs/ca.crt"
- option priv_key "/etc/config/certs/priv.crt"
- option priv_key_pwd "PKCS#12 passphrase"
- \end{Verbatim}
- \subparagraph{EAP-PEAP}
- \begin{Verbatim}
- config wifi-iface
- option device "ath0"
- option network lan
- option ssid OpenWrt
- option eap_type peap
- option ca_cert "/etc/config/certs/ca.crt"
- option auth MSCHAPV2
- option identity username
- option password password
- \end{Verbatim}
- \paragraph{Limitations:}
- There are certain limitations when combining modes.
- Only the following mode combinations are supported:
- \begin{itemize}
- \item \textbf{Broadcom}: \\
- \begin{itemize}
- \item 1x \texttt{sta}, 0-3x \texttt{ap}
- \item 1-4x \texttt{ap}
- \item 1x \texttt{adhoc}
- \item 1x \texttt{monitor}
- \end{itemize}
- WDS links can only be used in pure AP mode and cannot use WEP (except when sharing the
- settings with the master interface, which is done automatically).
- \item \textbf{Atheros}: \\
- \begin{itemize}
- \item 1x \texttt{sta}, 0-Nx \texttt{ap}
- \item 1-Nx \texttt{ap}
- \item 1x \texttt{adhoc}
- \end{itemize}
- N is the maximum number of VAPs that the module allows, it defaults to 4, but can be
- changed by loading the module with the maxvaps=N parameter.
- \end{itemize}
- \paragraph{Adding a new driver configuration}
- Since we currently only support thread different wireless drivers : Broadcom, Atheros and mac80211,
- you might be interested in adding support for another driver like Ralink RT2x00,
- Texas Instruments ACX100/111.
- The driver specific script should be placed in \texttt{/lib/wifi/<driver>.sh} and has to
- include several functions providing :
- \begin{itemize}
- \item detection of the driver presence
- \item enabling/disabling the wifi interface(s)
- \item configuration reading and setting
- \item third-party programs calling (nas, supplicant)
- \end{itemize}
- Each driver script should append the driver to a global DRIVERS variable :
- \begin{Verbatim}
- append DRIVERS "driver name"
- \end{Verbatim}
- \subparagraph{\texttt{scan\_<driver>}}
- This function will parse the \texttt{/etc/config/wireless} and make sure there
- are no configuration incompatibilities, like enabling hidden SSIDS with ad-hoc mode
- for instance. This can be more complex if your driver supports a lof of configuration
- options. It does not change the state of the interface.
- Example:
- \begin{Verbatim}
- scan_dummy() {
- local device="$1"
- config_get vifs "$device" vifs
- for vif in $vifs; do
- # check config consistency for wifi-iface sections
- done
- # check mode combination
- }
- \end{Verbatim}
- \subparagraph{\texttt{enable\_<driver>}}
- This function will bring up the wifi device and optionally create application specific
- configuration files, e.g. for the WPA authenticator or supplicant.
- Example:
- \begin{Verbatim}
- enable_dummy() {
- local device="$1"
- config_get vifs "$device" vifs
- for vif in $vifs; do
- # bring up virtual interface belonging to
- # the wifi-device "$device"
- done
- }
- \end{Verbatim}
- \subparagraph{\texttt{disable\_<driver>}}
- This function will bring down the wifi device and all its virtual interfaces (if supported).
- Example:
- \begin{Verbatim}
- disable_dummy() {
- local device="$1"
- # bring down virtual interfaces belonging to
- # "$device" regardless of whether they are
- # configured or not. Don't rely on the vifs
- # variable at this point
- }
- \end{Verbatim}
- \subparagraph{\texttt{detect\_<driver>}}
- This function looks for interfaces that are usable with the driver. Template config sections
- for new devices should be written to stdout. Must check for already existing config sections
- belonging to the interfaces before creating new templates.
- Example:
- \begin{Verbatim}
- detect_dummy() {
- [ wifi-device = "$(config_get dummydev type)" ] && return 0
- cat <<EOF
- config wifi-device dummydev
- option type dummy
- # REMOVE THIS LINE TO ENABLE WIFI:
- option disabled 1
- config wifi-iface
- option device dummydev
- option mode ap
- option ssid OpenWrt
- EOF
- }
- \end{Verbatim}
|