📺

BonDriverProxyExの使い方【2023/12】

2023/12/03に公開

はじめに

この記事では、Windows版のBonDriverProxyEx・BonDriverProxyとLinux版BonDriverProxy_Linuxの導入方法について解説します。

Windows版

  • BonDriverProxyEx.exe: サーバーソフト
  • BonDriverProxyEx.ini: サーバーの設定ファイル
  • BonDriver_Proxy.dll: クライアントソフト
  • BonDriver_Proxy.ini: クラインとの設定ファイル

以上のソフトはそれぞれ、BonDriverProxyExBonDriverProxyからダウンロードすることができます。

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: チューナーの凡があるフォルダまでのパス(絶対・相対パス可)
  • [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でつながないと不安定になります。

Discussion