2008年2月17日日曜日

(メモ)DUS01まとめ

忘れる前にワンセグチューナーDUS-01の挙動についてメモしておく。半分は自分のため、あとの半分は「24時間ワンセグコミュニティ(?)」のため。Linuxやwindowsで使うときにどうぞ。

ハードウェア

  • CPU: Silicon Laboratories C8051F342
  • チューナー: sharp VA1A5JZ9902A (参考リンク:ascii24)
  • アンテナ:ロッドアンテナ
  • インターフェイス: USB1.1
シャープの9902Aは1-2世代前のワンセグモジュール。最新版には及ばないが感度が-107dbmは優秀なんじゃないかと思う。googleで探したけど仕様書等は見つからなかった。残念。

USBデバイス情報
USBデバイスとしては、こんな感じ。ほかに何をかけばいいのかな。
  • Vendor ID:0x1bc8 , Product ID:0x0001
  • endpointは0,1,2,3の4本。
  • EP1は制御用のバルク転送エンドポイント(読み書き可能)。
  • EP3はMPEG2TS転送用のアイソクロナス転送エンドポイント(読み込み専用)
  • EP2は使っているのを見たことないけど、ファームウェアアップデートなどに使うのじゃないかと推測
  • 起動時にファームウェアロードなどは発生しない。電源を入れれば動く。

さらに詳しく知りたい人のためにNetBSDのusbgenの出力を載せておく。
CONFIGURATION descriptor index 0:
bLength=9 bDescriptorType=2 wTotalLength=46 bNumInterface=1
bConfigurationValue=1 iConfiguration=0 bmAttributes=80 bMaxPower=150 mA

INTERFACE descriptor index 0, alt index 0:
bLength=9 bDescriptorType=4 bInterfaceNumber=0 bAlternateSetting=0
bNumEndpoints=4 bInterfaceClass=0 bInterfaceSubClass=0
bInterfaceProtocol=0 iInterface=0

ENDPOINT descriptor index 0:
bLength=7 bDescriptorType=5 bEndpointAddress=1-out
bmAttributes=2 wMaxPacketSize=64 bInterval=5

ENDPOINT descriptor index 1:
bLength=7 bDescriptorType=5 bEndpointAddress=1-in
bmAttributes=2 wMaxPacketSize=64 bInterval=5

ENDPOINT descriptor index 2:
bLength=7 bDescriptorType=5 bEndpointAddress=2-out
bmAttributes=2 wMaxPacketSize=64 bInterval=5

ENDPOINT descriptor index 3:
bLength=7 bDescriptorType=5 bEndpointAddress=3-in
bmAttributes=1 wMaxPacketSize=188 bInterval=1


制御コマンド
制御コマンドはEP1をつかってやりとりする。今のところ分かっているコマンドはこれだけ。全部推測なので正しいかはわからないけど。
  • ファームウェアバージョンチェック (0x9f) - 現在のファームウェアのバージョン(1.0.0)が返ってくる。
  • チャネル設定 (0x10) - これに加えてKHz単位の周波数をくべるとチューナーが設定される。
  • 入力検出(0x11) - 電波が受信できていたら0x1、受信できなければ0x0が返ってくる。
  • ストリームモードチェック(0x12) - たぶんMPEG2TSストリームを出しているかしないかをチェック。
  • ストリームスタート (0x20) - EP3へのMPEG2TS出力を開始する。
  • ストリームストップ(0x21) - EP3へのMPEG2TS出力を停止する。
  • シリアル番号チェック(0x43) - デバイス固有のシリアル番号を返す。
(2008/2/18 1:30修正:miroさんありがとうございました。)

それぞれのコマンドは10byte長で、先頭にコマンドを、引数がないものは0x0で埋めて送る。
チャネルを変えるときのシーケンスは
  • ストリームが出ていたら止める
  • 止まったかモードをチェックする
  • チャネル変更リクエストを出す
  • ちょっと待つ
  • 入力検出リクエストを出す
  • 返り値をチェックして0x0だったら「ちょっと待つまで戻る」。0x1が出るまでがんばる。(もしくはタイムアウトする)
  • ストリームを出力する
って感じ。チャネル設定コマンドは、{0x10, 0x04, 0x00, A, B, C, 0x00, 0x00, 0x00, 0x00} というフォーマットで、A,B,CにKHz単位の周波数を指定する。たとえば、521.43MHz(チャンネル21)なら{0x07, 0xf3, 0xb7}を埋め込めば良い。
(2008/2/19修正:チャネル設定コマンドの例の先頭バイトをtypoしていたので修正)

