背景
以前の投稿で SD カードに FreeBSD 9.2 を入れて ONKYO C205A3 で動かすところまで仕上げましたが、C205A3 に付属してくる USB ethernet インターフェースがデフォの i386/FreeBSD 9.2 では動きません。
ONKYO C205A3 付属の USB Ethernet のユニットは、usbconfig などで調べると中身は SMSC (SMC2) の LAN9500 です。このインターフェースは NetBSD では動いているようですが、そのソース(if_smsc.c)のコメントを読むと、もともとが FreeBSD から持ってきたもののようです。で、FreeBSD の方の各リリースバージョンのリリースノートをたどって検索したところ、正式リリースではどうも ARM 版に入っているようです。
ということで、FreeBSD のソースリポジトリから関連するソースファイルを取り寄せ、ちょっとでっち上げで動かしてみました。
なお、この投稿もほぼ私のためのメモです。そして、今回は結構ちゃんとやれる人でないと、ちょっと細部でこんがらがると修復不能になりかねないので、要点のみの記載で済ませます。また、あれこれ試して動くようにしたため、もしかしたら無駄なこともやっているかもしれません。
作業
- FreeBSD のソースリポジトリから関連ソースを取り寄せます
- /usr/src/sys/dev/usb/net/if_smsc.c
- /usr/src/sys/dev/usb/net/if_smscreg.h
- /usr/src/dev/usb/usbdevs (/usr/share/misc/usbdevs?)に追記します
- product SMC2 LAN9500 0x9900 10/100 Ethernet
- /usr/src/sys/dev/usb/net/if_smsc.c に追記します
- SMSC_DEV(LAN9500, 0),
- /* この意味と追記する妥当な場所が分からない技量の人は、まねしない方が無難 */
- カーネルを作り直します
- カーネルをインストールします
- /etc/rc.conf に追記します
- ifconfig_ue0=”DHCP”
- # 固定アドレスなら DHCP の部分はその様に変更してください。
- # デバイスとしては、ue0 になります。smsc0 にはなりません。
- リブートします
- ネットインターフェースの動作を確認します
4, 5 はハンドブックに書かれているので、これさえも自信がない人は本当に試さない方が良いでしょう。
余録
このままですと、freebsd-update を行うとバッティングする可能性があるので、個人的運用としてはドライバを ko にして、/boot/modules に置いて、カーネルにアタッチするかたちに運用した方が良いような気がします。
usb の周辺が私が以前いじってたころのものと変わっていて、/etc/usbd.conf なども無くなっており、ちょっと困惑しました。R9.2 では NetBSD 出自のものから変わってるんですね。おかげで一日ほど余計に時間が掛かってしまいました。また、この新しい方式の方の情報がまだネットにもほとんど無く、本家サイトの開発者向けのドキュメント類でも記載が少なかったため、若干でっち上げに近い対処もしてしまいました。