markdown
はじめに (対象読者・この記事でわかること)
本記事は、Manjaro Linux(GNOME デスクトップ)を日常的に使用しているユーザー、特に Bluetooth イヤホンとして Apple の AirPods を利用したい方を対象としています。AirPods をペアリングするとすぐに「切断されました」という状態になり、音声が出ないという現象に遭遇したことはありませんか?この記事を読むことで、以下のことが分かり、実際に問題を解消できるようになります。
- AirPods が自動的に切断される主な原因とその根拠
pipewire、bluetoothd、pulseaudioそれぞれの設定項目の意味と影響- コマンドラインと GUI の両方から行える具体的な対処手順
- トラブルシューティング時に頻出するエラーログの読み方と対処例
Linux デスクトップ環境での Bluetooth トラブルは、ディストリビューションやデスクトップ環境のバージョン差で微妙に挙動が変わります。本記事は、Manjaro 23.0 以降の GNOME 44 系列を前提に執筆していますが、他の Arch 系ディストロでも概ね同様の手順で対応できます。
前提知識
この記事をスムーズに読み進めるために、以下の知識があると便利です。
- 基本的な Linux コマンド操作(
systemctl、journalctl、pacman等) - GNOME デスクトップの設定画面(「設定」→「Bluetooth」や「サウンド」)への慣れ
- Bluetooth プロトコルと A2DP、HFP の概念(音声ストリーミング方式の違い)
背景と問題の概要
Manjaro GNOME では、デフォルトで音声サーバとして PipeWire が採用されています。PipeWire は PulseAudio を置き換える形で、低遅延・高品質な音声処理を提供しますが、同時に Bluetooth のプロファイルハンドリングが複雑になるケースがあります。AirPods のような Apple 製イヤホンは、A2DP(高音質) と HFP(通話) の二つのプロファイルを持ちますが、Linux 側がどちらを使用すべきかを判断できず、接続直後にプロファイルが切り替わってしまうことがあります。
この問題は主に以下の三つの要因が絡み合って発生します。
- PipeWire のデフォルト設定
-pipewire-pulseが有効であるものの、Bluetooth のa2dp-sinkが正しくロードされていない。 - BlueZ のバージョン差
- Manjaro のリポジトリで提供されるbluezが比較的新しいが、bluez-utilsが古いと、AirPods の接続情報が正しく取得できない。 - GNOME の UI が自動的に HFP にフォールバック
- 電池残量や接続不安定時に、GNOME が「通話用」プロファイルに切り替え、結果的に音声が途切れる。
これらの要因を順番に検証・設定変更することで、AirPods が安定して A2DP プロファイルで作動し、接続が維持されるようになります。
具体的な手順と実装方法
以下では、問題の再現手順 → ログ取得 → 設定変更 → 再起動 の流れで、実際に作業を行う手順を示します。
ステップ 1:現在の環境情報を確認
Bash# PipeWire のバージョンとステータス pipewire --version systemctl --user status pipewire pipewire-pulse # BlueZ のバージョン pacman -Qs bluez # Bluetooth デーモンの状態 systemctl status bluetooth # 接続中の Bluetooth デバイス一覧 bluetoothctl devices
このコマンドで得られる情報は、後述のトラブルシューティングで重要な手掛かりとなります。特に pipewire のバージョンが 0.3.71+ 以上であるか、bluetooth.service が active (running) であるかを確認してください。
ステップ 2:PipeWire の Bluetooth プラグインをインストール
Manjaro の公式リポジトリでは、pipewire 本体に加えて pipewire-alsa、pipewire-pulse、pipewire-jack が提供されていますが、Bluetooth 用のプラグインは別パッケージです。
Bashsudo pacman -S pipewire-pulse pipewire-alsa pipewire-jack pipewire-bt
pipewire-bt は Bluetooth 用の A2DP/HFP プロファイルをサポートする追加モジュールです。インストール後、pipewire の設定ファイルを更新します。
ステップ 3:PipeWire の設定ファイルを修正
設定ファイルはユーザー単位で ~/.config/pipewire/pipewire.conf、もしくはシステム全体の /etc/pipewire/pipewire.conf にあります。以下は A2DP を優先させ、HFP は手動で有効化できるようにする例です。
Inicontext.modules = [ { name = libpipewire-module-protocol-native args = {} } { name = libpipewire-module-protocol-pulse args = {} } { name = libpipewire-module-rt args = {} } { name = libpipewire-module-metadata args = {} } { name = libpipewire-module-blob args = {} } { name = libpipewire-module-lua args = {} } { name = libpipewire-module-adapter args = {} } # Bluetooth 用モジュール { name = libpipewire-module-bluetooth-policy args = { # A2DP を優先 a2dp = true # HFP は手動で有効化しない hfp = false } } ]
設定を保存したら、PipeWire デーモンを再起動します。
Bashsystemctl --user restart pipewire pipewire-pulse
ステップ 4:BlueZ の設定を確認・調整
BlueZ の設定ファイルは /etc/bluetooth/main.conf にあります。ControllerMode が dual になっているか確認し、AutoEnable=true が有効か確認します。
Ini[General] ControllerMode = dual AutoEnable = true
変更後、Bluetooth デーモンを再起動。
Bashsudo systemctl restart bluetooth
ステップ 5:GNOME のサウンド設定でプロファイルを固定
GNOME 設定 → 「サウンド」 → 「出力」 → AirPods を選択した状態で、右上の「設定」アイコンから「プロファイル」を確認します。A2DP Stereo が選択されていることを確認し、HFP (Headset) のみ が自動で選択されないようにします。GNOME の UI が自動で切り替える場合は、gnome-control-center のバージョンを最新に保ち、gsettings で以下のキーを無効化します。
Bashgsettings set org.gnome.desktop.sound allow-hfp false
ステップ 6:AirPods のペアリングと再接続
端末上で AirPods を一度解除(bluetoothctl remove <MAC>)し、再度ペアリングします。
Bashbluetoothctl [bluetooth]# power on [bluetooth]# agent on [bluetooth]# default-agent [bluetooth]# scan on # AirPods が表示されたら [bluetooth]# pair XX:XX:XX:XX:XX:XX [bluetooth]# trust XX:XX:XX:XX:XX:XX [bluetooth]# connect XX:XX:XX:XX:XX:XX
接続後、pactl list sinks で bluez_sink.XX_XX_XX_XX_XX_XX.a2dp_sink が表示されれば A2DP が有効です。
ハマった点やエラー解決
| 症状 | 原因 | 解決策 |
|---|---|---|
接続直後に Device disconnected が頻発 |
pipewire-bt が未インストール |
sudo pacman -S pipewire-bt |
bluez が Failed to start Bluetooth service |
BlueZ のバージョン不整合 |
sudo pacman -Syu bluez bluez-utils で最新化 |
pactl list sinks に AirPods が表示されない |
a2dp_sink が無効化 |
pipewire.conf の a2dp = true を確認 |
| GNOME が自動で HFP に切り替える | allow-hfp デフォルト true |
gsettings set org.gnome.desktop.sound allow-hfp false |
解決策のまとめ
pipewire-btの導入で Bluetooth プロファイル対応を強化pipewire.confで A2DP を明示的に有効化し、HFP を手動にmain.confのControllerMode=dualとAutoEnable=trueを設定- GNOME のサウンドプロファイルを A2DP に固定し、
allow-hfpを無効化 - AirPods の再ペアリングと
pactlで実際に A2DP が使われているか確認
これらの手順を順に実施すれば、Manjaro GNOME 環境で AirPods が安定して接続され、音声が途切れる問題は解消されます。
まとめ
本記事では、Manjaro GNOME で AirPods が接続直後に自動切断される問題の原因を「PipeWire の Bluetooth プラグイン設定」「BlueZ の構成」「GNOME のプロファイル自動切替」の三点に絞り、具体的な インストール・設定・再起動 の手順を示しました。
- A2DP プロファイルの優先設定で高音質の音声ストリームを確保
- BlueZ と PipeWire の最新化により接続安定性を向上
- GNOME の HFP 自動切替を無効化し、意図しない切断を防止
これらを実践すれば、AirPods を安心して Linux デスクトップで使用できるようになります。次回は、複数の Bluetooth デバイスを同時に使用したときの音声遅延対策や、自動スリープ時の再接続スクリプトについて解説予定です。
参考資料
- PipeWire 公式ドキュメント – Bluetooth プロファイル設定
- BlueZ 公式マニュアル –
main.confのオプション解説 - Manjaro Wiki – Bluetooth のトラブルシューティング
- GNOME 設定スキーマ –
org.gnome.desktop.sound - 【参考記事】「Linux で AirPods を使う際の一般的な問題と対処法」
