systemd-networkd - wifi有時無法連接
問題陳述
我有一個
systemd-networkd
用於網路管理的嵌入式 Linux 系統。大約一半的時間,設備可以在 30 秒內連接到 Wifi AP 並通過 DHCP 獲取 IPv4 地址。在其他情況下,系統日誌顯示身份驗證和關聯,但設備未獲取 IPv4 地址。我已經等了 5 分鐘或更長時間沒有獲得 IP。配置
1)這是
/etc/systemd/network/wlan0.network
配置文件:[Match] Name=wlan0 [Network] DHCP=ipv4 IPv6AcceptRA=no LinkLocalAddressing=no
我也有
.network
文件設置,只有DHCP=yes
以下內容。結果似乎是一樣的。2)這是
/etc/wpa_supplicant.conf
文件:ctrl_interface=/var/run/wpa_supplicant ap_scan=1 country=US network={ ssid=<my SSID> psk=<my key> }
3)我沒有配置我自己的
wpa_supplicant@wlan0.service
文件,wpa_supplicant
因為我在需要介面時手動啟動它。沒有安裝其他網路管理器(NetworkManager、connman 等)。我沒有啟動任何 DHCP 工具(dhclient、dhcpcd);為此,我依靠 systemd-network 內部結構。調試
1)這是
dmesg | tail
顯示關聯的輸出,無論獲得 IP 地址,它總是會發生:[ 846.988274] ieee80211 phy1: WMM Turbo=1 [ 847.312843] wlan0: authenticate with <AP MAC addr> [ 847.329052] wlan0: send auth to <AP MAC addr> (try 1/3) [ 847.334566] wlan0: authenticated [ 847.352271] wlan0: associate with <AP MAC addr> (try 1/3) [ 847.362762] wlan0: RX AssocResp from <AP MAC addr> (capab=0x1011 status=0 aid=1) [ 847.373968] wlan0: associated [ 847.391864] wlan0: Limiting TX power to 24 (24 - 0) dBm as advertised by <AP MAC addr>
此輸出來自驅動程序,因此除了說“它相關”之外,在一般意義上可能沒有太大意義。
- 一些部落格/文章建議使用
systemctl restart systemd-networkd
和ifconfig wlan0 down && ifconfig wlan0 up
触發 DHCP 重新協商的命令。有時後一個命令有效……雖然我不知道等待幾秒鐘是否會有所不同。3)當一切正常時,我會看到這樣的日誌:
Apr 25 12:41:43 host systemd-networkd[511]: [[0;1;39m[[0;1;31m[[0;1;39mwlan0: found matching network '/etc/systemd/network/wlan0.network', based on potentially unpredictable ifname[[0m Apr 25 12:41:43 host systemd-networkd[511]: wlan0: IPv6 successfully disabled Apr 25 12:41:48 host systemd-networkd[511]: wlan0: Gained carrier Apr 25 12:41:48 host systemd-networkd[511]: wlan0: DHCPv4 address 10.217.244.165/8 via 10.128.128.128 Apr 25 12:41:48 host systemd-networkd[511]: wlan0: Configured
當問題發生時,我只看到“wlan0: found matching network…”消息。
- 與 類似
dmesg
,iw wlan0 link
始終顯示與 AP 的連接,即使未獲得 IP 也是如此:$ iw wlan0 link Connected to <AP MAC addr> (on wlan0) SSID: <AP name> freq: 5200 RX: 87243 bytes (416 packets) TX: 3038 bytes (11 packets) signal: -60 dBm tx bitrate: 6.0 MBit/s bss flags: short-slot-time dtim period: 1 beacon int: 100
編輯:驅動程序有一個已知錯誤,其中“命令 iw wlan0 連結的輸出始終將比特率顯示為連接頻帶的最低數據速率。” 所以 6.0 MBit/s 是錯誤的。但是信號電平應該是正確的。
問題
有人對調試或配置有進一步的建議,以使其可靠地工作嗎?我不清楚這是驅動程序問題、系統問題還是網路問題。
從您的信號和主要是 6Mbps 的 TX 速率來看,第 2 層顯然存在需要改進的問題。信號不夠強,無法保證可靠的服務。
一旦信號強度提高,DHCP 問題就會消失。
TLDR 問題不在於 Unix 本身。