FreeBSD で USB デバイス

USB デバイスを FreeBSD で使うためのメモ.
メインは PEG-NR70.
目的は USB Mass Strage を使うこと.

使用機材:

■設定編

  1. まずは BIOS の設定を
    BIOS で USB デバイスを使えるように設定する.
    もし USB をレガシーデバイスで使えるような BIOS 設定があればそれも有効にしておく.

  2. カーネルの構築
    USB デバイス及び USB Mass Strage に必要なデバイスを有効にする.
    USB Mass Strage を使う分にはこれだけで十分.

    # SCSI peripherals
    device      scbus       # SCSI bus (required)
    device      da          # Direct Access (disks)
    device      pass        # Passthrough device (direct SCSI access)
    
    # USB support
    device      uhci       # UHCI PCI->USB interface
    device      ohci       # OHCI PCI->USB interface
    device      usb        # USB Bus (required)
    device      ugen       # Generic
    device      uhid       # "Human Interface Devices"
    device      umass      # Disks/Mass storage - Requires scbus and da
    
    終わったらコンパイル → インストール → 再起動.

  3. usbd の実行
    root 権限で usbd を実行する.

    % usbd
    % ps ax | grep usbd
    123 ?? Is 0:00.01 usbd

  4. 前準備はここまで.
    次は実際に USB デバイスをぶっさしてみる.

■MELCO MCR-CF2 編

おもむろに MCR-CF2 を USB コネクタにぶっさしてみよう.
ここで tail -f /var/log/messages していると状況を見ることが出来る.

Apr 19 20:04:24 merrow /kernel: umass0: MELCO INC. MCR-CF2, rev 1.10/2.22, addr 2
Apr 19 20:04:25 merrow /kernel: da0 at umass-sim0 bus 0 target 0 lun 0
Apr 19 20:04:25 merrow /kernel: da0: <eUSB Compact Flash > Removable Direct Access SCSI-2 device
Apr 19 20:04:25 merrow /kernel: da0: 650KB/s transfers
Apr 19 20:04:25 merrow /kernel: da0: 244MB (500400 512 byte sectors: 64H 32S/T 244C)
ここで今度は USB デバイスの状況を見てみる.

% usbdevs -v
Controller /dev/usb0:
addr 1: self powered, config 1, OHCI root hub(0x0000), AcerLabs(0x0000), rev 0x0100
 port 1 powered
 port 2 addr 2: power 100 mA, config 1, MCR-CF2(0x0015), MELCO INC.(0x0411), rev 0x0222

% camcontrol devlist -v
scbus0 on umass-sim0 bus 0:
<eUSB Compact Flash >              at scbus0 target 0 lun 0 (pass0,da0)
scbus-1 on xpt0 bus 0:
<  >                               at scbus-1 target -1 lun -1 (xpt0)
MCR-CF2 が da0 で認識されているとわかったので,今度は実際にマウントしてみる.
マウントポイントは /mnt にする.
無い場合は自分でディレクトリ掘ってください.

% mount -t msdos /dev/da0s1 /mnt

% mount -v
/dev/ad0s1a on / (ufs, local, writes: sync 103 async 241, reads: sync 514 async 30)
procfs on /proc (procfs, local)
/dev/da0s1 on /mnt (msdos, local, writes: sync 3 async 8, reads: sync 3 async 0)

% cp TESTFILE /mnt/dcim/100olymp/

% ls /mnt/dcim/100olymp/
./             p3300592.jpg   p3300597.jpg   p3300602.jpg   p3300607.jpg   p3300612.jpg
../            p3300593.jpg   p3300598.jpg   p3300603.jpg   p3300608.jpg   p4160616.jpg
p3300589.jpg   p3300594.jpg   p3300599.jpg   p3300604.jpg   p3300609.jpg   p4160617.jpg
p3300590.jpg   p3300595.jpg   p3300600.jpg   p3300605.jpg   p3300610.jpg   p4160620.jpg
p3300591.jpg   p3300596.jpg   p3300601.jpg   p3300606.jpg   p3300611.jpg

% ls /mnt/dcim/100olymp/TESTFILE
/mnt/dcim/100olymp/TESTFILE
コピーも出来ることが確認できたので,あとは umount しよう.
% umount /mnt
取り外しは USB ポートから引っこ抜くだけ.
ただし umount してからにしよう.

Apr 19 20:08:16 merrow /kernel: umass0: at uhub0 port 2 (addr 2) disconnected
Apr 19 20:08:16 merrow /kernel: (da0:umass-sim0:0:0:0): lost device
Apr 19 20:08:16 merrow /kernel: (da0:umass-sim0:0:0:0): removing device entry
Apr 19 20:08:16 merrow /kernel: umass0: detached

■OLYMPUS E-20 編

やることは MCR-CF2 と全く同じなので詳しいコマンドなどは割合.

- dmesg
Apr 20 02:00:51 merrow /kernel: umass0: OLYMPUS E-20,E-20N,E-20P, rev 1.10/11.02, addr 2

- usbdevs -v
port 2 addr 2: power 100 mA, config 1, E-20,E-20N,E-20P(0x0102), OLYMPUS(0x07b4), rev 0x1102

- camcontrol devlist
<OLYMPUS E-20,E-20N,E-20P 1102> at scbus0 target 0 lun 0 (da0,pass0)


■SONY CLIE PEG-NR70 編

これが目的.
しかしどうやっても ugen0 としか認識しない.
とりあえず書き換えたファイルは以下の通り.

/usr/src/sys/dev/usb/umass.c
/usr/src/sys/dev/usb/usbdevs
/usr/src/sys/dev/usb/usbdevs.h
/usr/src/sys/dev/usb/usbdevs_data.h
/usr/src/sys/cam/scsi/scsi_da.c

この中の DSC デバイスを参考に PEG 用を作ったがやっぱり認識せず.

その後の調査で,ugen0 になっているものは現在まだ対応していないデバイスのようだ.
[bsd-usb:58] で VAIO の USB FDD を刺した人の話を参照.


←戻る