到目前为止我学到了什么

到目前为止我学到了什么

长话短说。我需要弄清楚:

  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_supplicantRaspbian 或 Linux 内核/驱动程序本身提交补丁,
  • WiFi没有问题;它正在工作;我确实通过上面的输出获得了互联网连接,这没有问题,
  • 如果在我的例子中不可能消除错误,我想了解为什么会这样,
  • 我还没有尝试针对大多数最新的稳定版和 RC 版本的 Linux 内核进行测试;在深入编译我自己的内核之前寻找我会提供帮助的证据(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正在进一步发展吗?不它不是。 WE 只接受错误修复。

    Wireless-Extensions 的替代品是什么?新的开发应该集中在cfg80211和nl80211上。

    https://wireless.wiki.kernel.org/en/developers/Documentation/Wireless-Extensions

  2. 根据这个清单,我的设备RTL8188CUS由 driver 支持8192cu,它作为内核模块加载(见下文),

  3. 编译并运行wpa_supplicant2.5 版会产生相同的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)

更新 10/8/2016:每建议瑞·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 wifi 固件、Linux 内核驱动程序和硬件本身都存在严重的错误。

ARM 社区的人们一直在夜以继日地工作,试图缓解一些问题,向后移植旧版本的 Realtek 内核模块和旧版本的 hostapd,通常还移植旧版本的固件。

为您的芯片向后移植的驱动程序之一位于https://github.com/pvaret/rtl8192cu-fixes这个线程谈论安装它。

另请阅读我的相关回答:使用华硕 USB-N13 适配器的 Wi-Fi 问题以及我在那里引用的 armbian 论坛中的相关主题。Lamobo-R1 wifi 在 AP(“主机”)模式下不稳定 - 最好购买一个具有适当 Linux 支持的优质 wifi 适配器

我也有兼容的树莓派机器和瑞昱芯片。忘记使用你的芯片来提供 AP 服务,这是一个痛苦的世界。作为一个wifi客户端,它也会有它的问题。

我建议在速卖通上以10美元左右的价格购买雷凌双频2.4GHz/5GHz,然后就可以了。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 模块(以 root 身份):

dkms add ./rtl8192cu-fixes

构建并安装它(以 root 身份):

 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

相关内容