Raspberry Pi bdドライブ(Blu-ray/DVD-RW Tools)

BDドライブを購入してみました。

IODATA EX-BD03K (楽天6300円)少しポイントがあったので充当して購入

ドライブはAmazonnの情報から松下のドライブと想定してRaspberry Piからも読めるだろうと踏んでいたのですが蓋を開けてみたらパイオニアのドライブでした。(実際には開けていませんが)
松下のドライブが動作するという確証もないのですが!
それでもRaspberry Piからは無事認識しました。
LogtecのLBD-PUC6U3Vも同じパイオニアのドライブを使用しているという情報もありますね。

DVD-RWもBD-REも取り敢えず読めるようです。

但しCDの再生やCDリッピングでは爆速状態となりかなりうるさくなります。またmplayerで再生するとCDへのアクセス時一瞬音が途切れるようです。オプションも試しましたがあまり改善せずどうもPiのCDドライバとは相性が悪いようです。
このためCDは今までのCD/DVDドライブIODATA DVRPU8NKAを使用して2台体制で望むことにしました。

上がDVRPU8NKA、下が今回購入のEX-BD03K

厚みが若干薄くなっています。

これでCDの再生が良ければいいのですが。


BD,DVDドライブの2台になったこともあり起動時不穏な挙動を示し始めたので電源ラインのケーブルを追加しました。
電源からは5.3Vで供給していますがUSBポートでは通常時5.0V近くまで低下しています。マイクロUSB端子自体の接触抵抗が悪さをしている要因が大きいと思います。BD,DVDドライブの回転起動時は瞬間的にかなりの電流が流れるため電圧降下も大きいと思われるため電源から直にUSBハブに接続しています。
これで安定して起動、稼働するようになりました。

アクセス設定

$ lsuab
Bus 001 Device 007: ID 04bb:022b I-O Data Device, Inc. 
Bus 001 Device 006: ID 04bb:022f I-O Data Device, Inc.
$ ls -la /dev | grep sr
lrwxrwxrwx  1 root root         3  1月  1  1970 cdrom -> sr1
lrwxrwxrwx  1 root root         3  1月  1  1970 cdrw -> sr1
lrwxrwxrwx  1 root root         3  1月  1  1970 dvd -> sr1
lrwxrwxrwx  1 root root         3  1月  1  1970 dvdrw -> sr1
brw-rw-rw-  1 root pi     11,   0  1月  1  1970 sr0
brw-rw----  1 root cdrom  11,   1  1月  1  1970 sr1

現在の状態は上記のようにsr0がDVD-RWドライブ、sr1がBDドライブとして認識されています。
シンボリックリンクもsr1に向いています。
www-data及びsmbから読めるように以前作成した99-cd.rulesに追記します。
/etc/udev/rules.d/99-cd.rules

ATTRS{idVendor}=="04bb", ATTRS{idProduct}=="022b", GROUP="pi",MODE="0666"
ATTRS{idVendor}=="04bb", ATTRS{idProduct}=="022f", GROUP="cdrom", MODE="0666"

再起動するとsr1も一般ユーザーからアクセス可になります。

samba設定
sambaの共有をsr0からsr1に変更

# mkdir /mnt/sr1

/etc/fstab
/dev/sr1   /mnt/sr1    iso9660 exec,noauto,user,ro    0       0

/etc/samba/smb.conf
[CD-ROM]
    comment = CD ROM
    path = /mnt/sr1
    locking = No
    read only = Yes
    guest ok = Yes
    preexec = /bin/mount /mnt/sr1
    postexec = /bin/umount /mnt/sr1
    fake oplocks = Yes

変更したら再起動

CD関係の変更
シンボリックリンクがsr1を向いているのでsr0のドライブを使用したい場合は明示的にsr0を指定

~/.abcde.conf
# CD device you want to read from
#CDROM=/dev/cdrom
CDROM=/dev/sr0

その他radiko関連など確認
ejectコマンドはeject /dev/sr0
mpdは設定箇所が不明でしたがドライブ音が多少うるさい以外は正常に再生できるので課題としておきます。

以上でmpdのCDダイレクト再生以外は大体CDとDVD,BDの切り分けができました。

