これは何ですか?
ダメダコリャクティブの地デジチューナ「DY-UD200」用BonDriver試作品です。
出来ること・特徴
純正ドライバの代わりにWinUSB、あるいはLibUSBをバックエンドとして使用します。
WinUSBはマイクロソフト謹製の純正USB汎用ドライバです。
この為、ドライバに署名が必要な64bitWindows環境でもロード出来る可能性があります。
LibUSBはOSSのUSB汎用ドライバです。
WinUSBが使えないWindowsでも動作する可能性があります。
因みに開発・テスト環境はWindows7RC-x64です。
ワンセグの視聴・録画がおそらく可能です。
内蔵カードリーダを使用できるようになったので、運次第では外付けカードリーダ無しにフルセグの視聴・録画も可能です。
ただし例によって解析・デバッグが甘いので、最悪B-カスカードがただのプラ板になる可能性もちょっとだけあります。
純正ドライバ+ソフトよりも少ないドロップで視聴・録画が出来る様な気がしますが、多分気のせいです。ないしはフロントエンドのおかげです。
ファームパッチを組み合わせれば明らかに純正よりDropが減りますが、それはファームパッチのおかげです。
注意事項
初期型ファームウェア(或いはそれにパッチを当てた物)でないと動作しません。
アンテナレベルの取得を実装してみましたが、有意な値が出てるとは思えません。基本的に未実装です。
チューナが突然停止する時があります。その場合、あわてず騒がずUSBを抜き差しして、ソフトを再起動してください。録画中だったら諦めて下さい。
USBのパイプストールは自動でクリアする設定にしてみました。もしかしたら多少D増えるくらいで止まらなくなってるかもしれませんがあまり期待しないで下さい。
B25のデコードは自前で出来ますがいまいち不安定です。何か問題が起きた場合や録画に使う場合は、内蔵B25デコーダを無効にしてwinscard.dllなり外部スマートカードリーダなり使って下さい。
視聴中に高負荷を掛けるとドロップする場合、視聴ソフトのプロセス優先度を高めにしてみて下さい。録画時は大きめのバッファがあるから多分大丈夫です。
制限事項
動作する、と期待してはいけません。
このドライバは動作しません。
|l |l l |l i | |i l |l l |
|i l |i l| li | |i l| li |
______
/ ./|
./ //|
/ /././
∠______/ /./
|○_____|//
) ∠______//_(
Σ |______/ (
⌒ヽ/V⌒v、/⌒v、/⌒ ビダァァァン!!
使用法
初めて人柱になる人
- Microsoft Visual C++ 2008 SP1 再頒布可能パッケージをインストールする。
- ファームウェアを初期Verにダウングレードする。
- ドライバのログを取るとVer. 1.0.2-2と表示されるのが正常です。
- 純正のDY-UD200ドライバを、DY-UD200_w_WinUSBかDY-UD200_w_LibUSBを取ってきて置き換える。
- 純正ドライバはUSBコントローラー"Full-Seg Tuner [DAWIN DTV]"として認識
- USBバックエンドを入れると"ISDB-T Digital TV Tuner DY-UD200 /w xxxxxx"として認識
- BonDriver_dyud.dllをBonDriverとして各ソフトにロードさせる。
- 動作しない事を確認する。
- 頑張ってドライバを純正に戻す。
既に人柱になってる人
- 今使っているBonDriver_dyud.dllを上書きする。
- USBバックエンドは入れ直す必要はありません。
- B25の処理を自前でやる場合はwinscard.dllは不要です。
- やっぱり動作しない事を確認する。
- 頑張ってドライバを純正に戻す。
内蔵カードリーダについて
- 基本的使い方
- B25デコードを自前でやる設定にすると、ドライバ内部から自動的に使用されます。
- winscard.dllの使い方
- カードリーダを使いたいソフトと同じディレクトリに、winscard.dllをコピーしてください。使いたくなくなった場合はwinscard.dllを削除すれば、標準のカードリーダにアクセスしに行きます。
- BonDriverを.\Pluginや.\BonDriverなど別ディレクトリで管理するタイプのソフトの場合
- ソフトと同じディレクトリに、winscard.dllと_inscard.iniをコピーし、_inscard.iniのpathをBonDriver_dyud.dllのパスに書き換えてください。
パケットフィルタについて
PacketFiltering=2でNULLパケの削除にしておけば基本的に問題ない筈です。あまりにもEやDが多い時はPacketFiltering=1にしてみて下さい。
BonDriver_dyud_logging.dllについて
BonDriver_dyud.dllにログ取得機能を付けた物です。突然落ちる、何らかの機能が動作しない、などの時に、これでログを取ってもらえるとデバッグが楽になります。
BonDriver_dyud.dllと切り替えながら使用は出来ません。winscard.dllも使う場合、ファイル名をBonDriver_dyud.dllに変更するのが簡単です。
BonDriver_dyud.dll.iniについて
BonDriver_dyud.dllの設定ファイルです。無い場合デフォルト値で動作します。
各種設定を変更したい場合、このファイルを修正して下さい。
自分のファイル名+.iniを読み込むように作ってあります。なのでBonDriver_dyud.dllの名前を変えた場合、iniファイルの名前もそれに併せて変えて下さい。
ワンセグについて
チューニング空間をワンセグにすると、チューナをワンセグモードに設定し、ワンセグのみを受信します。フルセグが受信できないような弱電界でも、ワンセグが受信できるようになる可能性があります。
自前でNITを解析してPATをでっち上げるので、PAT必須のソフトでもワンセグを視聴できます。
ワンセグで複数番組放送を行っている局には今のところ対応していません。と言うかそう言う局あるんですかね?
内容物
- DY-UD200_w_WinUSB
- DY-UD200向けinf付きWinUSB
- src
- パスタ屋さん
- BonDriver_dyud.dll
- BonDriver本体
- BonDriver_dyud.dll.ini
- BonDriver設定ファイル
- BonDriver_dyud_logging.dll
- ログ取得するBonDriver
- winscard.dll
- B-CAS破壊ツール
- _inscard.ini
- B-CAS破壊ツール設定ファイル
- readme.html
- ビダァァァン!!
- test_dyud.exe
- BonDriver_dyud用簡易フロントエンド
const TCHAR DriverName[] ="BonDriver_dyud.dll"
- FreqSweeper.exe
- 実験的ツール
const TCHAR DriverName[] ="BonDriver_dyud.dll"
謝辞
このソフトには以下のライブラリ・ソースが使用・活用されています。
素晴らしいソフトとそのソースを公開されている作者様方に感謝します。
- BonDriver_Shiro_0130
- 「拡張ツール中の人」 http://2sen.dip.jp/friio/
- BonSample Ver.2.10
- 「拡張ツール中の人」 http://2sen.dip.jp/friio/
- An AES (Rijndael) Implementation in C/C++ (as specified in FIPS-197)
- 「Dr Brian Gladman」 http://www.gladman.me.uk/
- HDUSカードリーダー利用テスト_2
- 作者不詳 http://2sen.dip.jp/cgi-bin/hdusup/source/up0039.zip
- スクランブルTSの復号処理をC言語で起こし直したもの
- 「ID:2UYNyA6O」http://pc11.2ch.net/test/read.cgi/avi/1236444785/93-96
- TVTest 0.5.39
- 「HDUSTestの中の人」http://2sen.dip.jp/cgi-bin/hdusup/source/up0383.zip
- 新ファームのパケログ
- 「ID:FxmHv7br」http://pc11.2ch.net/test/read.cgi/avi/1246789116/510-512
解析結果を公表したり、テストに協力してくれているスレの皆様にも感謝します。
変更履歴
- 8,4,2(2009/09/10)
- VHF対応しようとしてCATVが全滅してたバグを修正
- 8,4,1(2009/09/10)
- まあ数出るようになってきたしいいかね…
- とりあえずVHF1-12chに対応してみたつもり
- 8,4(2009/08/18)
- 実験リリースの成果を制限付きのままマージ
- とりあえずlibusbにも対応
- 8,3,-3(2009/08/17)※完全な実験リリース
- 8,3,-2(2009/08/17)※完全な実験リリース
- 8,3,-1(2009/08/12)※完全な実験リリース
- ファームウェアバージョンチェックをルーズにしてみた
- 8,3(未公開)
- libusb対応の為の内部構造変更、まだ動作しないと言うか動作させる気が殆ど無い
- 8,2,4(2009/06/10)
- WinUSBのpipeがストールした場合、自動で復旧する設定にしてみた
- B25デコーダをSSE2対応にしてみた、というか元々TvTestのソースを利用させて貰ってるだけ…
- ソースコードの整理
- 8,2,3(2009/06/05)
- B25デコーダが、エラーのあるパケットを処理しようとしてメモリを破壊する致命的なバグを修正
- 8,2,2(2009/06/02)
- ワンセグモードの時、合成したPATの巡回カウンタがまれに飛ぶバグを修正
- セクションが複数パケットに分解されている場合、切れ目にゴミが混ざる致命的なバグを修正
- 8,2,1(2009/05/13)
- デジラジモードが明らかにおかしかったのを修正、ただしあまり意味はない
- ECMの処理を多少厳密にしてみたが多分意味はない
- 全体的にソースコードを多少整理
- 8,2(2009/05/11)
- ワンセグで複数サービスやってる放送局に対応したつもり
- 8,1(2009/05/11)
- 8(2009/05/07)
- デジラジモードをちょっと修正してみたがおそらく意味はない
- チューナ初期化直後から選局終了までCPU使用率が100%になるバグ修正、旧マシンでスレッド優先度上げても大丈夫になったかも
- test_dyudが7,7以降使えなくなってたバグを修正、デバッグで使ってないのバレバレ
- B25のデコードを自前でやるようにした、複数のECMが含まれる局だと今のところ動作しない
- 7,9(2009/05/05)
- デジラジテストモードを有効に出来るようにしてみた
- リモコンを無効に出来るようにしてみた
- アンテナレベルを無効に出来るようにしてみた
- 7,8(2009/05/05)
- 7,7でxor暗号が設定に依らずほぼ常時Offになってたバグを修正、ファームにパッチ当ててないDY-UD200でも7,7と同等に
- 7,7(2009/05/04)
- GetTsStream()の実装を変更、EDCBでも多分使えるようになった気がする
- 今更ながらバージョン番号を正に変更
- -7,-6(2009/05/03)
- パケットフィルタにNullパケのみモードを追加
- デジラジモードを削除、試したい人は旧版で
- -7,-5,2(2009/04/29)
- xor暗号をoff出来るようにしてみた、パッチ当てファーム用
- -7,-5,1(2009/04/19)
- TS受信スレッドの優先度をiniで設定できるようにしてみた
- -7,-4,1(2009/04/15)
- TS受信スレッドの優先度を2あげてみた、高負荷時にDropしづらくなるかもしれない
- -7,-3,1(2009/04/13)
- デジタルラジオをワンセグモードで受信してみるようにしてみた
- -7,-3(2009/04/11)
- TSパケキャッシュを線形リストからリングバッファに戻した、軽くなった筈
- TS受信を見直してLockを無くし軽量化
- -7,-2,-1(2009/03/29 12:54)
- 自動でdeleteしてくれるのに過剰にdeleteしてたのをサボるようにしてみた、終了時のエラー無くなるかもしれない
- -7,-2(2009/03/29 4:56)
- new、deleteをオーバーロードしてboost::pool使うようにしてみた、効果は不明
- -7,-1(2009/03/28 19:33)
- PAT、PMTが複数パケットに分割されてた場合に対応した様な気がする
- -7(2009/03/27 14:30)
- いつの頃からかtest_dyud.exeが動作しなかったのを修正、最近デバッグでも使ってなかった
- パケットフィルタを搭載してみた、必要なパケも捨てる可能性あり
- バッファの形式をリングバッファから線形リストに変えた、STLってべんりですね
- iniファイルのバッファ設定がちょっと変更になった
- EpgDataCap_Bonでドロップする問題がマシになった
- メモリリークしてる気がする
- -6,-4(未公開)
- チャンネル変更直後の8192パケットを捨てるようにしてみた
- ログ取った時にSerialIDとB-CASIDを表示しないようにした
- いつなおしたか忘れたけどini無くても設定確認ダイアログが出るバグを修正
- -6,-3(2009/03/23 0:12)
- チャンネル毎の中心周波数をiniで指定出来るようにしてみた
- 実験的ツールを付けてみた、仕様変更予定
- -6,-2(2009/03/22 14:49)
- どう頑張ってもVC2008再頒布可能パッケージに依存するみたいなので諦めた、自PCは既に全部入れてあってチェック出来ない
- 「B-CASリトライ回数」と「TSのrecvがエラーの場合リトライするか」と「エラーパケットを捨てるか」を設定ファイルで弄れるようにした
- ↑エラーパケット捨てるとEpgDataCap_Bonでもパケロス多いながら何とか使えるかもしれないけどTvRock使った方が良い
- -6,-1(2009/03/22 1:52)
- B-CASへのコマンド発行が失敗した場合のリトライ条件を緩和
- ログの微修正
- -6(2009/03/21 23:11)
- WinUSBがやたらでかいので別アーカイブに分離、どうせ更新されないし
- なんかaes.libがMSVCR90.dllに依存してたからdllもMSVCR90.dllへ依存してたとか言うアホなミスを訂正
- ↑今度こそVC2008再配布ファイルに依存しなくなった筈…今更意味があるかは不明
- アンテナレベル取得を入れてみたがブロックノイズ載るような場合でも下がらない、値の解釈が解らん
- B-CASへのコマンド発行が失敗した場合、3回までリトライするようにしてみた
- ↑USB周りのエラーで偶に視聴が止まる人向け
- バッファのサイズをある程度調整出来るようにした
- リモコン受信スレッドを殺し忘れてたので、きっちり全殺しするようにした
- ログの内容をもうちょっと詳細に
- 一つ前のVerからログに時刻残すようにした、前回変更点書き忘れ
- -5,-2(2009/03/21 0:48)
- winscard.dllでBonDriver_dyud.dllロードに使うパスの解析をミスってた…間抜けすぎる
- -5,-1(2009/03/20 22:03)
- 暫定的にWinUSB_ReadPipe()がFalseを返しても無視するようにしてみた
- ↑USBメモリの抜き差しでエラーになる人向け
- -5(2009/03/20 21:00)
- バッファを3MB(1秒分)から15MB(5秒分)に増やしたから高負荷時にドロップ低減の効果あるかも
- _inscard.iniの扱いがあれだったのでエラーチェック強化、もし該当ファイルの設定が間違ってたら標準パスを使う
- ↑間違って_inscard.iniをコピーしてもエラーにならない
- _inscard.dllの基準パスを自モジュールパスにしたから起動時の安定性が向上したかもしれない
- デバイス検索と初期化周りを書き換え、もしかしたら複数チューナ行けるかもしれないし1台でも駄目になるかもしれない
- -4(2009/03/19 20:32)
- HDUS準拠のリモコンが使えるようになった
- エラーフラグ立ってるパケットも捨てずにチューナに渡すようにしてみた
- ↑効果不明というか捨てなくても視聴できちゃってるし…
- 純正と同じ様にチャンネル切替後ステータス取得してwaitかけるようにしてみた
- ↑効果不明
- デバッグ用ぉg取得バージョン追加
- チューナの初期化規則を変更(あまり意味はない)
- -3(未公開)
- VC2008再配布ファイル不要になったはず
- WinUSBインストーラの互換性が上がったはず
- 同梱するライブラリのソースを取り違えるとか言う馬鹿を修正
- EpgDataCap_Bonの様な、BonDriverをサブディレクトリに分けるソフトでも内蔵カードリーダ使えるように改良
- ↑ただしドライバ自体の実装がタコなためか、EpgDataCap_Bonを使うと実用にならないレベルのドロップが出る
- 複数台とかつないでも動きませんよ?何を言ってるんですか?
- -2(2009/03/18 5:03)
- 内蔵カードリーダに対応した様な気がする
- 他に何かやったような気もする
- -1(2009/03/17 17:05)
- 複数台に対応したかもしれない
- チューナのオープン直後に地デジの物理13chが視聴できないバグの修正
- 簡易フロントエンド同梱
- WinUSBインストーラ同梱
- 0(2009/03/17 14:25)
2009/03/18 5:32 mere