通知の必要なスクリプトと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: ソフトウェア
先月にDVB版PT3ドライバがLinuxカーネルに取り込まれた。PX-S1UDも今年取り込まれている。PX-S1UDのドライバは3.15以降で、PT3のDVB版ドライバは3.18以降で使えるようになる。
両方のドライバをDebianで使えるようにしてみた。
PX-S1UDには3.15以降のカーネルで対応するので、Debianのカーネルをアップグレードすればいい。
PX-S1UDの接続確認
$ lsusb | grep VidzMedia Bus 001 Device 002: ID 3275:0080 VidzMedia Pte Ltd
バックポートリポジトリの追加
$ sudo sh -c "echo 'deb http://http.debian.net/debian wheezy-backports main' > /etc/apt/sources.list.d/backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.16-0.bpo.2-amd64
unzipのインストール
$ sudo aptitude install unzip
Windows用ドライバからファームウェアを導入
$ cd /usr/local/src/ $ 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
ドライバを確認
$ lsmod | grep smsusb smsusb 17036 0 smsmdtv 47106 2 smsdvb,smsusb usbcore 199395 5 uhci_hcd,ehci_hcd,ehci_pci,smsusb,usbhid $ ls /dev/dvb/ adapter0
Linux3.18で対応するが、Wheezyではまだ使えないのでV4L-DVBドライバをインストールする。ビルドには3.8以降のカーネルが必要になる。カーネルのアップグレードまではPX-S1UDと共通。
PT3の確認
$ lspci | grep Multimedia 03:00.0 Multimedia controller: Altera Corporation Device 4c15 (rev 01)
バックポートリポジトリの追加
$ sudo sh -c "echo 'deb http://http.debian.net/debian wheezy-backports main' > /etc/apt/sources.list.d/backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.16-0.bpo.2-amd64
再起動して確認
$ sudo reboot $ uname -r 3.16-0.bpo.2-amd64
必要なパッケージのインストール
$ sudo aptitude install git build-essential patchutils libproc-processtable-perl linux-headers-3.16-0.bpo.2-amd64
ビルド
$ cd /usr/local/src/ $ git clone --depth=1 git://linuxtv.org/media_build.git $ cd media_build $ ./build
インストール
$ sudo make install
ドライバモジュールのロード
$ sudo modprobe earth-pt3
ドライバの確認
$ lsmod |grep earth_pt3 earth_pt3 21751 0 dvb_core 110088 1 earth_pt3 i2c_core 50108 4 drm,i2c_piix4,drm_kms_helper,earth_pt3 $ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3
Linux3.18以降を使う場合、DVB版ドライバをブラックリストに追加しておかないとDVB版ドライバが使われてしまう。PT3はearth-pt1ではなくearth-pt3を/etc/modprobe.d/blacklist.confに追加する。PT1/2を使っていない場合、earth-pt1を追加しても何の効果もない。
$ sudo sh -c "echo 'blacklist earth-pt3' >> /etc/modprobe.d/blacklist.conf
takaaki 10月 26th, 2014
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: ソフトウェア
PX-S1UDをLinuxで使えるようにしたのでChinachuと組み合わせてみた。録画にはrecdvbを使う。
現在はこちらのドライバが安定している。
録画時にB25デコードをかける場合はlibarib25やFUSE_b25をインストールしておく。
PT3などと同じように録画するには録画コマンドrecdvb(recpt1の改造版)をこちらからダウンロードしておく。手順はrecpt1と変わらない。
必要なパッケージのインストール
$ sudo aptitude install automake
ビルドとインストール
$ cd /usr/local/src/ $ wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.2.0.tgz $ tar xvzf recdvb-1.2.0.tgz $ cd recdvb-1.2.0 $ ./autogen.sh $ ./configure --enable-b25 #libarib25でデコードする場合 $ make $ sudo make install
recpt1などが入っている場合checksignalが上書きされるので注意。recdvbはPT2、PT3のDVBドライバでも使えるが、衛星放送には対応していない。checksignalも形式が違うのであまり当てにならない。
録画テスト
$ recdvb --dev 0 --b25 --strip チャンネル番号 録画秒数 録画ファイル名
/dev/dvb/adapter0の場合–devに0を指定。
Chinachuのwikiに従えば問題なくインストールできる。DVBデバイスの場合、実行ユーザーをvideoグループに所属させる必要があるので注意が必要。
必要なパッケージのインストール(wikiの記述通り)
$ sudo apt-get install build-essential curl git-core libssl-dev yasm libtool autoconf
実行ユーザー作成
$ sudo adduser chinachu $ sudo adduser chinachu video #デバイスの操作はvideoグループにしかできないので、グループに追加 $ sudo adduser chinachu sudo #インストール・アップデートのためにsudoグループに追加
ユーザーをchinachuに切り替え
$ sudo -i -u chinachu
ソースの取得
$ git clone git://github.com/kanreisa/Chinachu.git chinachu
インストール
$ cd chinachu $ ./chinachu installer Chinachu Installer Menu: [!] These are installed under all /home/chinachu/chinachu/... [!] Recommend the Auto installation. 1) Auto (full) 5) Node.js Modules 9) libfdk-aac 2) Auto (fast) 6) epgdump 10) libogg 3) submodule 7) libx264 11) libvorbis 4) Node.js Environment 8) libvpx 12) libav what do you install? > 1 selected: Auto (full)
サービスの登録
$ ./chinachu service operator initscript > /tmp/chinachu-operator $ ./chinachu service wui initscript > /tmp/chinachu-wui $ sudo chown root:root /tmp/chinachu-operator /tmp/chinachu-wui $ sudo chmod +x /tmp/chinachu-operator /tmp/chinachu-wui $ sudo mv /tmp/chinachu-operator /tmp/chinachu-wui /etc/init.d/ $ sudo insserv chinachu-operator $ sudo insserv chinachu-wui
設定ファイルの作成
$ cp config.sample.json config.json #サンプルのコピー $ sudo vi config.json
録画ファイルの保存先を設定
"recordedDir" : "./recorded/",
ユーザーの設定
"wuiUsers": [ "ユーザー名:パスワード" ],
外部から見られないのであれば、設定そのものを削除してもいい。
ファイル名のフォーマット
"recordedFormat": "[<date:yymmdd-HHMM>][<type><channel>][<tuner>]<title>.m2ts",
フォーマットに使えるタグは/node_modules/chinachu-common/lib/chinachu-common.jsのexports.formatRecordedNameを見るとわかる。下に一覧を用意した。
チューナーの設定
"tuners": [ { "name" : "PX-S1UD", "isScrambling": false, "types" : [ "GR" ], "command" : "recdvb --dev 0 --b25 --strip --sid <sid> <channel> - -" } ],
/dev/dvb/adapter0の場合–devに0を指定する。
チャンネル設定
"channels": [ { "type": "GR", "channel": "16" }, { "type": "GR", "channel": "21" }, { "type": "GR", "channel": "22" }, { "type": "GR", "channel": "23" }, { "type": "GR", "channel": "24" }, { "type": "GR", "channel": "25" }, { "type": "GR", "channel": "26" }, { "type": "GR", "channel": "27" } ]
地域に合わせて設定する
$ sudo service chinachu-operator start
$ sudo service chinachu-wui start
しばらく待つと番組表が作成される。
ブラウザに"http://IPアドレス:10772/"と入力するとChinachuのWUIに接続できる。ここから予約や録画ファイルの視聴・管理が行える。ストリーミング再生を無変換以外で使うにはそれなりのスペックが必要。番組表からできるライブ視聴はエンコードが必要で信頼性がまだ低いので、予約録画して再生した方がいい。
他のユーザーでchinachuコマンドをそのまま使うのはまずそうなので、普段使っているユーザーで使えるようにエイリアスを追加。(次回ログインから有効)
$ echo "alias chinachu='sudo -u chinachu /home/chinachu/chinachu/chinachu'" >> ~/.bash_aliases
自動予約ルール確認
$ chinachu rules
予約済み番組の確認
$ chinachu reserves
録画中番組の確認
$ chinachu recording
録画済み番組の確認
$ chinachu reserves recorded
Chinachuのアップデート
$ chinachu updater
番組表手動更新
$ chinachu update
番組表の作り直し
$ chinachu update -f
ロックファイルの削除
$ chinachu unlock
takaaki 3月 23rd, 2014
タグ: Chinachu, DVB, fuse_b25, js, Linux, PLEX, PT2, PT3, PX-S1UD, sudo, TV, 録画
PLEXのUSBチューナーPX-S1UDがLinuxで使えるというので試してみた。標準ドライバに少し手を加えて使えるようにする。環境はDebian(wheezy)。
追記:ドライバがカーネルに組み込まれたのでこちらを参照。PX-S1UDとPT3のDVBドライバがLinux標準に – 底辺迷走
Debian(wheezy)に導入されているカーネル3.2に含まれているドライバはPX-S1UDに使えないので、新しいカーネルを導入しておく。カーネル3.10以降であればアップグレードは不要。
使われているカーネルを確認
$ uname -r 3.2.0-4-amd64
Backportsリポジトリを追加
$ sudo sh -c "echo 'deb http://ftp.debian.org/debian/ wheezy-backports main' > /etc/apt/sources.list.d/wheezy-backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.12-0.bpo.1-amd64
カーネルを入れ替えるために再起動
$ sudo reboot
カーネルを確認
$ uname -r 3.12-0.bpo.1-amd64
必要なパッケージのインストール
$ sudo aptitude install build-essential linux-source-3.12 linux-headers-3.12-0.bpo.1-amd64
カーネルソースの展開
$ cd /usr/local/src/ $ tar xvJf /usr/src/linux-source-3.12.tar.xz
ビルドの準備
$ cd linux-source-3.12/ $ cp /boot/config-`uname -r` .config $ make oldconfig $ make modules_prepare $ cp /lib/modules/`uname -r`/build/Module.symvers .
ドライバの階層に移動
$ cd drivers/media/usb/siano/
ソースを修正する
$ vi smsusb.c
usb_device_id smsusb_id_tableに次の2行を追加
{ USB_DEVICE(0x3275, 0x0080),
.driver_info = SMS1XXX_BOARD_SIANO_RIO },
変更内容
$ diff -u smsusb.c{.org,} --- smsusb.c.org 2014-01-26 02:18:00.000000000 +0900 +++ smsusb.c 2014-03-21 19:59:07.922682492 +0900 @@ -634,6 +634,8 @@ .driver_info = SMS1XXX_BOARD_ZTE_DVB_DATA_CARD }, { USB_DEVICE(0x19D2, 0x0078), .driver_info = SMS1XXX_BOARD_ONDA_MDTV_DATA_CARD }, + { USB_DEVICE(0x3275, 0x0080), + .driver_info = SMS1XXX_BOARD_SIANO_RIO }, { } /* Terminating entry */ };
ドライバモジュールのビルド
$ make -C /usr/local/src/linux-source-3.12 M=`pwd` modules
"make modules_install"ではうまくインストール出来ないのでcpでインストールする。Windows用ドライバに含まれるファームウェアも必要なので導入しておく。
元のモジュールを上書きするので、バックアップする
$ sudo mv /lib/modules/`uname -r`/kernel/drivers/media/usb/siano/smsusb.ko{,.org}
ドライバモジュールのインストール
$ sudo cp smsusb.ko /lib/modules/`uname -r`/kernel/drivers/media/usb/siano/
unzipのインストール
$ sudo aptitude install unzip
Windows用ドライバからファームウェアを導入
$ cd /usr/local/src/ $ 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の接続確認
$ lsusb |grep VidzMedia Bus 002 Device 002: ID 3275:0080 VidzMedia Pte Ltd
ドライバモジュールのロード
$ sudo modprobe smsusb
デバイスの確認
$ ls /dev/dvb/ adapter0
ドライバモジュールを自動で読み込ませる
$ sudo sh -c "echo smsusb >> /etc/modules"
DVBデバイスとして認識されるので他のDVBデバイス同様に扱える。FUSE_b25を使えばMythTVでも使える。
参考:
takaaki 3月 21st, 2014
Posted In: ハードウェア
タグ: Debian, DVB, fuse_b25, LAN, Linux, MythTV, PT3, PX-S1UD, TV, Windows
Philipsのディスプレイ234E5QHSB/11を2台購入した。それまでDVIで接続していたが、このディスプレイにはDVIポートがなく、HDMIポートに接続することになる。HDMIに変更するついでに音声もHDMIに乗せることにした。ディスプレイにはスピーカーをつないでいる。
環境はP5K-PRO+GeForce 9600GT GE。DVIをHDMIに変換して使う。GeForce 400シリーズより前のNVIDIAのビデオカードはサウンドチップを搭載していないので、音声を乗せるにはマザーボードのS/PDIF出力に接続する必要がある。
接続用の2pinケーブルが付属品にはなかったので探してみたが、見つからなかった。PCショップで聞いてみた所、最近のものには必要ないのでもう売ってないという。仕方なく、似たようなケーブルを探してみたところ、ヨドバシでTK-CD4というケーブルを見つけた。CD-ROM用とあるが、調べてみるとS/PDIFのケーブルらしい。これを購入して接続することにした。
マザーボードとビデオカードのS/PDIFを接続する。接続方法はELZAの接続ガイドを見るとわかりやすい。ASUS製の接続例を見て接続した。
ディスプレイから出力するには再生デバイスの既定値をデジタル出力に設定する。
起動直後は音声が出力されるが、スリープすると音が出なくなった。ドライバを入れ直したり、ディスプレイを接続し直したりしても改善しない。
NVIDIAコントロールパネルを見ると音声出力がオフになっていた。スリープから復帰したときのこの設定が適用されたらしい。設定を変更すると音声が出力されるようになった。
アナログ出力と違ってデジタル出力はノイズが乗りにくいので、今まであったPC内部のノイズがなくなって快適になった。
takaaki 3月 15th, 2014
Posted In: ハードウェア
DVB版ドライバがないPT3ではMythTVは使えなかった。最近DVB版PT3ドライバが公開されたので、導入してみる。環境はいつも通りDebianの安定版(wheezy)。
Debian(wheezy)に導入されているカーネル3.2ではビルドできないので、新しいカーネルを導入しておく。3.5でビルドできないことと3.8以降でビルドできることを確認している。新しいカーネルはbackportsリポジトリを使うと簡単に導入できる。
使われているカーネルを確認
$ uname -r 3.2.0-4-amd64
Backportsリポジトリを追加
$ sudo sh -c "echo 'deb http://ftp.debian.org/debian/ wheezy-backports main' > /etc/apt/sources.list.d/wheezy-backports.list" $ sudo aptitude update
カーネルのインストール
$ sudo aptitude -t wheezy-backports install linux-image-3.10-0.bpo.3-amd64
カーネルを入れ替えるために再起動
$ sudo reboot
カーネルを確認
$ uname -r 3.10-0.bpo.3-amd64
PT3ドライバのビルドに必要なV4L-DVBドライバを導入する。ビルドには少し時間がかかる。
必要なパッケージのインストール
$ sudo aptitude install build-essential patchutils libproc-processtable-perl l linux-headers-3.10-0.bpo.3-amd64
ビルド
$ cd /usr/local/src/ $ git clone git://linuxtv.org/media_build.git $ cd media_build $ ./build
インストール
$ sudo make install $ sudo make kernel-links #ヘッダーのインストール
事前準備は済んだのでドライバをインストールする。
ソースの取得
$ cd /usr/local/src/ $ git clone https://github.com/knight-rider/ptx.git $ cd ptx/pt3_dvb/
V4L-DVBからModule.symversをコピー
$ cp /usr/local/src/media_build/v4l/Module.symvers .
ビルド
$ make
インストール
$ sudo make install
ドライバモジュールのロード
$ sudo modprobe pt3_dvb
デバイスファイルの確認
$ ls /dev/dvb/ adapter0 adapter1 adapter2 adapter3
PT2のDVB版ドライバと同じように使えるが、デバイス番号が異なる。0,1が衛星波、2,3が地上波と、順番はChardev版と同じになる。
tuneコマンドやs2scanが付属しているのでビルドする。
tune.cのDTV_STREAM_IDをDTV_ISDBS_TS_IDに書き換える
$ vi tune.c $ git diff tune.c diff --git a/dvb_apps/cmds/tune.c b/dvb_apps/cmds/tune.c index 20178d0..a45ee08 100644 --- a/dvb_apps/cmds/tune.c +++ b/dvb_apps/cmds/tune.c @@ -100,7 +100,7 @@ static int search(int adapter_nr, int channel_id) prop[0].cmd = DTV_FREQUENCY; prop[0].u.data = channel->frequency; - prop[1].cmd = DTV_STREAM_ID; + prop[1].cmd = DTV_ISDBS_TS_ID; prop[1].u.data = channel->ts_id; prop[2].cmd = DTV_TUNE;
ビルド
$ make $ find . -perm +111 . ./restamp ./nitdump ./ptsdump ./tune ./dumpts ./dumpeid ./s2scan ./dumpts2
コマンドが生成される。コマンドの使い方やDVB版の使い方は以前の記事を参照。
予約機能が良くても、BSに対応できないとMythTVは導入できない。
PT3といえば、chardev版PT3の導入記事に/etc/modprobe.d/blacklist.confにearth-pt1を追加するように書いてあるのが気になる。earth-pt1はPT3には対応していないので、PT1/2を導入していない環境では効果が無い。
参考:
takaaki 11月 24th, 2013
Posted In: ハードウェア