You are not logged in.
OS: Arch Linux x86_64
Host: 20YN Lenovo ThinkBook 14p Gen 2
Kernel: 6.13.1-arch2-1
DE: Plasma 6.2.5
WM: kwin
Initially, I tried to use desktop bluetooth widget to connect headphone. Connection failed. I checked whether necessary packages is installed.
bluez, bluez-utils, pipewire, pipewire-pulse, wireplumber, pipewire-alsa. All installed.
checked systemd services. It running ok.
```
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-02-09 18:23:50 CST; 1h 43min ago
Invocation: 3ef51a86ec9c4cfa9d25f075e1146414
TriggeredBy: ● pipewire.socket
Main PID: 5159 (pipewire)
Tasks: 3 (limit: 18282)
Memory: 7.2M (peak: 8.3M)
CPU: 366ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─5159 /usr/bin/pipewire
Feb 09 18:23:50 arch systemd[799]: Started PipeWire Multimedia Service
```
I tried to use bluetoothctl to connect it.
```
Failed to connect: org.bluez.Error.Failed br-connection-page-timeout
```
Fresh cache, repairing. No difference.
Check `rfkill`. No block.
After reboot and try to connect again, it success.
But the sound still output from speaker instead of headphone.
Check the system setting -> sound -> select port as HeadPhone(unplugged). No sound still.
checked the active audio sink by `pactl list sinks`
The headphone option is not found in audio sink.
it suggests that while the Bluetooth connection is established at the protocol level, PipeWire isn’t “seeing” the headset as a valid audio device.
only error reported by `journalctl` is
```
Feb 09 18:24:37 arch pipewire-pulse[5161]: mod.protocol-pulse: client 0x56b99990ddd0 [Firefox]: ERROR command:-1 (invalid) tag:57 error:25 (Input/
output error)
```
But the problem is not Firefox-specific. VLC can't output through headphone either.
My headphone is sony WH-720N. I search it online and found no compatibility issue. reported.
Don't know what to do now. Hope for some help sincerely.
Edit:
New clue: I found that the Bluetooth module was not loaded by pipewire
```
pactl load-module module-bluetooth-discover
```
```
Failure: No such entity
```
I searched online and it seems that on Arch Linux, PipeWire and its various features (including Bluetooth support) are already included in the main package, I just need to make sure the relevant components are installed and configured. `pipewire-audio-client-librarie` target not found
```
find /usr/lib/pipewire-0.3 -name "*blue*"
```
nothing found
Edit:
The blue tooth modules is fine. I found it in spa2.0 directory. It turns out the blue tooth support is handled by SPA plugins.
And I found that my another blue tooth headset connected just fine.
[Important Discovery] Edit:
Based on the `bluetoothctl info` output, this device is currently operating in Bluetooth Low Energy (LE) mode and only supports GATT (Generic Attribute Profile), which is designed for data transfer not audio streaming. And after connecting the device, the connection only last for few seconds. The problem may be very particular on condition of firmware or drive. That is the headset’s firmware or bluez may misnegotiate profiles. The headset stuck in a "low-energy" mode. I don't know if it is possible to force headset switching to classic bluetooth mode.
The headset firmware is up-to-date.
[Solved] Edit:
Sony WH-720N have two mode: normal mode (just turn it on) and pairing mode. This "normal mode" facilitates quick connections without requiring manual intervention. However, if you wish to pair the headphones with a new device, you need to initiate "pairing mode." To do this, press and hold the power button for about 5 seconds until the indicator flashes blue. Sony WH-CH720N headphones are entering pairing mode automatically upon powering on, if they don't detect any previously connected device nearby when I just bought it. So, my Windows connected it smoothly. And in order to connect my arch linux, entering "pairing mode" is one of necessary step.
And it turns out force headset to be classic mode is possible by disabling BLE for the device in `/etc/bluetooth/main.conf`. Before do this, I removed the headset in `bluetoothctl`
```
[General]
ControllerMode = bredr # Force Classic Bluetooth
DisableLE=yes # Explicitly disable BLE
```
restart bluetooth service
try to connect headset again. This time, I notice that the connection is smooth and the device name became [WH-720H] which means its mode is no longer LE.
``
pactl list cards | grep -i bluez
```
notice that the profile is off
```
pactl list sinks short
```
Device was already recognized as audio sink. I chosen it by `pavucontrol`. The audio stream is properly routed.
Last edited by lama1kid (2025-02-17 12:39:20)
Offline