2009年04月29日

lenny で24時間ワンセグ野郎(その4)

今回は EPG 番組データを地方に合わせる方法。と言ってもいじるのは define.pl だけ。

define.pl を開き、以下の行を編集。

# IEPG用の設定、必要な物は、適当に追加すること。
# チャンネル: 放送局名(カンマ区切で複数指定可)
@iepg_chan = (
"24:NHK総合,NHK総合,NHK,NHK",
"13:NHK教育,NHK教育",
"15:日本テレビ",
"21:TBSテレビ,TBSテレビ,TBS,TBS",
"27:フジテレビ",
"17:テレビ朝日",
"18:テレビ東京"
"20:MXテレビ,MXテレビ"
);

チャンネルはすぐに分かると思うが、放送局名は一字一句間違えてもいけない。放送局名の調べ方は、 http://tv.nikkansports.com/ で自分の住んでいるところのページを開き、各番組内の EPG データをクリックして .php ファイルをローカルに保存。中を見ると、

-----
Content-type: application/x-tv-program-info; charset=shift_jis
version: 1
station: NHK
year: 2009
month: 04
date: 29
start: 08:35
end: 11:39
以下略
-----

となっている。この station: にある放送局名を使えばよい。私の環境では以下のようになった。

# IEPG用の設定、必要な物は、適当に追加すること。
# チャンネル: 放送局名(カンマ区切で複数指定可)
@iepg_chan = (
"24:NHK総合,NHK総合,NHK,NHK",
"13:NHK教育,NHK教育",
"15:日本テレビ,RNC,西日本放送",
"21:TBSテレビ,TBSテレビ,TBS,TBS,KSB,山陽放送",
"27:フジテレビ,OHK,岡山放送",
"17:テレビ朝日,RSK,瀬戸内海放送",
"18:テレビ東京,TSCテレビせとうち"
#"20:MXテレビ,MXテレビ"
);

こんだけ。ここまでくれば、かなり快適に24時間ワンセグ野郎が使えるようになってるはず。お試しあれ。

lenny で24時間ワンセグ野郎(その3)

今日はいよいよ再生部分について構築を行おうと思う。

http://www.telnet.jp/~mia/sb/sb.cgi?cid=5 から player.pl差し替え版をとってくる。

各 perl ファイルの先頭の1行を環境に合わせて編集。たとえば、以下のようにする。

#!/perl/bin/perl^M

#!/usr/bin/perl

http://code.google.com/p/perlrtmp/downloads/list から segwrapper を拾ってきて、同じディレクトリに配置。 define.pl の $BaseDir を環境に合わせて書き直す。

また、必要な perl モジュールを以下のようにしてインストールする。

# apt-get install libtime-modules-perl
# apt-get install liblwp-useragent-determined-perl
# apt-get install libjcode-perl

以下の Win32 関係の行をコメントアウト。

use Time::Local;^M
use LWP::UserAgent;^M
#use Win32::Process;^M
#use Win32;^M
$packet_size = 4096;^M

また、親ディレクトリ上に cache ディレクトリも作ってやる。

% mkdir ../cache

このディレクトリを www 上に公開して、 CGI を実行できるようにする。そうすると、 www 上から、指定したディレクトリで東京の番組表が見えるようになる。地域によっては以下の操作で番組も閲覧できる。

http://code.google.com/p/perlrtmp/downloads/list から perlrtmp を拾ってくる。そして、
% server.pl ~/ts
(注)番組の再生がおわったら、このコマンドの終了は Ctrl+C 。

これだけ。ただ、地域ごとのチャンネルあわせを行ってやらないと別のチャンネルが見えてしまったり、まったく写らなかったりするはず。次は地域ごとの番組表の設定を行いたいと思う。

2009年04月28日

lenny で24時間ワンセグ野郎(その2)

続き。今日は録画サーバの構築について。

録画サーバは 1ch につき、ひとつの ts.pl で行う。配布されている ts.pl はワンセグデータから EPG データを引っこ抜いて番組表を構築するという優れものだけれど、私にはそこまで使いこなせないので、番組表は Web から取ってくることに。

まず、以下の行のパスを環境に合わせて変更。

my $dvbstream = '/usr/local/bin/dvbstream';

次に、 EPG データを記録しないよう、以下の行をコメントアウト。

my @programs = (
        './rec.pl',
#       './epg.pl',
);

そして、以下のようにして録画が始まれば、OK。ここでエラーが出るようなら、修正しておくべし。

./ts.pl -c 0 -f 521143 -h 21 -d ts/

で、今度は ts.pl をチャンネル分立ち上げるスクリプトを作成する。
周波数 = ch * 6000 + 395143
らしいので、 http://www.denpa-data.com/denpadata/index.htm のデジタルテレビ編を見ながら、デバイス番号、周波数、チャンネルをオプションに並べる。私の環境では以下のようになった。

#!/bin/sh

./ts.pl -c 0 -f 473143 -h 13 -d /home/tam/ts/ &

