上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/PX-W3U4/Raspberry PiでPX-W3U4を使ってみる
のバックアップソース(No.1)
資料室
PC
/
PX-W3U4
/
Raspberry PiでPX-W3U4を使ってみる
のバックアップソース(No.1)
[
差分
|
バックアップ
|
リロード
]
[ ]
差分
を表示
現在との差分
を表示
PC/PX-W3U4/Raspberry PiでPX-W3U4を使ってみる
へ行く。
Next »
* Raspberry PiでPX-W3U4を使ってみる [#q15a18cf] 出先でテレビを見たい時は,ノートPCとPX-W3U4を一緒に持って行ってるんだけど,自宅にいる時はPX-W3U4は使っていなかった。 これではもったいないので,自宅でもRaspberry PiでPX-W3U4を使って,他のPCやスマートフォンからテレビ放送を視聴したり録画予約を出来るようにしてみることにした。 使用するRaspberry Piは, Raspberry Pi4B 4GB OS: Raspbian buster 32bit を使用している。 家のどのPCからも録画予約・録画や,テレビの視聴が出来るようになって便利に使えるようになった :) * 録画保存場所をファイルサーバーにする [#p96b6792] 録画データは自宅のLAN上にあるファイルサーバーに保存するために,sambaを使ってマウントして保存先とする。~ 必要なパッケージをインストールする。~ # apt install cifs-utils マウントポイントを作成する。~ # mkdir /mnt/u3 # chmod 777 /mnt/u3 試しにマウントしてみる。~ # mount -t cifs //<サーバーのIPアドレス>/public /mnt/u3 -o username=user,password=password,file_mode=0777,dir_mode=0777,iocharset=utf8,defaults うまくマウント出来た場合は, # umount /mnt/u3 マウントを解除する。 ''/etc/fstab''に以下を追加する。~ //<サーバーのIPアドレス>/public /mnt/u3 cifs username=user,password=password,file_mode=0777,dir_mode=0777,iocharset=utf8,noauto,x-systemd.automount 0 0 Raspberry Piを再起動して/mnt/u3にマウント出来ているか確認する。 * PX-W3U4のデバイスドライバーをインストールする [#m337fa52] PX-W3U4を使用できるように,デバイスドライバーを用意する。 ** 必要なパッケージを入れる [#uc674833] 必要なパッケージをパッケージマネージャーでインストールしておく。 # apt install cmake automake autoconf exfat-utils git wget python # apt install build-essential yasm libtool libssl-dev ffmpeg sqlite3 # apt install raspberrypi-kernel-headers ** PX-W3U4のデバイスドライバーの取得とインストール [#o7bbe34b] [[PLEX社>http://plex-net.co.jp/]]からLinux用のデバイスドライバーは用意されているが,ソースコードが提供されない・Kernelが限定されているなどの問題がある。~ そこで,[[chardev版非公式なLinuxドライバー>https://github.com/nns779/px4_drv]]をありがたく使用する。~ まずデバイスドライバーのソースコードを取得する。~ $ cd ~/work $ git clone https://github.com/nns779/px4_drv ソースコードは,work/px4_drvに取得される。 *** ファームウェアの抽出とそのインストール [#r68cec67] この非公式なデバイスドライバーは,ファームウェアを公式ドライバより抽出して使用する。 デバイスドライバーをビルドする前に,ファームウェアを公式ドライバより抽出しインストールを行う必要がある。~ 抽出ツールをビルドする。 $ cd ~/work/px4_drv/fwtool/ $ make 公式のWindows用のデバイスドライバー(pxw3u4v1.4.zip)をダウンロードして,そこからファームウェアを抽出する。~ $ wget http://plex-net.co.jp/download/pxw3u4v1.4.zip -O pxw3u4v1.4.zip $ unzip -oj pxwu4v1.4.zip pxw3u4v1/x64/PXW3U4.sys $ ./fwtool PXW3U4.sys it930x-firmware.bin fwtool for px4 drivers Driver file (in) : PXW3U4.sys Firmware file (out) : it930x-firmware.bin Driver description: PX-W3U4 BDA Ver.1.4 64bit Firmware length: 7013 bytes Firmware CRC32: df0bf49a OK. // it930x-firmware.binは,CRC32が0b41a994のものがおすすめらしい。 抽出したファームウェアをシステム上に配置する。 $ sudo mkdir -p /lib/firmware $ sudo cp it930x-firmware.bin /lib/firmware/ $ cd .. *** デバイスドライバーのビルドとインストール [#t35b26de] //DKMSを使用しない場合。~ $ cd ~/work/px4_drv/driver $ make $ sudo make install $ cd .. これで,デバイスドライバーが/lib/module/<kernel>/miscにインストールされ,udev用のファイルが/etc/udev/rules.d/99-px4video.rulesにインストールされる。 //DKMSを使用する場合。~ // $ sudo cp -a ./ /usr/src/px4_drv-0.2.1 // $ sudo dkms add px4_drv/0.2.1 // $ sudo dkms install px4_drv/0.2.1 // PX-W3U4を接続し,正常にデバイスドライバーがロードされているか確認する。~ $ lsmod | grep px px4_drv 122880 0 と表示されていればデバイスドライバーがロードされている。~ もしロードされていない場合は, $ sudo modprobe px4_drv として,手動でロードしてみる。 また, $ ls /dev/px* /dev/px4video0 /dev/px4video1 /dev/px4video2 /dev/px4video3 のようにデバイスファイルが作成されている。~ チューナーは,px4video0からISDB-S, ISDB-S, ISDB-T, ISDB-Tというように、SとTが2つずつ交互に割り当てられる。~ *** デバイスドライバーのアンインストール [#n771cdd2] デバイスドライバーのアンインストールは以下のようにする。 //DKMSを使用せずにインストールした場合。~ $ cd ~/work/px4_drv/driver $ sudo make uninstall $ cd .. //DKMSを使用してインストールした場合。~ // $ sudo dkms remove px4_drv/0.2.1 --all // $ sudo rm -rf /usr/src/px4_drv-0.2.1 // ファームウェアのアンインストール。~ $ sudo rm /lib/firmware/it930x-firmware.bin *** LNB電源の出力 [#f178807a] PX-W3U4では,出力無しと15Vの出力のみに対応している。~ デフォルトは,LNB電源の出力を行わない。~ もしLNB電源の出力を行う場合は,recpt1(録画ツール)を実行する時にパラメータとして''--lnb 15''を追加する。 ** ICカードリーダー(接触式)を用意する [#z5539c29] この非公式デバイスドライバーには,PX-W3U4の内蔵カードリーダーで読み書きするデバイスドライバーは用意されていない。~ このためB-CASカードを読むためには,接触式ICカードリーダーを別途用意する必要がある。~ 一般的な接触式のICカードリーダーであれば問題なく使用できると思われる。~ 今回は,安価な接触式ICカードリーダーの[[SCR3310 v2.0>https://www.amazon.co.jp/IC%E3%82%AB%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC%EF%BC%8F%E3%83%A9%E3%82%A4%E3%82%BF%E3%83%BC-B-CAS%E3%83%BB%E4%BD%8F%E5%9F%BA%E3%82%AB%E3%83%BC%E3%83%89%E5%AF%BE%E5%BF%9C-SCR3310-v2-0-%E3%80%90%E7%B0%A1%E6%98%93%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E5%93%81%E3%80%91/dp/B0085H4YZC/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=SCR3310+v2.0&qid=1627087191&sr=8-2]]を使用する。~ B-CASカード以外にも,マイナンバーカードなんかにも使えるので無駄にはならない。 *** SCR3310 v2.0を使用する場合 [#ob1ae31a] ICカードリーダー用のライブラリ等をインスト-ルする。 # apt install pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools B-CASカードをカードリーダーに挿入(コネクタ部分がある面を上にする)して,USBで接続する。~ B-CASカードが認識されているか確認する。~ $pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) このように表示されればB-CASカードを認識できている。Ctrl + C でコマンドを終了させる。~ //*** SoftCasを使う場合 //[[SoftCasを使う場合>./SoftCasを使う場合]]を参照する。 ** リモコン [#be23b882] この非公式デバイスドライバーには,PX-W3U4のリモコン用のデバイスドライバーは用意されていない。~ なので,PX-W3U4のリモコンは使用できない。 * 録画用ツールをインストールする [#g0a5e7a7] 録画するためのツールとライブラリをインストールする。 ** libarib25のインストール [#m503a9b3] 日本のデジタルテレビ放送は,暗号化されて配信されている。テレビ放送を受信してB-CASカードの情報を使って復号する必要があるのだが,このためにライブラリ化したのがlibarib25ライブラリー。 ソースコードからビルドしてインストールする。~ $ cd ~/work $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/cmake $ cmake .. $ make $ sudo make install //SoftCasを使うと,libarib25インストールすると無線LANが使用できなくなる。 ** 録画ツールrecpt1(stz版)のインストール [#n3a13118] recpt1(stz版)は,テレビ放送を録画するツール。PC-W3U4でも使用できるみたいだ。~ ソースコードを取得して,テレビ放送を復号化出来るようにするため''--enable-b25''オプションを付けてビルドした後インストールする。~ $ cd ~/work $ git clone https://github.com/stz2012/recpt1.git $ cd recpt1/recpt1 $ ./autogen.sh $ ./configure --enable-b25 $ make $ sudo make install 以下のようにして動作テストをしてみる。 $ cd $ recpt1 --b25 --strip 24 10 test1.ts テレビ放送が保存出来ていれば動作は大丈夫。もしNo signalの場合,チャンネルの24を変えて実行してみる。~ チャンネル番号は地域ごとに違っているので,[[こちらから>http://www.maspro.co.jp/contact/channel.pdf]]確認出来る。 * MirakurunとEPGStationのインストール [#md170a53] [[Mirakurun>https://github.com/Chinachu/Mirakurun]](チューナー制御・テレビ放送受信・動画配信)と[[EPGStation>https://github.com/l3tnun/EPGStation]](視聴・録画・動画配信・番組表)をインストールする。 ** Mirakurunのインストール [#fce31539] [[Mirakurun>https://github.com/Chinachu/Mirakurun]]は,地デジ・BS/CSチューナーを使用して,テレビ放送をネットワークに配信するためのチューナーサーバー。~ これにより,ネットワークに接続した複数のクライアントで視聴・録画することが出来るようになる。 MirakurunはNode.jsが必要。インストールされているNode.jsを確認する。~ $ node -v v10.24.0 もし未インストールの場合,インストールする。 // $ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - // $ sudo apt install nodejs $ sudo apt install nodejs npm Mirakurunをnpmを使ってインストールする。~ $ sudo npm install pm2 -g $ sudo npm install mirakurun -g --unsafe-perm --production $ sudo npm install arib-b25-stream-test -g --unsafe $ sudo npm install rivarun -g rivarunは,Mirakurunに接続して録画できるツール。~ インストールが完了すると既にMirakurunは動作している。~ 以下のコマンドで,Mirakurunのstatusがonlineなら正常起動している。~ $ sudo pm2 status 次に,Mirakurunの設定を行う。 *** サーバーの設定 [#v0949e40] ''/usr/local/etc/mirakurun/server.yml''を編集して,サーバーの設定を行う。~ logLevel: -2 disableIPv6: true にした。 *** チューナーの設定 [#fd17372d] ''/usr/local/etc/mirakurun/tuners.yml''を編集して,チューナーの設定を行う。~ 以下のように設定した。 #code(text){{ - name: PX4-S1 types: - BS - CS command: recpt1 --strip --device /dev/px4video0 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PX4-S2 types: - BS - CS command: recpt1 --strip --device /dev/px4video1 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PX4-T1 types: - GR command: recpt1 --strip --device /dev/px4video2 <channel> - - decoder: arib-b25-stream-test isDisabled: false - name: PX4-T2 types: - GR command: recpt1 --strip --device /dev/px4video3 <channel> - - decoder: arib-b25-stream-test isDisabled: false }} *** チャンネル設定 [#h0ecb45e] ''/usr/local/etc/mirakurun/channels.yml''を設定する。~ 下記のコマンドで地上波のチャンネルスキャンを実行してファイルに設定してくれる。かなり時間がかかるので注意。~ $ sudo curl -X PUT "http://<RaspberryPiのIP>:40772/api/config/channels/scan" うまく行けば,''/usr/local/etc/mirakurun/channels.yml''に地上波とBSのチャンネルが設定されている。(BSは3.4.0から対応されている。)~ #code(text){{ - name: NHKEテレ type: GR channel: '13' isDisabled: false - name: 読売テレビ type: GR channel: '14' isDisabled: false - name: ABCテレビ type: GR channel: '15' isDisabled: false - name: TOKYO MX type: GR channel: '16' - name: 関西テレビ type: GR channel: '17' isDisabled: false - name: テレビ大阪 type: GR channel: '18' isDisabled: false - name: スカパー!ナビ type: GR channel: '20' isDisabled: false - name: フジテレビ type: GR channel: '21' - name: TBS type: GR channel: '22' - name: テレビ東京 type: GR channel: '23' - name: テレビ朝日 type: GR channel: '24' - name: 日テレ type: GR channel: '25' - name: NHKEテレ・東京 type: GR channel: '26' - name: NHK総合・東京 type: GR channel: '27' - name: BS朝日1 type: BS channel: BS01_0 serviceId: 151 - name: BS朝日2 type: BS channel: BS01_0 serviceId: 152 - name: BS-TBS type: BS channel: BS01_1 serviceId: 161 - name: BSテレ東 type: BS channel: BS01_2 serviceId: 171 - name: WOWOWプライム type: BS channel: BS03_0 serviceId: 191 isDisabled: true - name: NHKBSプレミアム type: BS channel: BS03_1 serviceId: 104 - name: NHKBSプレミアム type: BS channel: BS03_1 serviceId: 103 - name: WOWOWライブ type: BS channel: BS05_0 serviceId: 192 isDisabled: true - name: WOWOWシネマ type: BS channel: BS05_1 serviceId: 193 isDisabled: true - name: BS11イレブン type: BS channel: BS09_0 serviceId: 211 - name: BSスカパー! type: BS channel: BS11_1 serviceId: 241 - name: BS日テレ type: BS channel: BS13_0 serviceId: 141 - name: BS日テレ type: BS channel: BS13_0 serviceId: 142 - name: BSフジ・181 type: BS channel: BS13_1 serviceId: 181 - name: NHK BS1 (Sub) type: BS channel: BS15_0 serviceId: 102 - name: NHK BS1 type: BS channel: BS15_0 serviceId: 101 - name: テレ朝チャンネル1 type: CS channel: CS2 serviceId: 298 isDisabled: true - name: テレ朝チャンネル2 type: CS channel: CS2 serviceId: 299 isDisabled: true - name: AT-X type: CS channel: CS16 serviceId: 333 isDisabled: true - name: 日テレプラス type: CS channel: CS24 serviceId: 300 isDisabled: true - name: AT-X HD type: SKY channel: ATXHD serviceId: 33435 satellite: JCSAT3A isDisabled: true - name: AXN HD type: SKY channel: AXNHD serviceId: 33418 satellite: JCSAT4A isDisabled: true - name: BS SPTV type: SKY channel: CH585 serviceId: 33353 satellite: JCSAT3A isDisabled: true }} ''/usr/local/etc/mirakurun/channels.yml''でのチャンネル設定が出来たら,Mirakurunを再起動する。~ $ sudo mirakurun restart //チャンネル設定を表示してみる。~ // $ sudo rivarun --list | sed 's/},/},\n/g' //チャンネル設定は,住んでいる地域に応じて設定されているはず。~ // 次にVLCを使ってMirakurunで配信される動画ストリームを再生してみる。~ http://<RaspberryPiのIP>:40772/api/channels/GR/<チャンネル番号>/stream とか http://<RaspberryPiのIP>:40772/api/channels/BS/<チャンネル名>/services/<サービスID>/stream で,地デジやBS放送が視聴できれば正常に動作している。~ チャンネル番号やサービスIDは,上記の''/usr/local/etc/mirakurun/channels.yml''に設定されている値を使う。 WEBブラウザで,http://<RaspberryPiのIP>:40772 にアクセスする。~ Mirakurunの動作や設定管理が行えるので,必要であれば追加の設定をする。~ *** ログの管理 [#z40b70ce] $ sudo pm2 install pm2-logrotate ログを抑えるための設定をする。''/etc/logrotate.d/mirakurun''~ 下記の内容の''mirakurun''ファイルを作成する。 #code(text){{ /usr/local/var/log/mirakurun.stdout.log /usr/local/var/log/mirakurun.stderr.log { daily compress rotate 7 missingok notifempty } }} //''/usr/local/etc/mirakurun/server.yml''ファイルを編集する。以下の一行を追加。~ // highWaterMark: 268435456 //キャッシュを増やす設定をしておく。~ //''/usr/local/lib/node_modules/mirakurun/processes.json''ファイルを編集する。 // "node_args" : "-r source-map-support/register --max_old_space_size=512", // ↓ // "node_args" : "--max_old_space_size=1024" Mirakurunを再起動する。~ $ sudo mirakurun restart ** EPGStationのインストール [#y179d1cc] [[EPGStation>https://github.com/l3tnun/EPGStation]]は,テレビ放送の視聴・録画・動画配信・番組表に対応した録画サーバー。~ テレビ放送の番組を確認したり,録画予約をしたり,番組録画を行ったり,録画データの管理なんかが出来る。 [[EPGStation>https://github.com/l3tnun/EPGStation]]は,チューナーサーバーとして[[Mirakurun>https://github.com/Chinachu/Mirakurun]]を使用している。~ 次のようにしてインストールした。 $ cd ~/work $ git clone https://github.com/l3tnun/EPGStation.git $ cd EPGStation $ npm run all-install $ npm run build $ cp config/config.yml.template config/config.yml $ cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml $ cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml $ cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml このインストール作業は,かなり時間がかかる。~ DBにはデフォルトのSQLiteを使っている。SQLiteで正規表現を使えるようにする。 $ wget https://www.sqlite.org/2019/sqli te-amalgamation-3290000.zip $ wget https://www.sqlite.org/2019/sqlite-src-3290000.zip $ unzip sqlite-amalgamation-3290000.zip $ unzip sqlite-src-3290000.zip $ cp sqlite-src-3290000/ext/misc/regexp.c sqlite-amalgamation-3290000 $ cd sqlite-amalgamation-3290000 $ gcc -g -fPIC -shared regexp.c -o regexp.so $ sudo cp regexp.so ~/work/EPGStation/data/ *** EPGStationの設定 [#j2097540] ''config/config.yml''ファイルで設定を行う。~ 設定できるオプションとかいろいろある。[[作者のページ>https://github.com/l3tnun/EPGStation/blob/master/doc/conf-manual.md]]を参照して設定する。~ sqlite: extensions: - '/home/yuji/work/EPGStation/data/regexp.so' regexp: true ffmpeg: '/usr/bin/ffmpeg' <-- ffmpegのパスを設定 ffprobe: '/usr/bin/ffprobe' <-- ffprobeのパスを設定 recordedFormat: '%HALF_WIDTH_TITLE% - %YEAR%-%MONTH%-%DAY%' <-- 録画ファイルのファイル名を設定 recorded: - name: recorded path: '/mnt/u3/video/record' <-- 録画ファイルの保存先を設定 ''config/config.yml''ファイルのliveのMP4セクションに以下を追加する。~ - name: h264_omx_3M cmd: '%FFMPEG% -dual_mono_mode main -re -i pipe:0 -sn -codec:a aac -ar 48000 -ac 2 -b:a 192k -c:v h264_omx -b:v 3000k -movflags frag_keyframe+empty_moov+faststart+default_base_moof -y -f mp4 pipe:1' ''config/enc.js''ファイルを修正する。~ 14行目あたりを~ const codec = 'h264_omx'; に変更。~ 40行目あたりに以下を追加する。~ Array.prototype.push.apply(args, ['-b:v', '3000k']); EPGStationを起動する。~ $ sudo pm2 startup $ sudo pm2 start dist/server/index.js --name "epgstation" $ sudo pm2 save 起動しているか確認する。~ $ sudo pm2 list WEBブラウザで以下のようにEPGStationアクセスする。 http://<RaspberryPiのIP>:8888 しばらくしてら,番組表をクリックして番組表が表示されればOK。 * テレビ放送や録画したデータを見る方法 [#cce6fe4b] テレビ放送や録画した動画データを再生するにはいくつか方法がある。~ - EPGStationでストリーミング配信して,それをVLCなどのマルチメディアプレーヤーで視聴する。~ TV.m3u8ファイルのようなプレイリストを作っておけば,プレーヤー側で放送局を切り替えて視聴出来る。~ - WindowsマシンのTVTestでテレビ放送を視聴する。~ [[BonDriver_Mirakurun>https://github.com/Chinachu/BonDriver_Mirakurun]]をTVTestのBonDriverに使うことで,TVTestでテレビ放送を視聴できる。~ - 録画した動画ファイルをDLNAメディアサーバーなどで扱って,DLNAクライアントで見る。~ - 録画した動画ファイルをSambaなどでファイル共有して,VLCなどのマルチメディアプレーヤーで見る。~ EPGStationで放送中のテレビ放送を,リアルタイムエンコードしてストリーム配信してVLCなんかで視聴する場合,Raspberry Pi4でffmpegによるリアルタイムエンコードを行うと動画がとぎれとぎれになってしまった。~ m2tsの無変換(リアルタイムエンコードはしない)でストリーム配信して視聴する場合,使用しているネットワーク帯域が十分であれば(''NHK BSプレミアムだと18Mbps程度が必要'')うまく視聴できる。家のネットワーク環境ではギリギリだった。 録画した動画ファイルを再生する場合は,ネットワーク上のファイルサーバーに保存しても特にとぎれとぎれになることはないみたいだ。
Next »
PC/PX-W3U4/Raspberry PiでPX-W3U4を使ってみる のバックアップ一覧
PC/PX-W3U4/Raspberry PiでPX-W3U4を使ってみる のバックアップソース(No. All)
1: 2021-07-28 (水) 08:54:35
yuji
2: 2021-08-06 (金) 07:28:24
yuji
Deleted an attach file: BonDriver_Mirakurun.zip at 2021-08-17 (火) 14:11:12
現: 2021-08-21 (土) 09:57:30
yuji
Counter: 9741, today: 3, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
» 関連ページ
» Wikiソース
» 編集履歴
» バックアップ一覧
» 添付ファイル一覧
フォーラム
お問い合わせ