アンテナ線の分配

PandaBoard でワンセグが受信できたので複数Ch同時受信を試してみたんですが、色々と問題があってうまくいきませんでした。

うまくいかなかった原因は大きく3つありました。

  1. チューナーの認識の問題
    7つのチューナーが繋げった状態のハブをPandaBoardに繋げると1つも認識しない。
    先にハブをPandaBoardに接続してから1つずつ差していけば認識する。
  2. ハブ経由での受信の問題
    ドライバの SEND_WAIT パラメータをいじると動いたり動かなかったり
  3. アンテナ線分配の問題
    ワニグチクリップでの分配では受信できなかった。

1と2はドライバをいじって試行錯誤すればなんとかなりそうですが、3はもう少しちゃんと対策しないと受信テストすらできないので、ここから着手することにしました。

ということで、昨日秋葉原に買出しに行っていろいろ買ってきました。

8分配器とFコネクタ 
8分配器とFコネクタ

上の写真は8分配器とFコネクタです。どちらも千石電商で¥600と¥80でした。 

ハードも高周波もズブの素人なのでよくわからないのですが、LOG-J100は受信感度が悪いので、真面目に分配してあげると改善するかなぁと。あと、8分配ってかなりのタコ足なので少しでも損失を減らせればという思惑もあります。

 後は1.5C 75Ωの同軸ケーブル(千石電商 ¥80/1m)、4Φ, 7Φの熱収縮チューブ (千石電商 各¥60(/1m?)) などを買ってきました。

LOG-J100 ではアンテナ端子がないので、ロッドアンテナに熱収縮チューブでアンテナ線を固定する方法で試してみました。 

LOG-J100のロッドアンテナに熱収縮チューブで接続
LOG-J100のロッドアンテナに熱収縮チューブで接続 

まぁ、なんというか、わざわざ8分配器で分配する意味も、75Ωの同軸ケーブルで伝送する意味も全て吹き飛ばしてしまいそうな接続方法です。

本当は分解してアンテナ端子にハンダ付けするのがいいんでしょうけど、失敗したらオークションで売るかもしれない(セコい・・^^;)ので、分解せずに試せる方法にしてみました。

受信させてみたところ、一応、ちゃんと接続できているようです。 

これを7つ作るんですが、作るのに結構時間がかかるのでまだ作成中です。完成したらまた報告します。

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 で受信できます。

Linuxでワンセグ録画 その4 (LOG-J100Mの巻)

前回のsiano製チューナーの後もTS抜きができるワンセグチューナーをずっと待ってたんですが、なんと昔売られていた LOG-J100M がアウトレットとして売りに出されていると知り、早速買ってしまいました。

売っているのは、電脳売王さんのこのページです。今日(9/19)の時点ではまだ在庫あるようですね。 

で、届きました。

LOG-J100M届きました 
LOG-J100M届きました

LOG-J100は Linux での動作報告があったのですが、LOG-J100Mは動作報告がなくて不安でしたが、LOG-J100用のドライバであっさり動いてしまいました。

ただ、感度がかなり悪いですね・・・。siano製とか LOG-J200 ではアンテナ線を近づけるだけで受信できたのですが、LOG-J100Mでは接触させないと受信できませんでした。

忘れないように Ubuntu でのドライバの作り方をメモしておきます。

————-2011/09/21追記—————-

下記手順が一部間違っていたので新しい手順をこちらのブログに書いています。

下記はあまり参考にしないでください。

————-2011/09/21追記—————-

 

まず、kernel ビルドに必要なパッケージをインストールします。

$ sudo apt-get build-dep --no-install-recommends linux-image-`uname -r`

そして、kernelソースを取得します。

$ sudo apt-get source linux-image-`uname -r`

UOT-100/LOG-J100 用のドライバを http://sourceforge.jp/projects/uot100/ からダウンロードします。今ダウンロードできるのは LOG-J200 用の修正も入っているもののようです。

$ tar xf uot100-0.1.tar.gz 

一度 kernel をビルドします。

$ cd linux-2.6.28
$ AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic

結構時間がかかります。

ビルドが終わったらドライバをカーネルツリーにコピーして、Makefileに追加します。

