Chinachu (γ) on Ubuntu 16.04 LTS (2017夏)の焼き直しでLinuxでPX-W3U4を使う(2019年1月版)の続き。
USB2.0のチューナーしかない。CentOSはカーネルが古いので、PX-S1UDを使えない。
$ sudo apt install -y curl
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt install -y nodejs
$ sudo npm install pm2 -g
$ sudo npm install mirakurun -g --unsafe-perm --production
$ sudo apt install -y pkg-config
$ sudo npm install arib-b25-stream-test -g --unsafe
チューナーの設定
$ sudo mirakurun config tuners
チャンネルの設定
$ sudo mirakurun config channels
地上波はチャンネルスキャンで設定するので、BS/CSのチャンネルだけで十分。普通はserviceIdなしで問題ない。
設定を反映
$ sudo mirakurun restart
チャンネルスキャン
$ curl -X PUT "http://localhost:40772/api/config/channels/scan"
チャンネル設定を反映
$ sudo mirakurun restart
インストール
$ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
$ cd ~/chinachu/
$ ./chinachu installer
Chinachu Installer Menu:
[!] These are installed under all /home/user/chinachu/...
[!] Recommend the Auto installation.
1) Auto (full) 3) Node.js Environment 5) ffmpeg
2) submodule 4) Node.js Modules
what do you install? > 1
selected: Auto (full)
設定
$ tr -d \\r < config.sample.json > config.json
$ vi config.json
"uid": "user",
Chinachuを動作させるユーザーを設定
空の予約ルールを作成
$ echo [] > rules.json
動作チェック
$ ./chinachu service wui execute
^C
$ ./chinachu update
サービスを登録
$ sudo pm2 start processes.json
$ sudo pm2 save
takaaki 1月 28th, 2019
今回はカーネルの縛りがない非公式ドライバを使用する。現行で一番サポートが長いUbuntu 18.04 LTSに導入した。PX-W3PE4、PX-Q3U4、PX-Q3PE4でも手順は共通。
READMEの通りにやればできる。カーネルのアップデートに追従するためDKMSを使用した。
パッケージのインストール
$ sudo apt install -y git build-essential dkms
ドライバのダウンロード
$ mkdir -p ~/src/ $ cd ~/src/ $ git clone https://github.com/nns779/px4_drv.git
ファームウェアのインストール
$ cd ~/src/px4_drv/fwtool/ $ make $ wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O 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/
ドライバを更新するときは一度削除する
$ sudo dkms remove px4_drv/0.1.0 --all $ sudo rm -rf /usr/src/px4_drv-0.1.0
ドライバのインストール
$ cd ~/src/px4_drv/ $ sudo cp -av ./ /usr/src/px4_drv-0.1.0 $ sudo dkms add px4_drv/0.1.0 $ sudo dkms install px4_drv/0.1.0 $ sudo modprobe px4_drv $ ls /dev/px4video* /dev/px4video0 /dev/px4video1 /dev/px4video2 /dev/px4video3
パッケージのインストール
$ sudo apt install -y cmake libpcsclite1 libpcsclite-dev pcscd pcsc-tools
libarib25をインストール
$ cd ~/src/ $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install
カードリーダーの動作確認
$ pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) ^C
パッケージのインストール
$ sudo apt install -y autoconf automake
recpt1をインストール
$ cd ~/src/ $ git clone https://github.com/stz2012/recpt1.git $ cd recpt1/recpt1/ $ ./autogen.sh $ ./configure --enable-b25 $ make $ sudo make install
実際に録画してみる。0,1が衛星波、2,3が地上波。チューナーが増えた場合も衛星波2、地上波2の順で繰り返される。
$ cd ~ $ recpt1 --device /dev/px4video0 --lnb 15 --b25 --strip BS15_0 10 bs0.m2ts $ recpt1 --device /dev/px4video1 --lnb 15 --b25 --strip BS01_2 10 bs1.m2ts $ recpt1 --device /dev/px4video2 --b25 --strip 27 10 gr0.m2ts $ recpt1 --device /dev/px4video3 --b25 --strip 27 10 gr1.m2ts
Chinachu on Ubuntu 18.04 LTS (2019年1月版)
takaaki 1月 23rd, 2019
Chinachuのメモリ周りを調整してみたのでメモ。(検証中)
2019/1/28追記: メモリを4GBから16GBに増設したこともあって、録画が中断されることはなくなった。
TSFilterがバッファオーバーフローを起こして録画が中断されることがある。
サーバー設定のhighWaterMarkでバッファを設定できる。推奨されていないので程々に数倍程度。
デフォルトは25165824(24MB)
$ sudo mirakurun config server
#highWaterMark: 25165824 # integer (bytes) #highWaterMark: 67108864 # 64MB highWaterMark: 134217728 # 128MB #highWaterMark: 268435456 # 256MB
使い切って録画を出力できなくなる時もこれで解決する。Mirakurunのアップデートのたびに実行する必要がある。
追記: mirakurun@2.8.0以降は–unsafe-permをつけずにアップデートすれば再設定する必要はない。
メモリの搭載量と相談して程々に。highWaterMarkを増やすときは一緒に増やす。
デフォルトでは256(MB)(追記: mirakurun@2.8.0以降は512)
sudo pm2 start mirakurun-server --node-args --max_old_space_size=1024
takaaki 12月 31st, 2018
Posted In: ソフトウェア
PX-W3U4のBS再編への対応がバイナリの編集で面倒だなと思っていたら新しいLinux向けドライバが公開された。それぞれで今まで通り導入できるか再検証してみる。
今回公開されたドライバはCentOS 7、Ubuntu 18.04 LTS、Debian 9が対象、すべてx64。最新の安定版ディストリビューションが使えるのは有り難い。
やり方はPX-Q3U4, PX-W3PE4, PX-Q3PE4もおそらく共通。
非公式ドライバ向け記事
CentOSはEPRLのパッケージが必要なので追加する。
$ curl -LO http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm $ sudo rpm -ivh epel-release-latest-7.noarch.rpm
$ mkdir -p ~/src/ $ cd ~/src/ $ sudo yum install -y unzip $ curl -LO http://plex-net.co.jp/plex/linux/CentOS7-1804_64bit_kernel3.10.0-862.zip $ unzip CentOS7-1804_64bit_kernel3.10.0-862.zip $ cd CentOS7-1804_64bit_kernel3.10.0-862/
$ mkdir -p ~/src/ $ cd ~/src/ $ wget http://plex-net.co.jp/plex/linux/Ubuntu18.04_64bit_kernel4.15.0-23.zip $ unzip Ubuntu18.04_64bit_kernel4.15.0-23.zip $ cd Ubuntu18.04_64bit_kernel4.15.0-23/
$ mkdir -p ~/src/ $ cd ~/src/ $ sudo apt install -y unzip $ wget http://plex-net.co.jp/plex/linux/Debian9.4_64bit_kernel4.9.0-6.zip $ unzip Debian9.4_64bit_kernel4.9.0-6.zip $ cd Debian9.4_64bit_kernel4.9.0-6/
ドライバ周りの操作を自動化するためにDKMSを使用する。これでカーネルのアップデートがあった場合も自動的に適応できる。
$ sudo yum install -y dkms kernel-headers kernel-devel
$ sudo apt install -y dkms
モジュールをコピーするだけの設定を作る。
$ sudo mkdir -p /usr/src/px4-1806/ $ sudo cp -v *.ko /usr/src/px4-1806/ $ sudo vi /usr/src/px4-1806/dkms.conf
$ sudo dkms install -m px4 -v 1806
アップデートに備えてモジュールを強制ロードできるようにする(効果は未検証)。チューナーの接続時にmodprobeを–forceオプションを付きで実行させる。デバイスファイルのパーミッションも設定する。
$ sudo vi /etc/udev/rules.d/99-px4.rules ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0511", ATTR{product}=="*[QW]3*4", RUN+="/sbin/modprobe -f usb-px4" KERNEL=="px4-DTV*", GROUP="video", MODE="0666" $ sudo reboot $ ls /dev/px4-DTV* /dev/px4-DTV0 /dev/px4-DTV1 /dev/px4-DTV2 /dev/px4-DTV3
内蔵のカードリーダーは使えないので別途用意する。CentOSは/usr/local/libへのパスを通す。
$ cd ~/src/ $ sudo yum install -y git cmake gcc-c++ pcsc-lite pcsc-lite-devel pcsc-tools $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install $ sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf.d/libc.conf" $ sudo ldconfig
$ cd ~/src/ $ sudo apt install -y git build-essential cmake libpcsclite1 libpcsclite-dev pcscd pcsc-tools $ git clone https://github.com/stz2012/libarib25.git $ cd libarib25/ $ cmake . $ make $ sudo make install
$ pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) ^C
ここで何も出ない時は再起動するとうまくいく場合がある。
CentOS 6のドライバに付属しているrecpt1を使う。
$ cd ~/src/ $ curl -LO http://plex-net.co.jp/download/linux/Linux_Driver.zip $ unzip Linux_Driver.zip
CentOS 6のドライバに付属しているrecpt1を使う。
$ cd ~/src/ $ wget http://plex-net.co.jp/download/linux/Linux_Driver.zip $ unzip Linux_Driver.zip
B25を有効にするためリビルド。通常のrecpt1と区別するためリネームした。今回もchecksignalは動作しない。
–helpで表示されるチャンネルを修正するにはrecpt1core.cの286行目以降を書き換える。
$ cd ~/src/Linux_Driver/MyRecpt1/MyRecpt1/recpt1/ $ make clean $ vi recpt1core.c
$ sh configure --enable-b25 $ make $ sudo install -m 755 recpt1 /usr/local/bin/recpx4 $ sudo install -m 755 recpt1ctl /usr/local/bin/recpx4ctl
実際に録画してみる。0,1が衛星波、2,3が地上波。チューナーが増えた場合も衛星波2、地上波2の順で繰り返される。
$ cd ~ $ recpx4 --device /dev/px4-DTV0 --lnb 15 --b25 --strip BS15_0 10 bs0.m2ts $ recpx4 --device /dev/px4-DTV1 --lnb 15 --b25 --strip BS01_2 10 bs1.m2ts $ recpx4 --device /dev/px4-DTV2 --b25 --strip 27 10 gr0.m2ts $ recpx4 --device /dev/px4-DTV3 --b25 --strip 27 10 gr1.m2ts
takaaki 6月 29th, 2018
CentOS 6だけに対応していたときの覚書。今は他のディストリビューションにも対応しているので古い情報。
追記: 新しい情報はこちら
unzipのインストール
# yum install unzip -y
ドライバをダウンロード
# curl -LO http://plex-net.co.jp/download/linux/Linux_Driver.zip
ドライバモジュールをロード
# unzip Linux_Driver.zip # cd Linux_Driver/Linux_Driver/ # insmod tty_Virtual.ko # insmod usb-px4.ko
認識されているか確認
# ls /dev/px4-DTV? /dev/px4-DTV0 /dev/px4-DTV1 /dev/px4-DTV2 /dev/px4-DTV3
再起動すると元に戻るので自動的にロードさせる
ドライバをコピー
# cp -v tty_Virtual.ko usb-px4.ko /usr/local/lib64/ `tty_Virtual.ko' -> `/usr/local/lib/tty_Virtual.ko' `usb-px4.ko' -> `/usr/local/lib/usb-px4.ko'
設定を追加
# vi /etc/sysconfig/modules/usb-px4.modules
#!/bin/sh /sbin/insmod /usr/local/lib64/tty_Virtual.ko /sbin/insmod /usr/local/lib64/usb-px4.ko
実行権限を追加
# chmod +x /etc/sysconfig/modules/usb-px4.modules
recpt1をインストール
# cd ../MyRecpt1/MyRecpt1/recpt1 # install -m 755 recpt1 /usr/local/bin/recpx4 # install -m 755 recpt1ctl /usr/local/bin/recpx4ctl
ビルドは必要ない。PT1/2/3用とややこしいのでrecpx4にリネームしておく
内蔵カードリーダーは使えないのでカードリーダーを別途用意する。
NodeJSをインストール
# curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - # yum install -y nodejs
arib-b25-stream-testをセットアップ(EPELの導入が必要)
# curl -LO http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm # yum install gcc-c++ pcsc-lite pcsc-lite-devel pcsc-tools # npm install arib-b25-stream-test -g --unsafe
そのままではサービスがうまく起動しないので再起動する
# reboot
カードリーダーの動作確認
$ pcsc_scan | grep B-CAS Japanese Chijou Digital B-CAS Card (pay TV) ^C
PM2のインストール
# npm install pm2 -g # pm2 startup
Mirakurunのインストール
# npm install mirakurun -g --unsafe --production
Mirakurunのチューナー設定
# mirakurun config tuners
0,1が衛星波、2,3が地上波になる
Mirakurunのチャンネル設定
# mirakurun config channels
BS/CSのチャンネルだけ登録する
チャンネルスキャンで地上波のチャンネルを設定する
# mirakurun restart $ curl -X PUT "http://localhost:40772/api/config/channels/scan" # mirakurun restart
別のマシンからアクセスできるようにファイアウォールを設定する
# iptables -I INPUT -p tcp -m tcp --dport 40772 -j ACCEPT # service iptables save
takaaki 1月 7th, 2018
通知の必要なスクリプトとTwitterを連携するためにTTYtterを導入してみた。
aptでインストールできる。
$ sudo aptitude install ttytter
初めて使うときにOAuth認証が行われる。SSLが必須なのでsslオプションを指定する。
$ ttytter -ssl
URLが表示される
1. Visit, in your browser, ALL ON ONE LINE, https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ブラウザでURLに接続する。ログインして、連携アプリを認証すると、数字が表示される。この数字を入力する。
5. A PIN will appear. Enter it below. Enter PIN>0123456
認証は完了。もう一度実行するとタイムラインが表示される。
コマンドラインから簡単にツイートできる。
$ ttytter -ssl -status="<ツイートする内容>"
改行は使用できない。文字数を超えてしまうと失敗する。autosplitオプションで自動分割される。
$ ttytter -ssl -autosplit -status="<ツイートする内容>"
~/.ttytterrcで初期設定を保持できる。sslオプションを省略するには~/.ttytterrcを次のようにする。
vi ~/.ttytterrc ssl=1
sslオプションを指定しなくてもSSLで通信するようになる。
開発アカウント以外で面倒な別アカウントのアクセストークンの取得をttytterで行う。
$ ttytter -ssl -oauthwizard -keyf=./<出力先ファイル> -oauthkey=<ConsumerKey> -oauthsecret=<ConsumerSecret>
oauthwizardオプションでOAuth認証が行われる。オプションで出力先ファイル、ConsumerKey、ConsumerSecretを指定している。出力先にディレクトリが含まれないと~/.ttytterkey<ファイル名>に出力される。
アクセストークンを確認する。
$ cat <出力先ファイル> ck=X&cs=X&at=<AccessToken>&ats=<AccessTokenSecret>
takaaki 4月 12th, 2015
jsを簡単に編集しようとエディタのAtomを入れてみた。パッケージを使って機能を拡張できる。
日本語化にはパッケージのlocalizationを使うが、簡単にはインストールできなかった。ふと、"japanese"でパッケージを検索してみると、japanese-menuというプラグインを見つけた。インストールするだけでメニューが日本語になる。localizationと違い右クリックメニューまで日本語化される。japanese-menuとjapanese-wrapを入れて日本語化は完了。
用途に合わなかったのでAtomは使っていない。
takaaki 4月 7th, 2015
Posted In: ソフトウェア
タグ: Atom
JKCommentGetterを使えば、ニコニコ実況のコメントを簡単に取得できる。これをLinuxで使ってみる。
ソースを取得する
git clone https://github.com/ACUVE/JKCommentGetter.git
実行してみる
$ cd JKCommentGetter $ ruby JKCommentGetter.rb JKCommentGetter.rb.orig:82: invalid multibyte char (US-ASCII) JKCommentGetter.rb.orig:81: syntax error, unexpected $end, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
エラーが出て動かない
文字コードを指定すると動く
$ ruby -Ku JKCommentGetter.rb ** 引数が足りません ** Usage: ruby JKCommentGetter.rb チャンネル 取得時間範囲のはじめ 取得時間範囲のおわり [option...] Options: -m sec --margin sec 取得時間範囲の前後を指定秒だけ広げます -s sec --start-margin sec 取得時間範囲のはじめを指定秒だけ早くします -e sec --end-margin sec 取得時間範囲のおわりを指定秒だけ遅くします -f [filename] --file [filename] 出力するファイル名を指定します -x --xml 出力フォーマットをXMLにします -j --jkl 出力フォーマットをJikkyoRec互換っぽくします -t --time-header NicoJKフォーマットの一番初めに時刻ヘッダを追加します -o comment --comment commment ファイルの頭の辺りに指定したコメントを追加します -b path --base-path path ファイル出力のフォルダを指定します -d --directory チャンネルと同じ名前のフォルダの中にファイルを出力します -c --check-file 取得時間範囲がよく似たファイルが存在する場合ダウンロードしなくなります -a sec --check-range sec よく似たファイルと判定する時間範囲を設定します -r num --retry num 取得エラーが発生した際に再取得へ行く回数 -i cookie --cookie cookie Cookieとして利用する文字列を与えます -p --perfect 完全なコメントが取得できたと保証できない時にエラーで落ちるようにします -w --working-directory カレントディレクトリをスクリプトがあるフォルダにします -h --help このヘルプを表示し終了します 詳細は README.md をご覧ください
スクリプトを直接実行するにはJKCommentGetter.rbとJKComment.rbの先頭に次の二行を追加する。
#! ruby -EUTF-8 # -*- mode:ruby; coding:utf-8 -*-
$ vi JKComment.rb $ vi JKCommentGetter.rb #追記 $ chmod +x JKComment.rb JKCommentGetter.rb $ ./JKCommentGetter.rb
そのままではログインにCookieが必要なので、自動取得できるようにする。JKCommentGetter.rbのgetCookieを書き換えてcurlでCookieを取得させる。
diff
emailとpasswordはそれぞれ書き換える。
次のように使う
$ ruby -Ku JKCommentGetter.rb jk1 `date -d "4:00" +%s` 30m -x -f output.xml
この場合、NHK総合の4時から30分後までのログをXML形式でoutput.xmlに保存される。日付はUNIX時間かYYYYMMDDhhmmss形式で指定する。終わりの時間は経過時間を数字にs,m,h,dなどの単位をつけても指定できる。詳しい使い方は配布元に書いてある。
対話形式でチャンネルと時間を指定するシェルスクリプトを書いてみた。
$ sh jkget.sh -x -f /path/to/output.xml jk1 NHK 総合 jk101 NHKBS-1 jk231 放送大学 jk2 Eテレ jk103 NHK BSプレミアム jk234 BSグリーンチャンネル jk4 日本テレビ jk141 BS 日テレ jk236 BSアニマックス jk5 テレビ朝日 jk151 BS 朝日 jk238 FOX bs 238 jk6 TBS テレビ jk161 BS-TBS jk241 BSスカパー! jk7 テレビ東京 jk171 BSジャパン jk242 J Sports 1 jk8 フジテレビ jk181 BSフジ jk243 J Sports 2 jk9 TOKYO MX jk191 WOWOWプライム jk244 J Sports 3 jk10 テレ玉 jk192 WOWOWライブ jk245 J Sports 4 jk11 tvk jk193 WOWOWシネマ jk251 BS釣りビジョン jk12 チバテレビ jk200 スターチャンネル1 jk252 IMAGICA BS jk201 スターチャンネル2 jk255 BS日本映画専門チャンネル jk202 スターチャンネル3 jk256 ディズニー・チャンネル jk211 BSイレブン jk258 Dlife jk222 TwellV jk910 SOLiVE24 Channel>1 jk1 Date>4:00 2015年 2月 22日 日曜日 04:00:00 JST Length(min)>30 /path/to/JKCommentGetter.rb jk1 1424545200 30 -x -f /path/to/output.xml % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 57 0 0 100 57 0 49 0:00:01 0:00:01 --:--:-- 51 log: jk1 を 2015-02-22 04:00:00 +0900 から 2015-02-22 04:30:00 +0900まで取得します log: スレッド1424545201から読み込み開始: start_time=2015-02-22 04:00:01 +0900, end_time=2015-02-22 16:20:03 +0900 log: スレッド1424545201から629コメント読み込んだ: 2015-02-22 04:00:09 +0900 log: スレッド1424545201から読み取り完了: size=629 log: スレッド1424458801から読み込み開始: start_time=2015-02-21 04:00:01 +0900, end_time=2015-02-22 04:00:15 +0900 log: スレッド1424458801から1000コメント読み込んだ: 2015-02-22 01:06:28 +0900 log: スレッド1424458801から読み取り完了: size=6 log: /path/to/output.xml へ出力します OFFSET: 0
OFFSETには開始時間を再生時間0秒に合わせるための秒数が表示される。こめたんぷれいやのシフトなどに指定する。
ソース
Linuxのソフトは不明。Androidにはエンコードが必要だがNicoLがある。
takaaki 2月 22nd, 2015
Posted In: ソフトウェア
PT1/PT2のDVBとMythTV @Wikiに置かれているパッチと修正版BSパッチをgithubにまとめてみた。パッチはgit-diffで作成した。Debian wheezyで軽く動作確認。
BS対応がたった1行移植し忘れてるだけとは思わなかった。これでGWに帰省したらOSのアップグレードができる。
takaaki 4月 26th, 2014
Posted In: ソフトウェア
Debianのパッケージでlibvirtdを導入している。libvirtグループに所属していれば一般ユーザーでもvirt-managerで仮想マシンの管理ができるが、virshでの操作が行えない。一般ユーザーにはデフォルトのホストが設定されていないからだ。
仮想マシンが稼働している環境でも一覧が表示されない。
$ virsh list Id Name State ----------------------------------------------------
接続先のURIが指定してみると表示される。
$ virsh -c qemu:///system list Id Name State ---------------------------------------------------- 1 www running
rootにはデフォルトの接続先が設定されている。これは/etc/libvirt/libvirt.confで設定できる。
$ cat /etc/libvirt/libvirt.conf | grep uri_default #uri_default = "qemu:///system"
これは一般ユーザーには適用されない。一般ユーザーは環境変数を設定する必要がある。
LIBVIRT_DEFAULT_URIにURIを設定すると接続先指定なしで接続できる。
$ export LIBVIRT_DEFAULT_URI="qemu:///system" $ virsh list Id Name State ---------------------------------------------------- 1 www running
.bashrcで常に適用されるようにする。
$ echo 'export LIBVIRT_DEFAULT_URI="qemu:///system"' >> ~/.bashrc
takaaki 4月 13th, 2014
Posted In: ソフトウェア