Sony BDP-S6200 + sacd_extract (その2;手順)

前書きで繰り返し書いた通り,SACDをリッピングすることは違法です。よって以下に書かれていることを真似することは違法です。違法な方法を伝聞として記載することが違法かどうかについては,はっきりしません。違法であることが明らかになればこのページは削除します。

基本的には,ここに書かれている通りですので読めばわかります。最初にブルーレイプレイヤーを使ってSACDのリッピングに成功したのはMediaTeckのSoCであるMT85xxを使ってLinuxをOSとした機種だったようです。たくさんのOEMバージョンがあるらしく,sonyのBDP-S390, S490, S590, S4100, S5100, pioneerのBDP-80FD, 160, 170あたりが安価なユニバーサルプレイヤーとして販売されていました。日本ではpioneerのBDP-160や170はモデル末期には新品が1万円代前半で叩き売られていたようですが,ヤフオク!などでみていると,中古品が新品よりもよほど高い価格で取引されています。それでも買う人がいる,ということは,おそらく,SACDのリッピングをしようという需要ががある程度存在しているから,と想像されます。また,BSD-160や170を用いたリッピングの手順が日本語に翻訳されたものがある,ということも大きいように思います。

その後,2019年2月にARMv7を使ったブルーレイプレイヤーでもSACDをリッピングする方法が「開発」されます。これは,SonyのBDP-S6200, S7200, S790が該当するようです。この情報はここに明記されているのですが,なぜか,BDP-S6200などのヤフオク!での価格は特に高いというわけでもなく,普通に適正な中古価格で取引されているように見えます。それなら,というわけで,このARMv7を使った機種での方法をトレースしてみようと思います。

具体的な手順はここがわかりやすいように思います(ただし,BDP-S390などをターゲットとしていますが,手順はS6200でも同じです)。

繰り返しますが,やり方がわかったからといってそれをやってよいわけではありません。日本では違法です。

1. ファイルのダウンロード
1.1 プレイヤー(サーバー)側のsacd_extract
BDP-S790は別のソフトがいるようで,S6200とS7200に使えるものがここに置かれています。右上の「ダウンロード」ボタンからローカルに落とします。
1.2 クライアントPC側のsacd_extract
SONOREのサイトの一番下のSoftwareというところからISO2DSDというリンクを辿ります。ISO2DSDのページの一番下にmacOS, Windows, Linux用のアプリケーションが置かれています。適当なOSのものをダウンロードして展開するといくつかファイルが入っていますが,sacd_extractという実行可能ファイルのみを使います。

2. ファイルをUSBにコピー
ダウンロードしたzipファイルを展開してできるAutoScriptというディレクトリごとUSBスティックのルートディレクトリにコピーします。USBスティックはFAT32でフォーマットしておきます。AutoScriptというディレクトリの下にはautorip.shというシェルスクリプト,AutoScriptとsacd_extract_6200という実行可能ファイルが含まれています。ディレクトリ構造を変えてはならないようです。

3. ブルーレイプレイヤーの設定
メニューの名称は微妙に違うかもしれませんがだいたい想像できるんじゃないかと思います。ブツが手元にないので想像です。
3.1 Setup -> オーディオ設定 -> DSD出力モード (off)
3.2 Setup -> BD/DVD視聴設定 -> BDインターネット接続 (許可しない)
3.3 Setup -> 音楽設定 -> スーパーオーディオCDの再生層 (SACD)
3.4 Setup -> システム設定 -> クイックスタートモード (On)
3.5 Setupから現在の設定を参照して,IPアドレスを確認しておきます。

4. sacd_extractの起動
4.1 リモコンを使ってプレイヤーの電源をいったんオフにして,USBスティックをリアのUSBコネクタに挿します。
4.2 改めてプレイヤーの電源をオンにすると,USBスティックのアクセスランプが(存在すれば)光って,ディスクトレーが自動的に開きます。これが,USBスティックにコピーしたソフトが正しく読み込まれた合図です。
4.3 ディスクトレーにSACDディスクを載せて,リモコンを使ってトレーを閉じます。
4.4 これで外部からの読み出し待ちになります。

5. クライアントPCのsacd_extractから書き出し。
クライアントPC (windows, macOS, LinuxのいずれでもOK)にsacd_extractの実行ファイルをコピーします。上記の解説のページではGUIのためのラッパーを使うことが想定されていますが,そんなものは全く不要なのでコマンドラインから直接sacd_extractコマンドを叩くほうが簡単です。windowsならコマンドプロンプトかpower shell,macOSならターミナルを立ち上げて,sacd_extractのあるディレクトリに移動します。macOSなら
./sacd_extract -I 192.168.xxx.yyy:2002 -I
と叩きます。192.168.xxx.yyyは3で確認したプレイヤーのIPアドレスです。最後のオプション(-I; 大文字のアイ)はisoイメージで読み出すことを指定しています。オプションを選べばDSF (-s)やDSDIFF (-p)で書き出すことも可能です。DSTによる圧縮がかかっている場合は-cをつけて圧縮を展開します。-2または-mで2チャンネルで読み出すか,マルチチャンネルで読み出すかを選びます。何も設定しなければ2チャンネルです。

