Linuxでワンセグ録画 その2 (LOG-J200用ドライバのビルド)

前回の続きです。

さて、高値で買ったLOG-J200ですが、Linux のドライバがぱぱネット(仮)さんによって開発されています。これを Ubuntu 11.04 (linux-2.6.38 64bit)の環境で動かそうと思います。

64bitというのがクセモノっぽそうな気がしますが・・・まぁ、やるだけやってみましょう。

ぱぱネット(仮)さんのこのページから kernel-2.6.26 用 LOG-J200ドライバ(パッチ)をダウンロードできます。(logj200_linux_20090126.tar.gz)

ただ、このドライバはUOT-100用のドライバに対するパッチなので、pu2008さん作のUOT-100のドライバ(uot100-0.1.tar.gz)も必要です。README には最低限の事しか書いていないので、Wiki上の説明とlogj200_linux_20090126.tar.gz内の readme.txt を参考にパッチを当てていきます。

まずは ubuntu で使われている kernel をダウンロードします。

$ sudo apt-get install linux-source-2.6.38

あ、gcc など、kernelのビルドに必要なパッケージはあらかじめ入れておいてください。

適当な作業ディレクトリを作り、その下に kernel を展開します。私は ~/project/oneseg で作業することにしました。

$ mkdir -p ~/project/oneseg
$ cd ~/project/oneseg
$ tar xf  /usr/src/linux-source-2.6.38.tar.bz2

UOT-100のドライバとLOG-J200のドライバを ~/project/oneseg/file にダウンロードして展開します。

$ cd ~/project/oneseg
$ 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 ..
$ tar xf file/logj200_linux_20090126.tar.gz
$ tar xf file/uot100-0.1.tar.gz

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

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

パッチを当てたLOG-J200のドライバを linux kernel へコピーし、Makefileに追加します。

$ cd ~/project/oneseg/linux-source-2.6.28/drivers/media/dvb/
$ cp ~/project/oneseg/uot100-0.1/dvb-usb/* dvb-usb/
$ cp ~/project/oneseg/uot100-0.1/frontends/* frontends/
$ echo dvb-usb-uot100-objs = uot100.o >> dvb-usb/Makefile
$ echo obj-m += dvb-usb-uot100.o >> dvb-usb/Makefile
$ echo obj-m += mtv211.o >> frontends/Makefile

パッチ形式になってないので少し面倒ですね。たぶんカーネルバージョンによらず適用できるようにしたためだと思います。

さて、カーネルツリーにドライバを組み込めたのでUbuntu の config を読み込ませてビルドします。

$ cd ~/project/oneseg/linux-source-2.6.28/
$ cp /boot/config-2.6.38-8-generic .config
$ make ARCH=x86_64 oldconfig
$ make ARCH=x86_64 bzImage -j5
$ make ARCH=x86_64 M=`pwd`/drivers/media/dvb modules

make bzImage は時間がかかります。 -j オプションはCPUの数に応じてお好みで変更してください。

LOG-J200のドライバは kernel-2.6.26用だったんですが、kernel-2.6.38 でも特にエラーも出ずにビルドできました。

logj200のドライバの readme.txt では deb パッケージ作ってインストールしていますが、実験レベルなので、debパッケージまでにはせず、個別に insmod することにします。

以下のコマンドでドライバをロードします。

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

これでドライバのロードが完了。LOG-J200をUSBポートに挿して、認識されているかログを確認します。

$ dmesg | tail
.....省略.....
[29046.439076] usb 2-1.1: new full speed USB device using ehci_hcd and address 9
[29046.552054] dvb-usb: found a 'LOGFARM LOG-J200' in warm state.
[29046.552130] dvb-usb: will use the device's hardware PID filter (table count: 16).
[29046.552456] DVB: registering new adapter (LOGFARM LOG-J200)
[29050.956459] DVB: registering adapter 0 frontend 70998304 (MTV211)...
[29050.957307] dvb-usb: LOGFARM LOG-J200 successfully initialized and connected.

こんな感じでログが出ていればOKです。

今日はここまで。次回は dvbstream を使ってワンセグTSを抜き出します。

コメントする

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