Linuxで無線LAN(Intel 2200BG)をつかうには


ドライバ

2200BGを認識させるには少なくとも3種類の方法があります。ipw2200は1.0.1以降でWPAに対応したため現在はこれを利用しています。

DRIVERwpa対応ライセンス動作方法開発元
ipw2200○(1.0.1以降)フリーネイティブドライバhttp://ipw2200.sourceforge.net
ndiswrapperフリーWindows用ドライバを使用http://ndiswrapper.sourceforge.net
linuxant有償Windows用ドライバを使用http://www.linuxant.com

ipw2200 <2005/10/26更新>

カーネル

カーネルのリコンパイルはとくに必要ありません。(2.6.12では動作確認済)

ファームのインストール

http://ipw2200.sourceforge.net/ から ipw2200-fw-2.4.tgz をダウンロード。

% tar zxvf ipw2200-fw-2.4.tgz
% su
# cp -p ipw2200_* /usr/lib/hotplug/firmware/

モジュールインストール

# apt-get install ieee80211-source ipw2200-source
# module-assistant auto-install ieee80211
# module-assistant auto-install ipw2200
# dpkg -i ieee80211-modules-2.6.12_1.1.6-2_i386.deb ipw2200-modules-2.6.12_1.0.8-1_i386.deb

注意

カーネル起動時に以下のようなメッセージがでてeth1の生成に失敗することが起こりました。

Sep 12 23:37:01 y2 kernel: ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.6
Sep 12 23:37:01 y2 kernel: ipw2200: Copyright(c) 2003-2004 Intel Corporation
Sep 12 23:37:01 y2 kernel: ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
Sep 12 23:37:01 y2 kernel: ipw2200: ipw-2.3-boot.fw load failed: Reason -2
Sep 12 23:37:01 y2 kernel: ipw2200: Unable to load firmware: 0xFFFFFFFE
Sep 12 23:37:01 y2 kernel: ipw2200: failed to register network device
Sep 12 23:37:01 y2 kernel: ipw2200: probe of 0000:02:04.0 failed with error -5

試行錯誤の末、/etc/fstabに以下のエントリを追加することで解決しました。

sys             /sys            sysfs   defaults        0       0

ndiswrapper

http://ndiswrapper.sourceforge.net

カーネルのリコンパイル

まず、kernel stackを16kにしないとkernel panicしてしまうのでkernelに以下のパッチをあててkernelを再構築する。

http://www.linuxant.com のdrivers-> WLAN driverloader->Downloadから http://www.linuxant.com/driverloader/wlan/full/archive/linux-2.6.9-16kstacks.patch をダウンロード

# apt-get install kernel-source-2.6.9
# cd /usr/src
# tar jxvf kernel-source-2.6.9.tar.bz2
# cd kernel-source-2.6.9
# patch -s -p1 < SOMEWHERE/linux-2.6.9-16kstacks.patch
# make-kpkg clean
# cp SOMEWHERE/.config .
# make menuconfig
    Kernel Hacking -> 16Kstack をenable
# make-kpkg --initrd kernel_image kernel_headers
# cd ..
# dpkg -i kernel-image-2.6.9_10.00.Custom_i386.deb kernel-headers-2.6.9_10.00.Custom_i386.deb 

このままだとmoduleインストール時にエラーになるので、以下をやっておきます。

# cd /usr/src/kernel-headers-2.6.9
# ln -s ../kernel-kbuild-2.6-3/scripts .

/boot/grub/menu.lstを編集して 2.6.9が起動できるようにします。 ここでrebootします。

ndiswrapperドライバのインストール

注: ndiswrapper 0.12+1.0rc1-1 ではmodule install後パケット受信がうまくいかないため ndiswrapper 0.12を使用する

/etc/apt/sources.listに以下を追加

deb http://ndiswrapper.sourceforge.net/debian ./
# apt-get update
# apt-get install ndiswrapper-source
# module-assistant auto-install ndiswrapper

ndiswrapper-utilsを以下の方法でインストールします

# apt-get install ndiswrapper-utils

ndiswrapper-utilsを以下の方法でインストールします

ndiswrapper-utils_0.11以前はこの方法でした
# cd /usr/src/modules/ndiswrapper
# fakeroot debian/rules binary
# cd ..
# dpkg -i ndiswrapper-utils_0.11_i386.deb

Windows用ドライバをインストール

http://ndiswrapper.sourceforge.net/supported_chipsets.html を参照し http://support.intel.com/support/wireless/wlan/pro2200bg/index.htmhttp://support.intel.com/support/wireless/wlan/sb/CS-010623.htm から Windows用Intel PRO/Wireless LAN 2200BG用ドライバ(8.1.1.0)を入手する。 WinXPを使って展開。

