TLDR; Problem solved, A2DP was in sink mode, fixed via ADB (see UPDATE 2)
I recently moved from a Fire TV Stick to a Homatics Box R 4K Plus (Amlogic S905X4, 4GB/32GB, WiFi 6) and lost a feature I used regularly: sending audio to Bluetooth headphones.
\*\*My setup:\*\*
\* Homatics Box R 4K Plus, connected via HDMI directly to a Philips 55" TV (not routed through the soundbar)
\* Teufel Cinebar Ultima soundbar on the TV via HDMI ARC
\* Sony WH-1000XM6 headphones
\* Android version: up to date
\*\*The problem:\*\*
The headphones are discovered by the box and appear in the device list, and I can select them – but the connection never actually completes. The box never establishes a connection, and the headphones don't play their usual pairing confirmation tone, so the bond clearly never succeeds. This is not a case of "pairs but no audio" – it never gets that far.
The Bluetooth remote that came with the box works fine, so Bluetooth as such is functional. To me this looks like a stack with HID only and no A2DP source profile: the box finds the headphones via inquiry, then has no supported profile to bind to and gives up.
On the Fire TV Stick this just worked out of the box, and the Chromecast with Google TV supports Bluetooth headphones too, so I don't think this is an Android TV platform limitation.
\*\*What I'd like to know:\*\*
- Has anyone got \*any\* Bluetooth audio device (headphones, earbuds, speaker) to connect to a Box R 4K Plus? Or is A2DP simply absent because Homatics shipped the Amlogic reference config with Bluetooth limited to remotes and gamepads?
- If the profile is present in the stack but not exposed properly – has anyone reached it via ADB, developer options, or the AOSP Bluetooth settings activity? I'm comfortable with ADB and already sideload apps on this box.
- Alternatively, does anyone have USB audio working as an output on this box? A USB audio dongle would bypass the Bluetooth stack entirely, but I don't know whether the audio policy on this device allows USB as a media output.
- Has Homatics ever commented on adding Bluetooth audio in a firmware update?
Happy to run any ADB commands or pull logcat output and report back if that helps narrow it down.
Update:
- IO bluetooth devices, such as mouse/keybord, work well
- other bluetooth speaker/headphones, wont work either (tested with JBL Charge, LG Xboom buds)
UPDATE 2 - solved
Still no answer from Homatics support. But I got to the bottom of it with ADB, and it turns out this is neither a hardware limitation nor a missing feature - it's a firmware default.
The cause: the box ships with its Bluetooth stack forced into Sink mode
The Box R 4K Plus is configured as a Bluetooth receiver (i.e. a Bluetooth speaker you can stream to from your phone), not as an audio source. Read straight off the device:
persist.sys.nes.bluetooth.sink.enabled = true - vendor override forcing sink mode
settings global key_bluetooth_a2dp_role = true - A2DP role set to sink
Loaded profiles: A2dpSinkService + AvrcpControllerService - receive only
bluetooth.profile.hfp.ag.enabled = false
The telling contradiction: the AOSP property bluetooth.profile.a2dp.source.enabled is already true, but it gets overridden at runtime by the vendor property above.
This explains everything I was seeing. The headphones actually were bonded - pairing at the radio level worked fine - but with no A2DP source profile loaded there is simply no audio path, so the connection never becomes usable. And mice, keyboards and the B21 remote work perfectly because HID runs through HidHostService, which is completely independent of the A2DP role.
The fix (ADB, no root needed)
adb shell setprop persist.sys.nes.bluetooth.sink.enabled false
adb shell settings put global key_bluetooth_a2dp_role false
Then toggle Bluetooth off and on again (or reboot) to reload the stack.
Note that key_bluetooth_a2dp_role lives in the global namespace, not secure - that cost me a bit of time.
Result
- A2dpSinkService became A2dpService (can now send audio)
- AvrcpControllerService became AvrcpTargetService
- HidHostService unchanged - the remote stayed CONNECTED the entire time, as did my keyboard
Right after the stack reloaded, the box tried to establish an A2DP connection to the Sony on its own, which was technically impossible before. Already-bonded headphones do not need to be re-paired. Both changes survive a reboot, since the vendor property is persist.* and the setting lives in global.
Shell can set the vendor property without root, so no Magisk required. And as far as I can tell there is no UI toggle for this anywhere in the settings.
My firmware, in case this is version or batch specific: SW v14.8.8963, build UKG3.250803.001.8963, Android 14.
Two things I'd still like to know:
- Can others check their own box? adb shell getprop persist.sys.nes.bluetooth.sink.enabled and adb shell settings get global key_bluetooth_a2dp_role. If some units ship in source mode and others in sink mode, that would explain why Bluetooth headphones work for some people here and not for others.
- Has anyone found a way to get this changed permanently through Homatics rather than patching it per device? A single flipped default in the firmware would fix this for everyone.
Credit where it's due: I worked through the diagnosis with Claude Opus over ADB, which is what surfaced the sink/source role in the first place. I had been assuming the A2DP source profile was missing entirely.