ラズパイ4を使った地上波録画サーバーを作る
にあたりまして、OSやソフトウェアの更新等の都合により、使わなくなったコードをメモしておきます。基本、見直すことはないとは思いますが、「あれ、以前●●●って書いてあった気がするけど何がどうなってこうなったんだ?」という記憶を整理する等に役に立っていただければと思います。
新規記事をテキトーに見てここに来ていただいた方へ。
申し訳ないが見るものはないです...
ラズパイ録画サーバーに興味を持っていただければ幸いです。
~~~~~~~~~~~~~
今後逐次追加予定。↓
<古いバージョンでのネットワーク設定>
少なくともbullseyeまではこれで行けたはず
sudo nano /etc/dhcpcd.conf
--- dhcpd.confの内容-----
# 無線の場合wlan0、有線はeth0にする。基本、どちらかに。
# ip_address:ラズパイのIP
# static routers、static domain_name_servers:ルーター
interface wlan0
interface eth0
static ip_address=192.168.1.11/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
--------------
・dockerのビルドが動かない現象2024.1/6
TypeError: kwargs_from_env() got an unexpected keyword argument 'ssl_version'
この場合、
sudo pip install docker==6.1.3
を行い、そのあとでdockerのビルド等を。pipdockerが7.0.0だとSSLのバージョンが何たらだったか、でバージョンを下げるとOK。詳しくはググる等でお願いします。
固定IPアドレスを設定するためのファイルを編集。なおこの方法はdhcpcdの機能によるものなので、
エディタにnanoを使う場合
sudo nano /etc/dhcpcd.conf
ファイルの中身がない場合はこの方法ではできないということ
nanoはCtrl+Oで上書き保存、Ctrl+xで閉じる。エディタ一番下のショートカットキー一覧も参照。
ファイルを開いたら、一番下までスクロールし、下記の項目を追加。
無線の場合
interface wlan0
有線はeth0にする。両方繋ぐ必要は通常はない
interface eth0
ラズパイのIPを192.168.1.11にする場合
static ip_address=192.168.1.11/24
ルーターのIPが192.168.1.1の場合
static routers=192.168.1.1
ルーターのIPが192.168.1.1の場合
static domain_name_servers=192.168.1.1
"static ip_address"は固定IPアドレス。"/24"はサブネットマスク長。
"static routers"はデフォルトゲートウェイのIPアドレス。通常はルーターのIP。
"static domain_name_servers"はDNSサーバーのIPアドレス。通常はルーターのIP。
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/ : 'ファームウェアのフォルダにコピー'
PX-S1UD用ですが、Q1UDも共通。ドライバのアップデートはたぶんない?なお、ここではQ1UDを使うので該当しないが、PLEXのチューナーによっては非公式チューナーが一般に使われるものもあるとのこと。
もしくは ↓ のコマンドで入れているサイトもあったような。詳細忘れた
sudo apt-get install -y firmware-siano
公式ドライバからファームを抽出する
git clone https://github.com/nns779/px4_drv
cd px4_drv/fwtool/
make
curl -O http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip
unzip -oj pxw3u4_BDA_ver1x64.zip pxw3u4_BDA_ver1x64/PXW3U4.sys
./fwtool PXW3U4.sys it930x-firmware.bin
sudo mkdir -p /lib/firmware
sudo cp it930x-firmware.bin /lib/firmware/
続いてドライバのインストール。最後にmodprobeで読み込ませる
cd ../
*現在px4_drvディレクトリ
sudo apt -y install raspberrypi-kernel-headers
cd driver
make
sudo make install
sudo modprobe px4_drv
python-pipおよび関連パッケージ導入
(今後、composeバイナリなどの状況でここら辺は変わるかもしれない)
sudo apt install -y libffi-dev libssl-dev python3 python3-pip python3-dev
docker-composeパッケージインストール
(なおmirakurun-epgstation入れる場合、どのサイトだったかcompose不要という記述があったが、私が試した限りではcomposeは必須のようです。)
sudo pip3 install docker-compose
→■現在はpipを使おうとするとエラー(警告)が出て、無視するオプションを指定しないとダメな模様。そもそも、dockercompose自体、現在は別な方法もあるようなので、そちらで入れた方がいいかもしれない。今後まとめたい。
ちょっと古い夢を見た。そのうちもう少し新しい夢も見たいな。
/usr/lib/arm-linux-gnueabihf/libpcsclite.soというファイルがCASの複合化を行っている。通常はこれがカードリーダーにアクセスしている?のだが、softcasのlibpcsclite.soに置き換えるとリーダーなしで複合化できる。なお余談だがWin版softcasではwinscard.dllを置き換えることで可能になる、詳しくは適当にググってね。
なお、libpcsclite.soがwifiにも関係しているのかよくわからないが、そのまま置き換えてしまうとwifiが(そのpiで)使えなくなるとのこと。piは有線のみならそのまま置き換えの方法(1)でいいでしょう。wifiが使えた方がいい場合はsoftcas版libpcsclite.soを置いて復号化のリンクだけをそちらにする方法(2)をとる必要がある。
libpcsclite.soについては本来はどこかからソースを持ってきてビルドする必要がある。ただ、事情は分からないが必要なファイルが欠けて公開されていて...?まぁ「libpcsckai.so ダウンロード」でググるなりで...どうにか入手した方が楽ではないかと。libpcsckai.soが古いと有料放送は無理?地上波はCASの更新はないはずなので大丈夫か?。新しくするのはバイナリを書き換えれば大丈夫?らしいですね。
なお、ARM以外のCPUの場合はarm-linux-gnueabihfフォルダの名前が異なるはず。以下同様
まず、バックアップとリストアの方法を。
sudo cp /usr/lib/arm-linux-gnueabihf/libpcsclite.so /usr/lib/arm-linux-gnueabihf/libpcsclitebup.so
sudo cp /usr/lib/arm-linux-gnueabihf/libpcsclitebup.so /usr/lib/arm-linux-gnueabihf/libpcsclite.so
★ 方法1.有線のみになるが、簡単に行う方法
sudo cp /home/pi/libpcsckai.so /usr/lib/arm-linux-gnueabihf/libpcsclite.so
*softcasのlibpcsclite.soをpiフォルダに置いている場合
これだけでOKだったはず。思ったより簡単かも?
なお、先日cockpitを入れたあとでsoftcasが効かなくなった、ファイルコピーを再度&OS再起動で復活。正確な理由は不明だが、こんな事もあったということで。
★ 方法2.wifiも可能にする
(現段階ではなぜか成功せず)
上記のlibarib25のところ*では、
(/home/pi/libarib25上で実行)
nano CMakeLists.txt
[編集]
set(PCSC_CFLAGS "pkg-config libpcsckai --cflags")
set(PCSC_LIBS "pkg-config libpcsckai --libs")
の2行を先頭行「cmake_minimum_required(VERSION 2.8.5)」の後に追加
set(WITH_PCSC_PACKAGE "libpcsckai" CACHE STRING "pkg-config package name for PC/SC")
の「libpcsclite」を「libpcsckai」とし、保存する
nano cmake/FindPCSC.cmake
[編集]
「libpcsclite」を「libpcsckai」とし、保存する
を行い、上記の通りビルドをしておく。
改変libarib25からここにリンクされる?
設定ファイルlibpcsckai.pcを作成する。
sudo cp /usr/lib/arm-linux-gnueabihf/pkgconfig/libpcsclite.pc /usr/lib/arm-linux-gnueabihf/pkgconfig/libpcsckai.pc
sudo nano /usr/lib/arm-linux-gnueabihf/pkgconfig/libpcsckai.pc
[編集]
Libs: -L${libdir} -lpcscliteをLibs: -L${libdir} -lpcsckaiとする
これで、libpcsckai.soを読み込んでくれる?
Win版ではsoftcasでwinscard.dllの改変で、tvtestと同じフォルダに入れれば可能だったはず。録画時のみ必要で、視聴するときはb-cas/softcasは必要なかったはず。
むにゃ、ああ、これは夢か...