SEG CLIP mobileを起点にブラジル地デジ(ISDB-TB)関連機器を調べてみたらおもしろかった


うちの風呂にはアナログ液晶TVがついている給湯器なんですが、映り具合が大変悲惨な感じになってきた。(デジアナ変換前からですが)
試しにauのAndroid端末 IS01のワンセグが風呂で使えるかを試してみたところ、チャンネルによっては映ることがある、という程度の電波状況だった。

じゃぁ、ということで代替策探し。

IO DATAのSEG CLIP mobile (GV-SC500/AI)ってどんな感じだろう?と調べていると、興味深い記述をいろいろ発見。

まぁ、iPhone向けのGV-SC500/IPレビューなんですが「AmazonのVG-SC500/IPのレビューに「2台必要だったので、SEG CLIP mobileとeSeg TVを買ってみたら、中身同じっぽい。しかもeSeg TVのが感度がいいんだけど(内容の要約)」といった記述を発見。

へ~、と思って、eSeg TV関連を調べてみる。
bitbay.comのeSeg TVが製品ページ。

現状の価格をAmazonで比較すると、「VG-SC500/IP : 6044円(iPhone用)GV-SC500/AI : 6631円(iPhone/Android用)BIT-ESEGTV : 8708円(iPhone/PC用)といった感じ。

eSeg TVのページに掲載されているマニュアルを読むと興味深い。

iPhone上のアプリのスクリーンキャプチャと、それに帯する説明書きの記述が異なっている。

Wi-Fiのアクセスポイント名: 「iSEExxxxxxxxx」と「eSEGxxxxxxxxx」
アプリのアイコン名: 「iSeePlus」と「eSeg TV」
 (ちなみに他にインストールされているアプリのアイコン表記が中国語)
TVチャンネルスキャン時の例:「CH16 Globo 1Seg」
EPG(番組表)のチャンネル名: 「TV GLOBINHO」「GLOBO ESPORTE」とか
PC用アプリの設定画面で選択されている国名: 「Brazil」

TV GLOBINHOはブラジルのテレビ局のようですし、ブラジル(=ISDB-TB/SBTVD)向け製品の日本対応みたいですね。

過去のブラジル地デジ関連記事: ワンセグ対応の中華padについて(2011/07/06) Ginga-NCLとGinga-J(2011/11/14)

ちなみにSEG CLIP mobileのマニュアルのスクリーンキャプチャは非実在TV局に置き換えられていました。
・MGL携帯2
・MGL携帯H
・桜田テレビ
・示野放送
・香林坊テレビ
・東山ワンセグ
って^^;;;

で、OEM元は何なのかを捜索。

ebayで「SBTVD」とか「ISDB-TB」などを検索すると、いくつかブラジル地デジ関連のものが出てくる。

例えば、「ISDB-T ISDB-TB Brazil HDTV Tuner Mini USB TV Dongle New」とか

メーカと型番: Mygica S119
InputTerminal: 75OhmIECConnector
ReceiveFrequency: TV48.25~863.25MHz
FullyISDB-T1SegCompliant
Guardinterval: 1/4,1/8(Mode2);1/4,1/8,1/16(mode3)
Encodingandcodingrate: 1/2,2/3(QPSK);1/2(16QAM)
Interleave: 2,4,and8(Mode2);1,2and4(Mode3)
Bandwidth: 6MHz
Engine: Software
Streamcapture: PES&TS
A/VFormat
VideoFormat:mpg-IIMainProfile&MainLevel/H.264
AudioFormat:mpg-IIAudioLayerI&II/AAC

書いてあるスペック的には大変興味深い。

「It supports both windows and Linux driver.」なんて記述もあるし。

「Mygica S119」といワードで探すと、「MyGica S119 ISDB-T」というページが出てきて、そこのリンクからMyGica公式に到達。

MyGica自体はDVB-T(欧米地デジ)と、ISDB-T(日ブラジル地デジ)の両方販売しているようだ。

メーカ公式のMyGica S119のスペックを見ると、さらに興味深い。
「It supports both windows and Linux driver. Linux driver available, Android 2.2 driver coming soon ! 」
Android 2.2用ドライバというのは、おそらく同社のAndroid TV Box向けなんだろうな、と想定。

実際、関連を調べていくと、Geniatchという会社でpcok.tvというドメインにあるAndroid TVのページに以下の記述があり、デジタルTVがAndroid TV box上で試聴できることがうたわれていた。

Digtal TV receiver
Geniatech is the first company who provides HD Digital TV on an Android embedded system.
The Android TV box (will) supports DVB-T / ISDB-T / DMB-TH / ATSC / DVB-S / DVB-S2 / DVB-T2 digital TV1.

