LS−GLにおけるUSB−LAN変換アダプターの活用

 LS−GLでの無線LANの利用が以外と順調に進んだもので今度はUSBタイプの有線LANが使えればLS−GLのルーターとしての利用範囲が広がるのではと思い、手元にあったかなり古いものではあるがメルコのLUA−TXで試してみた。
 方法は、まず、ドライバーがなんなのかを探す必要から、Debianでetchをインストールした作業用PCに挿してみたところ以下の通り見事認識し、使用できた。
 そこで、ドライバーを確認すべくUSBを見るとメルコのUSB−LAN変換アダプター
debian:/home/anabuki# lsusb
Bus 001 Device 003: ID 0411:0001 MelCo., Inc. LUA-TX Ethernet [pegasus]
Bus 001 Device 002: ID 05e3:0606 Genesys Logic, Inc.
Bus 001 Device 001: ID 0000:0000

 これで使用チップはpegasusなるものらしいことが判明した。

 次にLS−GLにLUA−TXを挿すと#dmesgでの表示はいかにもドライバーが無いとのメッセージ
usb 1-1: new full speed USB device using ehci_platform and address 11
ehci_platform ehci_platform.4523: port 1 high speed
ehci_platform ehci_platform.4523: GetStatus port 1 status 001805 POWER sig=j PE CONNECT
usb 1-1: ep0 maxpacket = 8
usb 1-1: default language 0x0409
usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: MELCO LUA-TX
usb 1-1: Manufacturer: LUA-TX
usb 1-1: SerialNumber: 0001
usb 1-1: uevent
usb 1-1: device is bus-powered
usb 1-1: configuration #1 chosen from 1 choice
usb 1-1: adding 1-1:1.0 (config #1, interface 0)
usb 1-1:1.0: uevent
drivers/usb/core/inode.c: creating file '011'
Core Driver (ERROR) 0 1: Ignore Serror in response flags
Core Driver (ERROR) 0 1: Recoverable HW error detected.
Core Driver (ERROR) 0 1: SerrIntRecoverable error detected.
Core Driver (ERROR)  SStatus  0x00000113:
Core Driver (ERROR)  SControl 0x00000300:
Core Driver (ERROR)  SError    0x00180000:
Core Driver (ERROR)  IF Ctrl  0x00000000: TXPort 0x0
Core Driver (ERROR)  IF status 0x00404034: RXFIS 0x34 RXPort 0x0
Core Driver (ERROR) 0 1: Clear  Serror register(0x180000).
Linux IAL (ERROR)  [0 1] sata recoverable error occured
Core Driver (ERROR) 0 1: Ignore Serror in response flags
Core Driver (ERROR) 0 1: Recoverable HW error detected.
Core Driver (ERROR) 0 1: SerrIntRecoverable error detected.
Core Driver (ERROR)  SStatus  0x00000113:
Core Driver (ERROR)  SControl 0x00000300:
Core Driver (ERROR)  SError    0x00000000:
Core Driver (ERROR)  IF Ctrl  0x00000000: TXPort 0x0
Core Driver (ERROR)  IF status 0x00404034: RXFIS 0x34 RXPort 0x0
Core Driver (ERROR) 0 1: Clear  Serror register(0x00).
Linux IAL (ERROR)  [0 1] sata recoverable error occured

 作業用にDebianを入れたパソコンではそのまま動いたのでドライバーを確認するとUSBで見たのと同じpegasus

#dmesgでの表示内容
usb 1-1.1: new full speed USB device using uhci_hcd and address 3
usb 1-1.1: configuration #1 chosen from 1 choice
pegasus: v0.6.13 (2005/11/13), Pegasus/Pegasus II USB Ethernet driver
pegasus 1-1.1:1.0: eth1, MELCO/BUFFALO LUA-TX, 00:40:26:61:8b:83
usbcore: registered new driver pegasus

であることから、カーネルのconfigを調べるとそれらしき設定がありoffであることからこれをMとして再ビルドする。

  Device Drivers  --->    
   USB support  --->    
   USB Network Adapters  --->    
  <M> USB Pegasus/Pegasus-II based ethernet device support

 このビルドはさすがに速かった。0からの場合は二時間程度かかるのだが数分で終了した。

#make uImage
#mkimage -l arch/arm/boot/uImage  これは必要ないかもしれない。
#make modules
#make modules_install
でpegasus.koなるドライバーが生成されていた。

 カーネルを入れ替え再起動する。
#cp /usr/src/llinux-2.6.16_lsp.1.7.8/arch/arm/boot/uImage /boot/uImage.buffalo
#reboot

 立ち上げた後、USB−LANアダプターを挿入するが認識されない。
lsmodでドライバーを見てみると何も組み込まれていない。そこでドライバーを探す。
#find /usr -name pegasus.ko
/usr/src/linux-2.6.16_lsp.1.7.8/binaries/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/net/pegasus.ko

これをinsmodで組み込む。
#insmod /usr/src/linux-2.6.16_lsp.1.7.8/binaries/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/net/pegasus.ko

#lsmod
で確認する。
この状態でアダプターを挿入するとeth1で認識された。
Linux IAL (ERROR)  [0 1] sata recoverable error occured
usb 1-1: link qh128-0601/ffc04180 start 127 [1/2 us]
eth1: set allmulti
eth1: set allmulti
eth1: set allmulti

後は、
#ifconfig eth1 up
#/sbin/dhclient eth1
などとしてインタフェースを活性化する。

pingなどで確認できればOKである。defaultgwなどネットワーク設定で多少手間取るかもしれない。
 実使用では、無線LANでやったように挿入時実行するスクリプトを書けば使いやすいかもしれない。