BonDriverProxyExの使い方【2024/7】
はじめに
この記事では、Windows版のBonDriverProxyEx・BonDriverProxyとLinux版BonDriverProxy_Linuxの導入方法について解説します。
Windows版
- BonDriverProxyEx.exe: サーバーソフト
- BonDriverProxyEx.ini: サーバーの設定ファイル
- BonDriver_Proxy.dll: クライアントソフト
- BonDriver_Proxy.ini: クラインとの設定ファイル
以上のソフトはそれぞれ、BonDriverProxyExとBonDriverProxyからダウンロードすることができます。
BonDriverProxyEx
サーバー側で動作させるBonDriverProxyExの設定ファイルの例です。
[OPTION]
; サーバ側で待ち受ける IP アドレスを指定
ADDRESS=0.0.0.0,[::]
; サーバ側で待ち受けるポートを指定 (デフォルト: 1192)
PORT=1192
SANDBOXED_RELEASE=0
DISABLE_UNLOAD_BONDRIVER=0
; BonDriver に対して OpenTuner() を試みた後、以後の処理を開始するまでに待つ時間 (ミリ秒) (デフォルト: 0)
OPENTUNER_RETURN_DELAY=0
B25=1
STRIP=1
EMM=1
[BONDRIVER]
00=PX-W3PE5-T;BonDriver_PX4-T1.dll;BonDriver_PX4-T2.dll
01=PX-W3PE5-S;BonDriver_PX4-S1.dll;BonDriver_PX4-S2.dll
02=DTV02A-4TS-P;BonDriver_PX4-MLT1.dll;BonDriver_PX4-MLT2.dll;BonDriver_PX4-MLT3.dll;BonDriver_PX4-MLT4.dll;
03=Q1UD;BonDriver_BDAT1.dll;BonDriver_BDAT2.dll;BonDriver_BDAT3.dll;BonDriver_BDAT4.dll
04=Test;BonDriver_Splitter1.dll;BonDriver_Splitter2.dll;
; 利用する BonDriver が配置されているフォルダのパスを指定
DIR_PATH=C:\DTV\BonDriver
[SYSTEM]
; コマンドパケット用のキューサイズ (デフォルト: 64)
PACKET_FIFO_SIZE=64
; TS バッファ用のキューサイズ (デフォルト: 64)
TS_FIFO_SIZE=64
; 1つの TS バッファのサイズ (バイト) (デフォルト: 192512)
TSPACKET_BUFSIZE=192512
; プロセスの実行優先度の設定値 (デフォルト: NORMAL)
; 有効な値は高い方から順に、REALTIME, HIGH, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, IDLE
PROCESSPRIORITY=NORMAL
; プロセスの実行優先度の設定値 (デフォルト: NORMAL)
; 有効な値は高い方から順に、CRITICAL, HIGHEST, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, LOWEST, IDLE
THREADPRIORITY_TSREADER=NORMAL
; 送信スレッドの実行優先度の設定値 (デフォルト: NORMAL)
; 有効な値は高い方から順に、CRITICAL, HIGHEST, ABOVE_NORMAL, NORMAL, BELOW_NORMAL, LOWEST, IDLE
THREADPRIORITY_SENDER=NORMAL
変更する必要がある箇所を説明します。
- [OPTION]セクション
- PORT: クライアントからの接続を待機するポート番号(デフォルト:1192)
- [BONDRIVER]セクション
-
00からの連番=任意のグループ名;チューナーの凡1つ目;チューナーの凡2つ目;...
- 基本的には利用可能なチューナー数をすべて指定してください。
- DIR_PATH: チューナーの凡があるフォルダまでのパス(絶対・相対パス可)
-
00からの連番=任意のグループ名;チューナーの凡1つ目;チューナーの凡2つ目;...
- [SYSTEM]セクション
- PACKET_FIFO_SIZE: ネットワーク速度が安定せず、速くなったり遅くなったりする場合は値を大きくする
- TS_FIFO_SIZE: クライアントモジュールはTSデータ用パケットを受け取ったらTSキューに放り込んでいきますが、それがアプリケーションに読み出されるまでの間保持しておくためのキューのサイズです
- TSPACKET_BUFSIZE * TS_FIFO_SIZEがクライアント側モジュールでTSデータ用に保持される最大バッファサイズになる
BonDriverProxyExの設定が完了したら、Windowsのスタートアップにショートカットを追加して、PC起動時に自動で開始するようにすることをお勧めします。
BonDriver_Proxy
続いて、クライアントファイルの設定方法です。
[OPTION]
; サーバの IP アドレスを指定 (デフォルト: 127.0.0.1)
ADDRESS=127.0.0.1
; サーバのポートを指定 (デフォルト: 1192)
PORT=1192
; 利用するサーバ側で指定した BonDriver のグループ名を指定
BONDRIVER=BonDriver-T
; このクライアントからの接続でのチャンネル変更の優先度 (デフォルト: 0)
; 0~255の数字 (大きな値ほど優先で同値の場合は対等、ただし255の場合は排他ロックになる)
CHANNEL_LOCK=0
; サーバが応答しない場合の接続タイムアウト時間 (秒) (デフォルト: 5)
CONNECT_TIMEOUT=5
; WOL (Wake On LAN) パケットを投げるかどうか / 1:yes 0:no (デフォルト: 0)
USE_MAGICPACKET=0
; B25 デコード(スクランブル解除)を行う / 1:yes 0:no (デフォルト: 0)
B25=1
[MAGICPACKET]
; WOL (Wake On LAN) パケットの送信先アドレス (デフォルト: [OPTION] の ADDRESS の値)
;TARGET_ADDRESS=192.168.0.100
; WOL (Wake On LAN) パケットの送信先ポート (デフォルト: [OPTION] の PORT の値)
;TARGET_PORT=1192
; WOL (Wake On LAN) 対象の MAC アドレス (USE_MAGICPACKET が 1 の場合のみ必須)
;TARGET_MACADDRESS=AA-BB-CC-DD-EE-FF
[SYSTEM]
; コマンドパケット用のキューサイズ (デフォルト: 64)
PACKET_FIFO_SIZE=64
; TS バッファ用のキューサイズ (デフォルト: 64)
TS_FIFO_SIZE=64
; 1つの TS バッファのサイズ (バイト) (デフォルト: 192512)
TSPACKET_BUFSIZE=192512
変更する必要がある箇所を説明します。
- [OPTION]セクション
- ADDRESS: サーバーのPCのIPアドレス(IPv4/IPv6/TailscaleIP)を設定する
- PORT: BonDriverProxyEx.iniのPORTと同じ値にする
- BONDRIVER: BonDriverProxyEx.iniのグループ名を指定する
Linux版
ビルド
以下の手順でビルドをする
★推奨★decode版: https://github.com/tkmsst/BonDriverProxy_Linux/tree/decode
接続元表示版: https://github.com/newtype-3/BonDriverProxy_Linux
本家版: https://github.com/u-n-k-n-o-w-n/BonDriverProxy_Linux
git clone https://github.com/tkmsst/BonDriverProxy_Linux -b decode
cd BonDriverProxy_Linux
B25=1 make CXXFLAGS='-std=c++14' all
※B25対応が不要の場合は、B25=1を消してビルドしてください
※Ubuntu22.04 LTSのコンパイラは C++17 が標準になってるため、CXXFLAGS=-std=c++14 をつけてビルドすることをお勧めします。
設定ファイル
BonDriverProxyEx.conf
;BONDRIVER
00=Q1UD;/home/pi/DTV/BonDriver/BonDriver_DVB1.so;/home/pi/DTV/BonDriver/BonDriver_DVB2.so;/home/pi/DTV/BonDriver/BonDriver_DVB3.so;/home/pi/DTV/BonDriver/BonDriver_DVB4.so
実行方法
sudo ./BonDriverProxyEx 0.0.0.0 1192 0 64 192512
コマンドラインのオプションは以下の通りです
address port (opentuner_return_delay_time packet_fifo_size tspacket_bufsize)
正常に実行されると、画面に何も表示されません。
WindowsからTVTest等でチューナーが開ければ、成功です。
PCやラズパイが起動したときに、自動実行されるようにサービスを登録することをおすすめします。
エディターでファイルを作成します。
sudo vim /etc/systemd/system/BonDriverProxyEx.service
以下の内容で書き込み、保存します。
[Unit]
Description = BonDriverProxyEx
After = network-online.target
[Service]
ExecStart = /home/pi/DTV/BonDriver/BonDriverProxyEx 0.0.0.0 1192 0 64 192512
Restart = always
Type = forking
[Install]
WantedBy = multi-user.target
以下のコマンドでサービスとして登録します。
sudo systemctl daemon-reload
sudo systemctl enable BonDriverProxyEx.service
sudo systemctl start BonDriverProxyEx.service
sudo systemctl status BonDriverProxyEx.service
ラズパイで4チューナー分配信中のCPU使用率とメモリ使用量も参考に載せておきます。
Amazon等で売っているケースとファンがついていれば、1年程度メンテ不要で放置できます(実績)。
また、ラズパイ本番運用時はWi-Fiではなく有線LANでつながないと不安定になります。
録画システムの構成例
よくある質問
-
BonDriverProxyExがフリーズして落ちてしまいます。
- BonDriverProxyExに読み込ませている各種BonDriver(Jacky/radi-sh/px4_drv)から応答がない場合、BonDriverProxyEx側はフリーズしてしまいます。特にPX-Q1UD/S1UD系のUSBチューナーを利用している場合、発生する頻度が高い気がします(個人の主観です)。
-
最初は問題なくチューナーを開けたのに数時間後or翌日開けなくなっていた。
- 各種BonDriver(Jacky/radi-sh/px4_drv)からBonDriverProxyExのみに接続している場合は基本的には発生しません。各種BonDriverへBonDriverProxyEx以外からのアクセス(EDCB/TVTest等)がある場合は競合するため、BonDriver_Proxyでは開けなくなります。
- BonDriverProxyExを導入する場合は、TVTest/EDCBからのアクセスもBonDriver_Proxyへ一本化しましょう。
-
TVTestで選局中にチャンネルが勝手に変わってしまいます。
- TVTestで利用しているBonDriver_Proxyよりも優先度が高い別のBonDriver_Proxyからアクセスがあり、そちらの選局が優先されています。
- チューナーが足りてないので購入しましょう。
Discussion