내가 지금까지 배운 것

내가 지금까지 배운 것

긴 이야기 짧게. 알아내야 할 사항은 다음과 같습니다.

  1. ioctl드라이버를 사용할 때 관련 오류가 발생하는 이유는 무엇입니까 wext?
  2. 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 커널 저장소에 커밋합니까?).
  • 소스코드에서 버그를 발견했는데,여기그리고여기각기. 거기에서 어디로 가야할지 잘 모르겠습니다.

내가 지금까지 배운 것

  1. 실행이 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

  2. ~에 따르면이 목록, 내 장치는 커널 모듈로 로드되는 RTL8188CUS드라이버에 의해 지원됩니다 (아래 참조).8192cu

  3. 버전 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. 리베이로아래에서는비공식 드라이버. 결과:

  1. 이 오류는 ioctl[SIOCSIWENCODEEXT]: Invalid argument이제 사라졌습니다! 그러나 ioctl[SIOCSIWAP]: Operation not permitted그것은 여전히 ​​존재합니다.

  2. 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

관련 정보