🙆

Ubuntu 25.04 Bluetoothオーディオ問題解決ガイド

に公開

夏も終わりましたが、私のUbuntuデスクトップは相変わらずごたついて困ったものです。ブートしなくなった問題を解決してからは、Bluetoothを放置していましたが、そろそろ扱えるかと思って開けてみたこのパンドラの箱は結構面倒なことになっています。というわけで、この苦労をちょっと記事化してやろうと思いました。まずはUbuntu 25.04におけるBluetoothオーディオデバイスの接続問題と、その解決方法について解説しようかと思います。特にpipewireからpulseaudioへの移行、Python環境の競合問題、プロトコル切り替えの問題について詳しく説明します。

発生している問題の概要

Ubuntu 25.04(XFce4環境)において、以下の問題が確認されています:

  1. pipewireでの不安定な接続: Bluetoothオーディオデバイスが安定して接続しない
  2. Python環境の競合: bluemanが動作しなくなる問題
  3. プロトコル切り替えの問題: HSPプロトコルに固定され、A2DPに切り替えられない

問題1: pipewireでのBluetooth接続問題

症状

  • Bluetoothオーディオデバイスとの接続が不安定
  • 音声出力が途切れる、または全く出力されない

解決策: pulseaudioへの切り替え

pipewireは2025年時点で主流になりつつありますが、まだ安定性に課題があります。確実な動作を求める場合は、pulseaudioに戻すことを推奨します。

pulseaudioへの切り替え手順

# pipewireサービスを停止
systemctl --user stop pipewire pipewire-pulse

# pipewireを無効化
systemctl --user disable pipewire pipewire-pulse

# pulseaudioをインストール(まだの場合)
sudo apt install pulseaudio pulseaudio-module-bluetooth

# pulseaudioサービスを開始
systemctl --user start pulseaudio

問題2: Python環境の競合によるblueman問題

症状

  • blueman(BluetoothマネージャーGUI)が起動しない
  • モジュールが見つからないエラーが発生
  • apt経由で再インストールしても解決しない

原因

pyenvによってPythonのバージョンが切り替わっており、システムのPython 3.13環境からbluemanのライブラリが見つからない状態になっています。

解決策

# pyenvの設定を一時的に削除
# ~/.bash_profileまたは~/.bashrcから以下のような行を削除またはコメントアウト
# export PATH="$HOME/.pyenv/bin:$PATH"
# eval "$(pyenv init -)"

# シェルを再起動
source ~/.bashrc

# bluemanを再インストール
sudo apt remove blueman
sudo apt install blueman

注意点

  • aptでインストールする際、pyenvで設定されているPythonバージョンは考慮されません
  • システムのPython環境とpyenv環境の競合に注意が必要です

問題3: Bluetoothプロトコル切り替えの問題

症状

  • OS再起動後、BluetoothデバイスがHSPプロトコルでしか接続されない
  • A2DPプロトコルへの切り替えが「Refused」される
  • 音質が大幅に劣化(3KHz上限、狭いダイナミックレンジ)

HSPとA2DPの違い

プロトコル 用途 音質 特徴
HSP 通話 3KHz上限、モノラル 双方向通信可能
A2DP 音楽再生 高音質、ステレオ 音楽用、一方向

現在の回避策

残念ながら直接的な解決策は見つかっていませんが、以下の手順で問題を回避できます:

  1. VMware経由でのリセット

    # VMware Workstation上でWindows OSを起動
    # Bluetooth USBドングルをVMに接続
    # Windows側でオーディオデバイスとして認識・接続
    # A2DPプロトコルでの動作を確認
    
  2. Ubuntu本体での再接続

    # Windows OSを終了
    # Ubuntu本体でBluetoothサービスから接続
    # この時点でA2DPプロトコルで接続される
    

プロトコル確認コマンド

# 接続状態の確認
pacmd list-cards | grep -A20 "bluez"

# プロトコル切り替え試行(通常は失敗)
pacmd set-card-profile [card-number] a2dp_sink

技術的背景と課題

Linuxサウンドスタックの複雑さ

Linuxのサウンド関連は以下のコンポーネントが複雑に関連しています:

  • ALSA: カーネルレベルの基本サウンドシステム
  • PulseAudio/PipeWire: 高レベルサウンドサーバー
  • JACK: 低レイテンシー音声処理
  • BlueZ: Bluetoothプロトコルスタック

推測される問題の原因

  1. リグレッション: 以前は正常に動作していたA2DP接続が何らかの更新で破綻
  2. デバイス互換性: 古いBluetoothデバイスと新しいプロトコルスタックの非互換
  3. 権限問題: サウンドデバイス側がプロトコル切り替えを拒否

今後の改善点

短期的対策

  • 安定性を重視する場合はpulseaudioの継続使用
  • Python環境の管理を適切に行う
  • デバイス接続前のプロトコル初期化手順の確立

長期的課題

  • pipewireの安定性向上を待つ
  • Linuxサウンドスタックの理解を深める
  • 根本的な原因解明と修正

まとめ

Ubuntu 25.04でのBluetoothオーディオ問題は複数の要因が絡んだ複雑な問題です。現時点では:

  • 安定性重視: pulseaudioを使用
  • Python環境: pyenvとの競合に注意
  • プロトコル問題: VMware経由の回避策を使用

これらの問題は今後のアップデートで改善される可能性がありますが、当面は上記の対策で対応することを推奨します。


この記事は2025年9月時点の情報に基づいています。最新の状況については公式ドキュメントもご確認ください。

Discussion