web-dev-qa-db-ja.com

wpa_supplicantを理解する

TL; DR。私は以下に到達する必要があります:

  1. ioctlドライバーの使用時にwextに関連するエラーが発生する理由
  2. nl80211ドライバを使用できないのはなぜですか。

wpa_supplicantを実行すると、I奇妙なエラーが発生します(以下の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カーネルリポジトリのコミット?)を探して、
  • 私はソースコードのエラーを検出しました here および here それぞれ。そこからどこへ行くべきかわからない。

これまでに学んだこと

  1. wpa_supplicantnl80211で実行してもまったく機能しません。

    $ 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
    

    何故なの? nl80211wextより優れていると思いました:

    WEはさらに開発されていますか?いいえ、そうではありません。バグ修正のみがWEで受け入れられています。

    Wireless-Extensionsの後継とは何ですか?新しい開発はcfg80211とnl80211に焦点を当てるべきです。

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

  2. このリスト によると、私のデバイスRTL8188CUSは、カーネルモジュールとしてロードされるドライバー8192cuによってサポートされています(以下を参照)。

  3. wpa_supplicantバージョン2.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

Distroバージョン:

$ 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日更新提案 から Rui F Ribero 以下、私が使ってみました 非公式ドライバー 。結果:

  1. このエラー:ioctl[SIOCSIWENCODEEXT]: Invalid argumentはなくなりました。ただし、ioctl[SIOCSIWAP]: Operation not permittedはまだ存在しています。

  2. wpa_supplicantは、現在非公式のnl80211ドライバではまだ機能しません。今回のみ、deinitで始まる新しいメッセージが出力されます。

    $ 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
    
7
gmile

安価なRealtek wifiファームウェア、Linuxカーネルドライバー、およびハードウェア自体はひどくバグがあります。

ARMコミュニティの人々は24時間体制で問題のいくつかを軽減するために働いており、realtekカーネルモジュールの古いバージョンとhostapdの古いバージョン、そしてしばしばファームウェアの古いバージョンも移植しています。 。

チップ用にバックポートされたドライバーの1つは https://github.com/pvaret/rtl8192cu-fixes にあり、 このスレッド はそれをインストールすることについて話します。

私の関連する回答もお読みください: ASUS USB-N13アダプターを使用したWi-Fiの問題 および私がそこで参照しているarmbianフォーラムの関連スレッド。 Lamobo-R1 wifiがAP(「ホスト」)モードで不安定-適切なLinuxサポート付きの良いwi​​fiドングルを購入することをお勧めします

私は互換性のあるラズベリーマシンとrealtekチップも持っています。 APサービスにチップを使用することを忘れてください。それは苦痛の世界です。 wifiクライアントとしては、問題も発生します。

私はaliexpressで約10USDでralinkデュアル周波数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

5
Rui F Ribeiro