ラズパイ4 で使える外付け2.5インチケースは?
Raspberry pi4でミュージックサーバーを作ろうとしたら、2.5インチ外付けケースにはまったのでメモ。
ケースは千石電商で売ってるPimoroniのアルミケース
I2SDACはAVIOT DAC01 ピンヘッダには40pinのゲタを履かせ、スペーサー代わりに消しゴムを挟んでます
入手したケースは4つですがそのうち3つ。
左から時計回りにSalcar JMS567チップ、Inateck FE2013、ORICO 2588C3-G2
結論を言ってしまうと、明暗分けるのはUSB-SATAチップで、中華に多いJMS567チップが曲者。
Windowsなら大丈夫ですが、raspberry pi4では駄目となりました。
MPDの操作にえらく待たされたり、音楽を再生しても途中で止まる、マウントしたディレクトリをターミナルで見ようとしても何秒も待たされ、お亡くなりかと思いきや復活という具合です。
SSDはSamsung 860 QVO 1Tは裏には5V1.4Aとありますが平均消費電流は2.2W =0.44A位とか。なので電源問題では無い。海外フォーラムを見ていたら同じ問題が上がってました。
https://blog.codetitans.pl/post/ssd-over-usb3-on-raspberry-pi-4/
hdparmで簡易ベンチマークをしてみたら、驚きの結果が。
$ sudo apt install hdparm
$ sudo hdparm -tT /dev/sda1
/dev/sda1:
Timing cached reads: 1666 MB in 2.00 seconds = 833.53 MB/sec
Timing buffered disk reads: 22 MB in 31.24 seconds = 721.14 kB/sec
721kB/secは何じゃこりゃぁ~です。個体の問題ではなく、同じチップ採用のメーカも基盤レイアウトも違う2台で同じ結果です。JMS567チップはラズパイでは全滅という事ですヮ。
$ sudo lsusb
Bus 002 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge
$ sudo lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
更に調査するとraspberry側はUASPドライバをロードしています。
このチップを使うなら、/boot/cmdline.txt に以下を追加します(行の最初に入れ、元からのも1行で)
usb-storage.quirks=152d:0578:u
u=IGNORE_UAS としてJMS567をブラックリストに登録したよ、という意味らしい。
これでusb-storageドライバが代用されます。
$ sudo lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
結果はOKとなり、MPDのもたつきや突然死も無くなりました。
だけど手間なのは変わらないし、ラズパイのOS入れ替えればまた同じ事しなければなりません。それは嫌なので、何が良いのかチップから探してみました。
USB3.1 Gen2 ASM1351、VL716 10Gbps対応
USB3.1 Gen1 ASM1153E 5Gbps+対応
今の所この辺が安全らしい。該当する2.5インチSSD/HDDケースはというと、こんな感じです。-2020.2月
ORICO 2588C3-G2 VL716 USB3.1 Gen2 USB-C プラケース TYPE-C/C, TYPE-C/A
ORICO 2139C3 VL716 USB3.1 Gen2 USB-C 透明ケース TYPE-C/A
Inateck FE2011 ASM1153E USB3.1 Gen1 TYPE-microB 金属ケース
Inateck FE2013 ASM1153E USB3.1 Gen1 TYPE-microB プラケース
Inateck FE2013はraspberryに通電しただけでは起動せず、電源ボタンを押す必要があります。
raspberryのUSBポートは電源ボタンを押してもすぐには通電せず、前面のアクセスLEDが光ってから6秒位の時に電源ボタンを押せばOKみたいです。だけどうっかりMPDデーモンが先に起動してしまうと、マウント先のSSDが無いと判断されてしまいます。そうなると厄介。
で、最終的にはORICO 2588C3-G2にしました。
接続はUSB TYPE-C/A ケーブルなので10Gbpsではなく5Gbps+UASPですが、将来を見越して。
プラケースですがSSDなので音楽再生程度では熱くはならないです。
以下はhdparmによる簡易ベンチマークでご参考まで。Readだけ3回やってみての中間値です。
ORICO 2139C VL716チップ usaドライバ経由
$ sudo hdparm -tT /dev/sda1
/dev/sda1:
Timing cached reads: 1660 MB in 2.00 seconds = 829.87 MB/sec
Timing buffered disk reads: 992 MB in 3.00 seconds = 330.66 MB/sec
Inateck FE2013 ASM1153Eチップ usaドライバ経由
$ sudo apt install hdparm
$ sudo hdparm -tT /dev/sda1
/dev/sda1:
Timing cached reads: 1632 MB in 2.00 seconds = 815.76 MB/sec
Timing buffered disk reads: 988 MB in 3.00 seconds = 329.13 MB/sec
Salcar JMS567チップ usb-storageドライバ経由
$ sudo hdparm -tT /dev/sda1
/dev/sda1:
Timing cached reads: 1600 MB in 2.00 seconds = 800.41 MB/sec
Timing buffered disk reads: 888 MB in 3.00 seconds = 295.73 MB/sec
さて、pi4の発熱問題は公式ブログでも言われていて、ファームウェア改善でかなり良くなったらしいですが、それでも放熱ケースやファンは必要です。
https://www.raspberrypi.org/blog/thermal-testing-raspberry-pi-4/
ミュージックサーバーの代表的なのはVolumio2, Moode Audioと思いますが、
Volumio2はraspberryを常にフルスピードで動作させます。
$ grep "" /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performanceなので1.5GHzの最大値。30分も動作させていると放熱ケースでも熱い風呂くらいになります。温度下げるには/boot/config.txt に arm_freq=600 force_turbo=1 を追加して600MHz固定にすればOKらしい。再生もOKですがどうもねぇ
Moode AudioはVersion 6.4でRaspberry pi4にも対応し、こちらはondemandで動作します。再生時は600MHzでした。音がどうにかならないかと弄ってみて、MPDのバッファサイズを4096 -> 8192にしたらvolumio2の音に近づいたような気がします。