見出し画像

地デジ/BS/CS放送8CH復調BOX

はじめに

最近、高性能のMiniPCが安価に販売されるようになりました。
そこで、MiniPCにUSB接続し、地デジ/BS/CS放送を8CH復調できる復調BOXを製作しました。実際は、PLEXのPX-MLT8PEを外付けBOX化しています。
MiniPC+iSCSIとの組み合わせにより、 foltia ANIME LOCKER録画サーバを構築したり、MiniPCだけと組み合わせIPTV再送信装置を構築したりできます。

画像
地デジ/BS/CS放送8CH復調BOX(正面)

構成概要

PLEXのPX-MLT8PEは、PC内蔵型のカードですが、PCI-Expressバスは+3.3V給電のみに使用され、実際のホストインタフェースはUSB接続となています。そのため、マイニング用PCI-Expressライザーカードを利用・給電を行えば、基本的にUSBのみコネクタを用意すれば、容易に外付けBOX化できます。

+3.3V給電能力に関する注意事項

問題点

ただし、ライザーカードの+3.3V給電回路をそのまま利用した場合、アプリケーションより6CH以上を起動すると、ドライバが落ちる現象が発生しました。当初、ホストのUSBインタフェースの問題を疑いましたが、PX-MLT8PEの外付け化を検討されていらっしゃる方がおられ、+3.3V給電の能力不足が指摘されていました。また、5chにて、PX-MLT8PEの起動CH数と+3.3V電流容量の関係を調査されている方がおられます。そのため、+3.3Vの電源をオシロで観測しながら8CHを起動すると、起動後しばらくすると電源が1.3V程度にドロップすることが確認されました、(その後、ドライバが開放されると+3.3Vに復旧します。)

原因

ライザカードの給電回路は、+12Vを一旦、8PinSOPのスイッチング電源ICで降圧、その後、3端子レギュレータ(ドロッパ)により+3.3Vを作成しています。そのため、PCI-Expressバスの最大給電能力の3Aを保証できず、3A近くの電流が流れると、3端子レギュレータにサーマルプロテクションがかかり、電圧が低下してしまします。

対策

ライザカードの給電回路をあきらめ、外部の+12V->+3.3V降圧コンバータから給電を受けるよう変更します。外部の降圧コンバータとの接続は4Pin IDE給電コネクタを利用、+5Vのコンタクトが未接続になっているので、+3.3V接続用に利用します。

画像
+3.3V給電回路の削除
画像
4Pin IDEコネクタを利用した外部降圧コンバータ接続改修(赤ジャンパが3.3V接続用)

降圧コンバータはAmazonで販売されているものを使用しました。

出力にはスイッチングノイズがそこそこ乗っていますが、フレッツ・テレビを利用していますので強電界地域並みの出力が得られている関係で特に問題はありませんでした。受信環境によっては、何らかの対策が必要になるかもしれません。

BOX内レイアウト

ケースは、株式会社タカチ電機工業さんのコーナーガード付フリーサイズアルミボックスを利用しています。このケースはmm単位でサイズをオーダでき、価格も手頃です。サイズは150mm(H) x 70mm(W) x 180mm(D)(ALGF150-70-180K15B)です。
このBOX内に以下の様にFAN、ライザカード、チューナーカード、降圧コンバータ、スイッチコネクタ等を配置しています。
また、接続に関しては、すべてフロントからのアクセスとしています。

画像
BOX内レイアウト(1)
画像
BOX内レイアウト(2)

製作のポイント

USBケーブルの加工

USBケーブルもAmazonで入手しました。

対向のコネクタは、通常のマザーボード接続用のコネクタですので、PX-MLT8PEに合わせて、PHコネクタに換装します。

画像
PHコネクタへの換装
画像
PHコネクタ接続表

電源系統

電源系統は、既設のコネクタを最大限利用し、以下の様に配線しています。

画像
電源系統配線図

ソフトウェア

以降はLinux(RHEL系)ベースでのIP出力復調器に仕立てる方法について、簡単に記します。

ドライバ

px4_drv - Unofficial Linux / Windows (WinUSB) driver for PLEX PX4/PX5/PX-MLT series ISDB-T/S receivers」をそのまま利用します。DKMSを利用し、インストールします。

ライブ送出ツール

録画サーバの定番「recpt1」を変更し、ライブ送出ツールを作成しました。recpt1には、UDP送信機能がありますが、ライブ送出ツールとしては以下の問題があります。

  • VFS(read()/write())を使用したUDP送信は性能が悪く、パケットロスが激しい

  • RTPをサポートしていない

  • 大量のバッファにより遅延が大きい

  • マルチキャストの送信インタフェースが指定できない

そこで、IPv6 対応(getaddrinfo())、性能改善(sendto())、送信インタフェース指定(setsockopt(IP_MULTICAST_IF))のためのパッチを作成しました。
以下の様に 従来のrecpt1に[--rtp dst_addr:dst_port@if,src_addr:src_port]、[--chank size] 、[--tick clock]の指定が追加されています。
なお、B-CASの復号化との同時指定は不可です。
なお、RTPパケットのペイロードサイズは7TS固定にします。

