【解決済み】ネットワークプレーヤーでインターネットラジオが聴けなくなった話

8年くらいパイオニアのN-50Aというネットワークプレーヤーを使ってきたのですが、この頃インターネットラジオが聴けなくなってしまいとても困りました。
お気に入りに登録しているインターネットラジオ局を選んでも、↓のように「トラックが見つかりません。」と表示されてしまうんです。

気が付いたのは2月頭くらいですかね。
世間(?)は1月半ばくらいから騒いでいたようですが、近頃はもっぱらアマゾンミュージックを聴いているので気が付きませんでした。
蛇足ですが最近は「夏チルJ-POP」をよく聴いています。季節感無いですね……。

久し振りにインターネットラジオでも聴いてみようかーと選局するとエラーに。
その時はネットワークの一時的な不調かと思って放っておきました。
しかし数日空けて再びトライしても同じ結果となったので、何かがおかしいとググってみました。

すると出るわ…。インターネットラジオにつながらないという悲憤の嵐。
日本人は価格.comのクチコミ掲示板、外国人はHiFiオーディオのフォーラムなどで不満を呈していました。
それらをつぶさに読んでやっと問題の原因がわかりました。

上はネットワークプレーヤーがインターネットラジオを聴く仕組みをマンガにしたものです。
インターネット上にはラジオを配信している局が山のようにあるのですが、ネットワークプレーヤーから聴くときには最初に案内サイトにアクセスし、そこから聴きたいラジオ局を教えてもらってストリームを開きます。
案内サイトはいくつかありvTuner、TuneIn、airable radioなどがあります。
パイオニアのネットワークプレーヤーはvTunerを使っていたのですが、この度vTunerがパイオニア製品のサポートを打ち切ったのが原因のようです。

「何を勝手に打ち切りやがって?!」とブチ切れたくなりますが、実は地殻変動ははるか2020年頃から始まっていました――。
2010年代、パイオニアのみならずSONY、Denon、マランツ、ヤマハなど各社がネットワークプレーヤーを競って出荷していました。
それらの機器のインターネットラジオ再生はvTunerがサポートしてたのですが、2020年頃から順次サポートの打ち切りや有料化が行われてきていたようです。

見切りを付けたSONYはファームウェアを更新してvTunerからTuneInに、同じくヤマハもairable radioに乗り換え。
マランツは年間6ドル、Denonは4ドル(この差は何…)払うことで継続利用できることになりました。
そう言えば、BOSEのHomeSpeaker500はTuneInでしたね。

で、パイオニアはなぜかお目こぼしを受けてこれまで無料で聴けてきたのですが、この度サポート停止の止むなきに至ったようです。

わき道にそれますが、これ本当にダメ―――と思いますね…。
年間4~6ドルって、日本円にしたら600~900円で全然払える額だと思います。
なんですが、最初から徴収してたなら納得できるんですよ。
でも元々タダだったのに今になって払えというのが本当に気持ち悪くて受け付けられない。
お金払って聴くくらいならむしろ聴けなくて良いやと思ってしまいます。

パイオニアはオンキョーに吸収されて、そのオンキョーも2022年に倒産してしまったんですよね。
ブランド自体は外資に買われて生き残っているみたいですが、恐らく旧製品のサポートは望めないと思います。
それではN-50Aはどこかの外人が言っていた「クールな外観のゴミ」になってしまうのでしょうか……?

しかし! そこに一人のヒーローがッ!!

外人が盛り上がっているフォーラムで見つけました。貴重な情報をありがとう!

その名はYCAST!
またの名をインターネットラジオの自家案内サイト!!

つまりはこういうことですね。
死んでしまったvTunerの代わりに自分で案内サイトを立ち上げてインターネットラジオ局につながれるようにするんです。

前置きが長くなりましたが、今回はYCASTを家のサーバーにインストールして再びインターネットラジオが聴けるようになるまでの顛末を語ります。
ただここから技術的な内容が濃くなるので、興味ない人は「へぇ~YCASTを使えば聴けるんだ」くらいの話で了解いただいて良いかと思います。

まずはここでYCASTのソースをGETします。
う~ん、全部英語だなぁ(アタリマエ…)
今となってはけっこう親切に書いてあることが分かるのですが、最初はなんのこっちゃ全然わかりませんでした。

ごく大雑把に言うと、YCASTのインストール&起動とDNSの変更をせよということです。
しかしウチのサーバーはすでにWebサービスが動いてるのでYCASTと共存するためにちょっと工夫をする必要があります。
個人的に悩んだところを軸に解説して行こうと思います。
悩まなかったところはあまり触れないと思うので、「そこを詳しく聞きたいんだよォ――ッ!!」という方いらっしゃったらごめんなさい。

①YCASTのインストールとサービス登録

ダウンロードしたTARボールをサーバー上の適当な場所に展開。
インストールは、python3 setup.py installとやるだけですな。
途中ビルドがSegmentation faultで落ちたので焦りましたが、もう一度やり直してみたら上手くいきました。

