2026年11月3日火曜日

Macにtorneを接続して地デジを視聴してみた。

 先日CECH-ZD1 Jをジャンクで購入してパソコンに繋いで地デジを視聴することに成功したんだけれども、coaxはいろんなプラットフォームに対応していそうだったのでMacでも試してみた。

MacでTS抜きというと一応昔からあるみたいなんだけどちょっと設定が面倒で敷居が高いイメージだったんだけども、coaxはバイナリも提供されていて簡単にセットアップが出来そう。

今回は少し前にmacOS Sonomaに強制的にアップデートしたIntel Macを使用してみた。

まずはcoaxのダウンロードページからIntel Mac用のバイナリをダウンロードしてくる。Intel Macなのでcoax_Darwin_amd64.tar.gzを使用した。

これを解凍してターミナルを開いて解凍したフォルダで

./coax

を実行してみると

Usage:
  coax list [--tuners] [--json]
  coax scan [options] [dvbv5_channels.conf ...]
  coax scan --discover [options]
  coax export --format mirakurun --input scan.json [options]
  coax tune [options]
  coax card [options] [APDU ...]
  coax pcsc [options]
  coax version
coax: a subcommand is required

と帰ってきたので、トルネをMacに接続して

./coax list

とコマンドを打ってみる。

TUNER              DELIVERY  STATE  MODEL
cech-zd1j:p20-2:0  ISDB-T    free   Sony CECH-ZD1 J (MB86H47A + DiB8096)

Tuners are named from what each board reports about itself.
Pass --tuners to open each board and confirm them.

こんな感じで認識していそう。

./coax scan --discover

でチャンネルスキャンをしてみる。

cech-zd1j:p20-2:0: working out ISDBT
terrestrial ... 113 carriers to try
[1/113] [####################] 100% done     ISDBT/13 found (ts, 4491696 bytes) 17.27 Mbps CNR 24.8dB -58dBm (6.1s)
[2/113] [####################] 100% done ISDBT/14 no lock (5.6s) [3/113] [####################] 100% done ISDBT/15 no lock (5.5s) [4/113] [####################] 100% done ISDBT/16 no lock (5.5s) [5/113] [####################] 100% done ISDBT/17 found (ts, 2309956 bytes) 17.27 Mbps CNR 24.0dB -57dBm (3.7s) coax: context canceled

こんな感じでスキャンできているので動いていそう。(途中の局名は省略)とりあえず数チャンネル見つかったのでCtrl+Cで止めた。
とりあえずmacでトルネのチューナーを動かすことは出来たんだけど、ここからが大変だった。TVTestみたいにB25デコードできるようなプレーヤーがないのでlibarib25をインストールしてデコードさせてみた。

まずはbrewをインストール。Intel Mac用のbrewはサポートが終了しているのでgithubの情報を参考に古いバージョンをインストール。
上のリンクのコマンドを実行してインストールした後に、ディレクトリが足りなかったりするので追加で作成した。

sudo mkdir -p /usr/local/etc
sudo chown "$(whoami)":admin /usr/local/etc

sudo mkdir -p /usr/local/var/homebrew/locks
sudo chown -R "$(whoami)":admin /usr/local/var/homebrew

sudo chown -R "$(whoami)":admin \
  /usr/local/bin \
  /usr/local/include \
  /usr/local/lib/pkgconfig \
  /usr/local/share

chmod -R u+w \
  /usr/local/bin \
  /usr/local/include \
  /usr/local/lib/pkgconfig \
  /usr/local/share

sudo mkdir -p \
  /usr/local/Cellar \
  /usr/local/opt \
  /usr/local/Caskroom \
  /usr/local/Frameworks

sudo chown -R "$(whoami)":admin \
  /usr/local/Cellar \
  /usr/local/opt \
  /usr/local/Caskroom \
  /usr/local/Frameworks

こんな感じで手動でディレクトリを作成して所有権を変更。

brew install pkgconf pcsc-lite cmake git

必要なパッケージをインストール。古いのでビルドされるため時間がかかる。
MacだとICカード読み込みの部分がPCSC Frameworkが使われてしまうので、coaxのICカードリーダー機能を使うにはソケット通信に対応したpcsc-liteを使う必要がある。
外付けカードリーダを使う場合はcmakeだけpipとかからインストールしてやればlibarib25はビルドできるんだけど今回はtorneだけで見れるようにするためにpcsc-liteを使ってみようかと…

準備ができたら次はlibarib25のビルド。
git clone https://github.com/stz2012/libarib25.git
cd libarib25
sed -i '' '1i\
#ifndef LPTSTR\
typedef char *LPTSTR;\
typedef const char *LPCTSTR;\
#endif\
' src/b_cas_card.c
mkdir build && cd build
cmake .. \ -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ -DWITH_PCSC_PACKAGE=libpcsclite \ -DCMAKE_PREFIX_PATH=/usr/local/opt/pcsc-lite \ -DCMAKE_LIBRARY_PATH=/usr/local/opt/pcsc-lite/lib \ -DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/opt/pcsc-lite/lib"

sed -i '' 's/-lpcsclite/-L\/usr\/local\/opt\/pcsc-lite\/lib -lpcsclite/' \ CMakeFiles/arib25-shared.dir/link.txt
make
とりあえずビルドまでしたらライブラリの確認を念のため。
otool -L ./b25

をして

./b25:

	/usr/local/opt/pcsc-lite/lib/libpcsclite.1.dylib (compatibility version 1.0.0, current version 1.0.0)

	@rpath/libarib25.0.dylib (compatibility version 0.0.0, current version 0.2.5)

	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)

ってなってればpcsc-liteがうまくリンクされているのでOKなのでインストールする。

sudo make install
sudo install_name_tool -add_rpath /usr/local/lib /usr/local/bin/b25
sudo ln -s /usr/local/opt/pcsc-lite/lib/libpcsclite_real.1.dylib \
  /usr/local/lib/libpcsclite_real.so.1

あとはcoaxのディレクトリに戻って

./coax pcsc

これを実行するとソケットのアドレスが出るのでPCSCLITE_CSOCK_NAME=のところからコピーしておく。コピーしたらCtrl+Cで一旦終了

export PCSCLITE_CSOCK_NAME=/var/folders/xx/xxxxxxxxxxxxx/T/coaxd/pcscd.comm
./coax tune --pcsc --ch 17 | b25 - - > output.ts

のように先ほどコピーしたPCSCLITE_CSOCK_NAMEから始まる部分をコマンドより前に実行してやる。そうするとBCASカードでB25デコードしながらTSファイルに録画されるはず。(TS抜き)
チャンネルはスキャンのときに出てきたチャンネルを適当に入れた。

このコマンドを実行したままVLCプレーヤーでoutput.tsを開くとテレビが視聴できる。チャンネル切り替えが面倒だけど…
あとこの状態だとoutput.tsに録画もされてるのでどんどんファイルサイズが大きくなってくのでちゃんとVLCにパイプでつなげて見られるようにしたい。
その代わり一時停止とか巻き戻しはできるけども…

ちょっと面倒だけどこれでMacでも地デジを見れるようになった。多分brewが普通に使える新しいMacだともっと簡単にできるかも。ZeroWaveにTVTestみたいなCasProcessorプラグインとか出たらもっと簡単にMacでテレビが見れるんだけどなぁ。