以下の方法でw22n51をインストール

# ndiswrapper -i w22n51.INF

各種設定

/etc/modutils/aliasesに以下を追加

alias wlan0 ndiswrapper
# update-modules

で/etc/modutils.confを更新

/etc/network/interfaces に以下を追加

auto wlan0
iface wlan0 inet dhcp
        wireless-essid TESTID
        wireless-key s:testtesttesttestt open
        wireless-mode managed

参考

http://ndiswrapper.sourceforge.net/wiki/index.php/Centrnio2200

WPA <2006/04/23更新>

http://hostap.epitest.fi/wpa_supplicant/ で開発されているwpa_supplicantを用いることでWPA-PSKが使えるようになります。 ここではipw2200とndiswrapper両方で使えるように設定します。 以下の組合せでWPA-PSK(TKIP)の動作実績があります。

kerneldriverwpa_supplicant versionwpa_supplicant driver
linux-2.6.16ipw2200(builtin)wpa_supplicant-0.4.8wext
linux-2.6.12ipw2200-1.0.8wpa_supplicant-0.4.4ipw2200
linux-2.6.12ipw2200-1.0.6wpa_supplicant-0.4.4ipw2200
linux-2.6.12ipw2200-1.0.6wpa_supplicant-0.4.2ipw2200
linux-2.6.10ipw2200-1.0.1wpa_supplicant-0.3.8ipw2200
linux-2.6.9ipw2200-1.0.1wpa_supplicant-0.3.8ipw2200
linux-2.6.9ndiswrapper-0.12wpa_supplicant-0.2.4ndis

前準備

libssl-devがインストールされていない場合にはインストールします。

# apt-get install libssl-dev

インストール

# apt-get install wpasupplicant

通常でこれだけでOKです。

以下は、自分でコンパイルする場合です。 http://hostap.epitest.fi/wpa_supplicant/ からwpa_supplicant-0.3.8.tar.gz(2005年2月20日時点ではこれが最新)をダウンロードします。

% tar zxvf wpa_supplicant-0.3.8.tar.gz
% cd wpa_supplicant-0.3.8
% cat > .config
CONFIG_DRIVER_WEXT=y
CONFIG_WIRELESS_EXTENSION=y
CONFIG_DRIVER_NDISWRAPPER=y
CONFIG_DRIVER_IPW=y
CONFIG_IEEE8021X_EAPOL=y
CONFIG_EAP_MD5=y
CONFIG_MSCHAPV2=y
CONFIG_EAP_TLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_SIM=y
CONFIG_EAP_LEAP=y
CONFIG_CTRL_IFACE=y
^D
% make
# make install
# cp wpa_supplicant.conf /usr/local/etc/

設定

/etc/wpa_supplicant.confの編集をします。 まずpassphraseを作成します。ESSIDとpassphraseを引数にしてwpa_passphraseコマンドを実行します。

# wpa_passphrase TESTEST <passphrase>
   #psk="passtest"
   psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

こうして作成したpskを/etc/wpa_supplicant.confに以下のように追加します。

network={
       ssid="TESTEST"
       proto=WPA
       key_mgmt=WPA-PSK
       pairwise=CCMP TKIP
       group=CCMP TKIP
       #psk="passtest"
       psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
       priority=2
}

動作確認と最終設定(wpa_supplicant 0.4.8以降)

/etc/network/interfacesを以下のようにします。

auto eth1
iface eth1 inet dhcp
       wpa-conf /etc/wpa_supplicant.conf
# /etc/init.d/network restart

これでIPアドレスが設定され、IP接続できることを確認します。

最終設定

/etc/init.d/wpasupplicantは0.4.8では無くなりました。かわりにinterfaceが有効になったときに自動的に起動されます。 上記の設定をしておくだけでreboot後に有効になります。

動作確認と最終設定(wpa_supplicant 0.4.4以前)

以下のようにして動作を確認します。

  • ipw2200ドライバを使用する場合
    # /usr/sbin/wpa_supplicant -d -i eth1 -D ipw
  • ndiswrapperドライバを使用する場合
    # /usr/local/bin/wpa_supplicant -d -i wlan0 -c /usr/local/etc/wpa_supplicant -D ndiswrapper

その後、IPアドレスを設定し、IP接続できることを確認します。

最終設定

上記で問題ない場合には、起動時に有効になるように、

# ln -s /etc/init.d/wpasupplicant /etc/rcS.d/S38wpasupplicant
# rm /etc/rc2.d/S20wpasupplicant

とします。


#navi(Top/Y2/2200BG): No child page like: Top/Y2/2200BG/Foo