テレビ観てますか?
自分はあまり観ない方ですが、
情報収集のためワールドビジネスサテライトとかは観てます。
ちゃんとしたテレビは以前、自室にあったんです。
でもあまり使ってないし、邪魔に感じてしまったので思い切って処分したんです。(リビングにもあるし)
でもあれば観たい。できれば机で作業中、横目で観たい。
じゃあラズパイに組み込めばいいじゃん。
今回はそんな記事です。
要件
- 主要なテレビ放送がラズパイで観れたらそれでいい
- サーバーとして配信しない
- 録画機能も要らない(録画したらそれで満足して結局観ない家系)
- コンパクトかつシンプルに
材料
- PLEX PX-S1UD(TV チューナー)
- ノーブランド SCR80(B-CAS カードリーダー)
- EWA A106(Bluetooth スピーカー)
- B-CAS カード(流用)
- アンテナケーブル(流用)
そこそこロマンのあるお値段でしたが、予算 ¥10,000 以内に収まりました。
セットアップ
- スピーカーをつなぐ
- B-CAS カードを認識させる
- チューナーを接続する
- 放送データの復号を行う arib25 ライブラリをインストール
- 録画ソフト recdvb のインストール
- チャンネル表示スクリプトの作成
- 画面復帰スクリプトの作成
スピーカーをつなぐ
EWA A106 は Bluetooth スピーカーですが、一応 USB 接続もできます。
もっと安いスピーカーもありましたが、コンパクトなサイズ感と音質の評判で選びました。
USB 接続の場合、認識させるのにコツが要ります。
電源を入れる前に USB ケーブルを抜いておき、電源を入れて青色 LED が点滅したら USB ケーブルをラズパイに接続します。LED が点灯に変わったら接続完了です。(音でかいなあ)
正しく認識されているか、確認してみます。
# GEMBIRD と表示されていれば OK
$ lsusb
Bus 001 Device 004: ID 1908:2220 GEMBIRD
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
認識されたら音量を調整します。
サウンドカード選択は「USB2.0 Device」を選択。
# CLI で設定する (音量を 7% 以上に設定しないとスピーカーから音が出ない)
$ amixer -c 1 set PCM 7%
# CUI で設定する (F6: デバイスの選択 ↑↓: 音量の上下)
$ alsamixer
設定できたら ESC キーを押して終了します。
参考:[EWA A106 ワイヤレス Bluetooth コンパクトスピーカーを USB 接続してみた。
- zakkieaのブログ](http://zakkiea.hatenablog.com/entry/2019/01/15/153218)
B-CAS カードを認識させる
SCR80 に B-CAS カードを挿します。
SMART CARD(CHIP UP) って書いてある細長い差込口に IC チップを上向きに差し込むだけです。
USB 接続したら、インストールして動作確認を行います。
# Realtek Semiconductor Corp. Mass Storage Device と表示されていれば OK
$ lsusb
Bus 001 Device 005: ID 0bda:0169 Realtek Semiconductor Corp. Mass Storage Device
Bus 001 Device 004: ID 1908:2220 GEMBIRD
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
# 必要なパッケージのインストール
$ sudo apt -y install pcscd libpcsclite-dev pcsc-tools
# 動作確認コマンド
$ pcsc_scan
# 次の表示が出れば認識できている(Ctrl+C で停止)
Japanese Chijou Digital B-CAS Card (pay TV)
チューナーを接続する
PLEX PX-S1UD はアンテナケーブルをつないで USB に挿すだけのシンプルな設計。
分かりやすくてありがたいです。
# VidzMedia Pte Ltd と表示されていれば OK
$ lsusb
Bus 001 Device 006: ID 3275:0080 VidzMedia Pte Ltd
Bus 001 Device 005: ID 0bda:0169 Realtek Semiconductor Corp. Mass Storage Device
Bus 001 Device 004: ID 1908:2220 GEMBIRD
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
# ファームウェアをインストール
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
$ unzip PX-S1UD_driver_Ver.1.0.1.zip
$ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware
$ sudo reboot
放送データの復号を行う arib25 ライブラリをインストール
Git からありがたく頂戴いたします。
参考サイトの通りにやってみたら、インストール方法が cmake に変わっていて苦戦しました。
$ sudo apt -y install cmake
$ git clone https://github.com/stz2012/libarib25.git
$ cd ./libarib25/cmake
$ cmake ..
$ make
$ sudo make install
$ sudo /sbin/ldconfig
# 動的リンカによる実行時の結合関係が表示される(とりあえず結果が返る)なら問題なし
$ sudo /sbin/ldconfig -p | grep libarib25
libarib25.so.0 (libc6,hard-float) => /usr/local/lib/libarib25.so.0
libarib25.so (libc6,hard-float) => /usr/local/lib/libarib25.so
参考 1:ラズパイで地デジのリアルタイム視聴をしてみた。
参考 2:recpt1再び
録画ソフト recdvb のインストール
録画はしないんですが、録画したデータをプレーヤーへライブ配信する仕組みらしいので必要とのこと。
$ cd /usr/local/src
$ curl -sL http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz | sudo tar zxv
$ cd recdvb-1.3.1
$ sudo chown -R $(whoami) .
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install
チャンネル表示スクリプトの作成
スマートに放送を観たいので、デスクトップにアイコンを置いてダブルクリックする方式にします。
以下のスクリプトは、色々なサイトから情報を集めて最適化したものです。
#!/bin/bash
# 以前作成した名前付きパイプを削除
rm /tmp/mpegpipe
# recdvb のプロセスが残存していたら全て終了
pkill -9 "recdvb"
# チャンネル番号
CH=$1
# 以降の処理中に Ctrl+C(視聴を終了)したら recovery.sh を実行(SIGINT=2 キーボードからの割り込み)
trap "/home/pi/Desktop/TV/recovery.sh" 2
# 録画データ配信用の名前付きパイプを作成
[ -p /tmp/mpegpipe ] || mkfifo /tmp/mpegpipe
# recdvb を起動(バックグラウンドでプレーヤーへライブ配信)
recdvb --b25 --strip ${CH} - /tmp/mpegpipe &
# プレーヤーで再生する
# -- refresh:フルスクリーン表示
# -o :サウンド出力先(local = イヤホンジャック, hdmi = HDMI 音声出力, alsa = USB スピーカー等, both = ?)
# --live :ライブ配信
omxplayer --refresh -o alsa --live /tmp/mpegpipe
基本的なことですが、スクリプトには実行権限を付けてあげましょう。
chmod 0755 play.sh
次に、ダブルクリックできるよう各チャンネルの Desktop Entry を作成します。
チャンネル番号は play.sh
の引数として渡してあげます。
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=12.テレビ東京
Icon=screensaver
Exec=lxterminal -e sh -c '/home/pi/Desktop/TV/play.sh 23'
StartupNotify=true
参考:東京 23 区周辺の地上波チャンネル番号一覧
アナログ放送 ch | デジタル放送 ch | チャンネル番号 | チャンネル名 |
---|---|---|---|
1 | 11 | 27 | NHK 東京 総合 |
3 | 21 | 26 | NHK 東京 教育 |
4 | 41 | 25 | 日本テレビ |
6 | 61 | 22 | TBS |
8 | 81 | 21 | フジテレビ |
10 | 51 | 24 | テレビ朝日 |
12 | 71 | 23 | テレビ東京 |
14 | 91 | 16 | TOKYO MX |
画面復帰スクリプトの作成
視聴終了後、フルスクリーン表示からデスクトップ画面にすんなり戻ることを期待していたんですが
omxplayer の仕様(?)上、画面が真っ暗で何も操作できなくなったので画面復帰スクリプトを書きました。
#!/bin/bash
# HDMI ディスプレイを復帰
tvservice -p
sleep 2
fbset -depth 8
fbset -depth 32
xrefresh -d :0.0
忘れず実行権限を付けてあげましょう。
chmod 0755 recovery.sh
動かしてみる
ダブルクリックするとターミナルが起動して、数秒後に再生されます。
終了は Ctrl+C ですが、間違って×閉じしてしまうと画面真っ暗なので「画面復帰」で戻してあげます。
課題
- Mac とかの画面共有でしか操作できない(赤外線リモコン欲しい)
- スピーカーを Bluetooth でも使いたい(現段階では出力設定が分からない)