RaspberryPiでUSBオーディオを使用する。

つい先日、部屋を掃除していたらPLANEX USB オーディオ変換アダプタ ケーブル PL-US35APがでてきました。

使わないのももったいないのでRaspberryPiで使用してみます。USBオーディオは使ったことはありませんが、以前USBスピーカーは使用していました。 USB接続で使えるスピーカーも少ないので、このような変換アダプタを使用するものいいかなと思います。使用することで安く準備でき、音質も変わると思います。

uepon.hatenadiary.com

ちなみに今回使用したRaspbianは少し古いstretchベースになりますのでご注意ください。設定はそのまま使用できるんじゃないかとおもいますが、保証はできない感じですのでご注意ください。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.9 (stretch)
Release:        9.9
Codename:       stretch

接続する

一応、接続するだけで認識はしてくれます。接続状態はlsusbコマンドで確認できます。

認識する前は以下のような状態ですが

f:id:ueponx:20191120145453p:plain

$ lsusb
Bus 001 Device 004: ID 056e:4008 Elecom Co., Ltd 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

接続すると以下のように状態が変化します。

f:id:ueponx:20191120145504p:plain

$ lsusb
Bus 001 Device 004: ID 056e:4008 Elecom Co., Ltd 
Bus 001 Device 005: ID 0d8c:013a C-Media Electronics, Inc. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

増えたエントリーは以下のようになっています。

Bus 001 Device 005: ID 0d8c:013a C-Media Electronics, Inc. 

これが検出されたデバイスになります。C-Mediaさんのデバイスは結構メジャーですよね。

このままでは内蔵オーディオが優先されている状態なので音声の再生は本体側のpinOutから行われます。(USB側からは出力されません) 音声デバイスの優先度は以下のコマンドで確認ができます。

$ cat /proc/asound/modules

f:id:ueponx:20191120152647p:plain

~$ cat /proc/asound/modules 
 0 snd_bcm2835
 1 snd_usb_audio

そのためオーディオ設定の優先度を入れ替えます。

サウンドバイスの設定の変更を行う

優先度を設定するのは/etc/modprobe.d/alsa-base.confになります。 初期状態では存在しないファイルなので存在しない場合には作成します。以下のコマンドでファイルを開き

$ sudo vi /etc/modprobe.d/alsa-base.conf

以下を記載します。

options snd slots=snd_usb_audio,snd_bcm2835
options snd_usb_audio index=0
options snd_bcm2835 index=1

f:id:ueponx:20191120165722p:plain

編集が終わったら保存して、再起動を行います。 再起動後に音声デバイスの優先度を再度確認をしてみます。

f:id:ueponx:20191120152736p:plain

$ cat /proc/asound/modules 
 0 snd_usb_audio
 1 snd_bcm2835

これで設定は完了です。

設定変更後の確認

初期状態では音量が小さいかもしれないのでalsamixerなどで音量の確認をしておきます。

$ alsamixer

f:id:ueponx:20191120160928p:plain

再生は以下のようにすればデフォルト状態でも再生可能です。

$ aplay /usr/share/sounds/alsa/Front_Center.wav

おわりに

死蔵していたデバイスはとりあえず使えるようになりました。 デフォルト内蔵の音声のpinOutの出力はノイズ混じりなので正直つかえないと思いますので、 こういうデバイスはいい選択肢ありだと思います!

/* -----codeの行番号----- */