top page > PC unix (3) > here

Talk Master II と PC unix との接続 (1)


概要

目的は次のようなものです.

  1. Talk Master II (トークマスター II) と PC unix との USB 接続を例示する.
  2. その接続の成功例,失敗例およびそれらに関連する資料を提示する.

対象は次のものです.

  1. PC は AT 互換機 のみです.
  2. OS は Debian GNU/Linux 3.1, 4.0, 5.0, 6.0 および Ubuntu Linux 15.04, 16.04 です.
  3. drive は Talk Master II の内蔵メモリーと SD card です.
  4. SD card は,アイ・オー・データ機器の SD-S1G (1GB, Class 6) です.

結果は次のようになりました.

  1. Debian 3.1, 4.0 では,SD Card の有無に依らず接続できました.
  2. Debian 5.0, 6.0 では,SD Card を挿さない状態では接続できましたが,挿した状態では接続できませんでした.
  3. Ubuntu Linux 15.04, 16.04 では,接続できませんでした.

注意事項

  1. 以下はあくまで当方の環境にて動作した記録であり,同様の環境にて動作することを保障するものではありません.
  2. PC unix との接続はメーカーの保障の範囲外です. トラブルに関しては自己責任でお願い致します.
  3. この HP の内容に関し,メーカーに問い合わせしないようお願い致します.

目次

1. 背景
2. Debian GNU/Linux との接続
2.1 Debian 3.1
2.2 Debian 4.0
2.3 Debian 5.0, 6.0
2.4 ぼやき
3. Ubuntu Linux との接続

1. 背景

Talk Master II の主な用途は,やはりラジオを使っての語学学習でしょう. 機能は種々ありますが,基本はラジオをタイマー録音してそれを本体の内蔵メモリーや SD card に記録し再生することです. また,PC と USB 接続する機能も備わっています.

PC との接続が必要になるのは,次のような場合でしょう.

  1. データのバックアップを取る. (内蔵メモリーから SD card へはデータを cp できないので.)
  2. directory の作成. (自動的に作成されるものは別として,PC なしでは directory を作成できない.)
  3. PC からのデータのアップロード.
  4. OS の update. (以下ではこの話題には触れません.)

SD card 経由で card slot のある PC とやり取りするという選択肢もありますが,うちでは試せません.

unix user にとって問題なのは,メーカーが接続を保障している PC 側の OS が Windows (XP/2000/Me) に限定されていることです. (取扱説明書には Mac は対象外であると明記されている.PC unix には言及すらされていない.)
そこで,PC unix との接続を試みました. その結果を次節以降に示します.

説明を容易にするために以下のデータをあらかじめ提示しておきます.

(1) Talk Master II を PC と接続した場合,PC 側からは次のような SCSI device が二台繋がっていると認識されます.

USB version1.1
Class Mass Storage Class
Subclass SCSI transparent command set
Protocol Bulk-Only Transport
Vendor (ID) YOUNTEL CO.LTD. (0x0dab)
Product (ID) YMDC-407X UMS DEVICE0 (x4100)

(2) Talk Master II-GR の内蔵メモリーは論理的に次のように仕切られています.

file system VFAT
bytes/sector 512
heads  32
sectors/track  64
start sector 485
size 2042395 sector (997 MB)

(3) SD card (SD-S1G) は論理的に次のように仕切られています.

file system VFAT
bytes/sector 512
heads 255
sectors/track  63
start sector 107
size 1995775 sector (974 MB)

Talk Master II の取扱説明書には,SD card は先ず「Windows にて FAT でフォーマット」し,その後「Talk Master II で再度フォーマット」するよう指示されています. しかし,うちに Windows はありません. (後で知りましたが,FreeBSD でも newfs_msdos を使えばできるらしいです.)
そこで,購入した状態からいきなり Talk Master II でフォーマットしました. それでうまく行ったのは,おそらく工場出荷時に FAT (すなわち VFAT) でフォーマットされていたからでしょう.

(注記) "FAT" という用語は OS ごとに統一されていなくて混乱します. すなわち,

私が普段使っている OS は FreeBSD です. ところが,Talk Master (2) に示すようにうまく行かないので,急遽 Linux を install して試してみました. そんな状況なので Linux は使い馴れておらず,distribution や version の表記法などが違っているかもしれません.

2. Debian GNU/Linux との接続

2.1  Debian 3.1

Debian GNU/Linux 3.1r1 "sarge" (kernel 2.4.27-2 および 2.6.8-2) を試しました.

この version は,kernel によらず install したそのままでうまく行きます. 概略,次のような手順で操作します.

  1. OS の起動後に Talk Master II と PC とを USB ケーブルで繋げる.
  2. mount する.例えば
    # mount -t vfat /dev/sdb1 /mnt
  3. directory や file を操作する.
    ls, cp, mv, rm, mkdir, rmdir 等,unix の通常のコマンドで.
  4. umount する.例えば
    # umount /mnt
  5. Talk Master II と PC とを繋ぐ USB ケーブルを抜く.

