From f35fe968c628c1c33a9f115a3d06da2f7c40dc28 Mon Sep 17 00:00:00 2001 From: darken Date: Fri, 24 Apr 2026 17:14:40 +0200 Subject: [PATCH] docs(aap): Document SET_BAND_EDGES as RF band gating --- .../pods/core/apple/aap/engine/AapSessionEngine.kt | 2 +- .../pods/core/apple/aap/protocol/AapMessageType.kt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/aap/engine/AapSessionEngine.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/engine/AapSessionEngine.kt index 43638342..8e2078cd 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/aap/engine/AapSessionEngine.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/engine/AapSessionEngine.kt @@ -602,7 +602,7 @@ internal class AapSessionEngine( AapMessageType.UARP_DATA.value, // 0x004F AapMessageType.UNKNOWN_0X50.value, // 0x0050 AapMessageType.SOURCE_CONTEXT.value, // 0x0052 - AapMessageType.SET_BAND_EDGES.value, // 0x0054 (neighbouring opcode; distinct from 0x53 PmeConfig/hearing-aid which CAPod decodes) + AapMessageType.SET_BAND_EDGES.value, // 0x0054 RF band gating (push-only; see AapMessageType kdoc) AapMessageType.UNKNOWN_0X55.value, // 0x0055 AapMessageType.SLEEP_DETECTION_UPDATE.value, // 0x0057 AapMessageType.UNKNOWN_0X58.value, // 0x0058 diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessageType.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessageType.kt index 00f76f90..cb44f41c 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessageType.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessageType.kt @@ -98,6 +98,16 @@ enum class AapMessageType(val value: Int, val wiresharkName: String) { */ PME_CONFIG(0x0053, "PME Config"), + /** + * Configures the AirPods radio's allowed RF bands. AirPods Pro 2 USB-C + * and newer can transmit on 5 GHz / 6 GHz U-NII bands in addition to + * 2.4 GHz ISM — Apple uses this for the proprietary lossless audio mode + * with Apple Vision Pro. The "type" field is a band code from Apple's + * `BSM_BAND_CODE_*` enum (0x0 = ISM24, 0x1/0x2/0x3 = U-NII-1/3/4, + * 0x4–0x7 = U-NII-5A/B/C/D, 0x8 = INVALID; identified via FCC firmware + * analysis). "Set Band Edges" is the label the Wireshark AAP dissector + * uses for this opcode. CAPod observes but does not decode the payload. + */ SET_BAND_EDGES(0x0054, "Set Band Edges"), UNKNOWN_0X55(0x0055, "Unknown"), USB_SPATIAL_SENSOR_DATA_REQUEST(0x0056, "USB Spatial Sensor Data Request"),