Geniatech Enjoy TV Plus ATV2000 」のページを見ると「Build in TV tuner for free to air digital TV receiving ( DVB-T / ATSC / ISDB-T / DVB-S2), support Live TV PVR.」なんて記載があるので、チューナー内蔵!?と思ってしまったのだけど、TV用のアンテナ端子っぽいのがない(WiFi用のアンテナはある)から、TV tuner用ソフトの準備がある、というだけなのかな?
(2012/03/13追記: pcok.tvのandroid tvページ内の「Model」をクリックしたら、ATV2000T:DVB-T、ATV2000S: ISDB-T、ATV2000D: DMB-THとモデルが分かれてるらしいし、「Features」をクリックしたら「Build in digital TV tuner for digital receiving (only ATV 2000, 4000)」とあるしで、内蔵している可能性が高いのかも)

まぁ、そんな感じなので、Android 2.2用ドライバが出れば、ワンセグレベルであれば見れたりするのかなーと淡い期待を抱いてみたりする。

とはいえ、GeniatchのページからLinux用ドライバがダウンロードできるとはいえ、Android 2.2用ドライバが出てもダウンロードできるようになるのかは、問い合わせないと駄目そうですが・・・

ちなみに、Linux用については、Linux TVのwikiにISDB-T Devicesという項目である程度使えそうなものが書かれている。
ただし、B-CASが絡むものについては難しいようだ。

というところで、第一弾調査は終わり。
次はどういったあたりを探すかな・・・

え?SEG CLIP mobileのOEMはどうしたんだって?
いまんとこ不明ですな^^;;;;

Rstream A1類似機種海外のフォーラム便り 2012/03/08版


うちのRstream A1のmicroUSBコネクタが壊れて、充電はできるけど、通信ができないようになってしまったので、あまり派手なことができなくなってしまった・・・

そんなわけで、MUCHTEL A1純正Android 2.2.2に戻すことができなくなってしまったので、b-mobileアンテナ関連について調べる、とかできなくなってしまいました。
いまは、microSHDCカード経由でなんとかアップデートできるCM7系で、いろいろ遊んでいる感じです。

で、今回のネタは3点。
3つとも中国 大陸系カスタムROM。

新年发布JOY1.09完美移植版本(修正02.21)
iOS風のJOYOSという中国ベンダが作っているカスタムROMのうち、ZTE V880用のものをベースにz71に移植したもの。
JOYOS公式ページの情報は会員登録しないとみれないので、詳細がよくわからないが、xda-developerで公開されているGalaxy Gio GT-S5660用のJOYOS-1.1.0の説明書きを見てみると、CM2.3.7ベースらしい。

乐众移植修改适合Z71版本(尝试)
乐众 ROM(LEZO ROM)というCM2.3.7をベースに中国ベンダが作ってるカスタムROMのうち、ZTE V880用のものをベースにz71に移植したもの。
公式の最新は2012/03/02版っぽいが、移植版は2012/02/12版の模様。

[Rom]LiGux(Coopoui)-z71-v3.2-Beta6
LiGuxの非公式移植版がBeta6になっていた。
hiapk.comに会員登録しないとダウンロードできないっぽいので詳細がよくわからないが、どうやら、http://115.com/file/be6jautvのがそれらしい。

MIPS Android(JZ4760)用nicoWnnG version 2012.0325.1 独自ビルド版


