RaspyFiを試す(USBメモリ編)

音楽ライブラリのサイズが数十GBに収まるのなら、USBメモリに入れてRaspberry Piに取り付けるのがベストかもしれません。 今は64GBでも4千円くらいですからね。

ここで少し基礎的なことを。
RaspyFI 1.0は Raspbian(Raspberry PI用のDebian GNU/Linux)をベースにしています。 バージョンはWheezy(Debian 7.0)です。
勝手知ったるFreeBSD(こちらにも musicpdがある)がRaspberry PIで動作してくれると嬉しいんですが、まだ実験的なレベルのようですので大人しくLinuxで我慢しています。

linuxでは autofsという仕組みがあって、USBメモリを挿入すると自動的にマウントしてくれます。 具体的にはUSBメモリが挿入されると、/mnt/USBの下の usb1からusb10にマウントされます。
TeraTermなどでSSHからログインして確認してみます。

tt00.jpg

「新しい接続」で Raspberry PIの IPアドレスを指定します。

tt01.jpg

ユーザー名「root」、パスフレーズ「root」で、「プレインテキストを使う」を選択し、OKボタンをクリックします。

tt02.jpg

ログインできました。 ここで /etc/auto.masterの内容を確認してみます。

root@Raspyfi:/etc# cd /etc
root@Raspyfi:/etc# more auto.master
(中略)
#+auto.master
/mnt/NAS    /etc/auto.nas    --timeout=6000    --ghost
/mnt/USB    /etc/auto.usb    --timeout 10      --ghost
root@Raspyfi:/etc#

/etc/auto.nas の中身はどうなっているのでしょうか?

root@Raspyfi:/etc# more auto.nas
NASNE2    -fstype=cifs,file_mode=0777,dir_mode=0777,iocharset=utf8,rsize=2048,ws
ize=4096,cache=strict,username=,password=    ://192.168.1.201/share2/iTunes
root@Raspyfi:/etc#

NASセットアップ編で指定した内容が書いてありますね。
/etc/auto.usbはどうでしょうか。

root@Raspyfi:/etc# more /etc/auto.usb
usb1    -fstype=auto,sync       :/dev/sda1
usb2    -fstype=auto,sync       :/dev/sdb1
usb3    -fstype=auto,sync       :/dev/sdc1
usb4    -fstype=auto,sync       :/dev/sdd1
usb5    -fstype=auto,sync       :/dev/sde1
usb6    -fstype=auto,sync       :/dev/sda2
usb7    -fstype=auto,sync       :/dev/sdb2
usb8    -fstype=auto,sync       :/dev/sdc2
usb9    -fstype=auto,sync       :/dev/sdd2
usb10    -fstype=auto,sync       :/dev/sde2
root@Raspyfi:/etc#

USBメモリは /mnt/USB以下の usb1~usb10に自動的にマウントされると書きましたが、/dev/sda1に割り当てられたUSBが /mnt/USB/usb1にマウントされる訳ですね。
では Raspberry PIにセットしたUSBメモリは、デバイス的にはどう認識されているのでしょうか。

root@Raspyfi:/etc# dmesg
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.8.12+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #438 PREEMPT Wed May 8 22:31:10 BST 2013
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
 
(中略)
 
