wifiアダプタがAP対応か調べる方法(iwコマンド)

Linuxカーネルが認識したwifiネットワークアダプタがアクセス・ポイントになれるかどうかをチェックするには、iwコマンドを利用します。まず最初に、カーネルが認識したネットワークデバイスの基本情報を表示させます。

root@RPi-Dev:/etc/hostapd# iw dev
phy#0
        Interface wlan0
                ifindex 4
                wdev 0x1
                addr b8:27:eb:48:76:23
                type managed
phy#1
        Interface wlan1
                ifindex 3
                wdev 0x100000001
                addr 00:13:ef:6b:19:cb
                ssid HOME-Wifi
                type managed

実はこの例は私のラズベリーパイ3のもので、phy#0/wlan0が内蔵wifiチップを、phy#1/wlan1が外付けしているUSB wifiアダプタです。ここで、物理ハードウェアIDとそれに対応するデバイス名、それぞれのMacアドレス、さらにwlan1の場合にはHOME-WifiというSSIDのワイヤレスに接続していることが表示されています。

では、wlan0に現在割り振られているphy#0が、wifiアダプタとしてどんな機能を持っているかをチェックしてみましょう。このためにはiw infoコマンドを使います。なお、物理番号とデバイス番号は必ずしも一致するとは限らないので、必ずiw devで確認してから実行してください。

$ iw phy0 info | less
Wiphy phy0
...
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * monitor
                 * P2P-client
                 * P2P-GO
...

iwは詳細な情報を表示しますが、とりあえず注目しなければいけないのが、Supported interface modesです。この例ではIBSS (ad-hocネットワークアクセス)、managed(別名インフラストラクチャーモード:一般的なwifiモードのこと)、monitor (パケットモニタリングモード)、P2P-Client, P2P-GO, APとあります。この中にAP(アクセス・ポイント)があればこのwifiアダプターはAPとして使えます。

Capablities

Capabilitiesもチップセットで実装されている機能を表すものですが、こちらの方はネットワークアダプタとしてよりも省電力装置の実装方法とか、使える電波帯、その電波帯で使える機能を表しています。例えばPi 3内蔵のwifiチップでは次のようになっています。

...
                Capabilities: 0x1020
                        HT20
                        Static SM Power Save
                        RX HT20 SGI
                        No RX STBC
                        Max AMSDU length: 3839 bytes
                        DSSS/CCK HT40
...

この情報が実際に必要になることは少ないのですが、まれにhostapdのht_capabの中で指定しなければならないこともあります。

Virtual Network Interface

Virtual Network Interfaceというのは、一つのwifiチップであたかも複数のネットワークデバイスが存在するかのように振舞う機能で、例えば一つのチップで、AP機能とWifiクライアント機能を同時に実現したりできます。

これを確認するためのiwコマンドで表示される情報は、valid interface combinationです。Pi 3内蔵のwifiチップだと以下のように表示されています。

        valid interface combinations:
                 * #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
                   total <= 3, #channels <= 2
                 * #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
                   total <= 4, #channels <= 1

もしVirtual Network Interfaceにwifiチップが対応していない場合は、

        interface combinations are not supported

と表示されるはずなので、iwで表示される限りは、Pi 3のwifiチップ一つでwifi APとインフラストラクチャーモード、P2Pが同時に実現できるはずです。

しかし、残念なことに実際に実現できたという話はありません。これはRaspbianのwifi実装部分が多少他と異なっていることや、hostapdのコンパイルオプションによるものらしいのですが、解明できていないようです。現在のところはPi 3の内蔵wifiではAPかインフラストラクチャーモードのどちらか排他利用しかできようです。これはバージョンアップを待つしかないようですね。

コメントを残す