サービス登録は、examplesフォルダにあるycast.service.exampleを/etc/systemd/system/ycast.serviceにコピー。
UserとGroupの行を既存のユーザー名に書き換えて、下記コマンドを実行でOKです。

systemctl enable ycast.service
systemctl start ycast.service

②Webサービスの設定変更

ウチはWebサービスにApacheを使っています。
これがNginxを使ってたら、examplesフォルダにNginxの設定サンプルがあるので楽だったのですが……。
Apacheの設定が今回一番苦しんだところですね。
昔はWebサービスと言ったらApacheがデファクトスタンダードだったんですが、時代は変わったんですね。

Apacheのリバースプロキシ機能を使って、HTTPリクエストをYCASTに転送するのでproxyモジュールを読み込みます。
/etc/apache2/mods-enabledフォルダに下記コマンドでシンボリックリンクを張ります。

ln -s ../mods-available/proxy.load .
ln -s ../mods-available/proxy_http.load .

/etc/apache2/sites-available配下にある、既存のコンフィグに下記の設定を追記します。


<VirtualHost *:80>
    ServerName pioneer.vtuner.com
    ProxyRequests Off
    ProxyPass / http://127.0.0.1:8010/
    ProxyPassReverse / http://127.0.0.1:8010/
    ProxyPreserveHost On
</VirtualHost>


さらっと書いてますが最初は上手く動かず、試行錯誤がありました。
Nginxの設定にあるproxy_set_headerの行をApacheでどう書くのかが分からなかった…。
色々調べて”ProxyPreserveHost On”で良いことが分かりました。

で、サービス再起動。

③DNSの変更

これは2枚目のマンガにあるように「vTunerはこちら⇒」という看板をぐいっと下に向ける作業ですね。
ネットワークプレーヤーはpioneer.vtuner.comというアドレスを頼りにインターネット上を探そうとします。
それを「pioneer.vtuner.comは家のネットワークにあるよ」とダマすんです。
これを犯罪に悪用したのがDNSポイズニング攻撃と言われますが、家の中でやる分には問題ありません。

家庭用のDNSサーバーを立てるため、bind9をインストールします。
それから/etc/bind/named.conf.default-zonesに以下を追加。


zone "vtuner.com" {
    type master;
    file "/etc/bind/db.vtuner.com";
};
zone "0.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0.168.192";
};


db.vtuner.comとdb.0.168.192の2つのファイルを/etc/bind配下に追加します。

<db.vtuner.com>


$TTL    604800
@    IN    SOA    vtuner.com. root.localhost. (
             5        ; Serial
             604800        ; Refresh
             86400        ; Retry
            2419200        ; Expire
             604800 )    ; Negative Cache TTL
;
@    IN    NS    localhost.
pioneer    IN    A    192.168.0.20


<db.0.168.192>


$TTL    604800
@    IN    SOA    vtunner.com. root.localhost. (
             4        ; Serial
             604800        ; Refresh
             86400        ; Retry
            2419200        ; Expire
             604800 )    ; Negative Cache TTL
;
@    IN    NS    localhost.
20    IN    PTR    pioneer.vtuner.com


ちなみに家のサーバーアドレスは192.168.0.20の設定です。

それにしてもなんですが、どうしてこう各種サービスの設定ファイルの文法は千差万別で脈絡が無いんでしょう……。
bind9の設定ファイルは数あるサービスの中でも輪をかけて複雑に感じます。

最後にN-50A本体のネットワーク設定を変更します。
DHCPをOFFにして、プライマリDNSのアドレスに家のサーバー(192.168.0.20)、セカンダリDNSのアドレスにブロードバンドルーターを設定します。
これで「vTunerはこちら⇒」の看板が家のサーバーに向きました。

祈りつつ再起動…。

ーーーキタッ!!
「サーバーがありません。」となっていたネットサービスのメニューにRadiobrowserとMy Stationsの二つが出現しました。

まずRadiobrowserの方を開いてみます。

Genres配下を見てみると、前はRockとかJazz、Hip Hopという感じのジャンルで並んでたのですが、特に整頓されていないカオスなタグが膨大にエントリーされています。
これでは使いづらくてしょうがありません。
Most Popularも前はジャンル毎だったと思うのですが、今はすべてのジャンルが一緒くたにされていて、訳の分からない順番で並んでるのですごく残念な感じです。
たぶんこのメニューを今後使うことは無いでしょう。

次にMy Stationsの方を見てみます。
こちらはYCASTの設定ファイルに自前で登録したインターネットラジオ局を表示します。

Jazzのジャンルにお気に入りの1.FM – Bay Smooth Jazzを入れています。
ポチッと選択すると――。

やったッ! 再生できた!!
なんか苦労した甲斐があってのことか、音が一音一音粒だって聞こえましたね😎

お気に入りに入れていた他のラジオ局も登録し直して、以前のライブラリを復元しました。
アートワークが表示されないなど、以前に比べてデグレードしていますが、音楽再生自体はこれまで通り聴けるようになったので満足しています。