1 The WiFi settings are configured in the file
\texttt{/etc/config/wireless
}
2 (currently supported on Broadcom, Atheros and mac80211). When booting the router for the first time
3 it should detect your card and create a sample configuration file. By default '
\texttt{option network lan
}' is
4 commented. This prevents unsecured sharing of the network over the wireless interface.
6 Each wireless driver has its own configuration script in
\texttt{/lib/wifi/driver
\_name.sh
} which handles
7 driver specific options and configurations. This script is also calling driver specific binaries like wlc for
8 Broadcom, or hostapd and wpa
\_supplicant for atheros.
10 The reason for using such architecture, is that it abstracts the driver configuration.
12 \paragraph{Generic Broadcom wireless config:
}
15 config wifi-device "wl0"
16 option type "broadcom"
25 option encryption "none"
28 \paragraph{Generic Atheros wireless config:
}
31 config wifi-device "wifi0"
42 option encryption "none"
45 \paragraph{Generic mac80211 wireless config:
}
48 config wifi-device "wifi0"
49 option type "mac80211"
58 option encryption "none"
61 \paragraph{Generic multi-radio Atheros wireless config:
}
64 config wifi-device wifi0
72 option ssid OpenWrt_private
74 option encryption none
76 config wifi-device wifi1
84 option ssid OpenWrt_public
86 option encryption none
89 There are two types of config sections in this file. The '
\texttt{wifi-device
}' refers to
90 the physical wifi interface and '
\texttt{wifi-iface
}' configures a virtual interface on top
91 of that (if supported by the driver).
93 A full outline of the wireless configuration file with description of each field:
96 config wifi-device wifi device name
97 option type broadcom, atheros, mac80211
98 option country us, uk, fr, de, etc.
100 option maxassoc
1-
128 (broadcom only)
102 option hwmode
11b,
11g,
11a,
11bg (atheros, mac80211)
103 option rxantenna
0,
1,
2 (atheros, broadcom)
104 option txantenna
0,
1,
2 (atheros, broadcom)
107 option network the interface you want wifi to bridge with
108 option device wifi0, wifi1, wifi2, wifiN
109 option mode ap, sta, adhoc, monitor, or wds
110 option txpower transmission power in dBm
111 option ssid ssid name
112 option bssid bssid address
113 option encryption none, wep, psk, psk2, wpa, wpa2
114 option key encryption key
119 option server ip address
125 \paragraph{Options for the
\texttt{wifi-device
}:
}
128 \item \texttt{type
} \\
129 The driver to use for this interface.
131 \item \texttt{country
} \\
132 The country code used to determine the regulatory settings.
134 \item \texttt{channel
} \\
135 The wifi channel (e.g.
1-
14, depending on your country setting).
137 \item \texttt{maxassoc
} \\
138 Optional: Maximum number of associated clients. This feature is supported only on the broadcom chipset.
140 \item \texttt{distance
} \\
141 Optional: Distance between the ap and the furthest client in meters. This feature is supported only on the atheros chipset.
143 \item \texttt{mode
} \\
144 The frequency band (
\texttt{b
},
\texttt{g
},
\texttt{bg
},
\texttt{a
}). This feature is only supported on the atheros chipset.
146 \item \texttt{diversity
} \\
147 Optional: Enable diversity for the Wi-Fi device. This feature is supported only on the atheros chipset.
149 \item \texttt{rxantenna
} \\
150 Optional: Antenna identifier (
0,
1 or
2) for reception. This feature is supported by atheros and some broadcom chipsets.
152 \item \texttt{txantenna
} \\
153 Optional: Antenna identifier (
0,
1 or
2) for emission. This feature is supported by atheros and some broadcom chipsets.
157 \paragraph{Options for the
\texttt{wifi-iface
}:
}
160 \item \texttt{network
} \\
161 Selects the interface section from
\texttt{/etc/config/network
} to be
162 used with this interface
164 \item \texttt{device
} \\
165 Set the wifi device name.
167 \item \texttt{mode
} \\
174 \item \texttt{sta
} \\
177 \item \texttt{adhoc
} \\
180 \item \texttt{monitor
} \\
183 \item \texttt{wds
} \\
184 WDS point-to-point link
189 Set the SSID to be used on the wifi device.
192 Set the BSSID address to be used for wds to set the mac address of the other wds unit.
194 \item \texttt{txpower
}
195 Set the transmission power to be used. The amount is specified in dBm.
197 \item \texttt{encryption
} \\
198 Encryption setting. Accepts the following values:
203 \item \texttt{psk
},
\texttt{psk2
} \\
204 WPA(
2) Pre-shared Key
206 \item \texttt{wpa
},
\texttt{wpa2
} \\
210 \item \texttt{key, key1, key2, key3, key4
} (wep, wpa and psk) \\
211 WEP key, WPA key (PSK mode) or the RADIUS shared secret (WPA RADIUS mode)
213 \item \texttt{server
} (wpa) \\
214 The RADIUS server ip address
216 \item \texttt{port
} (wpa) \\
217 The RADIUS server port (defaults to
1812)
219 \item \texttt{hidden
} \\
220 0 broadcasts the ssid;
1 disables broadcasting of the ssid
222 \item \texttt{isolate
} \\
223 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.
224 0 disables ap isolation (default);
1 enables ap isolation.
228 \paragraph{Wireless Distribution System
}
230 WDS is a non-standard mode which will be working between two Broadcom devices for instance
231 but not between a Broadcom and Atheros device.
233 \subparagraph{Unencrypted WDS connections
}
235 This configuration example shows you how to setup unencrypted WDS connections.
236 We assume that the peer configured as below as the BSSID ca:fe:ba:be:
00:
01
237 and the remote WDS endpoint ca:fe:ba:be:
00:
02 (option bssid field).
240 config wifi-device "wl0"
241 option type "broadcom"
248 option ssid "OpenWrt"
250 option encryption "none"
256 option ssid "OpenWrt WDS"
257 option bssid "ca:fe:ba:be:
00:
02"
260 \subparagraph{Encrypted WDS connections
}
262 It is also possible to encrypt WDS connections.
\texttt{psk
},
\texttt{psk2
} and
263 \texttt{psk+psk2
} modes are supported. Configuration below is an example
264 configuration using Pre-Shared-Keys with AES algorithm.
267 config wifi-device wl0
275 option ssid "OpenWrt"
276 option encryption psk2
277 option key "<key for clients>"
283 option bssid ca:fe:ba:be:
00:
02
284 option ssid "OpenWrt WDS"
285 option encryption psk2
286 option key "<psk for WDS>"
289 \paragraph{802.1x configurations
}
291 OpenWrt supports both
802.1x client and Access Point
292 configurations.
802.1x client is only working with
293 Atheros or mac80211 drivers. Configuration only
294 supports EAP types TLS, TTLS or PEAP.
296 \subparagraph{EAP-TLS
}
304 option ca_cert "/etc/config/certs/ca.crt"
305 option priv_key "/etc/config/certs/priv.crt"
306 option priv_key_pwd "PKCS
#12 passphrase"
309 \subparagraph{EAP-PEAP
}
317 option ca_cert "/etc/config/certs/ca.crt"
319 option identity username
320 option password password
323 \paragraph{Limitations:
}
325 There are certain limitations when combining modes.
326 Only the following mode combinations are supported:
329 \item \textbf{Broadcom
}: \\
331 \item 1x
\texttt{sta
},
0-
3x
\texttt{ap
}
332 \item 1-
4x
\texttt{ap
}
333 \item 1x
\texttt{adhoc
}
334 \item 1x
\texttt{monitor
}
337 WDS links can only be used in pure AP mode and cannot use WEP (except when sharing the
338 settings with the master interface, which is done automatically).
340 \item \textbf{Atheros
}: \\
342 \item 1x
\texttt{sta
},
0-Nx
\texttt{ap
}
343 \item 1-Nx
\texttt{ap
}
344 \item 1x
\texttt{adhoc
}
347 N is the maximum number of VAPs that the module allows, it defaults to
4, but can be
348 changed by loading the module with the maxvaps=N parameter.
351 \paragraph{Adding a new driver configuration
}
353 Since we currently only support thread different wireless drivers : Broadcom, Atheros and mac80211,
354 you might be interested in adding support for another driver like Ralink RT2x00,
355 Texas Instruments ACX100/
111.
357 The driver specific script should be placed in
\texttt{/lib/wifi/<driver>.sh
} and has to
358 include several functions providing :
361 \item detection of the driver presence
362 \item enabling/disabling the wifi interface(s)
363 \item configuration reading and setting
364 \item third-party programs calling (nas, supplicant)
367 Each driver script should append the driver to a global DRIVERS variable :
370 append DRIVERS "driver name"
373 \subparagraph{\texttt{scan
\_<driver>
}}
375 This function will parse the
\texttt{/etc/config/wireless
} and make sure there
376 are no configuration incompatibilities, like enabling hidden SSIDS with ad-hoc mode
377 for instance. This can be more complex if your driver supports a lof of configuration
378 options. It does not change the state of the interface.
385 config_get vifs "$device" vifs
387 # check config consistency for wifi-iface sections
389 # check mode combination
393 \subparagraph{\texttt{enable
\_<driver>
}}
395 This function will bring up the wifi device and optionally create application specific
396 configuration files, e.g. for the WPA authenticator or supplicant.
403 config_get vifs "$device" vifs
405 # bring up virtual interface belonging to
406 # the wifi-device "$device"
411 \subparagraph{\texttt{disable
\_<driver>
}}
413 This function will bring down the wifi device and all its virtual interfaces (if supported).
420 # bring down virtual interfaces belonging to
421 # "$device" regardless of whether they are
422 # configured or not. Don't rely on the vifs
423 # variable at this point
427 \subparagraph{\texttt{detect
\_<driver>
}}
429 This function looks for interfaces that are usable with the driver. Template config sections
430 for new devices should be written to stdout. Must check for already existing config sections
431 belonging to the interfaces before creating new templates.
436 [ wifi-device = "$(config_get dummydev type)"
] && return
0
438 config wifi-device dummydev
440 # REMOVE THIS LINE TO ENABLE WIFI:
444 option device dummydev