top page > PC unix (2) > here

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


概要

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

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

対象は次のものです.

  1. PC は AT 互換機 のみです.(うちの PC-98 には USB port はありません.)
  2. OS は FreeBSD (7.4, 8.2) です.
    (FreeBSD 4.11, 6.2 は Talk Master (2) に,8.4, 10.3 は Talk Master (4) に記します.)
  3. drive は Talk Master II の内蔵メモリーと SD card です.
  4. SD card は,アイ・オー・データ機器の SD-S1G (1GB, Class 6) です.

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

  1. FreeBSD 7.4, 8.2 ともに,そのままでは接続できませんでした.
  2. driver のソースを修正しても,SD card を挿した状態では接続できませんでした. (ここが FreeBSD 4.11, 6.2 と異なる.)
  3. SD card を挿さない状態では,FreeBSD 8.2 では接続できましたが,7.4 では動作が不安定で,実質「接続できない」状態でした.

注意事項

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

目次

1. 背景
2. fdisk まで
3. mount とファイルの操作

1. 背景

FreeBSD と Talk Master II との接続は,FreeBSD を install したそのままの状態ではできません. FreeBSD 6.2 においては種々のソースを変更し,接続ができるようにしました. ところが,FreeBSD 7, 8 系においては,FreeBSD 6 系と同じ修正法では問題に完全に対処することができなくなってしまいました. すなわち,SD card を挿した状態においては,

  1. Talk Master II と FreeBSD とが,fdiskdd が実行できるようなレベルで繋がらない.
  2. 正しく mount できず,ファイル操作が正常に行なえない

これらは現時点では未解決ですが,その状況を提示いたします.

2. fdisk まで

先ず install したそのままの FreeBSD 7.4, 8.2 に Talk Master II を繋げると,次のような log が出ます. (以下の例は FreeBSD 8.2 のもの.)

ohci0: <OHCI (generic) USB controller> mem 0xfea6f000-0xfea6ffff irq 10 at device 15.2 on pci0
(中略)
ugen0.2: <YOUNTEL CO.LTD.> at usbus0
umass0: <YOUNTEL CO.LTD. YMDC-407X UMS DEVICE, class 0/0, rev 1.10/1.00, addr 2.> on usbus0
umass0:  SCSI over Bulk-Only; quirks = 0x0000
umass0:1:0:-1: Attached to scbus1
da1 at umass-sim0 bus 0 scbus1 target 0 lun 0     ← こちらは内蔵メモリーの drive です.
da1: < TalkMasterII .> Removable Direct Access SCSI-0 device
da1: 1.000MB/s transfers
da1: 997MB (2042880 512 byte sectors: 64H 32S/T 997C)
(probe0:umass-sim0:0:0:1): TEST UNIT READY. CDB: 0 20 0 0 0 0
(probe0:umass-sim0:0:0:1): CAM status: SCSI Status Error    ← これは SCSI HDD でも出るので気にしないで良い.
(probe0:umass-sim0:0:0:1): SCSI status: Check Condition
(probe0:umass-sim0:0:0:1): SCSI sense: UNIT ATTENTION asc:28,1 (Import or export element accessed)
da2 at umass-sim0 bus 0 scbus1 target 0 lun 1     ← こちらは SD card の drive です.
da2: < TalkMasterII .> Removable Direct Access SCSI-0 device
da2: 1.000MB/s transfers
da2: 974MB (1995777 512 byte sectors: 64H 32S/T 974C)
(da1:umass-sim0:0:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0
(da1:umass-sim0:0:0:0): SCSI sense: Error code 0x20
(da1:umass-sim0:0:0:0): AutoSense failed
(da2:umass-sim0:0:0:1): AutoSense failed
(da2:umass-sim0:0:0:1): AutoSense failed

FreeBSD 4, 6 系と同様に,この段階では fdisk に失敗します. (/dev/da2 も同様.)

# fdisk /dev/da1
fdisk: unable to get correct path for /dev/da1: Input/output error

"SYNCHRONIZE CACHE(10)" に対処するため,/usr/src/sys/cam/scsi/scsi_da.c を修正し SYNCHRONIZE_CACHE を使わないようにします. すると

(da1:umass-sim0:0:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0
(da1:umass-sim0:0:0:0): SCSI sense: Error code 0x20

は消えて,代わりに次のような警告が出ます.

GEOM: da1: partition 1 does not start on a track boundary.
GEOM: da1: partition 1 does not end on a track boundary.

ただし,以下のエラーは解消されません.

(da1:umass-sim0:0:0:0): AutoSense failed
(da2:umass-sim0:0:0:1): AutoSense failed

それでも,この修正によって SD card が挿さっていない場合には,接続時に /dev/da1, /dev/da1s1 が作成され,fdisk /dev/da1 も実行できるようになります.

しかし,SD card が挿さっている場合には間欠的にエラー・ログが出続け,fdisk /dev/da2 はもちろんですが,fdisk /dev/da1 も実行できません. Talk Mastet II は,通常は「通信中」から処理を終えて「USB 接続中」に戻り,また USB ケーブルを抜けば「USB 接続中」が消えます. しかし,この場合には「USB 接続中」に戻らず,ケーブルを抜いても「通信中」が消えず,操作できない状態になります.
ここで SD card を抜くと元の電源 off の状態になり,その後 (なぜか) 電源 on の状態になります. (これはリセット・スイッチを押したのと同じ動作です.)

3. mount とファイルの操作

FreeBSD 7.4, 8.2 ともに SD card を挿さない状態で接続せざるを得ないので,mount の対象は内蔵メモリのみです.

# mount_msdosfs -o longnames -m 644 -M 755 /dev/da1s1 /mnt

FreeBSD 7.4 においては,mount に失敗するか,または directory が file として認識される,それらの結果に再現性がないなど不安定です. こちらは使いものになりません. FreeBSD 8.2 とは USB 関連のソースが随分と違うので,両方の改良を試みる余裕はありません.

FreeBSD 8.2 においては,正常に mount することができます.

/mntls で見てみます. (以下の例では /mnt/TIMERREC を.) directory/file の日付,時刻が固定値になったり名前が大文字になることは以前と同じです.

# ls -l /mnt/TIMERREC/*
/mnt/TIMERREC/BOX01:
total 103200
-rw-r--r--  1 root root 9577984 1979-12-30 00:00 01001_070427_0645A0693I.MP3
-rw-r--r--  1 root root 9585152 1979-12-30 00:00 01002_070428_0645A0693I.MP3
-rw-r--r--  1 root root 9563648 1979-12-30 00:00 01003_070430_0645A0693I.MP3

これと Linux, FreeBSD 6 系とで,認識される日付に奇妙な差異があります. 実用上は問題ないと思いますが注意して下さい.

なお,この環境においては,mkdir や file の cp などの書き込みの操作は試しておりません.