Eee PC 901-16Gの無線LANをIntel 3945ABGに交換した

無線LAN系ツールをいろいろ使いたくて、無線LANIntel 3945ABGに交換しました。
はまり所は、ubuntu 9.04の標準iwl3945だとうまく接続できないので、backportsのiwl3945を使うあたりだと思います。

ハードウェアの交換

  1. 電源を抜き、バッテリーをはずす
  2. 本体を裏返し、裏蓋をはずす (ネジ2本はずせばOKです)
  3. 右側にある無線LANカードをはずす
    1. 2本のアンテナ線(白・黒)をはずす
    2. ネジを2本はずし、無線LANカードを取り出す
  4. Intel 3945ABGを取り付け、ネジ止め
  5. 裏蓋を戻す

backportsのドライバを適用

ubuntu 9.04を起動すると、標準iwl3945によりwlan0で認識します。

$ sudo lsmod | grep iwl
iwl3945                97912  0 
mac80211              217208  1 iwl3945
led_class              12036  1 iwl3945
cfg80211               38032  2 iwl3945,mac80211
$ sudo ifconfig -a
wlan0     Link encap:イーサネット  ハードウェアアドレス xx:xx:xx:xx:xx:xx  
          BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000 
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

でも、標準iwl3945だと、うまく動作しないです。
そこで、ここを参考にして、backportsドライバを適用します。

$ sudo aptitude install linux-backports-modules-jaunty
$ sudo rmmod -f iwl3945
$ sudo modprobe iwl3945 disable_hw_scan=1
WARNING: Error inserting iwlcore (/lib/modules/2.6.28-11-generic/updates/iwlcore.ko): Unknown symbol in module, or unknown parameter (see dmesg)
FATAL: Error inserting iwl3945 (/lib/modules/2.6.28-11-generic/updates/iwl3945.ko): Unknown symbol in module, or unknown parameter (see dmesg)

モジュールのロード時にエラーが発生しました。*1
OS起動時にロードされるかを確認するため、OS再起動をしたところ、無線LANへの接続を確認できました。
iwl3945のサイズが変わっているので、backportsのドライバが適用されているようです。
結局、手動ロード時のエラーは原因分からずです。

$ sudo lsmod | grep iwl 
iwl3945                84100  0 
iwlcore               112768  1 iwl3945
lbm_cw_mac80211       227364  2 iwl3945,iwlcore
lbm_cw_cfg80211        73760  3 iwl3945,iwlcore,lbm_cw_mac80211
led_class              12036  2 iwl3945,iwlcore

その他、メモ

アクセスポイントがステルス状態だと、Ralink RT2860 STA(標準無線LAN)ではアクセスできなかったけど、Intel 3945ABGはアクセスできた!!
Intel 3945ABGの無線LANカードは、2,000円弱でゲット可能!!


Intel® PRO/Wireless 3945ABG Driver for Linux
[ubuntu] wireless doesn't work in ubuntu 9.04, intel 3945abg

*1:disable_hw_scanを指定しなくても、ロード時にエラーが発生