Blu-ray/DVD-RW Tools
Raspberry Piはスペック的にDVDの再生は到底無理だろうと思います。当サイトにはDVDを再生できる映像機器は1台もないことからデータファイルの読み書きに留めておきます。

現在ではブルーレイディスクは映像関連でかなり一般的に普及していると思います。(当サイトでもドライブが買えるのですから)価格と容量、さらに今後の動向を考えるとかなり魅力的なメディアに思えます。

前回作成したdvd.phpファイルはいま読み返すとわかりにくいですね。BDドライブの導入に合わせて少し変更してみました。参考 dvd.php.sample2 デバイスは/dev/sr0に変更しています

BDメディアは近所の量販店で購入

BD-RE
5枚で548円
DVD-RWメディアと大差ないですね。
BD-RE DL,BD-RE XLはまだまだお高いので断念です。

Blu-ray/DVD-RW Toolsを立ち上げるともしメディアがマウントされていればマウント情報を表示します。
基本はInfoボタンを押したものが最新の情報です。
Mediainfo欄はフォントサイスを調整して1つにしました。


マウントを解除して新品のメディアに入れ替えてMediainfoを表示
Disc status: blank
unformatted: 12219392*2048=25025314816
とかの情報が読み取れます。


書き込みの画面にもマウント情報を表示するようにしました。
トップ画面に表示しててもやっぱり間違えて書き込みボタンを押してしまうんですね〜
DVD-RWドライブで試した時は一度エラーを出すとUSBを抜き差しするか最悪Rebootしないと誤動作をしていました。
各書き込み、フォーマット画面でマウントされていないことを確認します。


新品のディスクを入れた時は
unformatted: 12219392*2048=25025314816
の情報を表示するようにしました。
書き込みコマンドもDVD-RWと同じコマンドでOKです。
新品のディスクには最初の書き込み、以降は追加の書き込みを実行します。


BDにはDVD-RWのようなSequentialモード、Restricted Overwriteモードがありません。
BDにDVD-RWのフォーマットを実行するとInput/output errorを返します。
Sequentialモードも同様です。
man dvd+rw-formatを見ると-ssa=defaultオプションとかが使えて確かに何らかのフォーマットをするのですが記録したファイルはそのまま残っておりなにも変わらないように見えます。


ではディスクを再利用する時はというと単にZオプションで書き込むことにより古いデータは見えなくなり新しく書き込んだデータのみが見えるようになります。
実際には消去しないで上書きをしていくという使い方と思います。

しかし本ツールからZオプションを実行すると
FATAL: /dev/sr1 already carries isofs!
エラーが出てしまいます。

FATAL: /dev/sr1 already carries isofs!
この問題はgrowisofs(1m) ver.5.19 man page [日本語]をみると

既に isofs で使われているメディアに対し growisofs が -Z オプション付で非対話式に実行された場合 (例えば cron などから呼ばれた場合) 、“FATAL:/dev/dvd already carries isofs!” となって失敗する。 これはメディアが ISO9660 ファイルシステムをもつ場合のみであり、他のファイルシステム (例えば UDF など) では問題なく実行できる。

一旦書き込みをしたディスクの-Z オプション実行はターミナルから対話形式で実行しなければいけないというgrowisofsの仕様になっていますね。