上記コマンドではカレントディレクトリにisoファイルが書き出されます。ISOファイルは改めてsacd_extractを使ってDSFやDSDIFF形式に書き出せばそのあとはいかようにでも扱うことができます。そのあたりは,ここに書いた通りの手順でOKです。

上記サイトに書かれている手順をおおよそ整理するとこんな感じになりそうです。pioneerのBDP-160, 170と手順はまったく変わりません。

しつこいようですが,実際にやったら違法です。

Sony BDP-S6200 + sacd_extract (その1;長いイントロ)

このサイトのアクセス解析を見ると,どういうわけかsacd_extractの記事にコンスタントにアクセスがあります。自分用のメモを書いているだけでだれかに読んでもらいたい,というような意図はまったくないので非常に不思議に思っていました。

sacd_extractというキーワードでgoogleで検索すると,色々なページがヒットしますが,上記の記事も比較的上位でヒットします。このキーワードでヒットしているページをいくつか見ていて気が付いたことは,どうやら,sacd_extractを使ってSACDをリッピングする,というのが今更のように一部で流行しているらしい,ということです。SACDのリッピングについては,先の著作権法の改定で既に日本では違法とされていますので真似をしてはいけません。

著作権法の改正前にはPS3の初期型(CECHA00またはCECHB00)にカスタムファームウェア(CFW)をインストールしたうえでリッピング用のアプリ(SACD-Ripper)をインストールすることでPS3に外付けしたUSB HDDにSACDの中身を書き出す,という方法が流行りました。PS3はある時期(FW 3.56以降)からカスタムファームウェアのインストールができなくなったため,初期型かつ,古いファームウェア(FW 3.55以前)のままでアップデートされていない個体を見つけてこなくてはなりませんでした。そのうえ,PS3の初期型はYLODと呼ばれる有名な持病があるため健全かつ古いファームの個体はもはや絶滅危惧種となっています。

YLODはCPUまわりが高熱になるため,半田割れが生じて導通が不安定になって生じると言われており,本体をばらしてヒートシンクの上からヒートガンで適切に熱することで再びハンダがまわって導通が復活し正しく動くようになります。ヒートガンの温度や熱する時間など諸説ありますが,きちんとバラすことができれば難易度はそれほど高くありません。しかし,YLODはその原因からもわかるとおり,一度改善しても,頻繁に発生します。しょっちゅう分解して修理する,というのもなんともバカバカしくなってきます。

また,適切な個体を調達できた場合,カスタムファームウェアそのものは容易にインストールできますが,SACD-Ripperをインストールするのが大変でした。このアプリがリリースされた時は誰でも簡単に見つけてダウンロードできましたが,その後,アンダーグラウンド化して,非常に怪しげな裏サイトでしか入手できなくなっていたようです。もしも,頑張ってSACD-Ripperを発見できたとしても,SACD-Ripperの起動時にルートキーを要求されます。ルートキーを発見するのはほぼ不可能になっているのではないかと思います。

この当時(2010年頃でしょうか)は基本的にSACD-Ripperを使ってPS3にUSBで外付けしたHDDに書き出すのが一般的でした。しかし,ごく稀にSACD-Ripperではうまく読み出せない場合があって,そのような場合はPS3用のsacd-daemonという別のソフトをインストールし,PS3側のsacd-daemonをサーバーとして適当なクライアントPC上でsacd_extractを走らせてリモートでSACDの中身をリッピングする,という方法を使うとうまくいくようでした。

いずれにしても現在ではSACDのリッピングそのものが違法なので,リッピングのためのハードルが高くて難しくてもいっこうに困らないのですが,違法でもやりたい,という人にとってはとても残念に感じられるのかもしれません。

ところが,その高いハードルを比較的下げる方法が見つかった,ということで再びsacd_extractが注目されるようになったようなのです。

PS3ではなく,普通のブルーレイプレイヤーのうち,SACDを再生可能なユニバーサルプレイヤーの一部でプレイヤーのOSのバグを利用し(OSは組み込み用のLinuxです),プレイヤーでsacd_extractをサーバーとして走らせてSACDの読み出しをさせ,適当なクライアントPCで走らせているsacd_extractを使ってクライアントPC上にリモートから書き出す,という方法が「開発」されたようです。

何回も繰り返しますが,SACDをリッピングすることは違法なので,たとえ可能になったとしてもやってはいけません。ただ,どういう方法でこれを実現したのか,ということには純粋に興味があるため,手順について少し調べてみました。

sacd-extract

DSDをSACDのisoイメージで売っているサイトもあるので,そのようなisoイメージを購入した場合どうやって再生するのだ,ということが少し気になって調べてみました。

