• 対象とするUbuntuのバージョン

    • すべて

Ubuntu日本語フォーラムへの相談の中でも、無線LANに関するものは目立って多いです。しかし互いに共有できる情報が少なく、問題解決に結びついてない例がたくさん見受けられます。

問題解決に必要な情報は以下の4点です。

  • 無線LAN子機の販売元の商品紹介URL
  • 無線LAN子機に関する情報
  • 現在システムで有効化しているカーネルモジュール1

  • 無線LAN子機をシステムがどう認識しているかという情報

この文書は、下の3点を調べるための簡単なガイダンスです。画面による操作ではなくコマンドによる操作が主体ですので、初心者の方は身構えてしまうかもしれませんが、ここにご紹介するコマンドは単純なものばかりですので、気負わずにとりあえずやってみてください。

なお、無線LAN子機を無線LANデバイス、それに内蔵されているチップを無線LANチップと呼ぶことにします。


  1. カーネルモジュールはLinuxにおけるデバイスドライバと思ってください。 (1)

無線LANデバイスに関する情報を調べる方法

内蔵されている無線LANチップに見当を付け、それに対応するカーネルモジュールを調べます。

なお、ここではGNOMEの端末を利用していきます。「Alt」キーと「F2」キーを同時に押し、アプリケーションの起動ボックスを表示して下さい。「gnome-terminal」を入力して実行すると、GNOMEの端末が開きます。

GNOME端末の起動

端末にコマンドを入力し、その出力を見ます。

内蔵あるいはPCカードバス/ExpressCardバス接続の無線LANデバイスの場合

このグループは、PCIバス/PCI-Expressバス、あるいはそれにぶら下がっているPCカードバス/!ExpressCardバスに接続されているデバイスとなります。このグループの無線LANデバイスに対しては、コマンド「lspci」を活用していきます。

以下のコマンドを実行して下さい。

$ lspci;
(中略)
06:00.0 Network controller: Ralink corp. RT2800 802.11n PCI

上の出力では、RaLink社のRT2800を無線LANチップとして内蔵していることがわかります。

次に、先頭のバス番号に着目して、以下のコマンドを実行します。無線LANデバイスに関する詳細な情報が出力されます。

$ lspci -vnns 06:00.0;
06:00.0 Network controller [0280]: Ralink corp. RT2800 802.11n PCI [1814:0601]
        Subsystem: Allied Telesyn International Device [1259:c129]
        Flags: bus master, slow devsel, latency 64, IRQ 16
        Memory at c0000000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [40] Power Management version 3
        Kernel driver in use: rt2860
        Kernel modules: rt2860sta, rt2800pci

カーネルモジュールとして、「rt2860sta」と「rt2800pci」を利用可能であることがわかります。

USB接続の無線LANデバイスの場合

ユニバーサル・シリアル・バス(USB)は、PCIバスまたはPCI-Expressバスにぶら下がっています。このグループの無線LANデバイスに対しては、コマンド「lsusb」を活用していきます。

以下のコマンドを実行します。

$ lsusb;
(中略)
Bus 001 Device 008: ID 0411:015d MelCo., Inc. Buffalo WLI-UC-GN Wireless LAN Adapter [Ralink RT2870]

上の出力では、RaLink社のRT2870を無線LANチップとして内蔵していることがわかります。

もしこれでもわからない場合は、先の出力の「Bus」番号と「Device」番号に着目して、以下のコマンドを実行します。

$ lsusb -vs 001:008;
(省略)

長々と出力されます。これは、USB接続のデバイスのディスクリプタに関する表示です。この中から、内蔵チップを特定できそうな項目を見つけて下さい。(DescriptorはUSBの仕様に書かれています)

次に、以下のコマンドを実行します。

$ lsusb -t;
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/4p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/4p, 480M
    |__ Port 3: Dev 10, If 0, Class=vend., Driver=rt2870, 480M

先の出力の「Bus」番号と「Device」番号に該当する出力を見ます。Driver=rt2870なので、カーネルモジュールとしてrt2870が使われているのがわかります。

現在システムで有効化しているカーネルモジュール

GNOME端末でコマンド「lsmod」を実行すると、有効化されているカーネルモジュールの一覧が表示されます。

$ lsmod;
Module                  Size  Used by
md4                    12473  0 
rt2860sta             488097  0 
arc4                   12418  0 
rt2800pci              17600  0 
rt2800lib              38835  1 rt2800pci
crc_ccitt              12331  2 rt2860sta,rt2800lib
rt2x00pci              12721  1 rt2800pci
rt2x00lib              32825  3 rt2800pci,rt2800lib,rt2x00pci
mac80211              239384  3 rt2800lib,rt2x00pci,rt2x00lib
cfg80211              136681  2 rt2x00lib,mac80211
eeprom_93cx6           12344  1 rt2800pci
(省略)

システムがそのデバイスをどう認識しているか調べる方法

接続時に出力されるログを確認します。

外付けの無線LANデバイスの場合

まず外付けの無線LANデバイスであれば、接続しない状態でコンピュータの電源を入れて下さい。

起動してログインしたら、「Alt」キーと「F2」キーを同時に押し、アプリケーションの起動ボックスを表示して下さい。「gnome-system-log」を入力して実行すると、GNOMEのログ・ビューワーが開きます。

左側のリストから、syslogを選択します。右側に現在のログが表示されますので、最下段までスクロールして下さい。

ログ・ビューワー

外付けの無線LANデバイスを接続すると、新しいログが得られます。新しいログは太字で表示されます。

更新されたログ・ビューワー

得られた新しい出力をコピーし、テキストファイルとして保存しておくと、トラブルシュートの役に立ちます。

内蔵の無線LANデバイスの場合

起動してログインすると、syslogにすでにログが出力されています。上記と同じようにしてログを確認し、該当してそうな出力を見つけて下さい。

ndiswrapperを使っている場合

ndiswrapperは、無線LANドライバのWindows用バイナリをLinuxカーネル内で動作させる仕組みです。Linuxカーネルにカーネルモジュールの形でドライバが含まれていない無線LANデバイスの場合、ndiswrapperを利用することで動作する可能性があります。

この場合、ndiswrapperを使っているということを明記するようにして下さい。

UbuntuJapaneseWiki: UbuntuTips/Hardware/DetectiveWirelessLanDevice (最終更新日時 2012-01-10 11:49:04 更新者 匿名)