(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


MIPS Android(JZ4760)用nicoWnnG version 2012.0905.1 独自ビルド版」を公開しました。


MIPS Androidで動作するnicoWnnG
2012/03/27時点での最新版(Version 2012.0325.1)にアップデートしました。

ダウンロード: nicoWnnG-2012.0325.1-mips.apk
ダウンロード: nicoWnnG-2012.0320.2-mips.apk
ダウンロード: nicoWnnG-2012.0305.2-mips.apk

[注意事項]
この独自ビルド版nicoWnnGの配布にあたり、GORRYさんに許可を取っています。

この独自ビルド版nicoWnnGは、ソースの変更を行っていません。コンパイル時にMIPS/MIPS-R2/MIPS-R2 SoftFloat用のバイナリを作成するようにしただけのものです。
このため、前のバージョンからの変更内容については、オリジナル版を参照願います。

オリジナルのnicoWnnGがすでにインストールされていると、こちらの独自ビルド版はインストールに失敗します。
逆に、こちらの独自ビルド版があると、オリジナルのインストールに失敗します。
これは、この独自ビルド版は、オリジナルのnicoWnnGと同じソース・パッケージ名で作成されていますが、署名が異なっていることによるものです。
といっても、現状のオリジナル版はMIPS用のライブラリが内蔵されていないので、そもそものインストールに失敗するので、支障は無いですが・・・

なお、今回の独自ビルド版では、MIPS、MIPS-R2、MIPS-R2 SF用のバイナリのみとし、オリジナル版に含まれるARM,x86用バイナリを削除しています。

ronzi(溶智) A3での動作確認をしました。

それ以外の機種での動作は未確認です。
とりあえずMIPS-R2用バイナリとMIPS-R2 SF用バイナリを追加してはいますが、AMT-7001搭載のICCO T22とかでは動かない可能性は高そうです。

旧バージョン:
2012.0222.1版
2011.1207.1版
2011.1205.1版
2011.1115.1版
2011.0823.2版
2011.0503.1版

独自ビルド版のトピック
・Android NDK for MIPS r7mでコンパイルしています。
・MIPS r1用/MIPS r2用/MIPS r2 SF用の3種類のバイナリが含まれています。
・apk容量削減のため、MIPS用バイナリのみとしました。
・全体の再コンパイルは行わず、libディレクトリのみをapktoolを使って入れ替えるという邪法を使っています。
・署名が当サイトのものとなっています。

perl CGI.pm 渡される引数の取り扱い


perlでCGI.pmを使ってCGIを作る際の話。
・CGIに渡されたパラメータは、別のサーバに対してのコンテンツ取得に使用する
・渡されるパラメータが何がどれくらいあるのかが特定できない
・こちらの内部管理用で不要なパラメータとして特定の文字列があるが、それは引き渡さない

こんな条件がある時に、どーやって、パラメータを取得するか、というところ。

use CGI;
my $q = new CGI;
# 不要なパラメータを消去
$q->delete('sessionid');
# 残ったパラメータを表示
foreach my $name ($q->param) {
    # $nameが持っている値が複数の場合もあるため
    # @_=$q->param($name)に格納して
    # それをforeachする
    foreach my $value ($q->param($name)){
        print "$name=$value <br>\n";
    }
}

perl LWPを使ってcookie必須のページへのPOSTアクセス


うちで主に携帯向けとして提供しているゲームコンテンツのゲートウェイサービスは、内部でHTTP::Liteを使用して、オフィシャルのコンテンツを取りに行っている。

いままでは、それで問題なく利用できていたのだが、今回の動作状況見直しの際に、1点問題となる場面が見つかった。

それは、以下の様に同じ名前のパラメータで値が異なるものを送らなければならないことがある、ということ。

<input type="text" name="param" value="value1">
<input type="text" name="param" value="value2">

HTTP::Liteは、POSTアクセス時のコンテンツのペイロードに連想配列を使うため、同じ名前のものを複数送ることができない。

そんなわけで、LWPを使うように仕様変更を試みた。


HTTP::Liteを使用するもの

use HTTP::Lite;
$http = new HTTP::Lite;
$url="http://~";
$http->add_req_header("Cookie", "cookiename=$cookie");
%vars = ( "param" =>; "value1");
$http->prepare_post(\%vars);
$req = $http->request("$url")
    or $flagerr=1;
$contents=$http->body;

LWP使用に変更したもの

use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Request;
$lwpua = LWP::UserAgent->new;
$url="http://~";
$lwpreq = HTTP::Request->new(POST => $url);
$lwpreq->content_type('application/x-www-form-urlencoded');
$lwpreq->header("Cookie"=>"cookiename=$cookie");
$lwpreq->content("param=value1&param=value2");
$lwpres= $lwpua->request($lwpreq);
$contents=$lwpres->as_string;

細かい点はいくつかあるものの、こんな感じで移行はできた。

失敗した点

最初「$lwpreq = HTTP::Request->new(POST => $url);」を「$lwpreq = HTTP::Request->new(POST => ‘$url’);」としていた。
この場合、「400 URL must be absolute」というエラーメッセージが出力されていた。
$urlにつけていたシングルクォーテーションを外したところ、正常動作した。

参考にしたLWP cookbookのサンプルは固定URLであるので、シングルクォーテーションで良いが、変数を使う場合にシングルクォーテーションを使うと駄目、という基本を忘れていたために食らいました。

もう1点、サーバに対して、Cookieの値を送る方法がよくわからなかった。
HTTP::Liteの時の例とかを考え、headerにCookieという名前で値を追加すればいい、と思い当たったので、それでやってみたところ、期待通りに動作した。