WLANスティックが起動時に機能しない

WLANスティックが起動時に機能しない

利用できませんFRITZ!WLAN USBメモリースティックN私のRaspberry Pi 1Bを私のワイヤレスネットワークに接続します。いくつかの問題がありますが、根本的な原因を見つけて削除することはできません。この問題はRaspbery Pi 3Bで再現できます。

ブートプロセスが完了すると、ワイヤレスネットワークは利用できず、ネットワークデバイスが表示されますが、ifconfigIPアドレスはありません。iwconfigレポート

wlan0     IEEE 802.11abgn  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

手動修理(操作)

ifup wlan0次のようにwlan0を手動で起動すると、

wpa_supplicant[854]: Successfully initialized wpa_supplicant
dhclient: Internet Systems Consortium DHCP Client 4.3.1
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
wpa_supplicant[855]: wlan0: Associated with xx:xx:xx:xx:xx:xx
wpa_supplicant[855]: wlan0: WPA: Key negotiation completed with xx:xx:xx:xx:xx:xx [PTK=CCMP GTK=CCMP]
[...]
wpa_supplicant[855]: wlan0: CTRL-EVENT-CONNECTED - Connection to xx:xx:xx:xx:xx:xx completed [id=0 id_str=]
dhcpcd[485]: wlan0: carrier acquired
wpa_supplicant[855]: wlan0: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=DE
dhcpcd[485]: wlan0: adding address xxxx::xxxx:xxxx:xxxx:xxxx
dhcpcd[485]: wlan0: IAID 43:0d:1f:fd
dhcpcd[485]: wlan0: rebinding lease of xxx.xxx.x.xx
dhcpcd[485]: wlan0: soliciting an IPv6 router
dhclient: DHCPREQUEST on wlan0 to 255.255.255.255 port 67
dhclient: bound to xxx.xxx.x.xx -- renewal in 335050 seconds.

しかし、(ヘッドレス)システムは監督なしで起動して接続したいと思います。

仮説

おそらく問題は、ファームウェアをロードした後にUSBスティックがUSB IDを変更したことでしょうか?

システムログidVendor=057c と idProduct= を使用して、起動プロセスの初期 (t=4.2s) でスティックが認識されたことを通知します。84ff。その直後(t=5.3s)「FRITZ! WLAN selfinstall 1.00 PQ:0 ANSI:0 CCS」というラベルの付いたSCSI CD-ROMが検出されました。私はスティック自体がマシンがいくつかのUSBチップファームウェアをロードできるようにドライバを提供すると思います。

t = 12秒からt = 15.5秒の間、_wpa_supplicant_はネットワークデバイスを起動しようとしましたが失敗します。

wpa_supplicant[264]: Successfully initialized wpa_supplicant
wpa_supplicant[264]: Could not read interface wlan0 flags: No such device 
wpa_supplicant[264]: nl80211: Driver does not support authentication/association or connect commands 
wpa_supplicant[264]: Could not read interface wlan0 flags: No such device 
wpa_supplicant[264]: WEXT: Could not set interface 'wlan0' UP 
wpa_supplicant[264]: wlan0: Failed to initialize driver interface networking[198]: Configuring network interfaces...wpa_supplicant: /sbin/wpa_supplicant daemon failed to start 
networking[198]: run-parts: /etc/network/if-pre-up.d/wpasupplicant exited with return code 1 
networking[198]: Failed to bring up wlan0.
networking[198]: done.

長い時間(t = 30秒)後、USBデバイスの接続が切断され、再接続され、idVendor = 057c、idProduct =が表示されます。8401。まもなく(t=34.2s)、DHCPCDもう一度試しましたが、ネットワークに接続できませんでした。

dhcpcd[484]: wlan0: adding address xxxx::xxxx:xxxx:xxxx:xxxx
dhcpcd[484]: wlan0: waiting for carrier
kernel: [   35.199371] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
khcpcd[484]: wlan0: carrier acquired
dhcpcd[484]: wlan0: IAID 43:0d:1f:fd
dhcpcd[484]: wlan0: carrier lost
dhcpcd[484]: wlan0: deleting address xxxx::xxxx:xxxx:xxxx:xxxx

なぜ失敗したのですか?私は正しい考えを考えることができません。

静かに座れ(無駄)

私の代替ソリューションを設定しようとしました。ifup wlan0呼び出してみましょう。システム提供する。シェルスクリプトをできるだけ遅く起動するには、/etc/systemd/system/fritz.wlan.service を作成します。

[Unit]
Description=Fritz WLAN Stick N
After=ntp.target multi-user.target
[Service]
Type=oneshot
ExecStartPre=/bin/sleep 5
ExecStart=/usr/local/bin/fritz.wlan.sh
[Install]
WantedBy=multi-user.target

およびシェルスクリプト/usr/local/bin/fritz.wlan.sh:

#!/bin/sh
/bin/sleep 660
iwconfig 2>&1 | grep ESSID:\"xxx > /dev/null || ifup wlan0 2>&1 >> /var/log/fritz.wlan.log

これは成功につながりません。このスクリプトは multi-user.target の直後に開始されます。システムログデバイスが起動して DHCP リースを受け取りましたが、しばらくしてカーネルがデバイスの認証を解除することを決定し、接続全体が解放されたことを通知します。

kernel: [  717.685006] wlan0: deauthenticating from e0:28:6d:37:3e:f5 by local choice (Reason: 3=DEAUTH_LEAVING)
dhcpcd[465]: wlan0: carrier lost
wpa_supplicant[1330]: wlan0: CTRL-EVENT-DISCONNECTED bssid=e0:28:6d:37:3e:f5 reason=3 locally_generated=1

吸引。後、システム初期化プロセスが完了したことを示します。遅れました。それでもいい。

systemd[1]: Started Fritz WLAN Stick N.
systemd[1]: Startup finished in 3.332s (kernel) + 11min 54.388s (userspace) = 11min 57.720s.

ifup wlan0始めるときに問題があったのではないだろうか?システムインタラクティブなルートシェルを通さずに?

ハッキー(しかし効果的な)フォールバック

予約されたこと/var/run/fritz.wlan は再起動時に生成されます。別のcronジョブには、ファイルが存在することを確認するために1分ごとにシェルスクリプトチェックがあります。常に1分遅れを維持するために、このスクリプトは/var/run.fritz.wlan.2をタッチして最初のファイルを削除して終了します。 2 番目のファイルが存在する場合、次の分に呼び出されると、スクリプトが呼び出され、2 番目のファイルがifup wlan0削除され、終了します。

改善は、毎分スクリプトをトリガーするクローン操作を削除することです。

それでも問題を完全に理解し、適切な解決策を見つけたいと思います。どんな提案がありますか?

関連情報