DVD-RWではRestricted OverwriteモードまたはSequentialモードでフォーマットを実行すればこの問題を回避できますがBDに対してこれに相当するコマンドを見つけることができませんでした。
仕様であればやむを得ないのでコマンドラインから実行するしかありません。
具体的な方法の一例としては/path/to/*****/以下に20170227.startのような空ファイルを作成します。
サーバーにログインして以下を実行
$ growisofs -Z /dev/sr1 -J -R /path/to/*****
20170227.startファイルは記録されて以降はツール上からも追加の書き込みで実行できるようになります。

Pi1B + moode 3.1 の環境ですが充分実用になりますね。
raspbianでも設定次第で動くと思います。
なお互換性については環境が無いため検証していません。
4K,8Kの普及に伴いDL XLメディアも価格の下落が期待できます。
無駄に増え続けるファイルですが必要になるかもしれないファイルをBDメディアに保存しといてHDのファイル断捨離にもいいですね。

MoOde Audioをrpi-updateしたところMoOde Playerとradikoの切り替えが不能になってしまいました。

wiringPiでエラーが出ているようです。

切り替えのスクリプトを実行するとこんなメッセージが出ます。

Unable to determine hardware version. I see: Hardware : BCM2835
,
– expecting BCM2708 or BCM2709.
If this is a genuine Raspberry Pi then please report this
to projects@drogon.net. If this is not a Raspberry Pi then you
are on your own as wiringPi is designed to support the
Raspberry Pi ONLY.
Unable to determine hardware version. I see: Hardware : BCM2835
,
– expecting BCM2708 or BCM2709.
If this is a genuine Raspberry Pi then please report this
to projects@drogon.net. If this is not a Raspberry Pi then you
are on your own as wiringPi is designed to support the
Raspberry Pi ONLY.
Unable to determine hardware version. I see: Hardware : BCM2835

BCM2835を認識できないと言っているようです。

インストール後のカーネルバージョン

# uname -a
Linux moode 4.9.11+ #971 Mon Feb 20 20:40:26 GMT 2017 armv6l GNU/Linux

これまでの4.4から4.9に一気に上がっていますね。

Debian 9 “Stretch”のリリースも近いことからRaspbianも頻繁にアップデートをしているようです。

Raspberry Pi3(jessie デスクトップ環境)もrpi-updateしたのですが特に問題なく稼働しています。(wiringPiは未確認)
MoOdeも安心してrpi-updateしてしまいました。

動かないのではしょうがないのでダウングレードしてみることにしました。

ダウングレード方法を探します。
https://github.com/Hexxeh/rpi-update
翻訳すると次の項目が見つかります。

オプション
特定のファームウェアリビジョンにアップグレード/ダウングレードするには、次のように、Gitハッシュ( https://github.com/Hexxeh/rpi-firmwareリポジトリ)を指定します。

sudo rpi-update fab7796df0cf29f9563b507a59ce5b17d93e0390

ハッシュ値を探すのも面倒なので最近インストールしたjessie-liteから調べます。

$ uname -a
Linux raspberry pi 4.4.47-v7+ #961 SMP Sun Feb 5 20:17:00 GMT 2017 armv7l GNU/Linux

$ ls -la /boot
2月  9 16:36 .firmware_revision

$ cat .firmware_revision
00a7eac6efc6ba29d94a7460f68215a1dbbdef0b

2月9日にrpi-updateしていますね。
このバージョン(4.4.47)にダウングレードしてみます。

# rpi-update 00a7eac6efc6ba29d94a7460f68215a1dbbdef0b

終了したら再起動

$ uname -a
Linux moode 4.4.47+ #961 Sun Feb 5 20:11:30 GMT 2017 armv6l GNU/Linux

無事起動して元のとおり動くようになりました。

この辺はすぐ修正が入ると思いますがファームウェアは現状問題なければ特にアップデートする必要もないのでこれでしばらく様子をみたいと思います。

Raspberry Pi財団もかなり大所帯になっていると思うのでDebian 9 “Stretch”のリリースに合わせてRaspbian”Stretch”もかなり早い段階で発表があるのではないかと予測しています。(わかりませんが!)

Raspberry Pi MoOde CD/DVD-RW Tools

前回まではコマンドラインから正常にDVD-RWメディアに書き込むことができました。
linuxもGUIがずいぶん使いやすくなりました。但しコマンドラインによる操作は基本ですので現在もこれからも変わることはないと思います。
ですがDVDの書き込みは簡単と言いますが少し慣れが必要ですね。物覚えの悪い当サイトの管理人はしばらく使わないとすぐ忘れてしまいます。

そんな訳でコマンドラインの操作を少しだけヘルプするツールを考えてみました。
コマンドラインからの操作を一通りマスターすればかなり便利に使えるものと思います。

dvd関連のコマンドはターミナルから操作できるものとします。
表示にはwebサーバーとSkyBlue CSSが必要です。
radiko playerが設定してあれば後述するdvd.phpを作成するのみです。

当サイトの環境
Pi1B + moode audio 3.1
CD/DVDドライブ I・Oデータ DVRPU8NKA
samba,NFSサーバー
ここでは以前作成したradiko playerが動く環境があるという前提にします。
(特にradiko player自体は必要ありません)

http://moode:8080/dvd.php


デフォルトの画面です。

デバイスは/dev/sr0で設定しています。

現時点ではdvd-rwのメディアのみで確認しています。


Infoボタンをクリックするとコマンドdvd+rw-mediainfo /dev/sr0を実行します。
メディアがマウントされているとMount欄に赤字で表示
フォーマットや書き込みはできないので使用しているマシンやサーバー側でマウントを解除しておきます。

Media欄には下のAllにもありますがgrepしてモードを表示しています。


Allはテキストボックスの右下をドラッグすると引き伸ばしすることができます。


メニューからFormat DVD-RWをクリック
Overwriteボタンをクリック
フォーマットが終わるとページの先頭に戻ります。
この時点で変更されたモードが確認できます。
再度メニューからFormat DVD-RWをクリック
文字化けしていますがこれはアニメーションしているキャラクタのようです。


音楽アルバムの書き込みをしてみます。/path/to/albumは各自の環境に合わせます。
書き込みするファイルはディレクトリalbumに入れておくという仕様です。先ほどのディスクはSequentialモードでフォーマット、さらにRestricted Overwriteモードに変更したものですので最初の書き込みになります。
Album-Zボタンをクリック
書き込み中ブラウザは接続中になります。
書き込みが終わるとディスクをejectしてページの先頭に戻ります。


ALBUMに戻ると履歴が残っています。
こちらは文字化けはありません。
メニューのTOPボタン、Ejectボタン先頭のInfo,Clesrボタンをクリックで履歴はクリアされます。


データファイルもディレクトリ単位でバックアップするのに便利ですね。
すべてを検証してはいませんが上書きしてもちゃんと変更されたファイルは記録されています。
同期している訳ではないので元ディレクトリから削除したファイルはディスクには残っています。
ブラウザからはwww-dataユーザーとしてアクセスします。
パーミッションは-Rオプションで引き継ぎますがアクセス権が640などのファイルは読み込み不能のため記録されません。パーミッションを変更するかユーザー権限でコマンドラインから書き込みをすることになります。

参考 dvd.php.sample
ファイルはdvd.phpにして/var/www/htmlにおきます。
実際のコマンドはphpの
$command = (‘dvd+rw-format -force /dev/sr0’);
を実行します。
その下のコメント扱いになっている
// $command = (‘whoami’);
を有効にすると最初のコマンドは実行しないのでブラウザでの動作確認等に利用できます。

本ツールあくまでコマンドラインからの実行を補助するためのツールですので試用にあたっては各自の自己責任において使用してください。


Radiko Playerからも呼び出せるようにしておくと便利ですね。

最近はBDドライブが気になります。
DVD-RWの4.7Gはデータ用途としては少し中途半端な感じがします。
BDドライブもgrowisofsを利用しますのでこのまま応用ができそうです。

Raspberry Pi DVD-RWを使ってみる(Samba共有)

当サイトのCD/DVDドライブは通常はCDのリッピングをメインに使用していますがバックアップ用途としてDVD-RWを使ってみました。

想定としては日常使うデータファイル、リッピングした音楽データのバックアップを考えています。

参考サイト
arch linux 光学ディスクドライブ
LinuxでのDVD±R/RW書込み実践(改訂)

環境
samba,NFSサーバー
CD/DVDドライブ I・Oデータ DVRPU8NKA
Pi1B+MoOde Audio 3.1

MoOde Audioはjessie-liteをベースにしたディストリビューションですのでraspbianでも同様に動くはずです。

デバイスの確認

$ dmesg | grep CD-ROM
[    4.984403] scsi 1:0:0:0: CD-ROM            MATSHITA DVD-RAM UJ8E0    1.00 PQ: 0 ANSI: 0
[   13.673548] cdrom: Uniform CD-ROM driver Revision: 3.20
[   13.721854] sr 1:0:0:0: Attached scsi CD-ROM sr0

デバイスはsr0

$ ls -la /dev | grep sr
lrwxrwxrwx  1 root root         3  2月 16 11:49 cdrom -> sr0
lrwxrwxrwx  1 root root         3  2月 16 11:49 cdrw -> sr0
lrwxrwxrwx  1 root root         3  2月 16 11:49 dvd -> sr0
lrwxrwxrwx  1 root root         3  2月 16 11:49 dvdrw -> sr0
brw-rw----  1 root cdrom  11,   0  2月 16 11:49 sr0

正常に認識できていればデバイスが生えているはずです。
書き込みの際など/dev/dvdとしても/dev/sr0を指していることになります。

パッケージのインストール

# apt install dvd+rw-tools wodim
# apt install eject # jessie-liteの場合

大雑把には
cd-r,cd-rw wodim
dvd dvd+rw-tools(growisofs)
のように使い分けるようです。

消去、書き込みは一般ユーザーで実行します。
DVD-RW を消去

手元には2枚のディスクが見つかりました。
このディスクをフォーマットしてみます。

古いデータを完全に消去

$ dvd+rw-format -blank=full /dev/sr0
* BD/DVD±RW/-RAM format utility by <appro@fy.chalmers.se>, version 7.1.
* 4.7GB DVD-RW media in Sequential mode detected.
* blanking 100.0|

2xで30分かかりました。
新品のディスクはSequentialモードになっていると思います。

$ dvd+rw-mediainfo /dev/sr0
INQUIRY:                [MATSHITA][DVD-RAM UJ8E0   ][1.00]
GET [CURRENT] CONFIGURATION:
 Mounted Media:         14h, DVD-RW Sequential

追加上書き可能にするためOverwriteモードに変更

$ dvd+rw-format -force /dev/sr0
* BD/DVD±RW/-RAM format utility by <appro@fy.chalmers.se>, version 7.1.
* 4.7GB DVD-RW media in Sequential mode detected.
* formatting 95.7/

こちらは1分もかからず完了します。

$ dvd+rw-mediainfo /dev/sr0                                       
INQUIRY:                [MATSHITA][DVD-RAM UJ8E0   ][1.00]
GET [CURRENT] CONFIGURATION:
 Mounted Media:         13h, DVD-RW Restricted Overwrite

Overwriteモードになりました。

書き込んでみる
試しに音楽アルバムを書き込んでみましょう。アルバムのあるディレクトリに移動します。
cd /home/share/music
ディレクトリ Art_Blakey-A_Night_In_Tunisia_(Blue_Note_4049)

最初の書込み

$ growisofs -Z /dev/sr0  -J -R -graft-points 'Art_Blakey-A_Night_In_Tunisia_(Blue_Note_4049)'=/home/share/music/'Art_Blakey-A_Night_In_Tunisia_(Blue_Note_4049)'

*1回目の書き込みはgrowisofs -Z を指定します。
*デフォルトの動作は指定したディレクトリ自体は記録されません。その下の階層から記録します。
そのため-graft-pointsオプションを用いてdir=/home/share/music/dirのように指定します。
*コマンドから指定するディレクトリ名やファイル名に括弧などの記号が含まれるとエラーを返します。
このような時にはシングルクォーテーションで囲みます。

追加の書込み
さらに次のアルバムを書き込んでみます。

$ growisofs -M /dev/sr0  -J -R -graft-points dir=/home/share/music/dir

*2回目以降はgrowisofs -M を指定します。

無事書き込めたら確認してみましょう。

マウントする
マウントポイントの作成(名称は適当に)

# mkdir /mnt/sr0
# mount /dev/sr0 /mnt/sr0
mount: /dev/sr0 is write-protected, mounting read-only
$ ls -la /mnt/sr0
Art_Blakey-A_Night_In_Tunisia_(Blue_Note_4049)/

書き込みについては基本コマンドラインから操作することになるのですが読み込みはもう少しスマートにしたいですね。

Sambaで共有
/etc/fstabの設定(追記)

/dev/sr0    /mnt/sr0    iso9660 exec,noauto,user,ro    0       0

再起動してユーザー権限でマウント、アンマウントできることを確認

$ mount /mnt/sr0
$ umount /mnt/sr0

sambaインストール、設定
moodeOSはデフォルトでインストール済ですがjessieは新規にインストール

# apt install samba

/etc/samba/smb.conf編集
CD-ROMセクションを追記

[CD-ROM]
    comment = CD-ROM
    path = /mnt/sr0
    read only = Yes
    guest ok = Yes
    preexec = /bin/mount /mnt/sr0
    postexec = /bin/umount /mnt/sr0
    fake oplocks = Yes

samba 再起動

# systemctl restart smbd nmbd

Pi3(ディスクトップ)からアクセスしてみる
Pi3にはsambaをインストールしておきます。(smb.confデフォルト)
pcmanfmは設定からネットワークを表示しておきます。

ネットワークをクリックするとサーバーのアイコンが出てるはずです。
サーバーを選択するとCD-ROMが見えてきました。
CD-ROMを選択するとsmb.confで設定したpreexecによりオートマウントされます。
書き込みをしたアルバムが見えていますね。


さて先で試した1枚のアルバムをディレクトリ付きで書き込みするのは大変骨が折れます。
growisofsのデフォルトは指定したディレクトリの下位のファイルを書き込むので書き込み専用のディレクトリを用意すればコマンドは簡単になります。
サーバーの設定次第ですが書き込みするファイルを自由に移動することが可能なら同じコマンドを実行すれば良いことになります。

適当な位置に書き込み専用のディレクトリを作成します。
ここではcd-rwというディレクトリを作成してみました。
1回目の書き込みであればコマンドラインからは
$ growisofs -Z /dev/sr0 -J -R dvd-rw
と-graft-pointsオプションなしで実行します。
容量をオーバーしていると:-( write failed: No space left on deviceと怒られます。
比較的容量の少ないアルバムなので1枚のディスクに16タイトル入りました。
flacであれば最低でも10タイトルくらいは入ると思います。
書き込みが終わった音楽データはまた元の場所に戻します。

smb/NAS/musicから見えるディレクトリは読み込み専用となるようです。


Windowsからも問題なく見えています。

Radiko Player CDダイレクト再生(その2)

デフォルトの再生開始番号を1から0に変更してみました。

これは最初に送りのスキップボタンを押した時CD PLAY2になってしまうため、CD PLAY1から順に移動するほうがより自然かなと思います。

デフォルトの状態でPLAYした場合0から再生することになりますがmplayerは0以下の数字を指定しても必ず1曲目から再生を開始するので動作は変わりません。

case “stop”と case “eject”の項を変更します。(1 -> 0)

$_SESSION['track'] = 0;


Single Playボタンの文字と色を変更しました。

mplayerとMoOde PlayerのCD再生の違い
mplayerはUAC3552A USB,MoOde PlayerはES9023P I2Sと音質の多少の違いはありますが通常のCDはどちらも正常に再生します。

GEOの50円レンタルCDをリッピング、その中にあきらかにリトライしていると思われるCDが1枚ありました。
それでもリッピングはDone,finishを返したので正常に終了しています。
リッピングしたflacも正常に再生できます。
データの整合性が取れない時は一晩中でもリトライを繰り返しています。
そんな時は強制中断するしかないのですが。

そのCDをMoOde Playerでダイレクト再生するとその箇所あたりから音が途切れ始めます。
時間は正常に刻んでいますがあきらかに無音になる時があります。
何度か試してみましたがやはり同じ所で発生します。


Radiko Player(mplayer)で再生してみました。
こちらでは何事もなかったように再生できていますね〜。
こちらでも何度か試してみましたが聴感上は正常に再生できてるようです。

以上からmplayerは通常のCDプレーヤー同様エラー訂正機能が備わって正常に再生できているものと思います。
一方MPD(MPC)はほかに有効にするオプションがあるのか単にまだ現時点で実装していないだけなのかもしくは敢えてエラー訂正をしないのかはよくわかりません。

*投稿したあとに何か忘れていると思ったのですが肝心な点を確認していませんでした。
理論上のことはあまり理解していないのですが上記の問題はやはりハード側で制御するのかなと思いDACの切り替えをしようと思っていたところすっかり失念していました。

そんな訳でMoOde Playerの設定からAudio deviceをUSB DACに切替、mpd.confの出力先をdevice “hw:1,0″に変更してMPDからの音をUSB DACから出してみようと思ったら肝心のCDが返却済みでした。

また次の機会に試してみようと思います。

Top