BUFFALO WLR-UC-G を FreeBSD で使う。

渋谷に新しくヤマダ電気が出来たのだけど、そこの特売で今はディスコンのバッファロー(FreeBSD 的には MELCO)の WLR-UC-G が 1,480yen で売っていた。

USB 接続の無線 LAN アダプタで、WindowsXP 上では AOSS と言うソフトウェアルータを利用して無線アクセスポイントになれる。と言うヤツ。

Windows 専用のアプリケーションをインストールすると無線アクセスポイントになれるんだけど、これを FreeBSD に接続してフツーに無線 LAN アダプタに利用できないかなぁ。と思い、購入。まぁ、FreeBSD で動かなければ WindowsXP で iPod Touch 用に利用すれば良いかな。とも思ったんだけど。

で、FreeBSD に早速接続してみた。kldload if_* とかした後で。けど、かわいくないなぁ。ugen0 に落ちてしまった。しくしく。

さてと。格闘はここから。まず、WLR-UC-G はどんなチップが乗っているのか? google で探すのだけど、どうも解らない。Linux 方面での実績を調べてみたのだけど、それも無いみたい・・。あらら。結局どんなチップを使っているのか google では解らなかったので、しょーがない。Windows に付属の CD からドライバをインストールして調べてみた。すると、Ralink Technology Corp. と言う所のドライバを利用しているみたい。ふぅ。

ちなみに FreeBSD に接続した時の usbdevs -v はこんな感じ。

port 5 addr 2: high speed, power 300 mA, config 1, WLR-UC-G(0x0119), Buffalo(0x0411), rev 0.01

 
ただ、こいつ、しゃらくさいことにプロダクト ID を二つ持っている。AP モードにした場合は 0x0119、クライアントモードにした場合は 0x0116 となる。これを覚えておいてと。

これ位の情報が手に入ると後は簡単。FreeBSD で Ralink Technology Corp. 用のカーネモジュールが無いか調べてみたら if_rum と言うのがあるじゃーん。と、言うことで最新の 7.1-STABLE のソースコードを持ってきてエントリを追加します。

でもって出来たパッチはこの辺りにおいておきます。

http://www.icmpv6.org/Prog/FreeBSD_patches/MELCO_WLR-UC-G.patch

プロダクト ID を二つ登録したので AP モードでもクライアントモードでもどっちでも 無線 LAN アダプタとして利用可能です。けど、クライアントモードで利用したほうが安心かも;-)。

実際に利用するするためには色々なカーネルモジュールをロードする必要がありまずが、ここでは割愛させていただきます;-)。 僕が試した感じでは ifconfig rum0 up して、ssid 付けて dhcp でアドレスが付きました。後 ifconfig rum0 scan も利用できました。

FreeBSD において AP モードは利用できないけど、ハードウェア自体は利用できるようになりました。めでたしめでたし。と言うことにしましょう;-)。

ASUS M2A-VM HDMI の続き。そのさん。

さて、ASUS M2A-VM HDMI で FreeBSD を楽しむスレッドのそのさんです。前回は acpi_ppc.ko で Cool’n’Quiet を有効にするお話でした。

今回は IXP SB600 Serial ATA Controller のお話です。ちょっと google していたら、以下の URL を発見。

http://lists.freebsd.org/pipermail/freebsd-bugs/2007-May/024410.html

今まで ASUS M2A-VM HDMI マザーボードと言うか、AMD690G チップセットは UDMA33 で HDD を認識して忌んだけど、上のパッチを適用すると ATA150 で認識するようになってくれた。

こっちがパッチ適用前のメッセージ。

ad4: 239372MB  at ata2-master UDMA33

 
こっちがパッチ適用後のメッセージ。

ad4: 239372MB  at ata2-master SATA150

 
S-ATA なので ad4 と認識されてしまうんだけど、それにしても ようやっと SATA150 になった。僕の 環境は FreeBSD/amd64 6.3-PRERELEASE なんだけど、まだ、CURRENT から降ってきていないみたい。なので、STABLE で利用したい人は上記のパッチを手バッチで自分のソースに当てましょう;-)。

まぁ、一応パッチを書いておきましたけど・・。

http://www.icmpv6.org/Prog/FreeBSD_patches/IXP_SB600SATA-6.3-PRERELEASE.patch

けど、すぐに STABLE に降ってくるんだろうねぇ。

後は、グラフィックチップだなぁ。

SD Bus Host Adapter。

最近の NotePC には SD スロットが付いている。しかし、FreeBSD ではドライバが無くて、none なデバイスである・・。pciconf -lv すると以下のような感じ。

none2@pci2:1:2: class=0x080501 card=0x01a31028 chip=0x08221180 rev=0x17 hdr=0x00
device     = 'SD Bus Host Adapter'
class      = base peripheral

 
しかし、世の中にはすごい人がいるものですねぇ。FreeBSD 用のドライバを書いてくれた人がいます。

http://lists.freebsd.org/pipermail/freebsd-drivers/2006-September/000243.html
http://www.sashi.de/en/freebsd/sdhci/index.html

早速ダウンロードして試してみました。make して kldload sdhci.ko しておしまい。再度、pciconf -lv してみると以下のような感じ。おーーー。

sdhci0@pci2:1:2:        class=0x080501 card=0x01a31028 chip=0x08221180 rev=0x17 hdr=0x00
vendor     = 'Ricoh Co Ltd'
device     = 'SD Bus Host Adapter'
class      = base peripheral

 
しかし、messages にはログがガンガン吐かれている。あぁ。と、言うことで常時 kldload しているわけには行かないみたい。必要な時に kldload するようにするか・・。あ、ちなみにデバイスと認識させただけで、実際にデータ転送とかしたことないですよ。僕;-)。ヒトバシラーな方、頑張ってください。

僕が思うに、devd もしくは hald と連携して、SD カードが挿入された時点で kldload するようにしたらええんかな? あ、けど、SD カード挿入前には /dev/sdhci0 が生えてなければならないので、ちょっち無理かなぁ・・。