Skip to content

Repository files navigation

Sony ULT WEAR for Omarchy

Controls for the Sony ULT WEAR (WH-ULT900N), built into the Omarchy bar.

Battery status, noise control, ULT modes, sound feedback, and PipeWire codec switching are available from one keyboard-friendly panel. LDAC is shown as active only after PipeWire confirms the negotiated codec.

Warning

This plugin was vibecoded for my personal setup and has only been tested on my WH-ULT900N. It is not affiliated with or supported by Sony or Omarchy. The headset protocol is unofficial, so use it at your own risk.

Screenshots

Control panel Bar widget
Sony ULT WEAR control panel in the Osaka Jade theme Battery and LDAC status in the Omarchy bar

Features

  • Battery percentage and charging status
  • Noise cancellation, Ambient Sound, Voice Focus, and Off
  • ULT Off, ULT 1, and ULT 2
  • Verified LDAC, AAC, SBC, and SBC XQ switching through PipeWire
  • Live state updates when controls are changed on the headphones
  • Optional local chimes for noise-control changes and bass cues for ULT changes
  • Compact bar status with battery percentage and an LDAC badge
  • Mouse and keyboard control using Omarchy's native panel components

Requirements

  • Omarchy 4 with Quickshell
  • Sony ULT WEAR paired through the normal Bluetooth panel
  • BlueZ, PipeWire, WirePlumber, pactl, and Python 3
  • pw-play for optional sound feedback
  • PipeWire's LDAC codec plugin if LDAC is required

Install

omarchy plugin add https://github.com/pats01/sony-ult-wear-omarchy.git --enable --yes

Update it later with:

omarchy plugin update pats01.sony-ult-wear --yes

The plugin looks for a connected device named ULT WEAR or WH-ULT900N. Bluetooth addresses are discovered at runtime and are never stored in the repository.

Controls

Section Available actions
Listening Off, ANC, Ambient, Voice Focus
ULT Sound Off, ULT 1, ULT 2
Audio codec Every codec advertised by PipeWire
Sound feedback Enable or disable local confirmation sounds

Keyboard shortcuts:

  • n, a, v, o: ANC, Ambient, Voice Focus, Off
  • 0, 1, 2: ULT Off, ULT 1, ULT 2
  • d: switch to LDAC when available
  • s: toggle sound feedback
  • r: refresh
  • Arrow keys or h/j/k/l: move between controls
  • Enter or Space: apply the selected control
  • Tab: switch panels
  • Escape: close

Switching speed and live sync

The Omarchy service keeps one RFCOMM connection open while the headphones are connected. It avoids reconnecting and repeating the Sony handshake after every click.

On my ULT WEAR, a mode change dropped from 1.410 seconds to 0.248–0.329 seconds. Those figures are from a small local test, not a general benchmark.

Sony state notifications are used when available. A lightweight readback on the same connection runs once a second as a fallback, so pressing the physical ULT or NC button should also update the panel.

LDAC notes

Codec changes use PipeWire's runtime BlueZ interface. The plugin switches only to codecs advertised for the current connection and checks the active codec afterward. It does not rewrite WirePlumber configuration or restart audio services.

LDAC may be unavailable when:

  • multipoint is enabled on the headphones;
  • Sony Sound Connect is set to prioritize connection stability;
  • a call has placed the device in an HFP/HSP profile; or
  • the host does not have PipeWire's LDAC codec support installed.

Command-line diagnostics

Stop the Omarchy shell before using one-shot commands because the shell owns the warm headset-control connection while it is running.

./sony-ult status --address AA:BB:CC:DD:EE:FF --json
./sony-ult set-noise anc --address AA:BB:CC:DD:EE:FF --json --sound-cue
./sony-ult set-ult 2 --address AA:BB:CC:DD:EE:FF --json --sound-cue
./sony-ult set-codec LDAC --address AA:BB:CC:DD:EE:FF --json

The internal long-running interface is also available with:

./sony-ult serve --address AA:BB:CC:DD:EE:FF

It accepts JSON-line commands on standard input and emits responses and live state events on standard output.

Development

python -m unittest discover -s tests -p 'test_*.py'
deno test tests/model_test.js
omarchy plugin validate .

See HARDWARE_VALIDATION.md for the local test record and THIRD_PARTY_NOTICES.md for the protocol projects used as references.

License

MIT

About

Omarchy controls for Sony ULT WEAR: battery, ANC/Ambient, ULT modes, sound feedback, and verified LDAC switching.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages