Created: Nov 11, 2011
Updated: Apr 15, 2012

マニュアルがないと何もできない私が OneSeg24 for Linux と OneSeg24 for iPhone を入れたときの記録。

[epg.cgi]

追記:更新してマシになったこちらをご覧ください。
マニュアルがないと何もできない私が OneSeg24 for Linux サーバを構築するマニュアルを自分用に作ってみた。
http://www.eonet.ne.jp/~y-katow/OneSeg24forLinux-UOT-100-Ubuntu8.04LTS-Server.html

■目次
1. はじめに
2. Linux インストール
3. Linux 用 UOT-100 ドライバのインストール
4. ワンセグ録画ソフト(dvbstream)のインストール
5. Web サーバの設定(public_html で CGI)
6. ストリームサーバ(perlRTMP)のインストール
7. OneSeg24 for Linux のインストール
8. OneSeg24 for iPhone のインストール
9. 運用
10. トラブルシューティング
11. リファレンス


■1. はじめに
「24時間ワンセグ野郎」を知ったのはアナログ停波した2011年の夏のこと。
おもしろそうだなぁと、入手困難な UOT-100 を中古で何本か入手した。
「24時間ワンセグ野郎」Windows版を入れてみたものの、録画はできるが端末でうまく見れなかった。
また、「TVブログ」対応番組表はサービス停止で使えなくなっていた。

後追いで調べると、OneSeg24 は Linux が主流になっていて、
番組表はワンセグデータ内情報を SQL で直接扱うという確実な方法に変わっていた。
最新版はどこに公開されているかよく分からなかった。
とりあえず今も入手可能なものでマニュアルが完備しているものからやってみることにした。

私は FreeBSD をちょっとかじった程度で、Linux はほとんど分からないです。
どうしようもないことやってる可能性があります。ご指摘いただければ嬉しいです。

■参考のもとになったプロジェクト
OneSeg24 for Linux
http://code.google.com/p/oneseg24/
http://oneseg24.googlecode.com/files/OneSeg24forLinux_1.0.0.2.tar.gz


■2. Linux インストール
OneSeg24forLinux_1.0.0.2.tar.gz の driver/readme.txt には、
Fedora 8 (i386) で RPM を使ったカーネル再構築手順が書いてある。
マニュアルがないと何もできない私には、それ以外のディストリビューション・バージョンの OS では
手順がいろいろ変わっていてどう対応していいか分からないので、
書かれているとおりの Fedora 8 (i386) を入手した。
カーネルについても、手順に書いてある kernel-2.6.23.1-42.fc8.src.rpm 以外では
マニュアルがないと何もできない私には分からないエラーが出て対処できなかったので
アップデートは行わないことにした。

■Linux インストール準備
Fedora 8 は4年近く前のリリースなので、ミラーサイトにはどこにも置いてない。
本家のアーカイブにかろうじて残っていた。
http://archive.fedoraproject.org/pub/archive/fedora/linux/releases/8/Fedora/i386/iso/Fedora-8-i386-DVD.iso
さすがに torrent はシーダーがないのでまったく落ちなかった。遅いけどがまんして ftp でダウンロード。

Fedora-8-i386-DVD.iso を DVD-R に焼く。
マニュアルがないと何もできないので焼くソフトが分からない場合 → DeepBurner とかどうでしょう
ISOイメージファイルの焼き方、ISO形式のCD・DVDの作り方 - DeepBurner、CDBurnerXP、CD Manipulator
http://memorva.jp/internet/pc/iso_cd_dvd.php

気分的に、Windows とか入ってたディスクではどうなるか分からないので
MBR とパーティションテーブルをデータ消去したディスクにインストールする。
マニュアルがないと何もできないのでどうデータ消去したらいいか分からない場合 → DBANとかどうでしょう
@IT:Security Tips > ハードディスクの内容を安全に消去 - DBAN
http://www.atmarkit.co.jp/fsecurity/rensai/securitytips/024dban.html
起動後 "boot: " プロンプトで "autonuke" と打って、dwipe が開始されれば
ディスクの先頭にある MBR とパーティションテーブルは消えているだろうから、電源落としてOK.