log も含めてもう少し臨場感のある説明をするならば,以下のようになります. (kernel 2.6 にて)

先ず Talk Master II と PC とを繋げた際の log です.

ohci_hcd 0000:00:0f.2: ServerWorks OSB4/CSB5 OHCI USB Controller
(中略)
ohci_hcd 0000:00:0f.2: wakeup
usb 1-1: new full speed USB device using address 2
scsi1 : SCSI emulation for USB Mass Storage devices
  Vendor:           Model: TalkMasterII      Rev:    ← こちらは内蔵メモリーの drive です.
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sdb: 2042880 512-byte hdwr sectors (1046 MB)
sdb: assuming Write Enabled
sdb: assuming drive cache: write through
 /dev/scsi/host1/bus0/target0/lun0: p1
Attached scsi removable disk sdb at scsi1, channel 0, id 0, lun 0
  Vendor:           Model: TalkMasterII      Rev:    ← こちらは SD card の drive です.
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi removable disk sdc at scsi1, channel 0, id 0, lun 1
USB Mass Storage device found at 2

これを見れば,この場合には内蔵メモリが sdb (/dev/sdb) の SCSI disk として認識されていることが分かります.
(SD card drive は,card が入っていなくても,この場合には sdc として認識されています.)
なお,1046 MB というのは byte 数の上四桁をそのまま持ってきた数字であり,1024 で二回割る方の数値では約 997 MB です.

SD card が入っている場合の該当箇所の log は次のようになります.

  Vendor:           Model: TalkMasterII      Rev:    ← こちらは SD card の drive です.
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sdc: 1995777 512-byte hdwr sectors (1022 MB)
sdc: assuming Write Enabled
sdc: assuming drive cache: write through
 /dev/scsi/host1/bus0/target0/lun1: p1
Attached scsi removable disk sdc at scsi1, channel 0, id 0, lun 1

次に fdisk/dev/sdb の状態を見ます.

# fdisk -l -u /dev/sdb
Disk /dev/sdb: 1045 MB, 1045954560 bytes
32 heads, 61 sectors/track, 1046 cylinders, total 2042880 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *         485     2042879     1021197+   6  FAT16
Partition 1 does not end on cylinder boundary.

sectors/track が 64 のはずが 61 になっていることと,"Partition 1 does not end on cylinder boundary." という警告は気になるところですが,現時点では動作に不具合は生じておりません. (そもそも Start からしてシリンダ境界にない! 64 でも 61 でも.)

同様に fdisk で SD card が入っている場合の /dev/sdc の状態を見ます.

# fdisk -l -u /dev/sdc
Disk /dev/sdc: 1021 MB, 1021837824 bytes
255 heads, 63 sectors/track, 124 cylinders, total 1995777 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *         107     1995775      997834+   6  FAT16
Partition 1 has different physical/logical endings:
     phys=(123, 254, 63) logical=(124, 58, 62)

こちらもシリンダ境界に関して苦言を呈されています.

ともかくこれで partition 1 は /dev/sdb1 (内蔵メモリ) または /dev/sdc1 (SD card) であることが分かります. 以下の例では,内蔵メモリを /mntmount します.

# mount -t vfat /dev/sdb1 /mnt
# mount     ← 確認のために実行する.
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/sdb1 on /mnt type vfat (rw)     ← mount されている.

/mntls で見てみます. (以下の例では /mnt/timerrec を.) 本来,タイマー録音で作成される directory/file には,そのファイルが作成された日時が付いています. また,directory 名や file 名はすべて大文字で作られています.

ところが,それを Linux から mount すると,日付や時刻は「固定値」にされ,また directory 名は小文字にされてしまいます.

一方,Linux にて directory/file を作成した場合には,作成時の日付,時刻になります. 名前も大文字小文字が区別されます. ちなみに,Linux により timerrecbox?? を小文字で作成しても,タイマー録音はそこにファイルを入れてくれます. (すなわち,新たに大文字の置き場は作りません.)

# ls -l /mnt/timerrec/*
/mnt/timerrec/box01:
total 103200
-rwxr-xr-x  1 root root 9577984 1980-01-01 00:00 01001_070427_0645A0693I.MP3
-rwxr-xr-x  1 root root 9585152 1980-01-01 00:00 01002_070428_0645A0693I.MP3
-rwxr-xr-x  1 root root 9563648 1980-01-01 00:00 01003_070430_0645A0693I.MP3

Talk Master II 側にファイルを cp すると,極めて短時間で prompt に戻ります. ls で見ると cp が終了しているように見えます. ところが umount すると,そこから実際の cp の作業が始まるので妙に時間が掛かります. それを理解して気にしないか,気になるなら cp を実行した後で sync を実行すれば良いでしょう.
(あるいは,私は試しておりませんが,mount の option で同期のさせ方を規定できるでしょう.)

