From 0cb14eb30d818eb5b3d3b4e6ca879de53a2f2f01 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Thu, 30 Apr 2026 23:10:17 +0200 Subject: [PATCH] CMF Buds: Fix reading ANC status on newer buds Newer buds send 6 bytes for ANC status instead of 3. Since the relevant information is in the first 3 bytes and identical allow extra trailing bytes when parsing. Confirmed on the Buds 2 Plus. Likely also applies to Ear(a) (see #3994), possibly other models as well. --- .../gadgetbridge/service/devices/nothing/Ear1Support.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nothing/Ear1Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nothing/Ear1Support.java index 77b06bb393..0006eaf30a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nothing/Ear1Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nothing/Ear1Support.java @@ -300,7 +300,7 @@ public class Ear1Support extends AbstractHeadphoneBTBRDeviceSupport { private GBDeviceEventUpdatePreferences handleAudioModeStatus(byte[] payload) { final GBDeviceEventUpdatePreferences preferencesEvent = new GBDeviceEventUpdatePreferences(); - if (payload.length == 3 && payload[0] == 0x01 && payload[2] == 0x00) { + if (payload.length >= 3 && payload[0] == 0x01 && payload[2] == 0x00) { try { NothingAudioMode mode = NothingAudioMode.fromBitmask(payload[1]); LOG.info("Audio mode: " + mode.name());