■Linux インストール(Fedora 8)

Fedora-8-i386 の DVD-Rから起動
"Welcome to Fedora 8!"画面
"Install or upgrade an existing system"のまま
[Enter]を押す。または60秒待つ。

"Disc Found"画面
[Tab]で"Skip"を選択し、[Space]を押す。

"fedora"ロゴ画面
"Next"をクリック。

"What language"画面
"English (English)"のまま
"Next"をクリック。

"Select the appropriate keyboard for the system."画面
"japanese"を選択、"Next"をクリック。
"Warning"、"erasing ALL DATA?"ポップアップ
"Yes"をクリック。

"Select the drive(s) to use for this installation."画面
"Next"をクリック。
"Warning"、"ALL DATA"ポップアップ
"Yes"をクリック。

※IPアドレスは便宜上、192.168.1.14/24 とする。以下同様。
"Network Devices"画面
"Edit"ボタンをクリック。
"Edit Interface"画面
"Enable IPv4 support"、"Manual configuration"ラジオボタンをクリック
"IP Address"に192.168.1.14
"Prefix (Netmask)"に255.255.255.0
"Enable IPv6 support"チェックをはずす。
"OK"ボタンをクリック。
"Network Devices"画面
"Hostname"、"manually"にホスト名を入れる
"Gateway:"お使いのブロードバンドルータのIPアドレス
"Primary DNS:"お使いのブロードバンドルータのIPアドレス、またはプロバイダのプライマリDNSのIPアドレス
"Secondary DNS:"空、またはプロバイダのセカンダリDNSのIPアドレス
"Next"をクリック。

世界地図の画面
ドロップダウンで"Asia/Tokyo"を選択、
"System clock uses UTC"のチェックを外す。
"Next"をクリック。

"Root Password:"画面
適当に入力。
"Next"をクリック。

"+Add additional software repositories"画面
"Office and Productivity"のチェックを外す。
"Next"をクリック。

"Click next to begin"画面
"Next"をクリック。
30分くらい待つ。

"Congratulations,"画面
DVD-Rを取り出す。"Reboot"をクリック。
PCが再起動する。

"Welcome"画面
"Forward"をクリック。

"License Information"画面
"Forward"をクリック。

"Firewall"画面
"Firewall:"ドロップダウン
"Disabled"を選択、"Forward"をクリック。
"Are you sure"ポップアップ
"Yes"をクリック。
※ここでDisabled忘れても対応可能、後述。

"SELinux"画面
"SELinux Setting:"ドロップダウン
"Disabled"を選択、"Forward"をクリック。
"Are you sure"ポップアップ
"Yes"をクリック。
※ここでDisabled忘れても対応可能、後述。

"Date and Time"画面
日付と時刻を合わせる。
"Network Time Protocol"タブ
"Enable Network Time Protocol"チェックを入れる。
"Forward"をクリック。

"Hardware Profile"画面
"Forward"をクリック。
"Are you sure"ポップアップ
"No, do not send."をクリック。

※ユーザ名は便宜上、OneSeg24 とする。以下同様。
"Create User"画面
ユーザー名を"OneSeg24"とする。
他は適当に入力。
"Finish"をクリック。

"The system must now reboot"ポップアップ画面
"OK"をクリック。
PCが再起動する。


■3. Linux 用 UOT-100 ドライバのインストール
OneSeg24forLinux_1.0.0.2.tar.gz の driver/readme.txt を参考に。

■3.1 カーネルソースの準備
ログイン。

上Panelの"Security Updates Available"ポップアップ
無視して"x"で閉じておく。

