対象とするUbuntuのバージョン
- すべて
Ubuntu日本語フォーラムへの相談の中でも、無線LANに関するものは目立って多いです。しかし互いに共有できる情報が少なく、問題解決に結びついてない例がたくさん見受けられます。
問題解決に必要な情報は以下の4点です。
- 無線LAN子機の販売元の商品紹介URL
- 無線LAN子機に関する情報
現在システムで有効化しているカーネルモジュール1
- 無線LAN子機をシステムがどう認識しているかという情報
この文書は、下の3点を調べるための簡単なガイダンスです。画面による操作ではなくコマンドによる操作が主体ですので、初心者の方は身構えてしまうかもしれませんが、ここにご紹介するコマンドは単純なものばかりですので、気負わずにとりあえずやってみてください。
なお、無線LAN子機を無線LANデバイス、それに内蔵されているチップを無線LANチップと呼ぶことにします。
カーネルモジュールはLinuxにおけるデバイスドライバと思ってください。 (1)
無線LANデバイスに関する情報を調べる方法
内蔵されている無線LANチップに見当を付け、それに対応するカーネルモジュールを調べます。
なお、ここではGNOMEの端末を利用していきます。「Alt」キーと「F2」キーを同時に押し、アプリケーションの起動ボックスを表示して下さい。「gnome-terminal」を入力して実行すると、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を使っているということを明記するようにして下さい。