UbuntuでJBL Pebbles USBスピーカーの音がならない

UbuntuでJBL Pebbles USBスピーカーの音がならない!

先日、私が使っているUbuntu環境でJBL PebblesのUSB接続スピーカーがPC起動時に認識しない(音が出ない)という問題に直面しました。
PC本体は認識しているように見えるのに音が出ないという、ちょっと厄介な状況でした。

この記事では、私が実際に経験したトラブルシューティングの過程と、最終的にたどり着いた解決策を詳しくご紹介します。
もし同じような問題でお困りの方がいらっしゃれば、私の経験が少しでもお役に立てれば嬉しいです。

私が直面した問題の概要

Ubuntuを起動すると、JBL PebblesのUSBスピーカーから音が出ない状態でした。
PCを再起動したり、USBケーブルを抜き差ししたりしても、症状は改善しませんでした。

私が実践したトラブルシューティングのステップ

1. 基本的なデバイス認識の確認

まず、私のUbuntuシステムがJBL Pebblesを認識しているかを確認するところから始めました。
ターミナル(Ctrl + Alt + T で開けます)を開いて、以下のコマンドを実行してみました。

lsusb の実行結果

testuser@MediaServer:~$ lsusb
Bus 001 Device 004: ID 05fc:0231 Harman JBL Pebbles

この結果から、「Harman JBL Pebbles」としてデバイスが認識されていることが分かりました。
物理的な接続やUSBポートの問題ではなさそうです。

aplay -l の実行結果

testuser@MediaServer:~$ aplay -l
カード 0: Pebbles [JBL Pebbles], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

こちらも、JBL Pebblesが「カード 0」として認識されており、サウンドデバイスとしても検出されていることが確認できました。
少なくともハードウェアレベルでは問題なさそうだと判断しました。

2. PulseAudio Volume Control (pavucontrol) での確認

Ubuntuのサウンド管理システムであるPulseAudioの設定を確認するため、私はpavucontrol を起動してみました。
ターミナルで pavucontrol と入力するか、サウンド設定から開けます。

再生タブでの確認

pavucontrol 再生タブ

pavucontrolの「再生」タブ。JBL Pebblesが選択されているがシステム音は別。

「再生」タブでは、Google Chromeなどのアプリケーションの出力先がJBL Pebblesになっていることが確認できました。
ただ、「システム音」の出力先はJBL Pebblesではないように見えました。音量自体は十分そうに見えます。

出力デバイスタブでの確認

次に、最も重要な「出力デバイス」タブを確認しました。ここは、システム全体のデフォルト出力デバイスを設定する場所です。

pavucontrol 出力デバイスタブ

pavucontrolの「出力デバイス」タブ。JBL Pebblesがデフォルトではない。

このスクリーンショットから、私はいくつかの重要な点に気づきました。

  • JBL Pebblesはリストに表示されている。
  • しかし、JBL Pebblesの横に緑色のチェックマーク(デフォルトデバイスを示すアイコン)がついていない
  • 代わりに「Built-in Audio デジタルステレオ (HDMI)」が有効になっていました。
  • JBL Pebblesの音量が39%と比較的低めに設定されていた
  • ポートが「デジタル出力 (S/PDIF)」となっていました。(USB接続なのにS/PDIFという名称なのは少し引っかかりましたが、
    この時点では原因ではないと判断しました。)

この状況で、私はJBL Pebblesの横の緑色のチェックマークをクリックしてデフォルトに設定し、
音量スライダーを100%に上げて再度試してみました。
これで多くの場合は解決するはずですが、残念ながらこの時点では改善しませんでした。

3. AlsaMixerでの詳細確認

pavucontrol での設定では解決しなかったため、
より低レベルのALSA (Advanced Linux Sound Architecture) の設定ツールである alsamixer を確認することにしました。
ターミナルで alsamixer と入力して起動しました。

サウンドカードの選択

alsamixer 起動後、F6 キーを押すとサウンドカード選択画面が表示されます。

AlsaMixer サウンドカード選択

AlsaMixerでF6を押した画面。JBL Pebblesが「default:0」として表示。

ここで私はカーソルキーで「default:0 JBL Pebbles」を選択してEnterを押しました。

JBL Pebbles のコントロール確認

JBL Pebblesを選択した後の画面がこちらです。

AlsaMixer JBL Pebbles選択後

AlsaMixerでJBL Pebbles選択後の画面。

この画面で私が気づいた最も重要な点は、音量を調整する項目が <PCM> となっていることです。
そして、その音量レベルが初期状態で0%とになっていたのです。

私はこのPCMの音量を上下キーで上げてみました。
すると、JBL Pebblesから無事に音が聞こえるようになりました!

つまり、PulseAudio/PipeWireでは音量を上げているつもりでも、
ALSAレベルでJBL Pebblesの「PCM」の音量が絞られていたために、実際には音が出ていなかった、という状況だったのです。
これでようやく原因が分かりました。

最終的な解決策:起動時のPCM音量設定

毎回 alsamixer を開いてPCM音量を上げるのは手間なので、
PC起動時に自動的にこの音量を設定するようにしました。

手順1: amixer コマンドでのテスト

まず、alsamixer で確認した「PCM」項目を使って、amixer コマンドで音量を設定できるかテストしました。JBL Pebblesは「カード 0」として認識されているので、以下のコマンドでPCMの音量を35%に設定してみました。

amixer -c 0 sset 'PCM' 35%

このコマンドを実行すると、JBL Pebblesから音が出る状態で音量が変わることを確認できました。
私は35%で十分な音量だったので、この値を使うことにしました。

手順2: スタートアップスクリプトの作成

この amixer コマンドをUbuntu起動時に自動的に実行させるように設定しました。

注: 通常は sudo alsactl store コマンドでAlsaMixerでの設定を永続化できるはずですが、
私の環境ではそれがうまく機能しなかったため、スタートアップスクリプトでの対応を選択しました。

1. .desktop ファイルの作成

自動起動設定のために、ホームディレクトリの .config/autostart/ ディレクトリ内に .desktop ファイルを作成しました。(.config/autostart/ ディレクトリがなければ、先に作成してください。)

mkdir -p ~/.config/autostart/
gedit ~/.config/autostart/set_jbl_volume.desktop

(私は vi を使いましたが、お好みのテキストエディタを使ってください。)

2. ファイルの内容の記述

開いたテキストエディタに、以下の内容をコピー&ペーストして保存しました。

[Desktop Entry]
Type=Application
Exec=amixer -c 0 sset 'PCM' 35%
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Set JBL Pebbles Volume
Comment=Set JBL Pebbles PCM volume on startup

Exec= の行の 35% は、手順1でテストした適切な音量に調整してください。

3. ファイルのパーミッション確認(通常は不要でしたが念のため)

念のため、ファイルのパーミッションを確認しました。
以下のコマンドで問題ありません。

chmod 644 ~/.config/autostart/set_jbl_volume.desktop

無事解決!

上記の手順を完了し、PCを再起動したところ、
JBL PebblesのUSBスピーカーから無事に音が聞こえるようになりました!

起動時に自動で amixer -c 0 sset 'PCM' 35% が実行され、適切な音量が設定されるようになったためです。

今回の問題は、デバイスが認識されているにも関わらず、ALSAレベルでの初期音量設定が低かったために発生していました。
pavucontrol
などの上位ツールだけでは見落としがちな部分ですが、alsamixer で確認することで原因を特定することができました。

私の経験が、同じような症状でお困りの方の参考になれば幸いです。