recpt1 [--b25 [--round N] [--strip] [--EMM]] [--device devicefile] [--lnb voltage] 
          [--sid SID1,SID2] 
          [--udp [--addr hostname --port portnumber]] 
          [--http portnumber] 
     [--rtp dst_addr:dst_port@if,src_addr:src_port]
          [--chank size] [--tick clock]
          channel rectime destfile
Remarks:
if rectime  is '-', records indefinitely.
if destfile is '-', stdout is used for output.

Options:
--b25:	Decrypt using BCAS card
  --round N:	Specify round number
  --strip:	Strip null stream
  --EMM:	Instruct EMM operation
--udp:	Turn on udp broadcasting
  --addr hostname:	Hostname or address to connect
  --port portnumber:	Port number to connect
--http portnumber:	Turn on http broadcasting (run as a daemon)
--rtp dst_addr:dst_port@if,src_addr:src_port
	Turn on rtp sending
--device devicefile:	Specify devicefile to use
--lnb voltage:	Specify LNB voltage (0, 11, 15)
--sid SID1,SID2,...:	Specify SID number in CSV format (101,102,...)
--help:	Show this help
--version:	Show version
--list:	Show channel list
--chank size:	Set rtp chank size (Defaut: 188 * 14 )
--tick clock:	Set RTP Timestamp tick (Default: 90kHz)

パッチファイル

recpt1へのパッチファイルは以下からダウンロード可能です。

動作確認

8CHを起動し、24時間ストリームのドロップをRTPのS/NおよびMPEG2-TSのCC(continuity counter)をチェック、ドロップがないことを認しました。

# ps -aef | grep recpt1 | grep -v grep
root      8959     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.1:29000@enp2s0,192.168.10.212:39000 --device /dev/pxmlt8video0 27 - --chank 1316 --tick 90000
root      8960     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.2:29010@enp2s0,192.168.10.212:39010 --device /dev/pxmlt8video1 26 - --chank 1316 --tick 90000
root      8961     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.3:29020@enp2s0,192.168.10.212:39020 --device /dev/pxmlt8video2 18 - --chank 1316 --tick 90000
root      8962     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.4:29030@enp2s0,192.168.10.212:39030 --device /dev/pxmlt8video3 25 - --chank 1316 --tick 90000
root      8963     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.5:29040@enp2s0,192.168.10.212:39040 --device /dev/pxmlt8video4 24 - --chank 1316 --tick 90000
root      8964     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.6:29050@enp2s0,192.168.10.212:39050 --device /dev/pxmlt8video5 22 - --chank 1316 --tick 90000
root      8965     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.7:29060@enp2s0,192.168.10.212:39060 --device /dev/pxmlt8video6 23 - --chank 1316 --tick 90000
root      8966     1  9 22:36 pts/0    00:00:02 /opt/recpt1/recpt1/recpt1 --rtp 239.192.0.8:29070@enp2s0,192.168.10.212:39070 --device /dev/pxmlt8video7 21 - --chank 1316 --tick 90000
#
# rtp_checker enp2s0 239.192.0.8 29070
Statistics: Received =  524161440, Lost =          0, Loss Rate =   0.00 %
                                  1.86Gb                            3.73Gb                            5.59Gb                            7.45Gb                      9.31Gb
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
192.168.10.212                                                          => 239.192.0.1                                                             29.6Mb  29.5Mb  28.6Mb
                                                                        <=                                                                            0b      0b      0b
192.168.10.212                                                          => 239.192.0.5                                                             29.6Mb  29.4Mb  28.6Mb
                                                                        <=                                                                            0b      0b      0b
192.168.10.212                                                          => 239.192.0.2                                                             29.6Mb  29.4Mb  28.6Mb
                                                                        <=                                                                            0b      0b      0b
192.168.10.212                                                          => 239.192.0.4                                                             29.5Mb  29.4Mb  28.6Mb
                                                                        <=                                                                            0b      0b      0b
192.168.10.212                                                          => 239.192.0.3                                                             29.4Mb  29.4Mb  28.5Mb
                                                                        <=                                                                            0b      0b      0b
192.168.10.212                                                          => 239.192.0.8                                                             29.4Mb  29.4Mb  28.5Mb
                                                                        <=                                                                            0b      0b      0b
192.168.10.212                                                          => 239.192.0.6                                                             29.4Mb  29.4Mb  28.5Mb
                                                                        <=                                                                            0b      0b      0b
192.168.10.212                                                          => 239.192.0.7                                                             29.4Mb  29.4Mb  28.5Mb
                                                                        <=                                                                            0b      0b      0b
fd00:0:0:10::212                                                        => ff38::1                                                                    0b   68.2Kb  48.7Kb
                                                                        <=                                                                            0b      0b      0b

qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
TX:             cum:    400MB   peak:    238Mb                                                                                            rates:    236Mb   235Mb   229Mb
RX:                       0B               0b                                                                                                         0b      0b      0b
TOTAL:                  400MB            238Mb                                                                                                      236Mb   235Mb   229Mb

おわりに

初めての投稿になりましたが、ご参考になれば幸いです。


いいなと思ったら応援しよう!

コメント

コメントするには、 ログイン または 会員登録 をお願いします。
買うたび 抽選 ※条件・上限あり \note クリエイター感謝祭ポイントバックキャンペーン/最大全額もどってくる! 12.1 月〜1.14 水 まで
地デジ/BS/CS放送8CH復調BOX|kaz
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1