>HOME >技術メモ >X30+Linux

■■■技術メモ:Thinkpad X30 Linux-Zaurusの接続■■■
 
この文書は個人的なものであり、内容についての責任は負いかねますが、皆様の御役に立てれば幸です。
●目的

Thinkpad X30上のLinuxからSharp Zaurus SL-A300の接続を行います。
●手順

  1. http://www.zauruszone.com/howtos/lc_generic.shtmlからusbdnet-2.4.18-patch.gzをダウンロードします。
  2. ダウンロードしたコードでカーネルにパッチを当てます
    /usr/srcにダウンロードファイルをコピー
    cd /usr/src
    zcat usbdnet-2.4.18-patch.gz | patch -p0
  3. このパッチはSL-A300に対応していないので、更にマニュアルで/usr/src/linux/drivers/usb/usbdnet.cを次のように修正。
    static __devinitdata struct usb_device_id id_table [] = {
    の次の行に
    MY_USB_DEVICE( 0x4dd, 0x8005, CDC_DEVICE_CLASS, CDC_INTERFACE_CLASS, MDLM_INTERFACE_SUBCLASS) }, // SL-A300
    を追加します。
  4. カーネルコンフィギュレーションを変更します。
    cd /usr/src/linux
    make xconfig
    Code maturity level optionsを撰択
    Prompt for development and/or incomplete code/driversがyになっていることを確認します。
    USB supportを撰択
    USBD Network(Encapsulated)Host-to-Host Linkをmにチェック
    USBD Network idVendorに04dd (これは不用かも)
    UDBD Network idProductに8005 (これは不用かも)
    Save and Exitをクリックして終了
  5. カーネルの再構築します。
    make dep
    make clean
    make bzImage
    make modules
    make modules_install
    /sbin/installkernel 2.4.18-0vl3 arch/i386/boot/bzImage System.map
  6. murasaki.preloadの初期化処理を無効にします
    su
    cd /etc/murasaki
    mv auto_setup auto_setup_bak
  7. エディターでmurasaki.preloadを次のように変更し、uhidの代わりにusb-uchiがロードされるようにします。
    usbcore
    mousedev
    hid
    usb-uhci
  8. エディターで/etc/sysconfig/network-scripts/ifcfg-usb0を次のように作成します。
    DEVICE=usb0
    BOOTPROTO=none
    ONBOOT=no
    BROADCAST=192.168.129.255
    NETWORK=192.168.129.0
    NETMASK=255.255.255.0
    IPADDR=192.168.129.1
  9. エディターで/etc/murasaki/usbdnetの名前のスクリプトファイルを作成します。
                #! /bin/bash
                #
                # Network via USB
                # This script will be automaticaly called by the Murasaki.
                #
                LOGFILE=/dev/console
                echo "$0 $1" > $LOGFILE
                echo -n "Called at " >> $LOGFILE
                date >> $LOGFILE
    case "$1" in "start") # start connection ifup usb0 /sbin/route add -host 192.168.129.201 usb0 ;; "stop") # end connection ifdown usb0 ;; *) esac
  10. ファイルのアクセス権を変更します。
    chmod 755 usbdnet
  11. /etc/murasaki/murasaki.callに次の行を追加します。
    usbdnet: /etc/murasaki/usbdnet
  12. /etc/murasaki/murasaki.dependに次の行を追加します。
    alias-SLA300: usbdnet
  13. /etc/murasaki/murasaki.usbmapに次の行を追加します。
    # Zaurus SL-A300
    alias-SLA300 0x0193 0x04dd 0x8005 0x0000 0x0000 0x02 0x00 0x00 0x00 0x00 0x00 0x00000000
  14. システムを再起動し、Zaurusを接続します。
    ピッとUSBデバイスが認識された音がします。
  15. Pingが通ればOKです。
    ping 192.168.129.201
  16. これでSanba clientからアクセスできます。
                smbclient //192.168.129.201/home -N
                
                added interface ip=192.168.129.1 bcast=192.168.129.255 nmask=255.255.255.0
                added interface ip=192.168.xx.xxx bcast=192.168.xx.255 nmask=255.255.255.0
                Anonymous login successful
                Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.0.7-ja-2.2]
                smb: \> ls
                  .           D        0  Thu Jan 23 20:33:04 2003
                  ..          D        0  Fri Dec 27 22:07:08 2002
                  Main_Memory D        0  Fri Dec 27 22:09:58 2002
                  SD_Card     D        0  Thu Jan  1 09:00:00 1970
                
                    53730 blocks of size 512. 25148 blocks available
                
- 作業経緯 -
  • 現在zauruszone.comで公開されているパッチファイルはSL-A300に対応していませんので、そのままだとドライバーがロードされません。ロードされたかどうかはmessagesファイルで確認してください。
  • カーネルオプションNetwork(Encapsulated)Host-to-Host Linkはyではなくmを指定して下さい。yを指定するとusbdnetモジュールコンパイル時にエラー(#error MODULE not defined)が発生します。
  • murasakiはmurasaki.preloadファイルで事前にロードするモジュールを指定できますが、標準ではusbドライバーの指定が初期化用のスクリプトにより上書きされてしまいます。今回は上記のようにこのスクリプトを無効化しています。
  • nautilasも簡単な評価を行いましたが、MainMemoryディレクトリが見えないなどの現象があり、これらを解決することは未だできていません。今後、更に挑戦してみたいと思います。