Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Bluetooth HFP microphone captures complete silence on OnePlus Bullets Wireless Z2 and JBL Tune 770NC
Reported by arsinghin · filed Sep 16, 2026 · open at source
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- AreaOutside the audited area· Decided by agents · verified
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
System details
Omarchy 4.0.4-1 Linux kernel 7.1.9-arch1-2 PipeWire 1.6.8 BlueZ 5.87 bluez-utils 5.87 Bluetooth adapter: Realtek Hyprland Affected Bluetooth devices: - OnePlus Bullets Wireless Z2 - JBL Tune 770NC Same microphone problem also reproduced previously on Linux Mint Cinnamon.
What's wrong?
Bluetooth microphone input does not work correctly with multiple Bluetooth headsets/headphones.
I tested:
- OnePlus Bullets Wireless Z2
- JBL Tune 770NC
With both devices:
- Bluetooth pairing and connection work.
- A2DP playback works normally.
- HFP/HSP microphone profiles are available.
- The Bluetooth microphone source is exposed by PipeWire.
pw-recordcan successfully record from the source.- HFP/eSCO transport can be established.
- However, the resulting microphone recording contains effectively complete digital silence.
For example, recording directly through PipeWire and analyzing the WAV with FFmpeg consistently gives:
mean_volume: -91.0 dB
max_volume: -91.0 dBI tested both HFP modes:
HFP CVSD -> microphone source available -> silence
HFP mSBC -> microphone source available -> silenceI also bypassed applications such as Chrome/Discord and tested directly with pw-record and pw-cat, so this does not appear to be an application-specific microphone permission or routing issue.
During troubleshooting, btmon showed successful HFP/eSCO connection establishment, for example:
Synchronous Connect Complete
Status: Success
Link type: eSCO
Air mode: CVSDHowever, WirePlumber repeatedly reports:
spa.bluez5: Failure in Bluetooth audio transport
/org/bluez/hci0/dev_<redacted>/sep2/fd0I also observed PipeWire Bluetooth nodes transitioning into an error state.
I tried changing the WirePlumber Bluetooth auto-connect configuration to include HFP/HSP:
bluez5.auto-connect = [
hfp_hf
hsp_hs
a2dp_sink
a2dp_source
]and restarted:
systemctl --user restart wireplumber pipewire pipewire-pulseThis did not resolve the issue.
I also confirmed:
bluetooth.autoswitch-to-headset-profile = trueManual HFP profile selection still produces silent recordings.
Important cross-platform observation
The same microphone hardware works normally on:
- Windows 10
- Windows 11
- Android
The same problem also occurred previously on Linux Mint Cinnamon with both Bluetooth devices.
Therefore, this is not limited to a single Bluetooth device and does not appear to be specific to one particular Linux desktop application.
I am not sure which layer is failing, but the current evidence points somewhere in the Linux Bluetooth HFP audio path, potentially involving BlueZ, PipeWire spa.bluez5, WirePlumber, the Bluetooth adapter/kernel, or HFP compatibility.
Minimal reproduction
- Connect the Bluetooth headset.
- Switch to HFP:
pactl set-card-profile bluez_card.<redacted> headset-head-unit-cvsd- Record directly:
pw-record --target bluez_input.<redacted> /tmp/bt-test.wav- Analyze:
ffmpeg -i /tmp/bt-test.wav -af volumedetect -f null -Observed:
mean_volume: -91.0 dB
max_volume: -91.0 dBRequest
I would like help identifying where the microphone audio is being lost.
In particular, what would be the best diagnostic to determine whether HFP audio packets are actually reaching BlueZ and PipeWire, and whether spa.bluez5 is failing to decode/forward them into PCM?
I can provide additional btmon, bluetoothd, kernel, PipeWire, and WirePlumber debug logs if needed.
View raw text
### System details
Omarchy 4.0.4-1 Linux kernel 7.1.9-arch1-2 PipeWire 1.6.8 BlueZ 5.87 bluez-utils 5.87 Bluetooth adapter: Realtek Hyprland Affected Bluetooth devices: - OnePlus Bullets Wireless Z2 - JBL Tune 770NC Same microphone problem also reproduced previously on Linux Mint Cinnamon.
### What's wrong?
Bluetooth microphone input does not work correctly with multiple Bluetooth headsets/headphones.
I tested:
* OnePlus Bullets Wireless Z2
* JBL Tune 770NC
With both devices:
* Bluetooth pairing and connection work.
* A2DP playback works normally.
* HFP/HSP microphone profiles are available.
* The Bluetooth microphone source is exposed by PipeWire.
* `pw-record` can successfully record from the source.
* HFP/eSCO transport can be established.
* However, the resulting microphone recording contains effectively complete digital silence.
For example, recording directly through PipeWire and analyzing the WAV with FFmpeg consistently gives:
```text
mean_volume: -91.0 dB
max_volume: -91.0 dB
```
I tested both HFP modes:
```text
HFP CVSD -> microphone source available -> silence
HFP mSBC -> microphone source available -> silence
```
I also bypassed applications such as Chrome/Discord and tested directly with `pw-record` and `pw-cat`, so this does not appear to be an application-specific microphone permission or routing issue.
During troubleshooting, `btmon` showed successful HFP/eSCO connection establishment, for example:
```text
Synchronous Connect Complete
Status: Success
Link type: eSCO
Air mode: CVSD
```
However, WirePlumber repeatedly reports:
```text
spa.bluez5: Failure in Bluetooth audio transport
/org/bluez/hci0/dev_<redacted>/sep2/fd0
```
I also observed PipeWire Bluetooth nodes transitioning into an error state.
I tried changing the WirePlumber Bluetooth auto-connect configuration to include HFP/HSP:
```text
bluez5.auto-connect = [
hfp_hf
hsp_hs
a2dp_sink
a2dp_source
]
```
and restarted:
```text
systemctl --user restart wireplumber pipewire pipewire-pulse
```
This did not resolve the issue.
I also confirmed:
```text
bluetooth.autoswitch-to-headset-profile = true
```
Manual HFP profile selection still produces silent recordings.
### Important cross-platform observation
The same microphone hardware works normally on:
* Windows 10
* Windows 11
* Android
The same problem also occurred previously on **Linux Mint Cinnamon** with both Bluetooth devices.
Therefore, this is not limited to a single Bluetooth device and does not appear to be specific to one particular Linux desktop application.
I am not sure which layer is failing, but the current evidence points somewhere in the Linux Bluetooth HFP audio path, potentially involving BlueZ, PipeWire `spa.bluez5`, WirePlumber, the Bluetooth adapter/kernel, or HFP compatibility.
### Minimal reproduction
1. Connect the Bluetooth headset.
2. Switch to HFP:
```bash
pactl set-card-profile bluez_card.<redacted> headset-head-unit-cvsd
```
3. Record directly:
```bash
pw-record --target bluez_input.<redacted> /tmp/bt-test.wav
```
4. Analyze:
```bash
ffmpeg -i /tmp/bt-test.wav -af volumedetect -f null -
```
Observed:
```text
mean_volume: -91.0 dB
max_volume: -91.0 dB
```
### Request
I would like help identifying where the microphone audio is being lost.
In particular, what would be the best diagnostic to determine whether HFP audio packets are actually reaching BlueZ and PipeWire, and whether `spa.bluez5` is failing to decode/forward them into PCM?
I can provide additional `btmon`, `bluetoothd`, kernel, PipeWire, and WirePlumber debug logs if needed.
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
- Out of scopeDecided by agents · verified · 2026-10-09 14:15 UTC