2020年12月29日 星期二

Enable linux hostapd run on 5GHZ frequencies (also enable DFS support)

how to create virtual AP

1: create virtual wifi interface 

 iw dev wlp5s0 interface add wlan0_vap1 type __ap 

 

2: change mac address for new created interface (please note, last 8 bits must be 0 and cannot be the same as other devices. the maximum number of AP that the chipset can support can refer to output of iw list)

ip link set wlan0_vap1 address 02:05:b4:4a:fa:60

channels <= 1 means that the chipset only support 1 frequency. All softap need to run on exactly the same frequency. 

check supported frequencies: iw list

usually "no IR, radar detection" refers to the frequency cannot be used.
if the output includes "DFS state: usable", the frequency can be used only when kernel is supported.
* 5520 MHz [104] (23.0 dBm) (no IR, radar detection)
                          DFS state: usable (for 641 sec)
                    DFS CAC time: 60000 ms

To use DFS bands, ensure following kernel options are enabled.
"Configure standard kernel features (expert users)" under "General Setup"
"cfg80211 certification onus" under "Networking support" -> "Wireless"
"Ministrel 802.11ac support" under "Networking support" -> "Wireless"
"Atheros DFS support for certified platforms" under "Device Drivers" -> "Network device support" -> "Wireless LAN" -> "Atheros Wireless Cards"
"Atheros dynamic user regulatory hints" under "Device Drivers" -> "Network device support" -> "Wireless LAN" -> "Atheros Wireless Cards" (*)
"Atheros dynamic user regulatory testing" under "Device Drivers" -> "Network device support" -> "Wireless LAN" ->"Atheros Wireless Cards" (*)

Please note, crda package is required for DFS enablement.

to ignore regulation, apply openwrt patches to kernel.
1: download kernel source
2: download openwrt patches
3: change to extracted kernel source directoy
4: copy downloaded openwrt paches to working directory

patch -p1 <./mac80211/patches/ath/402-ath_regd_optional.patch 

patch -p1 <./mac80211/patches/ath/404-regd_no_assoc_hints.patch 


sample configuration file: only need to focus on vht_oper_centr_freq_seg0_idx and channel setup

interface=wlan0_vap1
driver=nl80211
logger_syslog=-1
logger_syslog_level=0
logger_stdout=-1
logger_stdout_level=0
country_code=US
ieee80211d=1
ssid=uCPE1
channel=116
hw_mode=a
ieee80211h=1
ieee80211ac=1
ht_capab=[DSSS_CCK-40][LDPC][TX-STBC][RX-STBC-1][MAX-AMSDU-7935][HT40+][SHORT-GI-40][SHORT-GI-20]
wme_enabled=1
vht_oper_centr_freq_seg0_idx=122
vht_oper_chwidth=1
vht_capab=[TX-STBC-2BY1][RX-STBC-1][RXLDPC][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP-7][SHORT-GI-80]
ieee80211n=1
macaddr_acl=0
max_num_sta=100
wpa=2
rsn_pairwise=CCMP
auth_algs=1
wpa_passphrase=test12345
wpa_key_mgmt=WPA-PSK WPA-PSK-SHA256
tx_queue_data3_aifs=7
tx_queue_data3_cwmin=15
tx_queue_data3_cwmax=1023
tx_queue_data3_burst=0
tx_queue_data2_aifs=3
tx_queue_data2_cwmin=15
tx_queue_data2_cwmax=63
tx_queue_data2_burst=0
tx_queue_data1_aifs=1
tx_queue_data1_cwmin=7
tx_queue_data1_cwmax=15
tx_queue_data1_burst=3.0
tx_queue_data0_aifs=1
tx_queue_data0_cwmin=3
tx_queue_data0_cwmax=7
tx_queue_data0_burst=1.5
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0

dracut module for squashfs plus overlay

 kernel parameter:

QCT QCT.session=devel

dracut module