$ cp ../uot100-0.1/dvb-usb/* drivers/media/dvb/dvb-usb/
$ cp ../uot100-0.1/frontends/* drivers/media/dvb/frontends/
$ cp /boot/config-2.6.38-11-generic .config
$ echo "obj-m += uot100.o" >> drivers/media/dvb/dvb-usb/Makefile
$ echo "obj-m += mtv211.o" >> drivers/media/dvb/frontends/Makefile

また、drivers/media/dvb/dvb-usb/uot100.c を変更して、 先頭の方の #define ENABLE_LOGJ200 をコメントアウトします。

そして、モジュールをビルドします。

$ make ARCH=x86_64 CROSS_COMPILE= EXTRAVERSION=-11-generic CONFIG_DEBUG_SECTION_MISMATCH=y SUBLEVEL=38 KBUILD_BUILD_VERSION="48" LOCALVERSION= localver-extra= M=`pwd`/drivers/media/dvb/ -j2 modules

これでモジュールのビルドが完了です。

使う場合は以下のようにロードします。 

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

これで dvbstream + mplayer を使えばワンセグを視聴できます。

やっとワンセグ野郎が実現できる・・・ 

radiko player-0.2.1 リリース

radiko player 0.2.1 をリリースします。

kanon さん、ブースカさんから報告を受けてバグを直しました。 バグバグな radiko player を出してしまってすいません(^^;

凡ミスでNHK第一しか聴けなかったんですが、NHK第二、NHK-FMも聞けることを確認しました。

kanon さんからGUIが不安定というか挙動不審との報告があったので、思いついたところを直してみましたが、直ってるかどうか・・。 

あと、radiko-chlist.txtのリンクも切れていてミスばっかりだったのですが、懲りずに試して報告いただけると助かります。

radiko-chlist.txt の説明を書いていなかったのでちょっとだけ説明を。ファイルの中身は以下のようになっています。

NHK第一,/opt/QtPalmtop/share/radiko/nhk1.sh
NHK第二,/opt/QtPalmtop/share/radiko/nhk2.sh
NHK-FM,/opt/QtPalmtop/share/radiko/nhk-fm.sh

ただ単にcsv形式で局名とコマンドを列挙しているだけです。

なので、再生するスクリプトやコマンドなりが作れれば簡単に局を追加することが可能です。

いろんな海外のネットラジオなども聞けるかもしれないですね。 

例えば、マイケルジャクソンの曲が聞けるここを聴くなら阿川さんのmplayerを入れて radiko-chlist.txt に

Michael Jackson,mplayer http://server-usa4.radioseninternetuy.com:9526

を追加すれば聴けるようになります。

radiko player-0.2.0 リリース

radiko playerの新版をリリースします。

・・・といっても radiko は聴けません (汗

面倒なので名前は変えていませんが、NHKの「らじる★らじる」 の3局(NHK第一、NHK第二、NHK-FM)を聴くことができます。

今回の GUI では、局と実行コマンドの対応リストを外部ファイル /home/zaurus/Settings/radiko-chlist.txt から読むようにしました。そのため、自由に局の追加をすることができます。 

阿川さんの mplayer をインストールして、このradiko-chlist.txtで上書きすることで「サイマルラジオ」の 83 局も聴くことができます。全部は試していないので聴けないものもあるかもしれませんが。 

radiko player-0.2.0 
サイマルラジオ用のリストに差し替えた画面

GUIは相変わらず手抜きのままです ^^; 

本当は、サイマルラジオもデフォルトで聞けるようにしたかったんですが、普通に mplayer をビルドすると WMAv2 のデコードが重くて聴けなかったので、阿川さんの mplayer の力を借りてしまいました。

局リストを設定ファイルに追い出したので、再生するコマンド or スクリプトを用意出来れば何でも聴けます。要するに完全にランチャーなんですね。GUI はコマンドを実行するだけ。実際の再生はすべて外部コマンドまかせです。

# radikoだって・・・。 

久しぶりに zaurus を触ったので色々忘れてました・・・。スクリーンショットのとり方とか、qpe-embeddedkonsole で複数 shell の開き方とかペーストの仕方とか・・・。