所有的wifi driver放在/lib/wifi目录下,如:
1 2 | root@OpenWrt:/# ls /lib/wifi mac80211.sh |
wifi配置文件The WiFi settings are configured in the file /etc/config/wireless
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | root@OpenWrt:/# cat /etc/config/wireless config wifi-device 'radio0' option type 'mac80211' option channel '36' option hwmode '11a' option path 'pci0000:00/0000:00:00.0' option htmode 'VHT80' option __toggle 'Enable' option country 'US' option legacy_rates '1' config wifi-iface 'default_radio0' option device 'radio0' option network 'lan' option mode 'ap' option ssid 'OpenWrt' option encryption 'none' config wifi-device 'radio1' option type 'mac80211' option channel '11' option hwmode '11g' option path 'platform/qca956x_wmac' option htmode 'HT20' option disabled '1' config wifi-iface 'default_radio1' option device 'radio1' option network 'lan' option mode 'ap' option ssid 'OpenWrt' option encryption 'none |
Each wireless driver has its own configuration script in /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.
控制命令是/sbin/wifi,这是一个脚本,支持wifi up,wifi up,wifi config,wifi status,wifi reload命令。
wifi命令是和配置打交道和生成配置,然后最后通过发送ubus命令给netifd生效。
/lib/netifd/wireless/mac80211.sh,netifd调用这个脚本,这个脚本使用iw命令创建vap,启动hostapd, wpa_supplicant。这个脚本包含/lib/netifd/netifd-wireless.sh和/lib/netifd/hostapd.sh两个脚本。
比如:
mac80211 teardown radio1 {"config":{"channel":"36","hwmode":"11a","path":"platform/soc/a800000.wifi","htmode":"VHT80","disabled":false},"data":{"phy":"phy1"},"interfaces":{"0":{"bridge":"br-lan","config":{"mode":"ap","ssid":"OpenWrt","encryption":"none","network":["lan"],"mode":"ap"},"data":{"ifname":"wlan1"}}}
mac80211 setup radio1 {"config":{"channel":"36","hwmode":"11a","path":"platform/soc/a800000.wifi","htmode":"VHT80","disabled":false},"interfaces":{"0":{"bridge":"br-lan","config":{"mode":"ap","ssid":"OpenWrt","encryption":"none","network":["lan"],"mode":"ap"}}}}
iw phy1 info
iw phy phy1 set antenna 0xffffffff 0xffffffff
iw phy phy1 set antenna_gain 0
iw phy phy1 set distance 0
iw phy phy1 info
iw phy phy1 info
iw phy phy1 interface add wlan1 type __ap
root@OpenWrt:/# ls /lib/modules/4.9.123/
ath.ko nf_log_ipv4.ko
ath10k_core.ko nf_log_ipv6.ko
ath10k_pci.ko nf_nat.ko
ath9k.ko nf_nat_ipv4.ko
ath9k_common.ko nf_nat_masquerade_ipv4.ko
ath9k_hw.ko nf_nat_redirect.ko
cfg80211.ko nf_reject_ipv4.ko
compat.ko nf_reject_ipv6.ko
crc-ccitt.ko ppp_async.ko
gpio-button-hotplug.ko ppp_generic.ko
ip6_tables.ko pppoe.ko
ip6t_REJECT.ko pppox.ko
ip6table_filter.ko slhc.ko
ip6table_mangle.ko x_tables.ko
ip_tables.ko xt_LOG.ko
ipt_MASQUERADE.ko xt_REDIRECT.ko
ipt_REJECT.ko xt_TCPMSS.ko
iptable_filter.ko xt_comment.ko
iptable_mangle.ko xt_conntrack.ko
iptable_nat.ko xt_limit.ko
mac80211.ko xt_mac.ko
nf_conntrack.ko xt_mark.ko
nf_conntrack_ipv4.ko xt_multiport.ko
nf_conntrack_ipv6.ko xt_nat.ko
nf_conntrack_rtcache.ko xt_state.ko
nf_defrag_ipv4.ko xt_tcpudp.ko
nf_defrag_ipv6.ko xt_time.ko
nf_log_common.ko
https://archive.openwrt.org/kamikaze/8.09.2/docs/openwrt.html#x1-120001.2.2