上Panelの"Applications"、"Add/Remove Software"
"Query"ポップアップに root パスワードを入力。
"Package Manager"画面
"Insert CD"ポップアップ
Fedora-8-i386 の DVD-Rを挿入。
"OK"をクリック。
"Edit"、"Repositories"
"Repository Manager"画面で
"updates"のチェックを外す。
"Close"をクリックする。
"List"タブをクリック、
"rpmdevtools - 6.4-1.fc8.noarch"にチェックを入れる。
"yum-utils - 1.1.8-1.fc8.noarch"にチェックを入れる。
"Apply"をクリック。
"Package selections"ポップアップ
"Continue"をクリック。
"Dependencies"ポップアップ
"Continue"をクリック。
少し待つ。
"Software installation successful"ポップアップ
"OK"をクリック。
"File"、"Quit"で終了。

上Panelの"Application"、"System Tools"、"Terminal"
$ rpmdev-setuptree

kernel-2.6.23.1-42.fc8.src.rpm のダウンロード。
今も残している数少ないミラーサイトを探す。
Firefox を起動。
上Panelの"Applications"、"Internet"、"Firefox Web Browser"
http://rpm.pbone.net/index.php3/stat/26/dist/54/size/47838100/name/kernel-2.6.23.1-42.fc8.src.rpm
または、"kernel-2.6.23.1-42.fc8.src.rpm" で検索。
必ず "src" が付いているファイルをダウンロードすること。
ダウンロード後はホームディレクトリに移動しておく。

$ su
# yum-builddep kernel-2.6.23.1-42.fc8.src.rpm
# exit
$ rpm -Uvh kernel-2.6.23.1-42.fc8.src.rpm
ユーザが存在しないという警告が大量に出ますが無視して大丈夫らしいです。

$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp --target=`uname -m` kernel.spec
バッククォートとクォートを間違えないように。
しばらく待つ。

$ rpmbuild -bc --with baseonly --without debuginfo --target=`uname -m` kernel.spec
バッククォートとクォートを間違えないように。
少し待つ。
"Not enough random bytes available."の表示で止まるので、
マウスを適当に動かして[ENTER]を押すと、コンパイルが再開する。
90分くらい待つ。

■3.2 ドライバのコンパイル
FireFox を起動。
OneSeg24forLinux_1.0.0.2.tar.gz のダウンロード。
http://oneseg24.googlecode.com/files/OneSeg24forLinux_1.0.0.2.tar.gz
推奨されている uot100-0.1.tar.gz のダウンロード。
http://sourceforge.jp/projects/uot100/downloads/29431/uot100-0.1.tar.gz/
いずれもダウンロード後はホームディレクトリに移動しておく。