出力ストリーム
EP3からはMPEG2TSもどきが出力される。先頭はMPEG2TSで規定された同期ビット列(0x47)でかつ、パケット長が188Byteというのは良いのだが、MPEG2TSとして解釈すると全部エラーになる、という変な状態。きっと、プログラムミスでこうなってしまっているのだろうとおもう。あまりにも不憫なので正しいストリームに治してあげよう。
「先頭の0x47を除いて、他のバイト列に対して0xb5を排他的論理和を取る。」
すると、普通のMPEG2TSになる。

まとめ
USB的には、「USBデバイスとしてのJ200への不満」、はほぼ解決されているようなデバイスだった。最初はストリームが見えるか少しどきどきしたが、まあすぐにわかってよかった。
まだ入手性もよいみたいだし、ここにある情報を使えば他にも対応ソフトを作れそうな人がいると思うので、いけているデバイスじゃないかと思う。明日もう少し補充を(自分用に)買っておこう。。

32 件のコメント:

MIRO さんのコメント...

あ、私が触ってたのと同じものだ!(笑)
書かれてた挙動が同じだったのでそうかなーと思ってたんですが(未分解につきWindowsドライバしか見てなかったので)これもC8051F342だったのかー!

ちなみに0x9Fがバージョン番号の応答(1.0.0)で、0x43は端末のシリアル番号を返します。ちゃんと端末ごとに違う番号が帰ってくるので、おそらく録画ファイルの暗号化に使ってるんでないかと思います。

yuo さんのコメント...

おっと、これでしたか。ezusbベースのやつは手持ちにはなかったので、さらに新しいデバイス発見!とおもっていました。
分解が面倒なので今まで触って無かったんですが、あのエントリーに触発されて夜中にごそごそと作業をしてしまいました。
コマンド情報修正しておきました。ありがとうございます。

匿名 さんのコメント...

python-usb経由でlibusbを呼び出してDUS-01を制御できないか調べてい
ます。
http://wiki.osdev.info/?LibUsb-Win32
ここを見るとlibusbはアイソクロナス転送非対応というような記述があ
り、たしかにapiを見てもアイソクロナスでのリードとライトは見当たり
ません。
NetBSDのUSBサブシステムは全く理解していないのですが、どのようなド
ライバ/ライブラリを使ってテストコードを書いていらっしゃるか教え
ていただけないでしょうか?libusbでのDUS-01利用は可能でしょうか?

yuo さんのコメント...

匿名さん。
残念ながらlibusbはアイソクロナス転送をサポートしていないので、*BSD系のカーネルで提供されているugen(汎用USBドライバ)を利用してコードを書いています。アイソクロナス転送をサポートしないとdus01からのストリームを受け取れないので、データ取れないと思います。

ちょっとしか見てませんがpyusbもlibusbのwrapperらしいので、pyusb & pythonで触るにはJ200などのbulk-endpointを使うものを使うしかないように思います。

匿名 さんのコメント...

yuoさんありがとうございます。そうですか、やはりDUS-01では無りそうですね。他のはもってないのでひとまず様子見します。どうもありがとうございました。

匿名 さんのコメント...

情報ありがとうございます。

開発版のlibusb-1.0はisochronous転送が可能なを知り、これでDUS-01用のソフトを作ってみました。

パッチをあてたmplayerでリアルタイム試聴できる様になりました。ありがとうございます。(二ヶ国語や2つ以上のストリームがまざっていると正常なリアルタイム再生できませんが。)

昨日からソフトを公開しています。

こちらのサイトをリンクしても宜しいでしょうか。

宜しくお願い致します。

匿名 さんのコメント...

さきほど投稿した者です。
試聴→視聴でした。

問題のあった二ヶ国語放送対応のmplayerのパッチを上げておきました。

ストリーム複数の話は間違いでした。調べると再生できないストリームに含まれる音声ストリームは1つでした。右と左で別の音声を流している様です。(ごぞんじだとは思いますが。)

(原因はmplayerのバグと思われます。同じfaad2を利用したvlcでこの音声データを正常に再生できたので。)

別の不具合として、こちらで映る特定のチャンネルではコマーシャル→番組、番組→コマーシャルでmplayerが同期がとれなくなったり、落ちたりするのを見付けました。これは簡単に...できたりするもとになるので、この様な放送は将来無くなると思いますが。

宜しくお願い致します。

匿名 さんのコメント...

アリバイ会社オフィスサポート

アリバイ会社東京|アリバイ会社大阪
| アリバイ会社OPS
アリバイ会社KSC|
保証人|
デザイナーズマンション 賃貸

匿名 さんのコメント...

処女援交メル友募集掲示板セックスフレンド

匿名 さんのコメント...

逆援助逆援助セフレ

匿名 さんのコメント...

処女メル友援交セックスフレンドSEXフレンド

ひろ さんのコメント...

オーディション


データ復旧

