それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Raspberry Pi でUSBスピーカーを動かす

5000円で作れるAirplay、Bluetooth両対応スピーカー

RaspberryPiとその辺に転がってるBluetoothWifiドングルを、RaspberryPiに組合せて、リモートスピーカーを作ってしまえる。

ぶっちゃけ、USBスピーカーをつなぐだけなんだけど。 テレビにつないじゃば、AppleTVに早変わり。スピーカーにつないじゃえばAirMAcExpressに早変わり。AirPlayスピーカーの出来上がり。

ボタンつけて、ボタンにRadikoつないだらラジオに早変わり。

そんな夢の様なRaspberryPiオーディオの基本的な使い方で、一番基本のUSBスピーカーから

Raspberry Pi にUSBスピーカーをつないだ

今回つないだのは、うちにあったこれの中華版

USBスピーカーを繋ぐ前に知っておくこと

USBスピーカーは、USBからの電源を使うものと、自分で電源を確保するものがある。

電源をギリギリで動かしているRaspberryPiだとUSBスピーカーで音を出した瞬間に電力不足で再起不能になるか、リブートします。最低でも5V1Aは用意しておくこと

USBで電源を取るタイプのものとは違います。

このようにUSBで電源を取るタイプとはちがってUSBでサウンドデバイスとして認識されるものを使いました。

⇐USBスピーカではない。

USBスピーカーはつないだら認識する。

USBスピーカーはつないだら認識するので楽ちん。

lsusb や aplay 、amixerなどで確認する。

takuya@raspberrypi:~$ sudo lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0d8c:0103 C-Media Electronics, Inc. CM102-A+/102S+ Audio Controller
Bus 001 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
takuya@raspberrypi:~$ sudo aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=Device
    USB Sound Device, USB Audio
    Default Audio Device
sysdefault:CARD=Device
    USB Sound Device, USB Audio
    Default Audio Device
front:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    Front speakers
surround40:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Device,DEV=0
    USB Sound Device, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
default:CARD=ALSA
    bcm2835 ALSA, bcm2835 ALSA
    Default Audio Device
sysdefault:CARD=ALSA
    bcm2835 ALSA, bcm2835 ALSA
    Default Audio Device

USB スピーカーをデフォルトに

Rpiには、HDMIと音声OUTが最初から付いているので、USBスピーカーをデフォルトにする

慣れないうちは、とりあえずUSBスピーカーをデフォルトにするにするのが動作確認には手っ取り早いので

sudo vim /etc/modprobe.d/alsa-base.conf

14 # Keep snd-pcsp from beeing loaded as first soundcard
15 options snd-pcsp index=-2

次のように設定してReboot

ボリュームの調整

sudo alsamixer

al

でボリュームの調整

コマンドからボリュームの調整

sudo amixer set PCM 13%

私の場合、PCMになっていたので、上記のようにしてボリュームをコマンドから調整した

takuya@raspberrypi:~$ sudo amixer
Simple mixer control 'PCM',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 9472
  Mono:
  Front Left: Playback 2978 [31%] [-25.37dB] [on]
  Front Right: Playback 2842 [30%] [-25.90dB] [on]
Simple mixer control 'Loudness',0
  Capabilities: pswitch pswitch-joined penum
  Playback channels: Mono
  Mono: Playback [on]

コマンドから音のON/OFF

sudo amixer set PCM off
sudo amixer set PCM on

あとは、これをGPIOにつないだタクトスイッチから操作すれば、USBスピーカーのボリュームの大小オンオフを切り替えられますね。

サンドチェック

sudo mplayer  03\ メルト.m4a

などと、mplayer を使うのが手軽でした。

USBスピーカー

小さいわりにボリューム確保できてて、ケーブル一本で済むのでお勧めです。

液晶モニタに載せておけば邪魔にならないしね。液晶モニタのスピーカーが非力なときに重宝します。

市販のBluetoothスピーカー高すぎるわ

iPhoneの充電機能すらない「素」のスピーカーが10000円超えて売られてて、それを買う人がいっぱいるとか、この国は豊かですね。

参考資料

Raspberry PiとUSB-DACを組み合わせて格安で便利なAVアンプを作った - FOOBAR's Blog

Raspberry PiでUSBスピーカーを使う - 那由多屋 開発日誌