markdown

はじめに (対象読者・この記事でわかること)

本記事は、Manjaro Linux(GNOME デスクトップ)を日常的に使用しているユーザー、特に Bluetooth イヤホンとして Apple の AirPods を利用したい方を対象としています。AirPods をペアリングするとすぐに「切断されました」という状態になり、音声が出ないという現象に遭遇したことはありませんか?この記事を読むことで、以下のことが分かり、実際に問題を解消できるようになります。

  • AirPods が自動的に切断される主な原因とその根拠
  • pipewirebluetoothdpulseaudio それぞれの設定項目の意味と影響
  • コマンドラインと GUI の両方から行える具体的な対処手順
  • トラブルシューティング時に頻出するエラーログの読み方と対処例

Linux デスクトップ環境での Bluetooth トラブルは、ディストリビューションやデスクトップ環境のバージョン差で微妙に挙動が変わります。本記事は、Manjaro 23.0 以降の GNOME 44 系列を前提に執筆していますが、他の Arch 系ディストロでも概ね同様の手順で対応できます。

前提知識

この記事をスムーズに読み進めるために、以下の知識があると便利です。

  • 基本的な Linux コマンド操作(systemctljournalctlpacman 等)
  • GNOME デスクトップの設定画面(「設定」→「Bluetooth」や「サウンド」)への慣れ
  • Bluetooth プロトコルと A2DP、HFP の概念(音声ストリーミング方式の違い)

背景と問題の概要

Manjaro GNOME では、デフォルトで音声サーバとして PipeWire が採用されています。PipeWire は PulseAudio を置き換える形で、低遅延・高品質な音声処理を提供しますが、同時に Bluetooth のプロファイルハンドリングが複雑になるケースがあります。AirPods のような Apple 製イヤホンは、A2DP(高音質)HFP(通話) の二つのプロファイルを持ちますが、Linux 側がどちらを使用すべきかを判断できず、接続直後にプロファイルが切り替わってしまうことがあります。

この問題は主に以下の三つの要因が絡み合って発生します。

  1. PipeWire のデフォルト設定
    - pipewire-pulse が有効であるものの、Bluetooth の a2dp-sink が正しくロードされていない。
  2. BlueZ のバージョン差
    - Manjaro のリポジトリで提供される bluez が比較的新しいが、bluez-utils が古いと、AirPods の接続情報が正しく取得できない。
  3. 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.serviceactive (running) であるかを確認してください。

ステップ 2:PipeWire の Bluetooth プラグインをインストール

Manjaro の公式リポジトリでは、pipewire 本体に加えて pipewire-alsapipewire-pulsepipewire-jack が提供されていますが、Bluetooth 用のプラグインは別パッケージです。

Bash
sudo 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 は手動で有効化できるようにする例です。

Ini
context.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 デーモンを再起動します。

Bash
systemctl --user restart pipewire pipewire-pulse

ステップ 4:BlueZ の設定を確認・調整

BlueZ の設定ファイルは /etc/bluetooth/main.conf にあります。ControllerModedual になっているか確認し、AutoEnable=true が有効か確認します。

Ini
[General] ControllerMode = dual AutoEnable = true

変更後、Bluetooth デーモンを再起動。

Bash
sudo systemctl restart bluetooth

ステップ 5:GNOME のサウンド設定でプロファイルを固定

GNOME 設定 → 「サウンド」 → 「出力」 → AirPods を選択した状態で、右上の「設定」アイコンから「プロファイル」を確認します。A2DP Stereo が選択されていることを確認し、HFP (Headset) のみ が自動で選択されないようにします。GNOME の UI が自動で切り替える場合は、gnome-control-center のバージョンを最新に保ち、gsettings で以下のキーを無効化します。

Bash
gsettings set org.gnome.desktop.sound allow-hfp false

ステップ 6:AirPods のペアリングと再接続

端末上で AirPods を一度解除(bluetoothctl remove <MAC>)し、再度ペアリングします。

Bash
bluetoothctl [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 sinksbluez_sink.XX_XX_XX_XX_XX_XX.a2dp_sink が表示されれば A2DP が有効です。

ハマった点やエラー解決

症状 原因 解決策
接続直後に Device disconnected が頻発 pipewire-bt が未インストール sudo pacman -S pipewire-bt
bluezFailed to start Bluetooth service BlueZ のバージョン不整合 sudo pacman -Syu bluez bluez-utils で最新化
pactl list sinks に AirPods が表示されない a2dp_sink が無効化 pipewire.confa2dp = true を確認
GNOME が自動で HFP に切り替える allow-hfp デフォルト true gsettings set org.gnome.desktop.sound allow-hfp false

解決策のまとめ

  1. pipewire-bt の導入で Bluetooth プロファイル対応を強化
  2. pipewire.conf で A2DP を明示的に有効化し、HFP を手動に
  3. main.confControllerMode=dualAutoEnable=true を設定
  4. GNOME のサウンドプロファイルを A2DP に固定し、allow-hfp を無効化
  5. AirPods の再ペアリングと pactl で実際に A2DP が使われているか確認

これらの手順を順に実施すれば、Manjaro GNOME 環境で AirPods が安定して接続され、音声が途切れる問題は解消されます。

まとめ

本記事では、Manjaro GNOME で AirPods が接続直後に自動切断される問題の原因を「PipeWire の Bluetooth プラグイン設定」「BlueZ の構成」「GNOME のプロファイル自動切替」の三点に絞り、具体的な インストール・設定・再起動 の手順を示しました。

  • A2DP プロファイルの優先設定で高音質の音声ストリームを確保
  • BlueZ と PipeWire の最新化により接続安定性を向上
  • GNOME の HFP 自動切替を無効化し、意図しない切断を防止

これらを実践すれば、AirPods を安心して Linux デスクトップで使用できるようになります。次回は、複数の Bluetooth デバイスを同時に使用したときの音声遅延対策や、自動スリープ時の再接続スクリプトについて解説予定です。

参考資料