The WiFi settings are configured in the file \texttt{/etc/config/wireless}
-(currently supported on Broadcom only). When booting the router for the first time
+(currently supported on Broadcom and Atheros). When booting the router for the first time
it should detect your card and create a sample configuration that looks like this:
+\paragraph{Sample Broadcom wireless config:}
+
\begin{Verbatim}
config wifi-device "wl0"
option type "broadcom"
option encryption "none"
\end{Verbatim}
+\paragraph{Sample Atheros wireless config:}
+
+\begin{Verbatim}
+config wifi-device "wifi0"
+ option type "atheros"
+ option channel "5"
+ option mode "11g"
+
+config wifi-iface
+ option device "wifi0"
+ option mode "ap"
+ option ssid "OpenWrt"
+ option hidden "0"
+ 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).
\begin{itemize}
\item \texttt{type} \\
The driver to use for this interface.
+
+ \item \texttt{mode} \\
+ The frequency band (\texttt{b}, \texttt{g}, \texttt{bg}, \texttt{a})
\item \texttt{country} \\
The country code used to determine the regulatory settings.
\item \texttt{channel} \\
- The wifi channel (1-14, depending on your country setting).
+ The wifi channel (e.g. 1-14, depending on your country setting).
\item \texttt{maxassoc} \\
Maximum number of associated clients
WDS point-to-point link
\end{itemize}
+
\item \texttt{network} \\
Selects the interface section from \texttt{/etc/config/network} to be
used with this interface
\paragraph{Limitations:}
+Only the following mode combinations are supported:
+
\begin{itemize}
\item \textbf{Broadcom}: \\
- Only the following mode combinations are supported:
-
\begin{itemize}
\item 1x \texttt{sta}, 0-3x \texttt{ap}
\item 1-4x \texttt{ap}
WDS links can only be used in pure AP mode and can't 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-4x \texttt{ap}
+ \item 1-4x \texttt{ap}
+ \item 1x \texttt{adhoc}
+ \end{itemize}
+
\end{itemize}
config_get vifs "$device" vifs
disable_atheros "$device"
+ local first=1
for vif in $vifs; do
nosbeacon=
config_get ifname "$vif" ifname
}
config_set "$vif" ifname "$ifname"
- config_get "$device" mode
- iwpriv "$ifname" mode "${mode:-11g}"
+ [ "$first" = 1 ] && {
+ # only need to change freq band and channel on the first vif
+ config_get "$device" mode
+ pureg=0
+ case "$mode" in
+ *b) mode=11b;;
+ *bg) mode=11g;;
+ *g) mode=11g; pureg=1;;
+ *a) mode=11a;;
+ *) mode=11g;;
+ esac
+ iwconfig "$ifname" channel 0
+ iwpriv "$ifname" mode "$mode"
+ iwpriv "$ifname" pureg "$pureg"
+ iwconfig "$ifname" channel "$channel"
+ }
config_get wds "$vif" wds
case "$wds" in
config_get ssid "$vif" ssid
;;
esac
- iwconfig "$ifname" channel "$channel"
ifconfig "$ifname" up
local net_cfg bridge
# FIXME: implement wpa_supplicant calls here
;;
esac
+ first=0
done
}