匿名 さんのコメント...

エロチャット
アダルトチャット
アダルトチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
アダルトライブチャット
アダルトチャット
エッチ動画
エッチ動画
エッチ動画
エッチ動画
ピンサロ
大阪風俗
アダルトチャット
エロチャット
エロチャット
エロチャット
チャット
アダルト掲示板
趣味
エロチャット
エンジェルライブ
大阪風俗
エロチャット
エロチャット
大阪風俗
エロチャット
エロチャット
エッチチャット
エロチャット
エロチャット
アダルトチャット
アダルトチャット

セフレ さんのコメント...

出会い系
セフレ
メル友
メル友募集掲示板
援助交際
逆援助
逆援助交際
熟女
熟女 出会い
エッチ
人妻
セフレ
メル友
メル友
メル友
メル友

メル友
メル友
メル友
メル友
メル友
メル友
メル友

匿名 さんのコメント...

逆援助生活始めてみませんか?貴方を望んでる女性がお待ちしてます
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助
逆援助

匿名 さんのコメント...

逆援生活始めてみませんか?貴方を望んでる女性がお待ちしてま
逆援
逆援
逆援
逆援
逆援
逆援
逆援
逆援
逆援
逆援
逆援

匿名 さんのコメント...

セフレ
家出サイト
逆援助
家出少女 掲示板
出会い 掲示板
おじゃまします!これからもがんばって下さい!!(。・ω・)☆

こういち さんのコメント...
このコメントは投稿者によって削除されました。
こういち さんのコメント...

家出サイト

援交

2ショット

ヤリマン

割り切り

逆援助交際

セフレ

Mセカンエロ写メ

援助交際

恋人探し

メル友

匿名 さんのコメント...

メル友募集掲示板
人妻 出会い
出会 系
出会い
出会い系サイト
無料 出会

adgsj さんのコメント...

チャットでエッチ!
エロチャット
エロチャット
エロチャット
エロチャット
エロチャット
逆援はここで!!
逆援
逆援
逆援
逆援
童貞必見です!
童貞
童貞
童貞
特産物食べ歩きしたい!
世界の川を知りたい!
天然記念物が気になる!
裏バイト
裏バイト
裏バイト
裏バイト
裏バイト
裏バイト

匿名 さんのコメント...

セフレ
メル友
家出掲示板

Unknown さんのコメント...

出会いました
出会いにきてくれてありがとう
出会い系での犯罪撲滅
出会い健康法
出会いで強くなる
読書との出会い
出会いの卵
白球との出会い

匿名 さんのコメント...

無修正
無修正
無修正
無修正
無修正
無修正
無修正
無修正
無修正
無修正
無修正
無修正
セックス
セックス
セックス
セックス
セックス
セックス
セックス
セックス
セックス
セックス
セックス
セックス
エロエロエロ
エッチエッチエッチ
アダルトビデオアダルトビデオアダルトビデオ
アダルト動画アダルト動画アダルト動画
セックスフレンド
おまんこおまんこおまんこ
無修正無修正無修正
無修正動画無修正動画無修正
セックス セックスセックス
エロエロエロ
エッチエッチエッチ
エッチエッチエッチ

匿名 さんのコメント...

ソースとマヨネーズの出会い
出会い言うてもやん
出会いでござる
最後の出会い
出会いとツナガリ
何番目かの出会い
出会いをありがとう
出会いと猛毒
出会いの歴史
トラと出会い
出会いの価値観
出会いたもう
素敵な情報をありがとうございます

匿名 さんのコメント...

セックスフレンド
セックスフレンド
人妻
人妻
貧乳
出逢い系サイト
出張ホスト
出張ホスト
逆援助交際
逆援助交際
豊満熟女
熟女
エロ
童貞

匿名 さんのコメント...

セフレ
おまんこ
オナニー
痴女
セフレ
セフレ
エロ
痴女
パイパン
乱交
巨乳
青姦

匿名 さんのコメント...

無料アダルト
エロ
エッチ
無修正
セックス
セフレ
人妻
アダルト

無料アダルト
無料アダルト
無料アダルト
無料アダルト
アダルト
アダルト

Unknown さんのコメント...

ツーショット
ツーショット
ツーショット
ツーショット
ツーショット
ツーショット
ツーショット
ツーショット
ツーショット
ツーショット
ツーショット
ツーショット紹介

匿名 さんのコメント...

エロチャット
アダルトチャット
エロチャット

匿名 さんのコメント...

ありきたりの無料出会いサイトよりは、家出 掲示板 地域別の方が、高い確率で早く出会える!by処女

匿名 さんのコメント...

エロチャット
アダルトチャット
ライブチャット
ツーショット
2ショット
携帯チャット
人妻チャット
チャット動画