긴 이야기 짧게. 알아내야 할 사항은 다음과 같습니다.
ioctl
드라이버를 사용할 때 관련 오류가 발생하는 이유는 무엇입니까wext
?nl80211
왜 드라이버를 사용할 수 없나요 ?
wpa_supplicant
내가 달릴 때이상한 오류가 발생했습니다( ioctl
다음으로 시작하는 줄에 유의하세요):
$ sudo wpa_supplicant -D wext -i wlan0 -c wpa_supplicant.conf
Successfully initialized wpa_supplicant
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with 04:8d:38:59:2d:63 (SSID='netis' freq=2457 MHz)
wlan0: Association request to the driver failed
wlan0: Associated with 04:8d:38:59:2d:63
wlan0: WPA: Key negotiation completed with 04:8d:38:59:2d:63 [PTK=CCMP GTK=TKIP]
wlan0: CTRL-EVENT-CONNECTED - Connection to 04:8d:38:59:2d:63 completed [id=0 id_str=]
ioctl
오류가 발생하는 이유를 알아내야 합니다..
몇 가지 참고사항:
- 내 목표는 배우는 것이다
wpa_supplicant
; Raspbian이나 Linux 커널/드라이버 자체에 패치를 제출 하더라도 이러한 버그를 제거하고 싶습니다. - WiFi에는 문제가 없습니다. 작동 중입니다. 위의 출력을 통해 인터넷에 연결됩니다. 문제 없습니다.
- 제 경우에는 오류를 제거할 수 없다면 왜 그런 것인지 이해하고 싶습니다.
- 나는 아직 Linux 커널의 최신 안정 및 RC 버전에 대해 테스트를 시도하지 않았으며 내 커널을 컴파일하기 전에 도움이 될 것이라는 증거를 찾고 있습니다(Linux 커널 저장소에 커밋합니까?).
- 소스코드에서 버그를 발견했는데,여기그리고여기각기. 거기에서 어디로 가야할지 잘 모르겠습니다.
내가 지금까지 배운 것
실행이
wpa_supplicant
전혀 작동하지 않습니다nl80211
.$ sudo wpa_supplicant -D nl80211 -i wlan0 -c wpa_supplicant.conf Successfully initialized wpa_supplicant nl80211: Driver does not support authentication/association or connect commands wlan0: Failed to initialize driver interface
왜 안 돼? 나는
nl80211
그것이 다음보다 낫다고 생각합니다wext
:WE가 더 발전하고 있나요?전혀 그렇지 않다. 우리는 버그 수정만 받아들입니다.
무선 확장의 대안은 무엇입니까?새로운 개발은 cfg80211 및 nl80211에 중점을 두어야 합니다.
https://wireless.wiki.kernel.org/en/developers/Documentation/Wireless-Extensions
~에 따르면이 목록, 내 장치는 커널 모듈로 로드되는
RTL8188CUS
드라이버에 의해 지원됩니다 (아래 참조).8192cu
버전 2.5를 컴파일하고 실행하면
wpa_supplicant
동일한ioctl
오류가 발생합니다.
내 환경에 대해
재고 버전 wpa_supplicant
:
$ wpa_supplicant -v
wpa_supplicant v2.3
Copyright (c) 2003-2014, Jouni Malinen <[email protected]> and contributors
콘텐츠 wpa_supplicant.conf
:
$ cat wpa_supplicant.conf
network={
ssid="my_network_name"
psk="my_password"
}
USB 장치 목록:
$ lsusb
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
릴리스 버전:
$ uname -a
Linux raspberrypi 4.1.18+ #846 Thu Feb 25 14:11:56 GMT 2016 armv6l GNU/Linux
로드된 커널 모듈:
$ lsmod
Module Size Used by
cfg80211 479279 0
rfkill 21508 1 cfg80211
8192cu 556175 0
bcm2835_gpiomem 3703 0
snd_bcm2835 22502 0
bcm2835_rng 2207 0
snd_pcm 92829 1 snd_bcm2835
snd_timer 22164 1 snd_pcm
snd 67534 3 snd_bcm2835,snd_timer,snd_pcm
uio_pdrv_genirq 3526 0
uio 10078 1 uio_pdrv_genirq
ipv6 358702 24
콘텐츠 ifconfig
:
$ ifconfig
eth0 (...omitted for brevity...)
lo (...omitted for brevity...)
wlan0 Link encap:Ethernet HWaddr 00:f1:40:41:03:a7
inet addr:192.168.1.104 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::c085:fb91:3e68:a44d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:38 errors:0 dropped:61421 overruns:0 frame:0
TX packets:62 errors:0 dropped:4 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:19804518 (18.8 MiB) TX bytes:1192972 (1.1 MiB)
2016년 10월 8일 업데이트됨:모든제안~에서레이 F. 리베이로아래에서는비공식 드라이버. 결과:
이 오류는
ioctl[SIOCSIWENCODEEXT]: Invalid argument
이제 사라졌습니다! 그러나ioctl[SIOCSIWAP]: Operation not permitted
그것은 여전히 존재합니다.wpa_supplicant
현재nl80211
비공식 드라이버에서는 여전히 작동 하지 않습니다. 이번에는 출력에 다음으로 시작하는 새 메시지가 표시됩니다.초기화 해제:$ sudo ./wpa_supplicant -D nl80211 -i wlan0 -c wpa_supplicant.conf Successfully initialized wpa_supplicant nl80211: Driver does not support authentication/association or connect commands nl80211: deinit ifname=wlan0 disabled_11b_rates=0 wlan0: Failed to initialize driver interface
답변1
저렴한 Realtek Wi-Fi 펌웨어, Linux 커널 드라이버 및 하드웨어 자체에는 심각한 버그가 있습니다.
ARM 커뮤니티의 사람들은 일부 문제를 완화하기 위해 24시간 내내 작업해 왔으며 이전 버전의 Realtek 커널 모듈과 이전 버전의 Hostapd, 그리고 종종 이전 버전의 펌웨어를 백포트했습니다.
귀하의 칩에 대해 백포트된 드라이버 중 하나는 다음 위치에 있습니다.https://github.com/pvaret/rtl8192cu-fixes그리고이 스레드설치에 대해 이야기해 보세요.
내 관련 답변도 읽어보세요.ASUS USB-N13 어댑터를 사용한 Wi-Fi 문제그리고 제가 인용한 armbian 포럼의 관련 스레드도 있습니다.Lamobo-R1 Wi-Fi는 AP("호스트") 모드에서 불안정합니다. 적절한 Linux를 지원하는 좋은 Wi-Fi 어댑터를 구입하는 것이 좋습니다.
Realtek 칩과 호환되는 Raspberry Pi 시스템도 있습니다. AP 서비스를 제공하기 위해 칩을 사용하는 것을 잊어버리세요. 그것은 고통스러운 세상입니다. Wi-Fi 클라이언트로서 문제가 있을 것입니다.
AliExpress에서 Ralink 듀얼 밴드 2.4GHz/5GHz를 약 10달러에 구입하는 것이 좋습니다.http://www.aliexpress.com/item/Dual-Band-5GHz-2-4GHz-300Mbps-USB-Wireless-WiFi-WLAN-Network-Card-Adapter-IEEE-802-11a/32455426779.html
답변2
dkms
다운로드 복구 설치 :
git clone https://github.com/pvaret/rtl8192cu-fixes.git
DKMS 모듈을 설정합니다(루트로):
dkms add ./rtl8192cu-fixes
빌드하고 설치합니다(루트로):
dkms install 8192cu/1.9
업데이트 모듈 목록:
depmod -a
커널 모듈을 블랙리스트에 추가하고 절전 기능을 비활성화합니다.
echo "blacklist rtl8192cu" > /etc/modules.d/8192.conf
echo "options 8192cu rtw_power_mgnt=0 rtw_enusbss=0" >> /etc/modules.d/8192cu
이전 드라이버를 제거하고 복구 드라이버를 로드합니다.
rmmod rtl8192cu rtl_usb rtlwifi rtl8192c_common
modprobe 8192cu