1〜5 は RedHat 7.3, kernel-2.4.20-19.7 での記述です。
Gentoo 1.4, gentoo-sources での記述を 6、7、8、9 に追加しました。
カーネル 2.6.x での記述を 10,11 に追加しました。
基本的に下にいくほど新しい記述です。
何かお気づきの点がありましたら、メール 又は口頭などでぜひお知らせください。
Project Info - MADWIFI のページへ行き、Downloadのところから madwifi-20030802.tgz をダウンロードし、 解凍します。
解凍後、できたディレクトリ madwifi-20030802 に移動し、Makefile.incを 開きます。98行目に
include ${KERNEL_PATH}/.config
とありますが、私はここを
#include ${KERNEL_PATH}/.config include ${KERNEL_PATH}/configs/kernel-2.4.20-i686.config
のように変えました。編集が終わったら、makeします。makeと打てば何のエラーも なく終了すると思います。これでモジュールができました。
できたモジュールを使えるようにします。rootになった後、次の順に打ちます。
2番目のところで Warning: が出ますが、これでモジュールがロードされたはずです。 /var/log/messages のログにも、
Aug 4 03:58:32 localhost kernel: wlan: 0.7.1.1 BETA (Sam Leffler <sam@errno.com >) Aug 4 03:58:36 localhost kernel: ath_hal: 0.9.5.3 BETA (Sam Leffler <sam@errno. com>) Aug 4 03:58:44 localhost kernel: ath_pci: 0.8.3.2 BETA (Sam Leffler <sam@errno. com>) Aug 4 03:58:44 localhost kernel: PCI: Found IRQ 11 for device 02:0a.0 Aug 4 03:58:44 localhost kernel: PCI: Sharing IRQ 11 with 00:1d.1 Aug 4 03:58:44 localhost kernel: PCI: Sharing IRQ 11 with 02:0b.1 Aug 4 03:58:44 localhost kernel: ath0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24M bps 36Mbps 48Mbps 54Mbps Aug 4 03:58:44 localhost kernel: ath0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps Aug 4 03:58:44 localhost kernel: ath0: 802.11 address: XX:YY:ZZ:AA:bb:CC Aug 4 03:58:44 localhost kernel: ath0: Atheros 5211: mem=0xdfdd0000, irq=11 Aug 4 03:58:44 localhost /etc/hotplug/net.agent: invoke ifup ath0
のように出ていると思います。
あとはネットワークにつなぐだけです。無線LANの ESSID が hogehoge、Wep Key が fugafuga(数字でなく、文字)だった場合、
として設定します。しかし、この時点ではなぜか ESSID が設定されません。
Detail:780833 - Install problems. の Followups: の所を見てみると、なんか
Then you need to
ifconfig ath0 {IP} netmask 255.255.255.0
where {IP} is the IP you want to assign to the driver.
とか書いてあり、自分の家ではサブネットマスクが同じ255.255.255.0 だったので、適当に
と打ってみました。すると、なんと ESSID がなぜか設定されます。これは
2、3回繰り返してみましたが、同じ結果になりました。
ちなみに、netmaskうんたらの部分は要らないようで、
<修正あり、補足1参照>
とりあえず適当なIP Addressを設定すると
ESSID の設定が有効になるようです。
こうなったらすかさず
としてDHCPサーバからIPを正式にもらいます。その後は、外につなげるように なります。
今度また情報理工学系の無線LANやECCの無線LANで試してみようと思います。 うまくいけばいちいち insmod しなくてもよいよう、make installしてしまう のもいいかもしれません。make install すると、modprobe ath_pci とする だけでドライバが読み込めると思います。
情報理工学系の無線LANやECCの無線LANも、同様にして接続できました。 ただ、やはり ifconfig の際に netmask の設定が必要なようです。
少しソースに手を加えると、使えるチャンネルが増えます。これに ついては下の Gentoo Linux の項を参考にしてください。
やったことの概略だけ書きます。まず、MADWIFI の sourceforge から CVS 経由でソースをとってきます。そのアーカイブを madwifi-20030920.tar.gz として置いておきます。たぶん(執筆現在で)最新だと思います。
次は、使えるチャンネルを増やすため、ソースを少しいじります。 madwifiドライバのインストールと検証結果(1) の「チャンネル1-11, 34,38,42,46で動くようになりました!」の記述が あるところを参考に、hal/ah.h の、240行目から始まる
enum { CTRY_DEBUG = 0x1ff, /* debug country code */ CTRY_DEFAULT = 0 /* default country code */ };
というところを
enum { CTRY_DEBUG = 0x1ff, /* debug country code */ CTRY_DEFAULT = 0x188 /* default country code */ };
と変更します。これは、上で置いたアーカイブではもう変えてあります。 ちなみに、RedHat の所では Makefile.inc を変更していますが、Gentoo を 使う御方ならば .config はあるでしょう。そこは変える必要はありません。
make します。
make install します。これで、/lib/modules/2.4.20-gentoo-r5/net/ の 下に ath_hal.o、wlan.o、ath_pci.o がインストールされます。
起動時にこれらを読み込んでくれるように設定します。私は他のモジュールの
読み込みにも便利なので、 hotplug を使っています。emerge sys-apps/hotplug
して、rc-update add hotplug default とかするだけです。
もし hotplug なんて起動していられない、というのなら、
/etc/modules.autoload に ath_pci と書いてください。これで起動時に
自動的に読み込まれるはずです。
後はつなげるだけです。私は、上の RedHat のところ (3. インターフェイスの設定)の方法でやっています。複数の AP につなげる 必要があるので、この一連の流れをそれぞれ別のスクリプトを作って 動かしています。一ヶ所でしか使わないなら、適当な /etc/init.d/net.ath0 を書いて rc-update add net.ath0 default とかするといいかもしれません。
kernel-2.4.20-gentoo-r7 + CVS版ソースでもできました。そのときの ソースアーカイブを madwifi-20031001.tar.gz に置いておきます。
今回、CVSからソースをとってきて make してみると、あの謎の 「ifconfig ath0 {IP} netmask {NETMASK}」の作業がいらなくなりました! もちろんその他にもいろいろ改善されています。ぜひ使ってみましょう! そのときのソースは madwifi-20031108.tar.gz です。
ちなみに、 CVS Repository のところにも説明がありますが、例えば
のようにすると、カレントディレクトリ下の madwifi というディレクトリ以下に ソースを一発でとってきてくれます。ブラウザで Browse CVS へアクセスして一つずつ確認しながら落としてもいいですが、cvs コマンドが使えるなら 使った方が便利です。
emerge /usr/portage/net-wireless/madwifi-driver/madwifi-driver-0.1_pre20031110.ebuild と打ってみましょう ;-)
これは、上で書いたようなソースの変更は行っていませんが、どうやらこの Toshiba Tecra のものだとその変更は必要ないようです。そのままで5GHz帯のチャンネル (Channel 34, 38, 42, 46)が使えています。
どうやら、country code が 0 だった場合、/proc/sys/net/ath/regdomain を
読める場合は読むそうです。それでうまくいっているのでしょう。
参考: madwifiドライバのインストールと検証結果(1)
kernel 2.6.0 では、ソースそのままでは make に失敗します。それを直す
パッチが
Makefile.inc patch for modversions.h on non-2.4 kernels
にあるのでその Makefile.inc.patch をとってきてあてましょう。
(注)現在の cvs ソースでは必要なくなったようです
例えばソースツリーの一つ上にとってきたら
のようにしてあてます。modversions.h でなく modsetver.h を読みにいくよ うにする単純なパッチなので、自分で Makefile.inc を書き換えてもいいで しょう。
Gentoo な方には、 madwifi の ebuild を作り直してみたので、これを $PORTDIR_OVERLAY で指定したところ (例えば /usr/local/portage ) に net-wireless というディレクトリを作って、 その下に解凍してください。それで emerge /usr/local/portage/net-wireless/madwifi-driver/madwifi-driver-0.1_pre20031213-r2.ebuild と打つか、ACCEPT_KEYWORDS=~x86 emerge madwifi-driver と打つかすると インストールされると思います。
ただ、使ってみると ものすごく パケットロスが起こります。 私が使ってみたところだいたい 1/3 くらいのパケットが落ちます。 使い物になりません…。dmesg するとなんか
ath0: hardware error; resetting
とかいうメッセージがずらずら出ていますし…怪しすぎます。どなたかうまく いった方はぜひメールなどでご連絡ください。
上でも書きましたが、現在は 2.6.x に対する Makefile.inc のパッチ適用は 必要なくなったようです。
Gentoo な方は、madwifi-driver-0.1_pre20040108.ebuild を emerge して みましょう。kernel 2.6.x でも快適に使えます ;-)