TVServer on Raspberry Pi with BonCasProxy [2026/07/02 更新]
BonCasServerをMac上に構成する方法は前回の記事で載せましたが、今回は地上波放送の視聴用サーバーをRaspberry Pi上にサーバーを構築し、Macから既成のVLC media Playerを使用して視聴する方法を検討しました。この方法はWeb上でも多く掲載されており特に難しいことではありませんでしたが、この方法はCard Readerを別に用意する必要があり、せっかく構築したBonCasServerがあるので、これを使用できるようにとプログラムを作成しました。
1. きっかけ
現在はテレビ視聴の為にMac上でVMware Fusionを入れてWindows用プログラムであるTVtestを使用していました。しかしならが最近のOSでは、Windows上の画面描画が使い物にならない位遅くなり他の代用プログラムを探していました。Web検索で見つかったのはRaspberry Piでサーバー構築すると言う物でしたがなんとかしてMac上で動作させられないかという検討を進めないました。Raspberry Piの小ささや低価格から外部でもいいかと言うことになり、これを使うことに決めました。ただ、現用のBonCasServerを使用出来るようにプログラムを改造する事にしました。
2.プログラムを動作させる
2.1 Mirakurunサーバーまで導入
インストール方法について、前回のアップでは
Raspbery PIのOSのインストールに関してはversionを問いませんが、最新の64bit versionをインストールすることを推奨します。
2.2 Macでの視聴
視聴用のMacでApp Storeからではなく、
インストールしたら実行させプレイリストを表示させ、

しかしながら、ダウンロードしたファイルは私の環境設定に合わせてあるので、エラーが出て動作させられないはずです。ここでこのファイルをEditして、環境に合わせる必要があります。
このファイル1チャンネル分の例を見ると、
となっています。
192.168.10.192はRaspberry PiのIp addressで私の場合です。これを修正します。
GR/以下の/27/services/1024/は物理チャンネルとServiceID(同一チャンネルでも複数の放送があるのでメインチャンネルを選定)を設定します。
このServiceID情報を得るにはRaspberry Pi上で
でrivarunをインストールした後
とすればserviceID.txtに利用可能なチャンネルやserviceIDが書き込まれ、参照することができます。
自分の環境に合わせてこのVLC Channel.m3uを書き直せば下記の用に表示されるはずです。

この状態でリストをダブルクリックすれば放送を見ることができます。さらにダブルクリックでフル表示画面となります。チャンネル切り替えは(<<)または(>>)で行えます。操作性はtvTestほどではないにせよ汎用のソフトでこれだけの操作が出来るので、特に視聴ソフトを開発することなしに十分使用出来ます。またWindowsやスマホでもVLCメディアプレーヤをインストールできれば、どこでもTVを見ることができます。
3. BonCasServerを利用する為にBonCasProxyを導入 [あくまで参考]
ここまで、
このプログラムの中でBonCasProxy実現の為にb_cas_card.cを改造していますが、その経緯と方法について、下記に述べていますので、この項目(第3項)は参考として記載しています。また異なるversionのb_cas_card.cを改造する場合に使えると思います。
---------------------------------------------------------------------------------------------------------
改造すべくWebを検索していたら、
と言う記事を見つけました。
この記事ではlibarib25のcardreaderプログラムをフックして、BonCasServerのクライアントプログラムを動作させるものです。
実際このプログラムは素晴らしく、うまく動作していることが確認できました。
しかしながら、このプログラムを動作させるにはLD_PRELOADと言う環境変数をセットしなければなりません。ユーザーアカウントからrecdvbを動作させるには問題ないのですが、システムサービスであるMirakurunサーバーからの動作をさせることはできませんでした。これはLD_PRELOADと言う変数が危険な変数でシステムレベルでの設定を制限されているためのようです。
従って、これを使うことは断念し、このプログラムをCに描き直し、libarib25内のb_cas_card.cに付け加えることにしました。
3.1 b_cas_card.cの改造
b_cas_card.cは ~/libarib25/src/ の下にあります。このFileをEditしていくことになります。改造したものをアップしようとも思いましたが、ライセンスの関係もあると思い、ここでは改造方法のみを述べることにしました。
まず下記の2つのファイルをダウンロードします。
(ダウンロードの方法は右クリックで”リンク先のファイルをダウンロード”を選択してダウンロードします。)
b_cas_card.cとSProxyXxxx.cをテキストエディターで開き、SProxyXxxx.cの内容をb_cas_card.cの最後部に追加します。つなぎ目部分は下記の様になります。
このつなぎ目部分(SProxyXxxx.cの最初の部分)にある、
LPCSTR B25_SERVER_IP = "192.168.10.210";
はBonCasServerのIpアドレスを示すものなので、自分の環境に合わせて、変更します。
次にProtType.cの内容をb_cas_card.cの”function prottypes (interface method)”に追加します。内容は下記の様になります。
そして最後にこのb_cas_card.c内でlibarib25のライブラリーを呼んでいる、"SCardXxxx...."の部分を"SProxyXxxx....."に変更して追加したプログラム呼ぶ様に変更します。10カ所程度あると思いますが、注意深く抜けのないように"Card"を"Proxy"に置換してください。
3.2 /usr/local/lib/にあるlibarib25.soの再構築
b_cas_card.cの修正が完了したら元の位置に戻して、~/libarib25の位置からmake, make installすれば、libarib25.soは再構築できます。
これで、BCASカードとCard Readerは不要となります。
---------------------------------------------------------------------------------------------------------

4. 結論
我ながら、結構スマートにシステムを構築できたと思っている。気を良くして2台のRaspberryPiを購入して、TVサーバーを2組作成した。
実際に配置した写真を右に載せている。右側のMac Miniは以前構築したBonCasServerがのっており、その右にカードリーダーが見える。Raspberry PiにはそれぞれLANケーブルとUSB端子にPX-S1UDが接続されている。電源はUSB給電が可能なので、Mac MiniのUSB端子からとっている。
BonCasServerは別にある録画用サーバー(Windows10 DOS-V)からもアクセスされているが、負荷としてはそれほど重くない様で、もう十台程度のクライアントから同時アクセスされても問題はないと思う。
5. 追記(VNCによる接続について)2026/07/02
この利用方法では、RaspberryPiはサーバーであるのでDisplayは通常接続しておく必要はなくて単に立ち上げておけば事が足りる。しかしながら設定替えなど必要な場合はディスプレーやキーボード等の接続が必要であり、私の場合はVNCを利用して、メインデスクトップから接続している。
ここで問題になるのが、ディスプレーを接続しないで、リブートするとHDMI制御が立ち上がらずVNC接続もできなくなってしまう。(だだTVサーバーの機能には問題ないが)
過去には色々考えたが、一番確実な方法はディスプレーダミープラグを接続しておくのが良いという結論になった。
しかし最近のOSではダミープラグを接続しておくとVNCクライアントへの表示が止まってしまう。結局何も接続しておかないのが良い様で、リモートからの制御は問題なくなった。(RaspberyPI4 64bitOS)