技術ネタ

Sonosスピーカー用にラズパイでSMBv1 Gatewayを構築

技術ネタ
※ 一部の外部リンクは広告を含む場合があります
スポンサーリンク

どんな記事?

SonosシステムはNASにあるファイルを直接再生することができます。ただし脆弱性のあるSMBv1しか対応していないため、Raspberry Pi 3 B+を使ってNASのセキュリティレベルを下げないまま共有する方法をまとめました。

※ 追記 2022/02/20

いつの間にかSonos OS S2がバージョンアップされたのか、SMBv1じゃなくても繋がるようになったみたい? NASの共有フォルダを直接ライブラリに登録ができるようになってました!

SSHでNASにログインしてSMBの最小プロトコルを確認してみた図

そしてなんと、日本語のファイルも再生できる…! これは最高だ?

試しに再生したのはe-onkyo musicで購入した『NieR:Automata Original Soundtrack』で、FLAC 48kHz/24bitのファイルです。完璧じゃない!??

背景

Sonos One SLを始めSonosシステムはNASにあるファイルを直接再生することができます。
僕が愛用しているのはSonos One SLというスピーカー。

しかし脆弱性のあるSMBv1にしか対応しておらず、それに合わせてNASのSMBバージョンを下げるのは避けたいところ。そこでおなじみのRaspberry Piを使ってSMBゲートウェイを作り、ラズパイ経由でNASのファイルをSonosスピーカーに共有することにしました。

SonosでNASドライブを使用する

SonosでNASドライブを使用するには、NASがSMB(v1)/CIFSファイル共有プロトコルに対応していなければなりません。ファイル共有でのSMBv1使用には、既知のセキュリティリスクがあります。SMBv1の使用は、自らの絶対的裁量と責任において行ってください。SMBv1を使用すると、NASにあるデータが不正アクセスに対して脆弱になる可能性があることにご注意ください。

Raspberry Piの設定

Raspberry Piの初期設定が済んでいることを前提に進めます。始めにRaspberry PiでSMB共有できるようにパッケージをインストールします。

sudo apt install cifs-utils

これでNASの共有フォルダをマウントできるようになりますので、以下コマンドでマウントの準備をします。

sudo mkdir /mnt/sonos
sudo chmod 777 /mnt/sonos

上記は/mnt/sonosに共有するフォルダをマウントする設定です。

未マウント時に分かりやすいよう以下のように空のファイルを作っておくと便利ですね。

sudo touch /mnt/sonos/not_mounted
sudo ls -al /mnt/sonos

続いてSMBを使うためのパッケージもインストールしましょう。

sudo apt-get install samba samba-common-bin

インストールしたらSMBの設定ファイルを編集します。エディタは好きなものを使ってください。

sudo vim /etc/samba/smb.conf

[global]セクションに以下を追記します。

ntlm auth=yes
client max protocol = SMB3

また設定ファイル末尾に共有フォルダの設定を追記します。パスは上で設定したものにしましょう。

[music]
Comment = Shared folder for Sonos system
Path = /mnt/sonos
Browseable = yes
Writeable = Yes
only guest = no
create mask = 0555
directory mask = 0555
Public = yes
Guest ok = yes

これでSonosシステムからSMBv1で/mnt/sonosが見られるようになります。
もしufwを有効にしている場合はファイアウォールに許可をします。

sudo ufw allow samba

続いてSMBv1で共有した/mnt/sonosにNASの音楽フォルダをマウントしましょう。

sudo vim /etc/fstab
//[NASのIP or ホスト名]/[共有フォルダ名]/ /mnt/sonos cifs credentials=/home/pi/.cifs.credo,iocharset=utf8,vers=3.0,uid=1000,gid=1000,auto,file_mode=0444,dir_mode=0555 0 0

こんな感じに追記します。
NASのアカウント情報は/home/pi/.cifs.credoに保存しますので、そちらも作成します。

sudo vim /home/pi/.cifs.credo
username=username
password=password
domain=WORKGROUP

起動時にIPアドレスが払い出されないうちにマウントされるのを防ぐため、以下の設定も行います。

sudo raspi-config

を実行すると設定画面が出ますので、画像に従って設定を行ってください。

すべて完了したらRaspberry Piを再起動しましょう。

Sonosアプリでの設定

iPhone版の設定を画像でざっくり説明します。
(NieR:Automataのサントラ聴きながらやってたので下に再生中の曲が出てる)

まずは右下ギアアイコンから設定を開き、システムをタップ。

スクロールしてミュージックライブラリをタップ。

ライブラリ設定をタップ。

共有ミュージックフォルダを追加する、をタップ。(画像はすでにフォルダを登録しています)

先ほどRaspberry Piで共有したフォルダ情報を登録します。NASではなくラズパイでSMBv1共有したフォルダですよ。

Sonosのライブラリに音楽フォルダが登録できましたか?

まさかのオチ

ようやくフォルダ共有ができたところで問題が発覚します。

それは日本語のフォルダがまったく表示されないことと、日本語のファイル名が文字化けすること。これはちょっとひどいです…文字コード変えたりしたんですが駄目でした。化けてるだけでなく、再生することもできません。

英字は化けないが……

ファイル名はすべて化けている。

再生もできない。

英語でフォルダ/ファイルを整理している人でしたら問題ないですが、僕も含めそうでない人には使えない仕様なのでした。twitterでSonos公式アカウントにリプライ飛ばしてみましたが、解消されるのはいつになることやら。

参照サイト

https://stan-miller.livejournal.com/357.html
https://magpi.raspberrypi.org/articles/samba-file-server
http://k-pi.hatenablog.com/entry/2016/06/26/103727

コメント

タイトルとURLをコピーしました