用が済んだら切り離します.

# umount /mnt
# mount     ← 確認のために実行する.

最後に Talk Master II の USB ケーブルを抜きます.その際,次のような log が出ます.

usb 1-1: USB disconnect, address 2

(注記) 2008.5.31, 使い続けて一年で,とうとうエラーに遭遇しました. データの転送中に SCSI の device driver から error message が出され,それが間欠的に出され続けて prompt に戻れません. また Ctrl+Alt+DEL とすると,一旦 reboot が始まるのですがまた error message が間欠的に出る状態に戻ってしまいます. 結局,電源を OFF するしかありませんでした. 再度電源を ON してやり直したら,問題は生じませんでした. 今回は惨事に至らずに済みましたが,安定性への過信は禁物と痛感しました.

2.2  Debian 4.0

NP25S にて Debian GNU/Linux 4.0r9 "etch" (kernel 2.6.18-6-686) を試しました.
前節の Debian 3.0 と同様に,正常に動作しました. 諸々の癖も同じです.

log の中の USB Controller の部分を示します. Talk Master II は USB 1.1 なので,前者を使います.

uhci_hcd 0000:00:1d.0: UHCI Host Controller
ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004

2.3  Debian 5.0, 6.0

NP25S にて Debian GNU/Linux 5.0.6 "Lenny" (kernel 2.6.26-2-686) および 6.0.0 "Squeeze" (kernel 2.6.32-5-686) を試しました. この環境での動作は,前節までとは異なり以下のようになります.

(1) SD card が挿さっていない場合
  前節の場合と同様に,正常に動作しました. (2) との対比のために動作の一部を再録します.

  • TM II 本体の画面は,ファイルを cp していない状態で「接続中」,cp 中は「転送中」になる.
  • USB ケーブルを抜いたら元の電源 off の状態になる.

(2) SD card が挿さっている場合
  SD card だけでなく内蔵メモリーにもアクセスできない状態になります. すなわち,

  • /dev/sdb, sdb1, sdc, sdc1 は作成される. ここまでは正常.
  • fdisk/dev/sdb/dev/sdc も "Unable open /dev/sdb" (または sdc) となる.
  • sdbsdcmount できない.
  • TM II 本体の画面は,挿して直ぐに「接続中」から「転送中」に変わる. USB ケーブルを抜いても「転送中」のままで,操作できない状態になる.
    ここで SD card を抜くと元の電源 off の状態になり,その後 (なぜか) 電源 on の状態になる. (これはリセット・スイッチを押したのと同じ動作である.)
  • dmesg による log には致命的なエラーは表示されない.

従って,SD card を使うのであれば Debian 3, 4 の環境が必要です.

なお,この症状は,Talk Master (3) に記した FreeBSD 7, 8 系の場合とほぼ同じです.

2.4  ぼやき

現在に至るまで,私は Talk Master II とのやり取りはすべて自作 AT 互換機 + Debian 3.1 で行なってきました. (試用を除く.) これが最初にうまく行った環境だからです.

最近,自作 AT 互換機の HDD の予備がなくなったので,NP25S への引っ越しを検討しました. ところが,

  • Debian 3.1 は IDE/SATA の CD/DVR-ROM drive がない NP25S には install できない.
    4.0 と同様に net に繋がらないという問題もあるので,FD 等からの install は追求しませんでした.
  • 4.0 は Talk Master II との接続はできるが net に繋がらない. (r8169.ko が RealTek 8168b をサポートしていない.)
    ここは本当にいろいろ頑張ってみましたが,うまく行きません.
  • 5.0 以降は net は繋がるが SD card が入った状態の Talk Master II との接続はできない.
    ここで usb-storage.ko をいじるくらいなら,4.0 にて net に繋がるよう頑張る方が容易かも.

ということで,正に「帯に短し襷に長し」という状態です. ソースも見てみましたが,Debian の major version が違う場合,module を移植するのは相当に困難です.

どうしても NP25S で運用ぜざるを得なくなった場合には,録音のファイルを Debian 4 でその HDD に移し,Debian 5 以上 (または Ubuntu 等) でその HDD を mount して... という手順を踏めば可能になります.

まあ,SD card をあきらめれば楽になれるのですが.

3. Ubuntu Linux との接続

NP25S にて Ubuntu Linux 15.04, 16.04 (kernel 4.4.0-34-generic, 64bit 環境) を試しました.
default で FreeBSD で言うところの SYNCHRONIZE_CACHE使う設定になっているようで,SD card の有無に依らず繋がりません.

TM II 本体の画面は「接続中」から「転送中」に変わります. USB ケーブルを抜いたら電源 off の状態に戻ります.

/etc/modprobe.d/quirks.conf を作成して quirks を設定する手段があるようなのですが,資料が少なくて,この場合にはどう設定して良いのか分かりません.

FreeBSD にもある usbconfig が使えるようなのですが,この設定は接続する前にしておく必要があるような気がするので試しておりません.