Sunday, October 31, 2010

フルセグ・ワンセグTVチューナー KTV-FSUSB2

安いUSBタイプの地デジチューターを探していたら、こいつに出会いました。
確か四、五千円という手頃の値段でした。だけど、シンプル過ぎて、付属ソフトもないような気がします。うっかりして、どこかにしまいこんだかと思ったが、どこを探しても、見つかりませんでした。
本体に、「ConnecTVDigital」しか印刷されていなく、いくらググっても、それらいいヒットはありませんでした。
試しにPCに接続したが、ドライバーインストールのプロセスが自動的に立ち上がって、見事に困っていたようです。「ISDB-T Full Segment Device」用のディスクを要求されたが、そんなディスクはどこにもありません。この「ISDB-T Full Segment Device」でググってみると、どうも、「【KEIAN】KTV-FSUSB2」というキーワードが関連しているようです。
結局、これはKEIAN社のKTV-FSUSB2という製品であることを判明しました。
同社のホームページを見ますと、以下のドライバとアプリケーションソフトをダウンロードすることもできます。
DigiBest TV Driver
DigiBest
早速ダウンロードして、順番にインストールすると、見事にチューナーが認識されるようになり、地域を設定すると、チャンネルも正しくスキャンしてくれました。

以上のリンクアドレスは、変わったことがあるので、また変わる場合、以下の恵安株式会社のホームページから探せばいいはずです。
http://www.keian.co.jp/products/products_info/ktv-fsupcie/ktv-fsupcie.html

ご参考に、仕様は以下の通りです。

製品名KTV-FSPCIE
JANコード4534782894442
本体サイズ78mm×92mm(突起部・スロット部・ブラケット部除く)
本体重量約52g(本体のみ)
インターフェイスUSB2.0ピンヘッダ
受信チャンネルUHF=13ch~62ch / CATV=C13ch~C63ch(パススルー)
アンテナ入力F型コネクタ×1
TV音声ステレオ/2ヶ国語対応
録画対応フォーマット
MPEG2-TS
録画映像の著作権保護AES128bit

Wednesday, October 13, 2010

Ubuntu - cannot resolve domain names

One day, one of my Ubuntu pcs suddenly cannot access internet at all. To be precise, my browser cannot access any wet pages, even Google!
Somebody mentioned that maybe it is a typical ipv6 problem. One way to disable ipv6 is to use about:config at fixefox. Then input ipv6 in the filter. When the option for disableipv6 is shown, right click on it to toggle it as "true". But this trick does not work for me.
After some more searching, I found the right answer: set up the DNS infor in /etc/resolv.conf.
Just add "nameserver 192.168.0.1", where 192.168.0.1 is also the gateway of my pc.

To enable resizing of Ubuntu Window, follow the tips in https://linuxfan.info/virtualbox-guest-additions

When uinsing Virtualbox, to enable guest os accessing network in the same way as host, follow 【VirtualBox】NATネットワークでゲストPC同士を通信させる

Friday, October 8, 2010

Ada - Language for Embedded Programming

Eda は組み込み向けのプルぐらミング言語です。
Ada Information Clearinghouseには、Adaに関するありとあらゆる情報を見つけられます。
あまり知られていないが、ボーイング(Boeing)777の99パーセントのナビゲーションソフトウエアは、このAdaで書かれています。
コンパイラには、GPLライセンスのGNAT版があります。ドキュメントもキチンと整備されています。

Wednesday, October 6, 2010

1であるビットの数を数える方法(C言語)

最上位2ビットには使えませんが、以下の最速バージョンはC MAGAZINE 1996年8月号に掲載されたものですが、原理を分かれば、とても感動的なものです。
ビット演算って、凄い!って感心させます。
int numofbits(int bits)
{
    int num;

    num = (bits >> 1) & 03333333333;
    num = bits - num - ((num >> 1) & 03333333333);
    num = ((num + (num >> 3)) & 0707070707) % 077;
    return num;
}
もう一つは、1の数分のループが必要です(Brian Kernighan氏)。
int numofbits(unsigned int bits)
{
    int count=(bits==0)?0:1;
    while ((x&=(x-1)) != 0)
    {
        count++;
    }
    return count;
}
ルックアップテーブルを使う方法は以下の通りです。
//ルックアップテーブル
static const unsigned char BitsSetTable256[256] =
{
    # define B2(n) n, n+1, n+1, n+2
    # define B4(n) B2(n), B2(n+1), B2(n+1), B2(n+2)
    # define B6(n) B4(n), B4(n+1), B4(n+1), B4(n+2)
        B6(0), B6(1), B6(1), B6(2)
};
//方法1
int numofbits_1(unsigned int v)
{
    return (BitsSetTable256[v & 0xff] +
        BitsSetTable256[(v >> 8) & 0xff] +
        BitsSetTable256[(v >> 16) & 0xff] +
        BitsSetTable256[v >> 24]);
}
//方法2
int numofbits_2(unsigned int v)
{
    unsigned char * p = (unsigned char *) &v;
    return (BitsSetTable256[p[0]] +
        BitsSetTable256[p[1]] +
        BitsSetTable256[p[2]] +
        BitsSetTable256[p[3]]);
}
アルゴリズムの大家であるKnuth の本には、以下のものがあります。
int numofbits(long bits) {
    bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555);
    bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333);
    bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f);
    bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff);
    return (bits & 0x0000ffff) + (bits >>16 & 0x0000ffff);
}
参考文献: