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를 터치하고 첫 번째 파일을 삭제하고 종료합니다. 두 번째 파일이 존재할 때 다음 분에 호출되면 스크립트가 호출되어 ifup wlan0두 번째 파일을 삭제하고 종료됩니다.

개선 사항은 매분마다 스크립트를 트리거하는 크론 작업을 제거하는 것입니다.

그래도 문제를 완전히 이해하고 적절한 해결책을 찾고 싶습니다. 어떤 제안이 있으십니까?

관련 정보