Dockerでrecdvbを使ったmirakurunとchinachuを動かす

投稿者: しみほ (2017/09/17)

カテゴリ: 未分類

タグ: 無し

投稿者: しみほ

詳しくはGithubを見てくれ。

PX-S1UDでChinachuしたいと思ったときにコードを書き換えようと思ったのがきっかけ。

ってことで書き換えました。

このコードの検証で一番つまづいたのは、ホストOSのカーネルの古さ(Ubuntu16.04 = Linux 4.4系統のカーネル)によってまずPX-S1UDが認識されていなかった問題ですね…

ここでmirakurun/Dockerfileの書き換えた内容の説明をします。

[shell firstline="19"]
gzip \
vim \
wget \
curl \
linux-headers \
pcsc-lite-dev \
ccid \
[/shell]

使いそうなパッケージを追加するコードです。

[shell firstline="41"]
# firmware
&& cd /tmp/ \
&& 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 \
&& mkdir -p /usr/local/lib/firmware \
&& cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /usr/local/lib/firmware/ \
&& cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/ \
&& mkdir -p /etc/ld.so.conf.d/ \
&& echo '/usr/local/lib' >> /etc/ld.so.conf.d/local.conf \
&& echo 'smsusb' >> /etc/modules \
[/shell]

ドライバの追加コードです。
動くかを試行錯誤して動いたコードでコミットしたので汚くなってます。

[shell firstline="51"]
# other setting
&& adduser root video \
[/shell]

ルートユーザーをビデオグループに追加しています。
追加しないと動かないらしいです。

[shell firstline="59"]
# softcas
&& cd /tmp/ \
&& wget http://web.archive.org/web/20140928031051/http://www.wazoku.net/softcas.zip \
&& unzip softcas.zip \
&& cd /tmp/softcas \
&& wget -O winscard.cpp http://pastebin.com/raw/5144Ah9g \
&& wget -O Makefile http://pastebin.com/raw/FQdSixkB \
&& sed -i "/LONG SCardGetStatusChange/s/LPSCARD_READERSTATE_A/LPSCARD_READERSTATE/g" winscard.cpp \
&& sed -i "s/SCARD_IO_REQUEST g_rgSCardT1Pci;/const SCARD_IO_REQUEST g_rgSCardT1Pci = { SCARD_PROTOCOL_T1, sizeof(SCARD_IO_REQUEST) };/g" winscard.cpp \
&& make \
&& mv /usr/lib/libpcsclite.so.1.0.0 /usr/lib/libpcsclite.so.1.0.0.backup \
&& cp libpcsclite.so.1.0.0 /usr/lib/libpcsclite.so.1.0.0 \
[/shell]

例のアレです。
詳しくは言いませんが、既存のライブラリをビルドしたもので置き換えています。

[shell firstline="72"]
# arib25
&& cd /tmp/ \
&& wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip \
&& unzip c44e16dbb0e2.zip \
&& cd /tmp/pt1-c44e16dbb0e2/arib25/src \
&& make \
&& make install || echo "kuso" \
[/shell]

arib25のビルドです。
make installするときに絶対エラーコードで終了するので、適当にecho文噛ませてます。

[shell firstline="80"]
# recdvb
&& cd /tmp/ \
&& wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz \
&& tar xvzf recdvb-1.3.1.tgz \
&& cd recdvb-1.3.1 \
&& ./autogen.sh \
&& ./configure --enable-b25 \
&& sed -i '/#include <sys\/msg.h>/d' recpt1core.h \
&& sed -i -E 's!(#include <sys/msg.h>)!#undef _GNU_SOURCE\n#undef _BSD_SOURCE\n\1!' recpt1.c \
&& sed -i -E 's!(#include <sys/msg.h>)!#undef _GNU_SOURCE\n#undef _BSD_SOURCE\n\1!' recpt1ctl.c \
&& sed -i -E 's!(#include <sys/msg.h>)!#undef _GNU_SOURCE\n#undef _BSD_SOURCE\n\1!' checksignal.c \
&& sed -i -E 's!(#include <ctype.h>)!\1\n#include <event.h>!' tssplitter_lite.c \
&& sed -i 's#-I../driver#-I../driver -I/usr/local/include#' Makefile \
&& make \
&& make install \
[/shell]

recdvbをビルドしています。
Makeできないコードを修正しつつビルドします。