Raspberry piにスピーカやヘッドフォンをつないでそれを有効にする手順の説明です。
大抵の設定は raspi-config で
大抵の設定は raspi-configで出来ます。何も接続されていないrasperry pi zero Wで モニター画面からsudo raspi-config と入力し 1 System Options ー> S2 Audio と進むと現在のAudio outputのリストが表示されます。

VC4-hdmiのみ表示されます。スピーカーを持ったHDMIインターフェイスのディスプレーに接続すればそこから音が出る状態になってます。
次にUSBハブを使ってUSBスピーカー、ヘッドフォンの2つを同時に接続し同様にAudio outputリストを見ると下記の様にリストアップされます。

この画面で矢印キーを使って音を出したい機器を選択すればその機器がアクティブになります。ここでは仮に0のヘッドフォンを選択します。
確認
Raspberry piは音声入出力管理モジュールとして ALSAがデフォルトでインストールされます。このコマンドを使用して機器の確認が出来ます。先ずは選択した機器からサンプル音源を出力して見ます。サンプル音源は、/usr/share/sounds/alsa/に保存されています。その中の1つをaplayコマンドを使って再生して見ます。音声が聞こえたと思います。
aplay聞こえなかった場合、機器のリュームが小さいからかもしれません。モニターに alsamixerコマンドを入力すると下記のボリュウム設定画面が表示されます。

ヘッドフォンのボリュームは45(左右)となっているのでしっかり聞こえました。
ボリュームはコマンドラインからも調整出来ます。モニターに amixer と入力すると現在の状態が表示されます
amixerSimple mixer control ‘Headphone’,0の’Headphone’を使ってボリュームを調整します。例えば、ボリュームを50%にしたければ amixer sset Headphone 50% と入力します(最大:100% 最小:0%)
amixer sset確かにヘッドフォンの音量が変化しました。
実は
raspi-config で音声出力機器を選択するとホームディレクトリに .asoundrc というファイルが出来ます
ls -al内容は以下の通り
.asoundrc16,21行に card 0 という項目が有り、これが現在選択されたいる音声カードの様です。card 0の”0”は raspi-configのAudio outputリストの番号に対応している様です。現在0のヘッドフォンを選択しているので ”0”となります。

ちなにみ1のスピーカをraspi-configで選べば、16,21行は card 1 となります。ALSAは起動時にこのファイルを読み込んで機器の状態を判断している様です。root権限で .asoundrc を編集すれば(0を1に又は 1を0に)raspi-configを起動しないでデフォルトの機器を変更出来ます。
PulseAudioのインストール
raspi-configで1のUSBスピーカを選択すると音は出るのですが音量の調整が出来ない事が分かりました。ALSAではこのスピーカを設定出来ないようです。そこで PulseAudioを試してみる事にしました。
インストールは sudo apt-get install pulseaudio pulseaudio-module-zeroconf avahi-daemon
自動起動させるには、
- pulseaudio の設定ファイル /etc/pulse/daemon.confで
- local-server-type = userの行がコメントになっている事を確認
- /systemd 用の設定ファイル /lib/systemd/system/pulseaudio.serviceを製作し保存
- 内容は以下の通り。
- 設定の有効
- sudo systemctl enable pulseaudio.service
- sudo systemctl start pulseaudio
- pulseaudio -D
pulseaudoが起動したので機器の設定を行います。
- pulseaudioが認識している機器を表示
- pacmd list-sinks | grep name: を実行
- スピーカーとヘッドフォンが認識されている事が分かります。
- デフォルト機器の設定
- pacmd set-default-sink を使用。
- 今回はUSBスピーカを指定したいので
- pacmd set-default-sink alsa_output.usb-C-Media_INC._USB_Sound_Device-00.analog-stereo
- ボリュームの設定
- pacmd set-sink-volume @DEFAULT_SINK@ XXXXX を使用
- XXXXXはボリュームの大きさで 最大値:0x10000 最小値:0
pulseaudioではヘッドフォンもスピーカもボリュームの設定が出来ました。
この状態でホームディレクトリをみると
ls -al新しく、.configフォルダ が作製されその下に pulseフォルダ が有りその中には以下のファイルが有りました。
~/.config/pulse ls最後に
音声出力の選択は raspi-config で行えば良い。コマンドラインからボリュームを調整しようとすると機器に合わせてALSA か Pulseaudioを使用する。でしょうか。