sleep 3
./ts.pl -c 1 -f 485143 -h 15 -d /home/tam/ts/ &

sleep 3
./ts.pl -c 2 -f 497143 -h 17 -d /home/tam/ts/ &

sleep 3
./ts.pl -c 3 -f 503143 -h 18 -d /home/tam/ts/ &

sleep 3
./ts.pl -c 4 -f 521143 -h 21 -d /home/tam/ts/ &

sleep 3
./ts.pl -c 5 -f 539143 -h 24 -d /home/tam/ts/ &

sleep 3
./ts.pl -c 6 -f 557143 -h 27 -d /home/tam/ts/ &

これで起動すれば、OK。ただ、このままだと、古いデータが消えないため、いつかは HDD がパンクする。なので、以下のような cron スクリプトを組んで解決。

#!/bin/sh

find ~tam/ts/ -ctime 7 -exec rm -f {} ;

今日は簡単だけども、これまで。

2009年04月26日

lenny で24時間ワンセグ野郎(その1)

24時間わんせぐ野郎については http://mobilehackerz.jp/contents/OneSeg24 を参考にしてください。

もともと Windows 用のソフトだけど、 Linux 用のドライバも開発されてて、なんとなくできるんじゃないかな、という雰囲気の中、きちんと整理してくれる人が現れ、今に至ります。

というわけで、先人たちの知恵をまとめるだけだけど、 http://code.google.com/p/oneseg24/ からファイルをダウンロード、展開。

http://sourceforge.jp/projects/uot100/ からLinux用デバイスドライバをダウンロード、展開。

ドライバをビルドする前に、一旦カーネルのビルドを行う。
# apt-get install linux-source-2.6.26
# cd /usr/src
# tar xvfj linux-source-2.6.26.tar.bz2
# cd linux-source-2.6.26
# make oldconfig
# make

dvb-usb ディレクトリで
% patch < uot100-usbhub.patch
% patch < uot100-tuning.patch
上のディレクトリに戻って、
# cp dvb-usb/uot100.* /usr/src/linux-source-2.6.26/drivers/media/dvb/dvb-usb/
# cp frontends/mtv211.* /usr/src/linux-source-2.6.26/drivers/media/dvb/frontends/

カーネルソースの中の dvb-usb にもぐって、 uot100.c を開いて、以下のように編集。
先頭のほう
-----
#include "mt352.h"

DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

static int umt_mt352_demod_init(struct dvb_frontend *fe)
-----

中ほど目
-----
        if (0 == dvb_usb_device_init(intf, &umt_properties,
                                     THIS_MODULE, NULL, adapter_nr))
                return 0;
-----

以上2点。そして、 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
-----

# make

次に、 frontend の中にもぐって、 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
-----

# make


これでドライバは出来上がり。試しにロードする場合には、 /usr/src/linux-source-2.6.26/drivers/media/dvb ディレクトリで

# modprobe dvb-usb
# insmod frontends/mtv211.ko
# insmod dvb-usb/uot100.ko


次に dvbstream の作成。

http://jaist.dl.sourceforge.net/sourceforge/dvbtools/dvbstream-0.5.tar.gz からダウンロード、展開。 dvbstream-0.5 ディレクトリで

% patch < dvbstream.patch
% make


これで、ドライバ関係は完了。続きは後日。

2009年04月09日

VAIO type P(VGN-P70H, VGN-P80H)でいたわり充電モード

御多分にもれずに買っちゃいました、 VAIO type P 。なぜか P70H と P80H の2台も。

いろんなところで絶賛されてるので、ここでは「いたわり充電モード」について。

バッテリーを毎回満充電してるとバッテリーが痛んでくるので、このモードで充電すると、 80% ないしは 50% にまでしか充電しないように設定してくれるのだ。

設定の仕方は「VAIO の設定」→電源・バッテリー→充電モードで設定できる。ただ、バッテリーを外していると、このモード自体が表示されないので注意。

auone メールで IMAP

Gmail で使えてる IMAP が auone メールでは使えなくて、所詮ガラパゴスだとあきらめてました。が!やっと au も必要性がわかったようで、使えるようになりました。

まずは PC から設定を開き、 IMAP を有効にしてパスワードを設定します。

次に、 IMAP クライアントから「SSL」 で 「imap.gmail.com」に接続、アカウントを「ooo@auone.jp」とすれば万事OK。


しかし、最初っから使えるようにしてくれるべきだと思いました。

日本語キーボードで coLinux(debian)

coLinux は大変便利に使わせて頂いているのだが、コンソールが英語キーボードになっているのが難点。でも、 debian であれば以下のようにすれば一発解決。

まず、

# apt-get install console-common

して、インストール。その際に qwerty -> Japanese を選ぶ。

これだけ。すでにインストールされてる場合には、

# install-keymap /usr/share/keymaps/i386/qwerty/jp106.kmap.gz

としてもOK。実に簡単。