Wpa-Supplicant

systemd-networkd - wifi有時無法連接

  • April 25, 2019

問題陳述

我有一個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>

此輸出來自驅動程序,因此除了說“它相關”之外,在一般意義上可能沒有太大意義。

  1. 一些部落格/文章建議使用systemctl restart systemd-networkdifconfig 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…”消息。

  1. 與 類似dmesgiw 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 本身。

引用自:https://unix.stackexchange.com/questions/515460