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の「再生」タブ。JBL Pebblesが選択されているがシステム音は別。
「再生」タブでは、Google Chromeなどのアプリケーションの出力先がJBL Pebblesになっていることが確認できました。
ただ、「システム音」の出力先はJBL Pebblesではないように見えました。音量自体は十分そうに見えます。
出力デバイスタブでの確認
次に、最も重要な「出力デバイス」タブを確認しました。ここは、システム全体のデフォルト出力デバイスを設定する場所です。
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でF6を押した画面。JBL Pebblesが「default:0」として表示。
ここで私はカーソルキーで「default:0 JBL Pebbles」を選択してEnterを押しました。
JBL Pebbles のコントロール確認
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レベルでの初期音量設定が低かったために発生していました。
などの上位ツールだけでは見落としがちな部分ですが、
pavucontrolalsamixer
で確認することで原因を特定することができました。
私の経験が、同じような症状でお困りの方の参考になれば幸いです。