私が今まで学んだこと

私が今まで学んだこと

長い話を短く。調べるべきことは次のとおりです。

  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バージョンをテストしようとしていませんでした。
  • ソースコードでバグが見つかりましたが、ここそしてここそれぞれ。そこからどこに行くのか分からない。

私が今まで学んだこと

  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、そしてしばしば古いバージョンのファームウェアをバックポートしました。

あなたのチップ用にバックポートされたドライバの1つは、次の場所にあります。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モジュールを設定します(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

関連情報