SONY NETJUKEをハックする
2020年の夏休みの宿題として購入したハードディスクコンポ、NETJUKE NAS-M70HDですが、普通に使って便利でした~。音楽がある生活サイコー!では皆さんは許してくれないでしょうから、Zennのアカウントを作って記事にして公開することにしました。
ふつうに使う
ふつうのNETJUKEの使い方
PCMを転送する
foobar2000とtraconv.exeを使用してLPCM.oma形式に変換して、ファイル取り込み。
traconvコンポーネントを組み込んでおけば、foobar2000がomaファイルにタグ情報、ジャケット画像も転送してくれる。便利。
DLNA再生してみる
audio/L16,44100Hzに変換して送れば何でも食ってくれる。
48000Hzでも再生はできるが、ハードウェア的に44100Hzしかサポートしていないのでサンプリングレート変換していると思われる。
プレイリストにShoutcastのURLを記述するとネットラジオも聴ける。ただしmp3のみ。
いろいろ試しましたが、DLNAサーバはMediaTomb 0.12.1以降が相性が良いようです。
サンプリングレート変換する場合としない場合のトランスコード設定例。
<profile name="soxsrc" enabled="yes" type="external">
<mimetype>audio/L16</mimetype>
<accept-url>no</accept-url>
<first-resource>no</first-resource>
<hide-original-resource>no</hide-original-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<sample-frequency>44100</sample-frequency>
<audio-channels>2</audio-channels>
<agent command="sox" arguments="-q %in -t raw -B -b 16 -c 2 -r 44100 %out"/>
<buffer size="1048576" chunk-size="131072" fill-size="262144"/>
</profile>
<profile name="sox" enabled="yes" type="external">
<mimetype>audio/L16</mimetype>
<accept-url>no</accept-url>
<first-resource>no</first-resource>
<hide-original-resource>no</hide-original-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<sample-frequency>source</sample-frequency>
<audio-channels>2</audio-channels>
<agent command="sox" arguments="-q %in -t raw -B -b 16 -c 2 %out"/>
<buffer size="1048576" chunk-size="131072" fill-size="262144"/>
</profile>
soxはwavpackハイブリッドの差分(.wvc)をデコードしてくれないので、それはちょっと困るなぁって時はこんなシェルでも作って呼んでやればいいと思います。
#! /bin/bash
wvunpack -q "${1}" -o - |sox -q -t wav - -t raw -B -b 16 -c 2 "${2}"
exit 0
バックアップデータを食う
バックアップファイルのtgbk2_10000aaaを7zipで展開する。
omaファイルはSONY謹製の「ウォークマン楽曲取り込みツール」かtraconvで扱える。
広告
物が少ない部屋に憧れます。
レッツハック
HDDの複製
詳しい既存の記事があるのでこちらを参考に。
今回のケースでは、
- HDD先頭からパーティション3の終わりまでをddでコピー
- 拡張パーティション(4)を作成
- パーティション5,6をパーティション単位でddでコピー
- パーティション7,8は任意のサイズで作成し、dump&restoreでコピー
しました。
SSHでログインできるようにする
- HDDを取り外してあなたのマシンに繋ぎ、5番目のパーティションをマウントする。
- セキュリティ解除スクリプトをサービスに追加。
パスはマウントポイントに読み替えてください。
ln -s /usr/local/bin/hacker /etc/rc.d/rc3.d/S97hacker
- /root/.ssh/authorized_keys にあらかじめクライアント側で生成しておいた公開鍵を追加
あとはHDDを戻して組み立てれば鍵認証でrootとしてログインできるはずです。
パスワードでのログインは出来なかったです。
一通りコマンドはそろっているしnfsもマウントできるので環境の自由度は高いです。
$ ssh -i netjuke.rsa root@192.168.net.19
-bash-3.00# /usr/local/bin/hacker stat
You will be a hacker, maybe.
/dev/root on / type ext3 (ro)
File Protected
-bash-3.00#
おちゃめ。
リモコン操作したことにする
ボタンを押す操作をシェルから行うことができます。
/root/rmu.sh HDPLAY
/root/rmu.sh VOL12
電源モードを高速起動にしておくとスタンバイ(電源ランプ橙)の時でも操作できます。
ボタンの一覧表を表示できますが、typoがあるのでrmu.shの中を読んだ方が確実です。
また、rmu.shをいじって24bitのリモコンコードを送れるようにもできます。
--- rmu.sh
+++ rmucode.sh
@@ -197,8 +197,9 @@
# fi
exit
;;
- *) echo "no key"
- exit -1
+ *) KEY=$KEYWORD
+# echo "no key"
+# exit -1
;;
esac
LINE-INのリモコンコードは c0c03f
DLNA再生のリモコンコードは c0c027
総当たりしました。
スタンバイ状態からLINE-IN押下で4秒くらいで起動するので便利です。
スクリーンショットをとる
/dev/fbを画面サイズ分切り出してヘッダを付ける。シェルでやるならこう。
#!/bin/bash
if [ ! -e /tmp/screen.bmp ]; then
echo -en "\x42\x4D\x8A\x8C\x0A\x00\x00\x00\x00\x00\x8A\x00\x00\x00\x7C\x00\x00\x00\xD0\x02\x00\x00\x20\xFE\xFF\xFF\x01\x00\x10\x00\x03\x00\x00\x00\x00\x8C\x0A\x00\x13\x0B\x00\x00\x13\x0B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xF8\x00\x00\xE0\x07\x00\x00\x1F\x00\x00\x00\x00\x00\x00\x00\x42\x47\x52\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00">/tmp/screen.bmp
fi
dd if=/dev/fb of=/tmp/screen.bmp ibs=1440 count=480 obs=138 seek=1
ここまで出来たら、スマホリモコンを作ってみましょう。
スマホからリモート操作
こまごまとしたハック
ディスク全容量を更新する
/opt/sony/tiger/SystemSetup/etc/DiskAllSpace.properties
設定の目安:(dfで表示される/dev/hda7の全容量)-1330800
システム情報のCDファーム、HDD ID、MDファームに表示される値
/opt/sony/tiger/SystemSetup/etc/SystemVersion.properties
再生時に下に出てくるエラーメッセージを変える
/opt/sony/tiger/audioui/etc/AnyUiRecmd_OneLineDispPlugin.properties
Text_ServerErr=末永くお使いいただきありがとうございます
背面のシリアルコンソールを有効にする(未検証)
mount -o remount,rw /
touch /etc/tiger-release/psah.dat
reboot
メンテナンス端子のピンアサイン(未検証)
1 XDIAG_EN
2 PA5
3 NC
4 GND
5 SOUT2(TXD)
6 SIN2(RXD) ←基板上でつながってないかも
7 +3.3V
先にSSHで入れるようになってしまったので出番なし。
ANY MUSICボタンのLEDを点灯させる
/opt/sony/tiger/diag/strled.sh -O ANY
だから何?って話ですが、今やこのボタンもLEDも使われないじゃないですか。弔いですよ。
プリセットEQの設定を変える
/opt/sony/tiger/launcher/etc/preseteq.properties
説明はファイル内に。
適用には再起動が必要。
MEGA.BASSの設定を変える
/opt/sony/tiger/launcher/etc/volumezone.properties
音量を5ゾーンに分けて適用する値を変えられる。同じ値が入ってるけど。
むかし音量に応じてイコライザが自動設定されるコンポがあったのを思い出しました。ケンウッドのだったかな。
0=0,3
1=4,7
2=8,11
3=12,15
4=16,51
1_0_Filter0=1012CAFC, E010D3A8, 0FDDF3D9, E010D3A8, 0FEFA3D6
1_1_Filter0=1012843C, E010D3A8, 0FDDF3D9, E010D3A8, 0FEFA3D6
1_2_Filter0=10123D7C, E010D3A8, 0FDDF3D9, E010D3A8, 0FEFA3D6
1_3_Filter0=1011F6BC, E010D3A8, 0FDDF3D9, E010D3A8, 0FEFA3D6
1_4_Filter0=1011AFFC, E010D3A8, 0FDDF3D9, E010D3A8, 0FEFA3D6
適用には再起動が必要。
スピーカーのイコライザを無効にする・LINE-OUTにもイコライザをかける
/opt/sony/onyx/utils/etc/onyx.properties
PlayEQPort1 = ON ←S-MASTER出力のEQは有効になっている
PlayEQPort2 = OFF ←LINE-OUT用DAC出力のEQは無効になっている
ハードウェア的なハック
バランス駆動ヘッドフォン対応にする
S-MASTERのストリームプロセッサからヘッドホンアンプ(NJM4565)までの伝送は差動信号になっているので、ヘッドホンアンプに入っている差動信号にそのままドライバ段を付けたらバランスド出力として使えそう。
デジタル出力を付ける
WM8776のDACに入ってる信号(4-7pin)を横取りしてDAIに入れてあげればOKのはず。
メインボードとプロセッサボードの2,4,5pin(SDO,LRCK,BCK)でもOK。
デジタル入力を付ける
WM8776のADCから出力される信号を乗っ取る。
ただし本体側のクロックに同期する必要がある。フォーマットは24bit44.1kHz固定。
NAC-HD1ではここにSRCが載っていて、制御信号はプロセッサボードの未使用の4ピンコネクタに出てくることになっている。
しかしNAC-HD1相当のファームウェアでないと制御は期待しがたいので、どうしてもやるならスイッチで切り替えて使うような実装が無難かなぁ~(やるきなし)
修理する
液晶を交換する
PSP-1000と同じ液晶モジュールが使用されているため、保守部品には困らないでしょう。
液晶とバックライトは分離できるので、バックライト切れの場合は割れたPSPが使えます。
PSP-1000交換用IPS液晶に置き換えてみるのも面白いですね。
CDドライブを置き換える
CDドライブが故障したくらいでいちいちバラすのは手間ですね。増設しちゃいましょう。
CDモード以外にしておき、USB接続のCDドライブを接続します。
mount -o remount,rw /
rm /dev/cdrom
ln -s /dev/scd0 /dev/cdrom
mount -o remount,ro /
ファンクションをCDに切り替えると外付けCDドライブが使えるようになります。
元に戻すときは3行目を下記のようにします。
ln -s /dev/hdb /dev/cdrom
これでもしCDドライブがダメになってしまっても安心ですね。
リモート操作と組み合わせて、本体を手の届かないところに設置してCDドライブだけ手元に、といった使い方や、IDEのスレーブ側を空けて何かに使うなど、ハックの幅が広がりますね。
あとがき
これだけのものをガッカリポイントなくまとめ上げた開発力は本当にすごいですね。
オーディオが部屋の隅に追いやられはじめた時代に、完成されたデジタルオーディオを一般家庭に届けてやるぞという執念を感じました。
何よりも特筆すべきは、本当にフルデジタルのオーディオ機器になっている点。
11.289MHzのクロックに同期してADC、DAC、PDMアンプ、DSPが動作していて、CPUはバッファが途切れないようにDSPとデータをやり取りしているだけ。
CPU側のオーディオ処理もLinuxのオーディオAPIを利用することなく独自実装されています。
同じ構成のNAC-HD1 [1] を高精度クロックに乗せ換える改造が流行ったのも納得がいく設計。
NETJUKEも高精度クロックに改造すればきっと…ミニコンですが、ハイエンドよりいい音がしますよ。(笑)
-
24bit192kHz DAC/ADC搭載を謳っていましたが…(そのクロックで駆動しているとは言っていない。) ↩︎
Discussion