Fri 06/12, 2009

NC-500 [Junk ]

NC-500新カテゴリ、Junk の初エントリ。NC-500 は ONKYO から発売されていたオーディオネットワークレシーバー。AM/FM ラジオチューナや外部入力もあるが、インターネットラジオやホームサーバに保存された音楽を聴くのを主な目的とするものだが、インターネットラジオを聴くためのサーバ情報などを提供するポータルサイト(http://www.xiva-net.com/)がサービスを終了してしまったために、その機能が無駄になってしまっている。そのためか、中古品がジャンクとして売られていたのを格安で仕入れてみた。

同じように困っている方が代替のポータルとなるソフトウェア "PortalServer For NC-500 Internet Radio" を公開されている。これは簡易 DNS + Web server で、www.xiva-net.com の IP アドレス問い合わせに対して自分自身のそれを返し、HTTP による情報問い合わせには代替となるステーションリスト情報等を返すようになっている。このソフトウェアは Windows 用なので、自宅サーバ(即ち、このサイトのサーバ。NetBSD 4.0)で同じことを実現してみよう。

まず、"PortalServer For NC-500 Internet Radio" と NC-500 を動かし、HTTP でどのような通信が行われているか確認してみる。これには WireShark のようなネットワークモニタを使う。これによると、NC-500 からはまず、GET /services/irds.jsp?Format=audio/x-scpls%20audio/x-mpegurl%20application/vnd.ms-asf%20audio/mpeg&Options=true リクエストがあり、PortalServer はこれに対して root.xml の内容を返す。root.xml にはジャンルおよび地域情報が記されている。この後、NC-500 から GET /services/irds.jsp?Format=audio/x-scpls%20audio/x-mpegurl%20application/vnd.ms-asf%20audio/mpeg&Location=JP のようなリクエストが来て、これに対しては list.xml を返す。list.xml はインターネットラジオのステーションリストだ。このような動作をする適当な CGI プログラムをでっちあげることにする。

CGI はさておき、DNS のほうは LAN からの Web アクセスに使用している Squid プロクシで代替する。Squid に Squirm を組み合わせてリダイレクトしても良いが、手抜きをして /etc/hosts の自ホストエントリに www.xiva-net.com を入れてしまう。もう、このホストからは本当の www.xiva-net.com は見ないことにする。こうすることで、プロクシ経由の www.xiva-net.com へのリクエストはこのホストの Apache で処理されることになる。Apache ではバーチャルホストの設定がされているため、www.xiva-net.com に対するリクエスト用の設定を入れておく。アクセスは LAN 内だけに制限し、拡張子 .jsp を CGI として動作するようにして設定完了。

www.xiva-net.com のドキュメントルート以下に services ディレクトリを作成し、ここに CGI プログラム irds.jsp と設定ファイル root.xml、list.xml を置く。とっても手抜きな CGI プログラムは次の通り。irds.jsp のパラメータに Options が含まれていれば root.xml の内容を、そうでなければ list.xml の内容を返す。jsp ならぬ perl で記述している。Location や Ganre パラメータの値によって違った list.xml を返せば選曲範囲を広げることができると思う。

#!/usr/bin/perl
use CGI;
my $q = new CGI;
my $url = defined($q->('Options'))? 'root.xml': 'list.xml';
print $q->header('text/xml');
open FH, $url or die;
while (<FH>) {
  print $_;
}
ただのインターネットラジオにしては妙に大きく重い NC-500。中を覗くと LM4765 という 30Wx2 パワーアンプが使われていて背面パネル近くまで配線もつながっているようだ。海外向け製品にはスピーカー出力端子があるが、なぜ使われていないのかは謎だ。

[2009.08.23 追記]
サーバ・リプレースに伴って squid から dnsmasq を利用する方法に変えてみた。dnsmasq の dhcp サーバ機能を使って DNS サーバを割り当てることができるから、NC-500 のほうは DHCP を on、proxy を off にすれば良い。

Posted by masato at 07:21 PM
このエントリーのトラックバックURL: http://bird.dip.jp/cgi-bin/mt/mt-tb.cgi/1705
コメントする

おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。










名前、アドレスを登録しますか?