基本的には,以前にメモしたようにscarletbookを使ってトラックごとのDSFファイルを抽出すればよいのですが,すでにこのリンク先(scarletbookが置かれているサーバー)はなくなっているようです。scarletbookはwindows専用ですし,isoイメージによってはうまくトラックを抽出できないことがあります。

PS3で動くsacd-ripperというのがありましたが,その兄弟ソフト(?)としてsacd-daemonというアプリケーションソフトがありました。やることは同じなのですが,前者がPS3のローカルに接続したUSBメディア(USB接続のHDDなど)にデータを出力するので,4GBを超えるファイルは自動的に分割されていました。一方,後者はPS3上でサーバーデーモンとして動いており,クライアントからの要求に応じてクライアント側にデータを出力するというものです。そのため,クライアントのOSが4GBを超えるファイルをサポートしていれば大きなISOファイルも1つのファイルとして出力可能です。このとき,クライアントからsacd-daemonに出力要求を送るのがsacd-extractというソフトです。

sacd-extractはかつては,windows版のみだったようです。ただ,ソースも配布されていたようなのでコンパイルすればOSに依存せずに動いていたようです。

ここにも書かれているようにSONOREというコンピュータオーディオのメーカーがISO2DSDというソフトを配布しています。このソフトはSONOREのトップページの下の方のSoftwareというところからダウンロードできます。このパッケージのなかにsacd-extractが含まれていて,しかもWindows, MacOS X, Linux版があります。このISO2DSDというパッケージはGUIラッパーであるjavaコードからsacd-extractを呼んでいるだけです。GUIはOSのバージョンが新しくなると使えなくなってしまいますが,sacd-extractをコマンドラインからCUIで使うぶんには問題なく動きます。

sacd-extractはsacd-demonとペアで使うものだと信じて疑っていなかったのですが,コマンドラインから試しにsacd-extract --helpとたたいたら,scarletbookと同じメッセージが出てきましたので,どうやらscarletbookをベースにネットワークアクセスを追加したもののようです。./sacd_extract --helpの出力は下のとおりです。

Usage: sacd_extract [options] [outfile]
-2, --2ch-tracks : Export two channel tracks (default)
-m, --mch-tracks : Export multi-channel tracks
-e, --output-dsdiff-em : output as Philips DSDIFF (Edit Master) file
-p, --output-dsdiff : output as Philips DSDIFF file
-s, --output-dsf : output as Sony DSF file
-t, --select-track : only output selected track(s) (ex. -t 1,5,13)
-I, --output-iso : output as RAW ISO
-c, --convert-dst : convert DST to DSD
-C, --export-cue : Export a CUE Sheet
-i, --input[=FILE] : set source and determine if "iso" image,
device or server (ex. -i 192.168.1.10:2002)
-P, --print : display disc and track information

Help options:
-?, --help : Show this help message
--usage : Display brief usage message

scarletbookでは指定できなかったサーバーのipアドレスがsacd-extractでは指定できるようになっています。同じ--inputオプションですが,scarletbookではisoイメージファイルを指定することしかできませんでした。また,scarletbookでは出力形式としてDSFがデフォルト扱いでオプションを指定しなければDSF形式のファイルが出力されていましたが,sacd-extractでは明示的にファイル形式を指定しないと何も出力されなくなっています。

さらに,sacd-extractの古いバージョンにはなかったトラックナンバーを指定するオプションが追加されています。大きなISOイメージからトラックファイルを抽出する途中でなんらかのトラブルがあって途中で変換が停止したような場合には便利な機能です。また,-cを指定してDSTをデコードする処理がずいぶんと速くなった
ように感じます。

MacOS Xではsacd-extractがあるディレクトリで
./sacd_extract -t 25 -s -c --input=/Volumes/hoge/fuga\ huge\ fura.iso
というように指定すればカレントディレクトリにディレクトリが作成されてDSFファイルが出力されます。MacOS Xはunixなので,ファイル名の空白はバックスラッシュでエスケープしなくてはなりません。

Windowsでネットワークドライブ上のファイルを使う場合はネットワークドライブにドライブレターを割り当てて,ファイルのフルパスをダブルクオーテーションでくくります。この場合は,ファイル名の空白はそのままでエスケープする必要はありません。なんかややこしい...。
./sacd_extract -t 25 -s -c --input="Z:\Volumes\hoge\fuga huge fura.iso"

isoイメージファイルにはどうしても抽出できないトラックが含まれる場合があったりして(isoイメージから直接再生する場合は問題がないのに),いろいろと悩ましいところがあります。

追記(2020/08/01):
sacd-extractでユニバーサルプレイヤーにリモートアクセスしてDSD ISOファイルをローカルディスクに読み込む方法をBDP-S6200の場合について書いています。ただし,SACDのディスクの暗号を無効化して読み出して書き出すことは違法です。リンク先に書かれている内容は,あくまでもできるらしい,という話であって,やって良いということではないので注意してください。