PandaBoardでワンセグ野郎

台風の影響で早く帰宅したので、いよいよ試したかったことをやってみました。

それは・・・

これだ!

PandaBoardでワンセグ野郎!!
PandaBoard でワンセグ野郎!!

Atom で行けるなら、Cortex-A9 1GHz Dual でもなんとかなるんじゃないかと。

PandaBoard は安くて高性能だったの勢いで買ってしまったんですが、使い道がなくて・・・。

で、早速 PandaBoard で試してみました。

クロスコンパイルは面倒なので PandaBoard でセルフコンパイルしました。Ubuntu だと Linux PC と同じように apt でツールチェーンやライブラリをインストールできるのでセルフコンパイルもラクラクです。

コンパイルの手順ですが、昨日の手順では一部間違えていたので、エントリの最後に書き直しました。

 

ビルドしたドライバを insmod して、dvbstream (前回と同じ手順でビルド) を使うと・・・ちゃんと TS が受信できました!!

懸念していた CPU パワーですが、dvbstream の出力を /dev/null に捨てるような以下のコマンドで負荷を測ってみると・・・

$ sudo ./dvbstream-0.5/dvbstream -c 0 -f `expr 21 \* 6000 + 395143` 8192 -o > /dev/null &
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0 847340  10104  36456    0    0     2     0   45   12  0  0 100  0
 1  0      0 847324  10104  36456    0    0     0     0  458  588  0  1 99  0
 0  0      0 847324  10104  36456    0    0     0     0  432  571  0  0 100  0
 0  0      0 847324  10104  36456    0    0     0     0  425  571  0  0 100  0
 0  0      0 847324  10104  36456    0    0     0     0  426  568  0  0 100  0
 0  0      0 847324  10104  36456    0    0     0     0  432  570  0  0 100  0
 0  0      0 847324  10104  36456    0    0     0     0  429  567  0  0 100  0
 0  0      0 847324  10104  36456    0    0     0     0  424  573  0  0 100  0
 0  0      0 847324  10104  36456    0    0     0     0  425  568  0  0 100  0

ほとんど無負荷状態?なのかな?

top コマンドでみると、dvbstream が 1% 程度使用しているようなので、合ってそうな雰囲気。

これに ts.pl ではなく、ぱぱネットさんの dumpeit を使えば、デコード&ファイル保存は CPU パワー的には何とかなりそう。

残りの懸念は、HDD。PandaBoard には SATA がないので USB で HDD に書くしかない・・・遅そうだなぁ。

ぱぱネットさんのブログにはHDD がボトルネックかもといった話もあったからなぁ・・・。

 

UOT-100(LOG-J100)用ドライバのビルド手順

昨日のブログの手順は PandaBoard で再度試したら結構間違っている部分があったり、PandaBoard では時間がかかりすぎる部分があったので、再度 LOG-J100 用のドライバの作り方を書いておきます。

PandaBoard でも、Ubuntu 11.04 (画面不要の Headless版) をインストール後、以下の手順でビルドできます。

まず、ツールチェーンと kernel source をインストール

$ sudo apt-get install build-essential linux-source-`unamr -r`

前回は apt-get build-dep linux-image-`uname -r` を実行しましたが、ダウンロードに時間がかかりますし、上記で十分です。

作業ディレクトリを作成

$ mkdir -p ~/project/oneseg
$ cd ~/project/oneseg

ダウンロードディレクトリを作成し、そこに UOT-100 用ドライバと LOG-J200 用ドライバのソースをダウンロードします。

$ mkdir file
$ cd file
$ wget http://linux.papa.to/image/logj200_linux_20090126.tar.gz
$ wget http://jaist.dl.sourceforge.jp/uot100/29431/uot100-0.1.tar.gz
$ cd ..

ダウンロードしたドライバソースと kernel を展開

$ mkdir logj200
$ tar xf file/logj200_linux_20090126.tar.gz -C logj200
$ tar xf file/uot100-0.1.tar.gz
$ tar xf /usr/src/linux-source-2.6.38.tar.bz2

UOT-100 のドライバに LOG-J200 のパッチを当てます。

$ cd uot100-0.1/dvb-usb
$ patch -p0 < ../../logj200/uot100-logj200.0.3.patch
$ cd ..

dvb-usb/uot100.c の先頭付近にある #define ENABLE_LOGJ200 をコメントアウトします。

$ vi dvb-usb/uot100.c
...hack!hack!...

カーネルソースから必要なヘッダを uot100-0.1/include にコピーしてきます。

$ mkdir include
$ cp ../linux-source-2.6.38/drivers/media/dvb/{dvb-core,dvb-usb,frontends}/*.h include/

Makefile をつくります。

$ echo 'EXTRA_CFLAGS += -I$(src)/../include -I$(src)/../frontends' > dvb-usb/Makefile
$ echo 'obj-m := uot100.o' >> dvb-usb/Makefile
$ echo 'EXTRA_CFLAGS += -I$(src)/../include -I$(src)/../frontends' > frontends/Makefile
$ echo 'obj-m := mtv211.o' >> frontends/Makefile

ビルドします。

$ make -C /lib/modules/`uname -r`/build M=`pwd`/dvb-usb modules
$ make -C /lib/modules/`uname -r`/build M=`pwd`/frontends modules

これでビルド完了です。

使うときは

$ sudo modprobe dvb-usb
$ sudo insmod dvb-usb/uot100.ko
$ sudo insmod frontends/mtv211.ko

です。あとは dvbstream で受信できます。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です