利用できませんFRITZ!WLAN USBメモリースティックN私のRaspberry Pi 1Bを私のワイヤレスネットワークに接続します。いくつかの問題がありますが、根本的な原因を見つけて削除することはできません。この問題はRaspbery Pi 3Bで再現できます。
ブートプロセスが完了すると、ワイヤレスネットワークは利用できず、ネットワークデバイスが表示されますが、ifconfig
IPアドレスはありません。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
削除され、終了します。
改善は、毎分スクリプトをトリガーするクローン操作を削除することです。
それでも問題を完全に理解し、適切な解決策を見つけたいと思います。どんな提案がありますか?