$ cd
$ tar xvzf OneSeg24forLinux_1.0.0.2.tar.gz
$ tar xvzf uot100-0.1.tar.gz
$ cp uot100-0.1/dvb-usb/* ~/rpmbuild/BUILD/kernel-2.6.23/linux-2.6.23.i686/drivers/media/dvb/dvb-usb/
$ cp uot100-0.1/frontends/* ~/rpmbuild/BUILD/kernel-2.6.23/linux-2.6.23.i686/drivers/media/dvb/frontends/

$ cd ~/rpmbuild/BUILD/kernel-2.6.23/linux-2.6.23.i686/drivers/media/dvb/dvb-usb/
$ mv Makefile Makefile.org
$ cat > Makefile

obj-m := uot100.o ROOTDIR := ../../../../ PWD := $(shell pwd) EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ default: $(MAKE) -C $(ROOTDIR) M=$(PWD) modules clean: rm -f *.o *.ko ^D $ patch < ~/OneSeg24forLinux_1.0.0.2/driver/uot100-usbhub.patch
$ patch < ~/OneSeg24forLinux_1.0.0.2/driver/uot100-tuning.patch
$ make

$ cd ~/rpmbuild/BUILD/kernel-2.6.23/linux-2.6.23.i686/drivers/media/dvb/frontends/
$ mv Makefile Makefile.org
$ cat > Makefile

obj-m := mtv211.o ROOTDIR := ../../../../ PWD := $(shell pwd) EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ default: $(MAKE) -C $(ROOTDIR) M=$(PWD) modules clean: rm -f *.o *.ko ^D $ make

UOT-100 を認識させる。
UOT-100 を挿す。
$ su -l
# cd ~OneSeg24/rpmbuild/BUILD/kernel-2.6.23/linux-2.6.23.i686/drivers/media/dvb
# modprobe dvb-usb
# insmod frontends/mtv211.ko
# insmod dvb-usb/uot100.ko

UOT-100 を認識する部分のスクリプトを作成する。
# cd
# cat > ~/uot100.sh
#!/bin/sh
cd /home/OneSeg24/rpmbuild/BUILD/kernel-2.6.23/linux-2.6.23.i686/drivers/media/dvb
/sbin/modprobe dvb-usb
/sbin/insmod frontends/mtv211.ko
/sbin/insmod dvb-usb/uot100.ko
^D
# chmod 755 ~/uot100.sh
# exit
$ cd


■4. ワンセグ録画ソフト(dvbstream)のインストール
dvbstream-0.5.tar.gz のダウンロード
FireFox を起動。
http://sourceforge.net/projects/dvbtools/files/dvbstream/dvbstream-0.5/dvbstream-0.5.tar.gz/download
ダウンロード後はホームディレクトリに移動しておく。

$ tar xvzf dvbstream-0.5.tar.gz
$ cd dvbstream-0.5
$ patch < ~/OneSeg24forLinux_1.0.0.2/driver/dvbstream.patch
$ make
$ su

make install が効かないので cp する。
# cp dvbstream /usr/local/bin
# chmod u+s /usr/local/bin/dvbstream
# exit
$ cd

dvbstream はチャンネルの選局を周波数で行います。
周波数の計算式は以下の通りです。
ch * 6000 + 395143 = 周波数

ch は以下ページで調べることができます。
UHF 地上波デジタル放送周波数
http://www.max.hi-ho.ne.jp/mishima/mk/dezitaru/channel.html

兵庫県の一例
ch22 NHK総合・神戸	527143
ch13 NHKEテレ大阪	473143
ch26 サンテレビ		551143
ch16 MBS毎日放送	491143
ch15 ABCテレビ	485143
ch18 テレビ大阪		503143
ch17 関西テレビ		497143
ch14 読売テレビ		479143

テレビ大阪で録画テストする例
$ dvbstream -c 0 -f `expr 18 \* 6000 + 395143` 8192 -o > test.ts
バッククォートとクォートを間違えないように。
延々録画するので、しばらくしたら ^C で止める。
できた test.ts が Windows機にて、以下 URL の TSConverter で MP4 に変換できるか確認する。
UOT-100/LOG-J200 用予約録画ソフト -24時間ワンセグ野郎派生ツール
http://theremin.hostoi.com/oneseg.htm
電波状況が悪いと ts のファイルサイズが 0 のままだったりする。
電波状況がよくないと ts ができても MP4 に変換できない場合がある。

[ミニヒューズフォルダー] アンテナは壁の端子から取る。
同軸ケーブルは太い 5C2V を使って引き回しは最小限に。
サーバは普段使わないからアンテナ端子のすぐそばに設置する。
UOT-100 にはミニヒューズホルダーで取り付けると外れにくい。
ちなみに共立電子で一個70円。送料定形外120円。

【共立エレショップ】eleshop.jp 基板型ミニヒューズホルダー[R指] 【パーツフロア】:電子部品,半導体,キットの通信販売
http://eleshop.jp/shop/g/g59S122/

複数チャンネル同時に録画するか確認する。
テレビ大阪とサンテレビで同時録画テストする例
$ dvbstream -c 0 -f `expr 18 \* 6000 + 395143` 8192 -o > test0.ts &
$ dvbstream -c 1 -f `expr 26 \* 6000 + 395143` 8192 -o > test1.ts &
延々録画するので、しばらくしたらどちらも kill で止める。
できた test[01].ts が Windows機の TSConverter で MP4 に変換できるか確認する。


■5. Web サーバの設定(public_html で CGI)

oneseg24/readme.txt によると、perlRTMP がいるようだ。

perlrtmp - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming
http://code.google.com/p/perlrtmp/
http://perlrtmp.googlecode.com/files/perlrtmp_1.0.1.1.tar.gz

この readme.txt を見ると、Flash プレーヤーが必要であり
JW FLV MEDIA PLAYER を推奨している。

■5.1 JW FLV MEDIA PLAYER をインストールした記録
(結果言うと入れなくてもよかったんだけど、perlRTMP のマニュアルではテストに使っているので入れとく)
perlrtmp_1.0.1.1.tar.gz の readme.txt で言及しているバージョンは JW FLV MEDIA PLAYER 4.2 だが、
現在は JW Player と名を変え、バージョンも 5.7 とかなり変わっている。
マニュアルと異なっていると困るので、"JW FLV MEDIA PLAYER 4.2" を検索して探す。
JW FLV Media Player 4.4 Download
http://download.fyxm.net/JW-FLV-14532.html
FireFox を起動。
mediaplayer.zip をダウンロードして、ホームディレクトリに展開しておく。

■5.2 Web サーバの設定(public_html で CGI)
oneseg24/readme.txt や perlRTMP の readme.txt によると
Web サーバ環境も必要なようなので設定する。
設定事項は、public_html と CGI。
テストページとして JW FLV MEDIA PLAYER の readme.html を使う。

$ chmod 711 ~
$ mkdir ~/public_html
$ chmod 755 ~/public_html
$ cp ~/mediaplayer/* ~/public_html
$ su -l
# cd /etc/httpd/conf
# mv httpd.conf httpd.conf.org
# cp httpd.conf.org httpd.conf
# vi httpd.conf 

変更箇所は以下4箇所
その1.(public_html)
UserDir disable

#UserDir disable

その2.(public_html)
#UserDir public_html

UserDir public_html

その3.(CGI)
#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi

その4.(CGI) #<Directory /home/*/public_html> ↓ <Directory /home/*/public_html> Options ExecCGI </Directory>

今 Web サーバを起動
# /etc/rc.d/init.d/httpd start

システム起動時に自動起動
# chkconfig httpd on

Web サーバ public_html テスト
他端末から
http://192.168.1.14/~OneSeg24/readme.html
を開いて "Player Example"が再生できることを確認する。

"403 Forbidden"が出る場合 → SELinux を Disabled し忘れている。
上Panelの"Application"、"System Tools"、"SELinux Management"
"Query"ポップアップに root パスワードを入力。
"SELinux Administration"画面
"System Default Enforcing Mode"ドロップダウン
"Disabled" を選択
"File"、"Quit"
DVD-R が入っていれば取り出す。
上Panelの"System"、"Shut Down..."
ポップアップにて"Restart"をクリック。
再起動後、他端末から
http://192.168.1.14/~OneSeg24/readme.html
を開いて"Player Example"が再生できることを確認する。


■6. ストリームサーバ(perlRTMP)のインストール

perlrtmp - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming
http://code.google.com/p/perlrtmp/

perlrtmp_1.0.1.1.tar.gz のダウンロード
FireFox を起動。
http://perlrtmp.googlecode.com/files/perlrtmp_1.0.1.1.tar.gz
ダウンロード後はホームディレクトリに移動しておく。

$ tar xvzf perlrtmp_1.0.1.1.tar.gz
この readme.txt に従う。

perl-Digest-SHA をインストールする。

上Panelの"Applications"、"Add/Remove Software"
"Query"ポップアップに root パスワードを入力。
"Package Manager"画面
"List"タブをクリック、
"perl-Digest-SHA - 5.44-6.fc8.i386"にチェックを入れる。
"Apply"をクリック。
"Package selsctions"ポップアップ
"Continue"をクリック。
"Import key?"ポップアップ
"Import key"をクリック。
"Software installation successful"ポップアップ
"OK"をクリック。
"File"、"Quit"で終了。

テストページの作成
$ cp test.ts ~/public_html
$ cd ~/public_html
$ cat > test.html

<html> <body> <script type='text/javascript' src='swfobject.js'></script> <div id='preview'>This div will be replaced</div> <script type='text/javascript'> var s1 = new SWFObject('player.swf','player','320','200','9','#ffffff'); s1.addParam('allowfullscreen','true'); s1.addParam('allowscriptaccess','always'); s1.addParam('wmode','opaque'); s1.addParam('flashvars','streamer=rtmp://192.168.1.14&file=test.ts.flv'); s1.write('preview'); </script> </body> </html> ^D $ cd ~/perlrtmp_1.0.1.1
$ perl server.pl ~/public_html &

ストリームサーバのテスト
他端末から
http://192.168.1.14/~OneSeg24/test.html
を開く。録画テストした動画が再生できることを確認する。
(上記 server.pl がバックグラウンドで動いている間だけだけどね)

再生ボタンを押すと "Server not found: rtmp://192.168.1.14" と出る場合 → Firewall を Disabled し忘れている。
$ su -l
今 Firewall を切る
# /etc/rc.d/init.d/iptables stop

システム起動時に自動起動しないようにする。
# chkconfig iptables off
# exit

他端末から
http://192.168.1.14/~OneSeg24/test.html
を開く。動画が再生できることを確認する。

perlRTMPを起動する部分のスクリプトを作成する。
$ su -l
# cat > ~/perlRTMP.sh
#!/bin/sh
cd /home/OneSeg24/perlrtmp_1.0.1.1
/usr/bin/perl server.pl /home/OneSeg24/OneSeg24forLinux_1.0.0.2/oneseg24/ts >/dev/null 2>&1 &
^D
# chmod 755 ~/perlRTMP.sh
stdout, stderr は捨ててるけど問題ないでしょう。
設定ディレクトリが違うので、上記テストページは見れないけど問題ないでしょう。


■7. OneSeg24 for Linux のインストール
OneSeg24forLinux_1.0.0.2.tar.gz の oneseg24/readme.txt を参考に。

SQLite のインストール

上Panelの"Applications"、"Add/Remove Software"
"Query"ポップアップに root パスワードを入力。
"Package Manager"画面
"List"タブをクリック、
"perl-DBD-SQLite - 1.12-2.fc8.1.i386"にチェックを入れる。
"perl-DBI - 1.58-2.fc8.i386"にチェックを入れる。
"sqlite - 3.4.2-3.fc8.i386"にチェックを入れる(すでに入ってるかも)。
"Apply"をクリック。
"Package selsctions"ポップアップ
"Continue"をクリック。
"Dependencies Added"ポップアップ
"Continue"をクリック。
"Insert CD"ポップアップ
Fedora-8-i386 の DVD-Rを挿入。
"OK"をクリック。
"Software installation successful"ポップアップ
"OK"をクリック。
"File"、"Quit"で終了。

チャンネルと放送局の設定をする。
$ cd OneSeg24forLinux_1.0.0.2/oneseg24
$ vi epg.sql
チャンネル部分を編集。

以下に兵庫県の例を挙げる。
insert into da_channel (dc_ch, dc_name) values (22, 'NHK総合・神戸');
insert into da_channel (dc_ch, dc_name) values (13, 'NHKEテレ');
insert into da_channel (dc_ch, dc_name) values (26, 'サンテレビ');
insert into da_channel (dc_ch, dc_name) values (16, 'MBS毎日放送');
insert into da_channel (dc_ch, dc_name) values (15, 'ABCテレビ');
insert into da_channel (dc_ch, dc_name) values (18, 'テレビ大阪');
insert into da_channel (dc_ch, dc_name) values (17, '関西テレビ');
insert into da_channel (dc_ch, dc_name) values (14, 'よみうりテレビ');

チャンネルの番号は前述のページを参照。
あるいは Windows で UOT-100 を起動して実際に確認する。
放送局名は iEPG 規格を作った SONY が運営している以下サイトから
コピペすれば確実かも。
テレビ番組表【Gガイド.テレビ王国】
http://tv.so-net.ne.jp/

$ cd ~/OneSeg24forLinux_1.0.0.2/oneseg24
$ sqlite3 epg.db '.read epg.sql'

録画スクリプト epg.pl、ts.pl
同一ディレクトリなので修正しなくてよい。

録画ディレクトリの作成
$ mkdir ts

CGI のテスト
$ cd ~/OneSeg24forLinux_1.0.0.2/public_html
$ cp -r ./* ~/public_html

他端末から
http://192.168.1.14/~OneSeg24/epg.cgi
を開く。
perlソースが出る画面か、"403 Forbidden" なら CGI 設定ができてない。
"500 Internal Server Error" なら CGI は動いているのでよしとする。

epg.cgi 修正
$ cd ~/public_html
$ vi epg.cgi
以下を修正
my $dsn = 'DBI:SQLite:dbname=../oneseg24/epg.db';

my $dsn = 'DBI:SQLite:dbname=/home/OneSeg24/OneSeg24forLinux_1.0.0.2/oneseg24/epg.db';

他端末から
http://192.168.1.14/~OneSeg24/epg.cgi
を開く。"OneSeg24 - timetable" が出れば正解。
"500 Internal Server Error" なら CGI 設定がおかしい。
/var/log/httpd/error_log とか /var/log/httpd/suexec.log とかを確認。
ありがちなこと → ~/public_html が 755 になっているか?

setup.cgi 修正
$ cd ~/public_html
$ vi setup.cgi
以下を修正
my $dsn = 'DBI:SQLite:dbname=../oneseg24/epg.db';

my $dsn = 'DBI:SQLite:dbname=/home/OneSeg24/OneSeg24forLinux_1.0.0.2/oneseg24/epg.db';

player.cgi 修正
$ cd ~/public_html
$ vi player.cgi
以下を修正
my $streamer = 'rtmp://192.168.xxx.xxx';

my $streamer = 'rtmp://192.168.1.14';

とりあえず兵庫県のアニメ局、サンテレビとテレビ大阪の例
$ cd ~/OneSeg24forLinux_1.0.0.2/oneseg24
$ ./ts.pl -c 0 -f `expr 26 \* 6000 + 395143` -h 26 -d ts &
$ ./ts.pl -c 1 -f `expr 18 \* 6000 + 395143` -h 18 -d ts &

録画する部分のスクリプトを作成する。
サンテレビとテレビ大阪の例
$ su -l
# cat > ~/oneseg24.sh
#!/bin/sh
cd /home/OneSeg24/OneSeg24forLinux_1.0.0.2/oneseg24
/usr/bin/perl ts.pl -c 0 -f 551143 -h 26 -d ts >/dev/null 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 1 -f 503143 -h 18 -d ts >/dev/null 2>&1 &
^D
# chmod 755 ~/oneseg24.sh
stdout, stderr は捨ててるけど問題ないでしょう。

チャンネル設定
ts.pl を走らせたあと30分程度待つ。
他端末から
http://192.168.1.14/~OneSeg24/setup.cgi
を開く。
ストリームごとの放送日時と番組名が表示されるので、
テレビ番組表などでストリームの放送局を確認し
プルダウンを選択して放送局と対応させる。
最後に「登録」ボタンをクリックして設定を保存する。

文字化けした長いページが表示されて設定どころじゃない場合は
$ cd ~/OneSeg24forLinux_1.0.0.2/oneseg24
$ cp /dev/null epg.db
$ sqlite3 epg.db '.read epg.sql'
として、しばらく待ったあと上記ページを再読み込みしてやりなおす。
5,6回やりなおすと落ち着く、ことがある。
ちゅーか、5,6回やらないとどうもならないことがある。

番組表表示
他端末から
http://192.168.1.14/~OneSeg24/epg.cgi
を開く。
番組名をクリックするとプレーヤー画面に移動する。
あとは楽しんでください。


■8. OneSeg24 for iPhone のインストール
OneSeg24foriPhone をダウンロード
http://oneseg24.googlecode.com/files/OneSeg24foriPhone.tar.gz
ダウンロード後はホームディレクトリに移動しておく。

$ tar xvzf OneSeg24foriPhone.tar.gz
$ cd OneSeg24foriPhone
$ cp -r lib *.cgi ~/public_html
$ cd ~/public_html
$ vi m3u8.cgi ts.cgi
両ファイル、以下を編集
my $dir = '/ts';

my $dir = '/home/OneSeg24/OneSeg24forLinux_1.0.0.2/oneseg24/ts';

テスト用ページを作成。(自信がある場合はやらなくてもよい)
年月日時とチャンネルは、既に録画して存在しているものを記入。
$ cat > iPhonetest.html

<html> <body> <a href="http://192.168.1.14/~OneSeg24/m3u8.cgi?111020-080000-095500-26">Play</a> </body> </html> ^D

iPhone から
http://192.168.1.14/~OneSeg24/iPhonetest.html
を開く。録画が再生できればOK。

[iPhone.cgi] iPhone 用番組表ページ作成
$ cd ~/public_html
$ cp epg.cgi iPhone.cgi
$ vi iPhone.cgi
以下を編集

$dp_title = "<a href=\"player.cgi?$link\">$dp_title</a>";<br> ↓<br> $dp_title = "<a href=\"m3u8.cgi?$link\">$dp_title</a>";<br>

iPhone から
http://192.168.1.14/~OneSeg24/iPhone.cgi
を開く。PC 同様の番組表が見れて、録画が再生できればOK。
あとは楽しんでください。


■9. 運用

システム起動時に、各処理を自動実行させる
$ su -l
# cd /etc/rc.d
# mv rc.local rc.local.org
# cp rc.local.org rc.local
# cat >> rc.local
/bin/sh /root/uot100.sh
/bin/sh /root/perlRTMP.sh
/bin/sh /root/oneseg24.sh
^D

1チャンネル一日で5GB程度消費するので容量を計算して
保持する日数を見積もっておく。

UOT-100 を買い増してチャンネルを追加する場合
~/OneSeg24forLinux_1.0.0.2/oneseg24/epg.sql を開き、チャンネル部分を編集。
/root/oneseg24.sh にエントリ追加。
チャンネルと放送局の設定。
$ cd ~/OneSeg24forLinux_1.0.0.2/oneseg24
$ cp /dev/null epg.db
$ sqlite3 epg.db '.read epg.sql'
30分くらい待ってから
http://192.168.1.14/~OneSeg24/setup.cgi
で全チャンネル設定しなおし。


■10. トラブルシューティング 録れないチャンネルがあるときは、
/root/oneseg24.sh にてそれを一番最初にするとなんとかなる場合がある。

ts 下にストリームが録れてなくても、
ts.pl が 10分のインターバルで dvbstream を再起動するので
10分くらい待ってみる。


■11. リファレンス

OneSeg24 for Linux
http://code.google.com/p/oneseg24/

UOT-100 driver for Linux Project Top Page - SourceForge.JP
http://sourceforge.jp/projects/uot100/

DVB tools | Free software downloads at SourceForge.net
http://sourceforge.net/projects/dvbtools/

perlrtmp - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming
http://code.google.com/p/perlrtmp/


y-katow web home
y-katow@iris.eonet.ne.jp