ILD

OpenWrt无线配置流程
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2020-3-16 站点:Inside Linux Development

所有的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生效。


wifi配置生效脚本

/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



Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.