[    2.282087] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.292686] Indeed it is in host mode hprt0 = 00001101
[    2.492813] usb 1-1: New USB device found, idVendor=0424, idProduct=9512
[    2.501615] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.511766] hub 1-1:1.0: USB hub found
[    2.517811] hub 1-1:1.0: 3 ports detected
[    2.802323] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    2.922729] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    2.931547] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.943733] smsc95xx v1.0.4
[    3.007456] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:80:6d:d5
[    3.102228] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
[    4.464639] usb 1-1.2: New USB device found, idVendor=0411, idProduct=01b5
[    4.473742] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.492017] usb 1-1.2: Product: SHD-LV
[    4.497779] usb 1-1.2: Manufacturer: BUFFALO
[    4.512001] usb 1-1.2: SerialNumber: HP40000000001450
[    4.531559] scsi0 : usb-storage 1-1.2:1.0
[    4.632193] usb 1-1.3: new full-speed USB device number 5 using dwc_otg
[    4.802179] usb 1-1.3: new high-speed USB device number 6 using dwc_otg
[    4.944618] usb 1-1.3: New USB device found, idVendor=0d8c, idProduct=0319
[    4.962007] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    4.971239] usb 1-1.3: Product: USB2.0 High-Speed True HD Audio
[    4.979359] usb 1-1.3: Manufacturer: CMEDIA
[    4.991862] input: CMEDIA USB2.0 High-Speed True HD Audio as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.2/input/input0
[    5.007861] hid-generic 0003:0D8C:0319.0001: input,hidraw0: USB HID v1.00 Device [CMEDIA USB2.0 High-Speed True HD Audio] on usb-bcm2708_usb-1.3/input2
[    6.938796] scsi 0:0:0:0: Direct-Access     BUFFALO  SHD-LV           4000 PQ: 0 ANSI: 0 CCS
[    6.952916] sd 0:0:0:0: [sda] 62652416 512-byte logical blocks: (32.0 GB/29.8 GiB)
[    6.968033] sd 0:0:0:0: [sda] Write Protect is off
[    6.975110] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[    6.976171] sd 0:0:0:0: [sda] No Caching mode page present
[    6.983824] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    6.995399] sd 0:0:0:0: [sda] No Caching mode page present
[    7.003138] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    7.012994]  sda: sda1
[    7.021534] sd 0:0:0:0: [sda] No Caching mode page present
[    7.029226] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    7.037484] sd 0:0:0:0: [sda] Attached SCSI disk
(以下略)

「sda」というデバイスの1個目のパーテーションということで「sda1」となってますね。 ということは、usb1にマウントされているはずです。 RaspyFiに戻って確かめてみましょう。

raspyfi15.jpg

「Browse」の画面で 「USB」をクリックします。

raspyfi16.jpg

ちゃんと「usb1」が出来てますね。 クリックします。

raspyfi17.jpg

ん? 日本語のフォルダ名(アーチスト名)が文字化けしていますね。 この下のアルバム名のフォルダも化けてました。

raspyfi18.jpg

曲名やアーチスト名は、楽曲ファイル(この場合はALAC)に埋め込まれたタグから取得しているので化けていません。

これを解消するためには、vinanoなどのエディタを使って /etc/auto.usbを以下のように編集します。

root@Raspyfi:/etc# vi auto.usb
(略)
root@Raspyfi:/etc# cat auto.usb
usb1    -fstype=auto,sync,iocharset=utf8       :/dev/sda1
usb2    -fstype=auto,sync,iocharset=utf8       :/dev/sdb1
 
(中略)
 
usb10   -fstype=auto,sync,iocharset=utf8       :/dev/sde2
root@Raspyfi:/etc#

念のため RaspyFIを再起動してみましょう。 ログインしていれば reboot(もしくは shutdown -r now)と入力してEnterキーを押します。 RaspyFIの「System」画面から「Reboot」をクリックしてもいいです。

raspyfi19.jpg

再起動したら、「Browse」の画面で「USB」の欄の右端のアイコンをクリックして、「Update this folder」をクリックします。

raspyfi20.jpg

これで日本語フォルダもちゃんと表示されるようになりましたね。

R0020181.jpg

実は最初にUSBメモリ(写真の一番上)を挿したときは、自動マウントしてくれませんでした。
なぜかそのUSBメモリは、デバイス「sda」として認識されたもののパーテーション「sda1」が認識されていませんでした。 もちろん、ちゃんとFAT32でフォーマットして、楽曲データもコピーしてありました。

そのUSBメモリを Fat32Formatterでパーテーションから作り直してフォーマットしたら、ちゃんと「sda1」が認識されるようになりました。
おそらくFreeNASのブート用に使っていたりしたので、パーテーションが正規の状態になってなかったのでしょう。
USBメモリが認識されない時は、疑ってみた方がいいかもしれません。