msi Wind Netbook u100 の無線LAN繋がった。
Notebook購入してから実に3年、勉強がてら軽く調査したことはありましたが、簡単には解決せず、
またそれほど無線LANを使わなければならないという機会もなかったのとで、使えないままずーっと放置してました。
が、ExtJSのセミナーを来週(投稿時点では早くも明日w)に控え、「是が非でもNotebookの無線LANを使えるようにしなければ!」と、今回ばかりは意気込んで環境構築に臨んだところ、怪しいながらも何とか使えるようになりました!
しっかし今まで使えてなかった原因の一つに気がついて俺はおしっこちびりそうになりましたよ。
「内臓無線LANアダプターの電源が入ってなかった」
ショックでかいです。
恐ろしく快適な無線LANライフですが、快適であればあるほど、3年も無駄にしていたのかと。。
今となっては嫁さんの実家からもつなげられてしまうなんて、もう有線には戻れない。
とりあえず作業ログとも言えない不正確な情報をまとめておこう。
環境
OS:Ubuntu 11.04
PC:msi Wind Netbook u100
OSはともかく、PCのモデルから周辺機器情報を調べると、
PCの背面に
RT Module Insite Ralink Technolosy Corporation RT2700E(MS-6890)
と記載がありました。で、搭載されているチップを更に調べると、ここに気になる記述が。PCの型番が微妙に違いますが、Wind Netbook u100 Plus の行の「見つかった問題点」の列にこんな記述が。
無線LANモジュールがRT2700Eの個体の場合、標準ドライバでは一部認識できないアクセスポイントあり。Ralink社が提供するRT2860STAのドライバを入れると正常に認識。
てことは、RT2860STAのドライバを入れさえすれば問題なさげです。
ここまで情報を得ることができたので、現状のubuntuがこのハードウェアをどう扱っているか調べていきます。
lspci
まずはこの無線LANアダプタがハードウェア的に認識されているかどうか確認します。
PCIバス接続されているハードウェアを確認するには、「lspci」コマンドを実行します。
実行すると、認識しているハードウェア情報が出力されます。
チップセットっぽい名前も表示されるらしいですが、運が悪い(ハードだった)場合は表示されないこともあるようです。
型番チェックで使用する感じでしょうか。
実行してみると、自分のPCではこうなりました。
~ $ lspci 00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03) 00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03) 00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03) 00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02) 00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02) 00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 02) 00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02) 00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02) 00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2) 00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02) 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02) 02:00.0 Network controller: Ralink corp. RT2860 ~ $
最後の行、
02:00.0 Network controller: Ralink corp. RT2860
これがWireless LANアダプタですね。幸せな事に思いっきり正しいチップセットっぽい名前が表示されてます。RT2860STAドライバで問題なさげです。
ちなみにUSB接続の無線LANクライアントを購入した場合は、lspciではなく、次のコマンドで詳細情報を得るらしいです。
lsusb
USBで接続されてハードウェア的に認識しているデバイスを表示するコマンドです。
ネットワークアダプタが外付けUSBみたいなモノを使っている場合、このコマンドでハードウェアの情報を取得できるらしいですが、今回の場合はPCI接続の内臓無線LANアダプタだったので使わないコマンドでした。
lsmod
次に、カーネルがこの無線LANアダプタにアクセスできる状態にあるかどうかを確認します。
無線LANアダプタに限らず、ハードウェアにアクセスするにはそのハードウェアのドライバが必要で、ドライバは普通カーネルモジュールという形で提供されます。
今回の場合はRT2860STAモジュールが確認できればOKです。
確認するには「lsmod」コマンドを使用し、動作中?だか組み込まれ中?だかのカーネルモジュール一覧を表示させて確認します。
現段階で自分の環境では次のように出力されます。
~ $ lsmod Module Size Used by binfmt_misc 13213 1 parport_pc 32111 0 ppdev 12849 0 rfcomm 38125 8 snd_hda_codec_realtek 255882 1 sco 17827 2 joydev 17322 0 snd_hda_intel 24113 2 bnep 17785 2 snd_hda_codec 90901 2 snd_hda_codec_realtek,snd_hda_intel l2cap 48656 16 rfcomm,bnep snd_hwdep 13274 1 snd_hda_codec snd_pcm 80042 2 snd_hda_intel,snd_hda_codec i915 451033 3 snd_seq_midi 13132 0 snd_rawmidi 25269 1 snd_seq_midi snd_seq_midi_event 14475 1 snd_seq_midi uvcvideo 66851 0 snd_seq 51291 2 snd_seq_midi,snd_seq_midi_event btusb 18160 2 snd_timer 28659 2 snd_pcm,snd_seq bluetooth 65493 9 rfcomm,sco,bnep,l2cap,btusb snd_seq_device 14110 3 snd_seq_midi,snd_rawmidi,snd_seq psmouse 73312 0 usb_storage 43946 0 snd 55295 13 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device videodev 75143 1 uvcvideo drm_kms_helper 40745 1 i915 rt2860sta 494649 1 drm 184164 4 i915,drm_kms_helper uas 17676 0 serio_raw 12990 0 crc_ccitt 12595 1 rt2860sta i2c_algo_bit 13184 1 i915 soundcore 12600 1 snd snd_page_alloc 14073 2 snd_hda_intel,snd_pcm video 18951 1 i915 lp 13349 0 parport 36746 3 parport_pc,ppdev,lp r8169 42534 0 ~ $
途中で、
rt2860sta 494649 1
が表示されており、ドライバがインストールされているのが分かります。
ただ、これ問題がありまして、確かデフォルトでこのドライバは認識されていたのですが、実はその状態では動かないようでした。
ここに記述があって助かったのですが、このドライバは「/etc/Wireless/RT2860STA/RT2860STA.dat」というファイルを読み込む必要があるようなのですが、実際にはこのディレクトリもdatファイルも存在していませんでした。
面倒なので、この記事の通りに、ドライバも最新にしてしまえとばかりにRalink社のダウンロードページから該当する最新のドライバをダウンロードし、makeとかmake install とかしました。
すると上記ディレクトリもdatファイルも出来上がっていますので、「sudo /etc/init.d/networking restart」コマンドを実行します。
以前試した時はこれをやっていなかった可能性が高いです。(ディレクトリが存在していませんでしたからねぇ。)
また、更にこれだけではやはり使えないようです。
何が問題かと言うとこの無線LANアダプタ、この段階ではrt2860staとrt2800pciのどちらのモジュールでも使える「はず」なのですが、実際はrt2800pciだと動作してくれないようです。
にも関わらず、実際にはrt2800pciで動作させようとしているらしいのですね。
具体的にどちらのモジュールを使っているかを確認するには、lsmodにオプションをつけて実行するようです。
~ $ lspci -vnns 02:00.0 02:00.0 Network controller [0280]: Ralink corp. RT2860 [1814:0781] Subsystem: Micro-Star International Co., Ltd. Device [1462:6890] Physical Slot: 0-1 Flags: bus master, fast devsel, latency 0, IRQ 17 Memory at dfc00000 (32-bit, non-prefetchable) [size=64K] Capabilities: <access denied> Kernel driver in use: rt2860 Kernel modules: rt2860sta, rt2800pci ~ $
「-vnns」の後ろにつけた情報は、lspciを単独で実行した際に、お目当ての無線LANアダプタの情報が表示された行の先頭に記述されていた情報です。これを指定するとより詳細な情報を得ることができます。
上記コマンドの出力結果は、現状での出力結果です。
Kernel driver in use: rt2860
と出力されていますが、うまく動作していない状況下では次のように表示されていたのでしょう。
Kernel driver in use: rt2800pci
確認したいけど面倒なのでしませんw
次回ubuntu再インストールするときにこのブログを修正がてら確認します。
さて、rt2800pciがロードされている状態の場合、これがロードされないようにしてあげる必要があります。
そこで、モジュールロードの設定にブラックリストファイルを作成し、このモジュールがロードされないようにしてやる必要があります。
自分は次のように設定しました。
~ $ cat /etc/modprobe.d/blacklist-rt2800pci.conf blacklist rt2800pci ~ $
このファイルは存在していなかったので管理者権限で作成しました。
この状態で・・・再起動したんだっけっかな。。ひょっとしたら「/etc/init.d/networking restart」実行するだけでイケるのかも。。覚えてないやw
とりあえず再起動すれば大丈夫だと思います。(すげー適当だw)
んで、再起動したら再度「lspci -vnns 02:00.0」を実行し、今度は
Kernel driver in use: rt2860
と出力されていることを確認します。
modprob
お目当てのモジュールがロードされていなかった場合は、このコマンドを使ってモジュールをカーネルに追加したり削除したりします。
「今回の調査では」このコマンドは使用しなかった気がします。
ちなみに・・・このコマンドは昔いろいろいじったときも実行した記憶があるのですが、
コマンド実行しただけだとPCを再起動したときにリセットされてしまったような。。
そんで毎回実行しなくて済むようにするにはなんか設定ファイルを修正したような。。
(嫁さんのノートPCだったかな?)
ifconfig
使用可能なネットワークアダプターの情報を表示するコマンド。
lo、eth0、これらに加えて、自分の環境では「wlan0」が表示されました。
これが無線LANアダプターになります。
無線LANアダプタが表示されなかった場合、次のiwconfigを実行し、無線LANアダプタの名称を確認した上で、
~ $ ifconfig アダプタ名 up
を実行すると指定したアダプタが有効になるようです。
自分が実行した時には既に表示されていました。
iwconfig
無線LANアダプターの情報を表示するコマンド。
ちがった。有線LANネットワークアダプターも表示しますが、有線LANの場合は「no wireless extensions.」と表示されるだけになります。
で、無線LANアダプターの場合は接続に関連する詳細情報が表示されたりします。
あ、無線LANアダプターを指定して設定を変更したりもできます。
設定する場合は管理者権限が必要です。
自分の環境で実行するとこんな感じになってます。
~ $ iwconfig lo no wireless extensions. eth0 no wireless extensions. wlan0 Ralink STA ESSID:"XXXXXXXXXX" Nickname:"RT2860STA" Mode:Managed Frequency=2.417 GHz Access Point: 06:26:87:01:A6:FE Bit Rate=54 Mb/s RTS thr:off Fragment thr:off Link Quality=100/100 Signal level:-66 dBm Noise level:-81 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 ~ $
wlan0のエントリ−が無線LANアダプタの諸情報になります。
繋がらなかった時代はESSIDが""の状態のままでした。
wlan0を、ESSIDがXXXXXXXXXXのアクセスポイントに継げたい場合は次のようなコマンドラインを実行します。
~ $ sudo iwconfig wlan0 essid "XXXXXXXXXXX"
で、ここが「怪しいながらも何とか使えるようになりました」ってトコなんですが、
自分の自宅でオンラインにしたい場合、アダプタがアクセスポイントと接続しようとしている最中にこのコマンドを実行しないと繋がってくれません。
なんでだろう。。だれか教えてくださいエロイ人。
さて、実際に調査していた時にはここまでやっても無線LAN接続することができませんでした。
あ、記述わすれてましたが、問題切り分けの為に、アクセスポイント側の設定はセキュリティがザルの状態で試していました。
で、更に調べていたらそもそもアクセスポインタ見えてるの?という下りをどっかで見つけたんですが、どこの記事だったか忘れてしまいました。。
とにかくその人が言うには次のコマンドでそれが確認できるとのこと!
iwlist
scanオプションを指定してノートPCから見える電波の一覧を表示することができるコマンドっぽいです。(ホント適当だなw)
てか、scanオプションしていしないパターンで使ってないので、他に何ができるか知りませんw
で、これを実行すると、その時はこんな風に見えてました。
~ $ iwlist scan lo Interface doesn't support scanning. eth0 Interface doesn't support scanning. wlan0 No scan results ~ $
ミエテネーヨ。で、ここでその記事で困ってる人と同じ状況になったんですね。
そしたら相談に乗ってる人が、
「無線LANに電源入ってる?」
と言ったもんで、自分も「!!!」ってな感じに。
いそいでこのNotebookの内臓無線LANの電源を有効にする方法を調査した結果、
Fnキー + F11キー
の組み合わせで電源のオンオフをすることが可能ということを初めて知りましたw
で、これやってみると、トグルキーのような感じで本体のキーボード右下にズラリとならんでいるランプのうちの左から2番目のランプが点いたり消えたりw
点いてる状態で
sudo iwconfig wlan0 essid "XXXXXXXXXX"
やったら、繋がるようになりました。
内臓無線LANだから電源あるよなそりゃ。。
デスクトップじゃないんだから、常に電源入ってたらバッテリー無駄に消費しちゃうわけで。。
でも電源入って無くて3年無駄にしちゃったとか・・・マヌケだ。。