2013年10月29日

初代EeePC(701または4G-Xと呼ばれる機種)で、CentOS6で内蔵の無線LANを使う

内蔵ストレージが4Gしかない初代EeePC。ストレージも小さいし画面も狭いので、人間が使うにはちょっともうスペック不足だが、SSD+Atomの構成で省電力静音なので、ちょっとしたサーバーにでもしようと思う。
ところが、簡単に動きそうなLinuxのディストリビーションを入れようとしても、XububtuもLubuntuもストレージ不足で入らない(前者は5.4G、後者は4.3G必要)。そもそもサーバー用途なので、グラフィカルデスクトップなぞは不要であるから、CentOSの最小構成をインストールしてみた。

で、起動してみると、内蔵の無線LANが動かないのである。ifconfig wlan0 でインターフェースは見えているが、通信はできない。どうやら初代EeePCの無線LANはクセのある奴らしい。
# lspci | grep Atheros
01:00.0 Ethernet controller: Atheros Communications Inc. AR242x / AR542x Wireless Network Adapter (PCI-Express) (rev 01)
03:00.0 Ethernet controller: Atheros Communications Inc. L2 Fast Ethernet (rev a0)
AtherosのAR242x/AR542xというカードらしいのだが、
  • デフォルトで入っているath5kでは動かない
  • yumでインストールするmadwifiでは動かない
ということのようである。CentOS HowToのThe Atheros AR5007EG wireless cardあたりを参考に、いろいろやって動かした。

  1. 必要なものが入ってなかったら入れる。
  2. # yum install gcc gcc-c++ make kernel-devel \
    wget wpa_supplicant wireless-tools pciutils
    gcc gcc-c++ make kernel-devel は必須。wpa_supplicantは、無線を暗号化するなら必要。wget wireless-tools pciutilsはお好みで。

  3. madwifiのスナップショットをダウンロードしてコンパイルし、ドライバを入れる
  4. # cd /tmp
    # wget http://snapshots.madwifi-project.org/madwifi-hal-0.10.5.6/madwifi-hal-0.10.5.6-r4103-20100110.tar.gz
    # tar xvfz madwifi-hal-0.10.5.6-r4103-20100110.tar.gz
    # cd madwifi-hal-0.10.5.6-r4103-20100110
    # make
    # make install
    madwifiのsnapshotはいくつか種類があるが、r4126-20100324では動かなかったように思う。が未確認である。

  5. 標準のドライバを殺し、madwifiのドライバを読むようにする
  6. blacklistにathを入れるのと、ath_pciを読むようにするのの2つ。
    # vi /etc/modprobe.d/blacklist.conf
    (最終行に追加)
    blacklist ath5k
    blacklist ath

    # vi /etc/modprobe.d/ath.conf
    (ファイル名は何でも良さそうだが、新規ファイル作成。既存のどこかのファイルに追加してもいいだろう)
    alias netdev-ath0 ath_pci

  7. WPAを使うなら設定する
  8. これは普通にやればOK。
    # cd /etc/wpa_supplicant
    # wpa_passphrase *SSID* *PASSPHRASE* > hogehoge.conf
    # mv wpa_supplicant.conf wpa_supplicant.conf.org
    # cat wpa_supplicant.conf.org hogehoge.conf > wpa_supplicant.conf

    # vi /etc/sysconfig/wpa_supplicant

    INTERFACES="-iwlan0" とする
    DRIVERS="-Dwext" とする


  9. 無線LANを起動する
  10. # modprobe -r ath5k
    # modprobe ath_pci
    するなり、面倒ならリブートするなり。すると、インターフェースとして、wifi0 と wlan0 が見えるはずである。このうち、使うのはwlan0の方である。必要なら/etc/sysconfig/network-script/ifcfg-wlan0を適当に設定してやって、wpa_supplicantを起こし、ifupで起動。
    # ifconfig -a
    eth0 Link encap:Ethernet HWaddr **:**:**:**:**:**
    (略)
    lo Link encap:Local Loopback
    (略)

    wifi0 Link encap:UNSPEC HWaddr **-**-**-**-**-**-**-5E-00-00-00-00-00-00-00-00
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    (略)

    wlan0 Link encap:Ethernet HWaddr **:**:**:**:**:**
    BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    (略)

    # service wpa_supplicant start
    # /sbin/ifup wlan0
    # iwconfig wlan0
    wlan0 IEEE 802.11g ESSID:"*********" Nickname:""
    Mode:Managed Frequency:2.412 GHz Access Point: 1C:**:**:**:**:C2
    Bit Rate:48 Mb/s Tx-Power:17 dBm Sensitivity=1/1
    Retry:off RTS thr:off Fragment thr:off
    Encryption key:****-****-****-****-****-****-****-**** Security mode:restricted
    Power Management:off
    Link Quality=65/70 Signal level=-31 dBm Noise level=-96 dBm
    Rx invalid nwid:17180 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:0 Missed beacon:0

    こんな感じである。

HowToのドキュメントとの大きな違いは、modprobeのaliasが netdev-ath0 である点と、インターフェースの名前がath0でなくwlan0になる、というところかな。
posted by usoinfo at 17:23 | Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする