ETG3-US2(AX88178)をcentosで使う
USBを刺すと正しいハードとして認識されカーネルモジュール(asix.ko)も組み込まれたように見える。ifconfig, ethtool, routeなど正しいように見える。でも通信できない。これに対処するためasixからドライバをダウンロードしてmakeする必要がある。これの手順備忘録。
手順
要点をまとめると、asix からダウンロードしたax88178ドライバ(bzip2)を展開(tar -jxvf)してmakeしてmake install。詳細手順は以下。
- http://www.asix.com.tw/ → Support → 検索ワード「AX88178」で検索 → centos6の場合「For Android 1.x/2.x/3.0, Linux kernel 2.6.14 and later」のドライバ(bz2)のURLをコピー
- wget [ドライバ(bz2)のURL]
- tar -jxvf [wgetでダウンロードしたドライバ(bz2)]
- cd [tarで展開したドライバディレクトリ]
- make → asix.koが作られたことを確認
- modinfo asixで、インストール前の /lib/modules 配下のasix.ko の日付を確認
- make install
- 先のasix.koの日付を再確認し、先ほどmakeしたasix.koに代わっている事を確認
- リブート(rmmod,,,modprobeで問題ない場合がほとんどだが、一度、それではうまくいかず、さんざん試行錯誤したあげく、リブートしたら万事解決した経験があるので、ここでは、安全サイドに倒してこのように記述しておく)
以下、古くなりつつある情報
elrepoにドライバがあったけどこれも同じ現象。ここに同現象と対処があった。
- 2011/11/05追記 手順が簡単になって、asixからダウンロードしたax88178ドライバ(bzip2)を展開(tar -jxvf)してmakeしてmake installするだけでよくなってる。ドライバのreadmeによると、usbnet.cを自前で組み込んだそうだ。asixドライバ v4.1.0 の日付が2009-09-27になってる。readmeの最終履歴は2011-03-15になってる。どういうことだ?
- 2011/11/05追記 Centos6にしたが、標準のドライバで動かない状況は変わらず
- モジュール確認
- modprobe -l -a asix
- modinfo asix
- 2011/06/18追記 起動時のタイミングの問題か?起動直後asixドライバがうごいていない場合があるようだ。暫定対処メモ。
- ifconfig で確認するとeth0がない
- lsmod | grep asix でロードされてる、、、
- rmmod asix でドライバをアンロード
- modprobe asix でドライバをロード
- (ifconfigでeth0が出てなかったら)ifup eth0
- route 確認 eth0 のdefaultルートがなければ route add default gw 10.2.23.1 eth0
Linux 64bit でのETG3-US2 MTU(JumboFrame)設定
linux 64bit ax88178ドライバ(バージョン3.6)でJuboFrame設定したいのだができない。以下のエラー。
# ifconfig eth1 mtu 9000 SIOCSIFMTU: Invalid argument
※2011/05/01追記:バージョン4.1でも同様を確認
※2011/11/06追記:4.1では、メッセージも何も出ず、ifconfigで確認すると16kぐらいまで設定できるが、実は何も効いてないという動きになっている様子。winから LinkStation(9kに設定)に対してping -l 2000 は通るが、mtu 4kに設定したax88178は無応答。
以下 ax88178 ドライバ3.6の場合。
usbnet.cのchange_mtu関数内の以下の場所に反応してるみたい。
if (new_mtu <= 0 || ll_mtu > dev->hard_mtu) return -EINVAL;
dev->hard_mtuに関してはasix.c(v3.5.0 2010-09-15)内に以下のような記述が、
/* Asix framing packs multiple eth frames into a 2K usb bulk transfer */ if (dev->driver_info->flags & FLAG_FRAMING_AX) { /* hard_mtu is still the default - the device does not support jumbo eth frames */ dev->rx_urb_size = 2048; }
インターネット上にも情報が見つけられない。今のところ、ひとまずasixの出してるlinuxドライバはジャンボフレーム未対応と解釈することにする。