EMonster の microSDHC カードをマウントする

SynCE (ActiveSync) じゃなく USB マス・ストレージ・クラスで接続

しばらく前に EMonster (S11HT) を買ったのだけど、うちにはもう Windows PC がないので ActiveSync を使って接続するってのができなくて*1、どうすればいいんだろうと探してみたら SynCE (公式サイト) というプロジェクトがあるのだった。
でも、ドキュメントを読んでみたら、一部まだ Debian パッケージになってないところがあったりするし、ちょっとめんどうそう。というところで、WM5torage というのを EMonster にインストールすれば USB マス・ストレージ・クラスで接続できちゃうというのを知って、そっちにすることにした。同期したいものがあったりするわけでなく、ただファイル転送がしたいだけなので、これで必要十分。
まず、まとめ Wiki にあるように "PC への USB 接続" で "高度なネットワーク機能を有効にする" のチェックをはずしておく。そして xda-developers というサイトのフォーラム (forum.xda-developers.com) で会員登録して、このポストにアタッチされてる WM5torage の Kaiser (EMonster の海外名のひとつ) 対応版をダウンロードし、インストール。あとは USB ケーブルでつないで、WM5torage を起動し Activate するだけ。

マウントされるまでちょっと時間がかかるよって書きこみを 2ch で見た気もするのだけど、うちではふつうに数秒でマウントされた。

/etc/fstab と udev ルールを書いておく

これだけでも別にいいのだけど、どうせなんでいろいろ設定しておく。
"iPod のマウント - だらりな。" に書いたのと同じように、/etc/fstab には以下のようなラインを追加した。マウント・ポイントは、ホントは /media 以下にするのが正しいのかもしれない (wikipedia:FHS 的に)。

/dev/emonster /mnt/emonster vfat flush,noauto,nodev,noexec,rw,nosuid,user,dmask=022,fmask=133,codepage=932,iocharset=utf8 0 0

あとは udev ルール。接続後に dmesg して、/dev/sdc であることを確認。

usb 1-5: new full speed USB device using ohci_hcd and address 18
usb 1-5: configuration #1 chosen from 1 choice
scsi20 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 18
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi 20:0:0:0: Direct-Access     WM5torag S11HT            1.74 PQ: 0 ANSI: 0 CCS
sd 20:0:0:0: [sdc] 7862272 512-byte hardware sectors (4025 MB)
sd 20:0:0:0: [sdc] Write Protect is off
sd 20:0:0:0: [sdc] Mode Sense: 03 00 00 00
sd 20:0:0:0: [sdc] Assuming drive cache: write through
sd 20:0:0:0: [sdc] 7862272 512-byte hardware sectors (4025 MB)
sd 20:0:0:0: [sdc] Write Protect is off
sd 20:0:0:0: [sdc] Mode Sense: 03 00 00 00
sd 20:0:0:0: [sdc] Assuming drive cache: write through
 sdc: sdc1
sd 20:0:0:0: [sdc] Attached SCSI removable disk
sd 20:0:0:0: Attached scsi generic sg3 type 0

つぎに udevinfo --attribute-walk --path=`udevinfo --query=path --name=/dev/sdc` して、EMonster から Linux Box へ遡りながら出力されるディヴァイス情報の、最後の EMonster 情報ブロックを見る (たぶんこの見かたでいいんだと思う)。

  looking at parent device '/devices/pci0000:00/0000:00:0b.0/usb1/1-5':
    KERNELS=="1-5"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{dev}=="189:15"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{urbnum}=="884"
    ATTRS{idVendor}=="045e"
    ATTRS{idProduct}=="ffff"
    ATTRS{bcdDevice}=="0000"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="16"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Microsoft"
    ATTRS{product}=="Windows Mobile Device"
    ATTRS{serial}=="067AB718B0BAF1A0E556452EB3E73EDB5FC366F9"

iPod のときは "ATTRS{manufacturer}" と "ATTRS{product}" を使って、iPod ならなんでも〜ってルールにしたけど、今回は "ATTRS{serial}" を使って、この機器だったら〜というルールにしてみた。
/etc/udev/local.rules (/etc/udev/rules.d/x00_local.rules からシンボリック・リンクをはってある) に EMonster 用ラインを追加。

# Apple iPod
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Apple*", ATTRS{product}=="iPod*", SYMLINK+="ipod"

# HTC EMonster
SUBSYSTEMS=="usb", ATTRS{serial}=="067AB718B0BAF1A0E556452EB3E73EDB5FC366F9", SYMLINK+="emonster"

これで sudo /etc/init.d/udev reload すれば、次回から /mnt/emonster にマウントされる。

最後にスクリーンショット

設定前の EMonster のプロパティ x 2。ちなみに 4 GB の microSDHC カードがささってる。


設定後の EMonster のプロパティ ("Drive" タブは変わらない)。

*1:もしかしたら WINE で動いたりするのかもしれないけど、WINE って使ったことないし。