Skip to content

Commit 395feab

Browse files
committed
docs: new control cmds '25 (again)
1 parent 6914dab commit 395feab

File tree

1 file changed

+214
-47
lines changed

1 file changed

+214
-47
lines changed

docs/control_commands.md

Lines changed: 214 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ AACP uses opcode `9` for control commands. opcodes are 16 bit integers that spec
44

55
An AACP packet is formated as:
66

7-
`04 00 04 00 [opcode, little endianness] [data]`
7+
`04 00 04 00 [opcode, little endian] [data]`
88

99
So, our control commands becomes
1010

@@ -15,53 +15,220 @@ So, our control commands becomes
1515
Bytes that are not used are set to `0x00`. From what I've observed, the `data3` and `data4` are never used, and hence always zero. And, the `data2` is usually used when the configuration can be different for the two buds: like, to change the long press mode. Or, if there can be two "state" variables for the same feature: like the Hearing Aid feature.
1616

1717
## Control Commands
18-
These commands
19-
20-
| Command identifier | Description | Format |
21-
|--------------|---------------------|--------|
22-
| 0x01 | Mic Mode | Single value (1 byte): `0x00` = Automatic, `0x01` = Right, `0x02` = Left |
23-
| 0x05 | Button Send Mode | Single value (1 byte) |
24-
| 0x06 | Has ownership | Single value (1 byte): `0x01` = own, `0x00` = doesn't own |
25-
| 0x0A | Ear Detection | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
26-
| 0x12 | VoiceTrigger for Siri | Single Value (1 byte): `0x01` = enabled, `0x01` = disabled |
27-
| 0x14 | SingleClickMode | Single value (1 byte) |
28-
| 0x15 | DoubleClickMode | Single value (1 byte) |
29-
| 0x16 | ClickHoldMode | Two values (2 bytes; First byte = right bud Second byte = for left): `0x01` = Noise control `0x05` = Siri |
30-
| 0x17 | DoubleClickInterval | Single value (1 byte): 0x00 = Default, `0x01` = Slower, `0x02` = Slowest|
31-
| 0x18 | ClickHoldInterval | Single value (1 byte): 0x00 = Default, `0x01` = Slower, `0x02` = Slowest|
32-
| 0x1A | ListeningModeConfigs | Single value (1 byte): bitmask, Off mode = `0x01`, ANC=`0x02`, Transparency = 0x04, Adaptive = `0x08` |
33-
| 0x1B | OneBudANCMode | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
34-
| 0x1C | CrownRotationDirection | Single value (1 byte): `0x01` = reversed, `0x02` = default |
35-
| 0x0D | ListeningMode | Single value (1 byte): 1 = Off, 2 = noise cancellation, 3 = transparency, 4 = adaptive |
36-
| 0x1E | AutoAnswerMode | Single value (1 byte) |
37-
| 0x1F | Chime Volume | Single value (1 byte): 0 to 100|
38-
| 0x20 | Connect Automatically | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
39-
| 0x23 | VolumeSwipeInterval | Single value (1 byte): 0x00 = Default, `0x01` = Longer, `0x02` = Longest |
40-
| 0x24 | Call Management Config | Single value (1 byte) |
41-
| 0x25 | VolumeSwipeMode | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
42-
| 0x26 | Adaptive Volume Config | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
43-
| 0x27 | Software Mute config | Single value (1 byte) |
44-
| 0x28 | Conversation Detect config | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
45-
| 0x29 | SSL | Single value (1 byte) |
46-
| 0x2C | Hearing Aid Enrolled and Hearing Aid Enabled | Two values (2 bytes; First byte - enrolled, Second byte = enabled): `0x01` = enabled, `0x02` = disabled |
47-
| 0x2E | AutoANC Strength | Single value (1 byte): 0 to 100|
48-
| 0x2F | HPS Gain Swipe | Single value (1 byte) |
49-
| 0x30 | HRM enable/disable state | Single value (1 byte) |
50-
| 0x31 | In Case Tone config | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
51-
| 0x32 | Siri Multitone config | Single value (1 byte) |
52-
| 0x33 | Hearing Assist config | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
53-
| 0x34 | Allow Off Option for Listening Mode config | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
54-
| 0x35 | Sleep Detection config | Single value (1 byte): `0x01` = enabled, `0x02` = disabled |
55-
| 0x36 | Allow Auto Connect | Single value (1 byte): `0x01` = allow, `0x02` = disallow |
56-
| 0x39 | Raw Gestures config | Single value (1 byte): bitmask, single press = `0x01`, double press = `0x02`, triple press = `0x04`, long press = `0x08` |
57-
| 0x3C | System Siri message config | Single value (1 byte) |
58-
| 0x3E | Uplink EQ Bud config | Single value (1 byte) |
59-
| 0x3F | Uplink EQ Source config | Single value (1 byte) |
60-
| 0x40 | In Case Tone Volume | Single value (1 byte): 0 to 100 |
61-
| 0x41 | Disable Button Input config | Single value (1 byte) |
6218

19+
| Command identifier | Description |
20+
|--------------|---------------------|
21+
| 0x01 | Mic Mode |
22+
| 0x05 | Button Send Mode |
23+
| 0x06 | Owns connection |
24+
| 0x0A | Ear Detection |
25+
| 0x12 | VoiceTrigger for Siri |
26+
| 0x14 | SingleClickMode |
27+
| 0x15 | DoubleClickMode |
28+
| 0x16 | ClickHoldMode |
29+
| 0x17 | DoubleClickInterval |
30+
| 0x18 | ClickHoldInterval |
31+
| 0x1A | ListeningModeConfigs |
32+
| 0x1B | OneBudANCMode |
33+
| 0x1C | CrownRotationDirection |
34+
| 0x0D | ListeningMode |
35+
| 0x1E | AutoAnswerMode |
36+
| 0x1F | Chime Volume |
37+
| 0x20 | Connect Automatically |
38+
| 0x23 | VolumeSwipeInterval |
39+
| 0x24 | Call Management Config |
40+
| 0x25 | VolumeSwipeMode |
41+
| 0x26 | Adaptive Volume Config |
42+
| 0x27 | Software Mute config |
43+
| 0x28 | Conversation Detect config |
44+
| 0x29 | SSL |
45+
| 0x2C | Hearing Aid Enrolled and Hearing Aid Enabled |
46+
| 0x2E | AutoANC Strength |
47+
| 0x2F | HPS Gain Swipe |
48+
| 0x30 | HRM enable/disable state |
49+
| 0x31 | In Case Tone config |
50+
| 0x32 | Siri Multitone config |
51+
| 0x33 | Hearing Assist config |
52+
| 0x34 | Allow Off Option for Listening Mode config |
53+
| 0x35 | Sleep Detection config |
54+
| 0x36 | Allow Auto Connect |
55+
| 0x37 | PPE Toggle config |
56+
| 0x38 | Personal Protective Equipment Cap Level config |
57+
| 0x39 | Raw Gestures config |
58+
| 0x3A | Temporary Pairing Config |
59+
| 0x3B | Dynamic End of Charge config |
60+
| 0x3C | System Siri message config |
61+
| 0x3D | Hearing Aid Generic config |
62+
| 0x3E | Uplink EQ Bud config |
63+
| 0x3F | Uplink EQ Source config |
64+
| 0x40 | In Case Tone Volume |
65+
| 0x41 | Disable Button Input config |
6366

67+
## Command Details
68+
69+
### 0x01 - Mic Mode
70+
Format: Single value (1 byte)
71+
Values: `0x00` = Automatic, `0x01` = Right, `0x02` = Left.
72+
73+
### 0x05 - Button Send Mode
74+
Format: Single value (1 byte)
75+
Additional notes: Logged as "Set Button Send Mode: %d". May involve context updates for button handling.
76+
77+
### 0x06 - Owns connection
78+
Format: Single value (1 byte)
79+
Values: `0x01` = own, `0x00` = doesn't own.
80+
81+
### 0x0A - Ear Detection
82+
Format: Single value (1 byte)
83+
Values: `0x01` = enabled, `0x02` = disabled.
84+
85+
### 0x12 - VoiceTrigger for Siri
86+
Format: Single value (1 byte)
87+
Values: `0x01` = enabled, `0x02` = disabled.
88+
89+
### 0x14 - SingleClickMode
90+
Format: Single value (1 byte)
91+
92+
### 0x15 - DoubleClickMode
93+
Format: Single value (1 byte)
94+
95+
### 0x16 - ClickHoldMode
96+
Format: Two values (2 bytes; First byte = right bud, Second byte = left bud).
97+
Values: `0x01` = Noise control, `0x05` = Siri.
98+
99+
### 0x17 - DoubleClickInterval
100+
Format: Single value (1 byte)
101+
Values: 0x00 = Default, `0x01` = Slower, `0x02` = Slowest.
102+
103+
### 0x18 - ClickHoldInterval
104+
Format: Single value (1 byte)
105+
Values: 0x00 = Default, `0x01` = Slower, `0x02` = Slowest.
106+
107+
### 0x1A - ListeningModeConfigs
108+
Format: Single value (1 byte)
109+
Values: Bitmask, Off mode = `0x01`, ANC=`0x02`, Transparency = 0x04, Adaptive = `0x08`.
110+
111+
### 0x1B - OneBudANCMode
112+
Format: Single value (1 byte)
113+
Values: `0x01` = enabled, `0x02` = disabled
114+
115+
### 0x1C - CrownRotationDirection
116+
Format: Single value (1 byte)
117+
Values: `0x01` = reversed, `0x02` = default.
118+
119+
### 0x0D - ListeningMode
120+
Format: Single value (1 byte)
121+
Values: 1 = Off, 2 = noise cancellation, 3 = transparency, 4 = adaptive.
122+
123+
### 0x1E - AutoAnswerMode
124+
Format: Single value (1 byte)
125+
126+
### 0x1F - Chime Volume
127+
Format: Single value (1 byte)
128+
Values: 0 to 100.
129+
130+
### 0x20 - Connect Automatically
131+
Format: Single value (1 byte)
132+
Values: `0x01` = enabled, `0x02` = disabled.
133+
134+
### 0x23 - VolumeSwipeInterval
135+
Format: Single value (1 byte)
136+
Values: 0x00 = Default, `0x01` = Longer, `0x02` = Longest.
137+
138+
### 0x24 - Call Management Config
139+
Format: Single value (1 byte)
140+
141+
### 0x25 - VolumeSwipeMode
142+
Format: Single value (1 byte)
143+
Values: `0x01` = enabled, `0x02` = disabled
144+
145+
### 0x26 - Adaptive Volume Config
146+
Format: Single value (1 byte)
147+
Values: `0x01` = enabled, `0x02` = disabled
148+
149+
### 0x27 - Software Mute config
150+
Format: Single value (1 byte)
151+
152+
### 0x28 - Conversation Detect config
153+
Format: Single value (1 byte)
154+
Values: `0x01` = enabled, `0x02` = disabled
155+
156+
### 0x29 - SSL
157+
Format: Single value (1 byte)
158+
159+
### 0x2C - Hearing Aid Enrolled and Hearing Aid Enabled
160+
Format: Two values (2 bytes; First byte - enrolled, Second byte = enabled)
161+
Values: `0x01` = enabled, `0x02` = disabled
162+
163+
### 0x2E - AutoANC Strength
164+
Format: Single value (1 byte)
165+
Values: 0 to 100.
166+
167+
### 0x2F - HPS Gain Swipe (swipe to adjust amplification)
168+
Format: Single value (1 byte)
169+
170+
### 0x30 - HRM enable/disable state
171+
Format: Single value (1 byte)
172+
173+
### 0x31 - In Case Tone config
174+
Format: Single value (1 byte)
175+
Values: `0x01` = enabled, `0x02` = disabled
176+
177+
### 0x32 - Siri Multitone config
178+
Format: Single value (1 byte)
179+
180+
### 0x33 - Hearing Assist config
181+
Format: Single value (1 byte)
182+
Values: `0x01` = enabled, `0x02` = disabled
183+
184+
### 0x34 - Allow Off Option for Listening Mode config
185+
Format: Single value (1 byte)
186+
Values: `0x01` = enabled, `0x02` = disabled
187+
188+
### 0x35 - Sleep Detection config
189+
Format: Single value (1 byte)
190+
Values: `0x01` = enabled, `0x02` = disabled
191+
192+
### 0x36 - Allow Auto Connect
193+
Format: Single value (1 byte)
194+
Values: `0x01` = allow, `0x02` = disallow
195+
196+
### 0x37 - PPE Toggle config
197+
Format: Single value (1 byte)
198+
199+
### 0x38 - Personal Protective Equipment Cap Level config
200+
Format: Single value (1 byte)
201+
202+
### 0x39 - Raw Gestures config
203+
Format: Single value (1 byte)
204+
Values: Bitmask, single press = `0x01`, double press = `0x02`, triple press = `0x04`, long press = `0x08`.
205+
206+
### 0x3A - Temporary Pairing Config
207+
Format: Single value (1 byte)
208+
Values: `0x01` = Temporary, `0x02` = Permanent
209+
210+
### 0x3B - Dynamic End of Charge config
211+
Format: Single value (1 byte)
212+
213+
### 0x3C - System Siri message config
214+
Format: Single value (1 byte)
215+
216+
### 0x3D - Hearing Aid Generic config
217+
Format: Single value (1 byte)
218+
219+
### 0x3E - Uplink EQ Bud config
220+
Format: Single value (1 byte)
221+
222+
### 0x3F - Uplink EQ Source config
223+
Format: Single value (1 byte)
224+
225+
### 0x40 - In Case Tone Volume
226+
Format: Single value (1 byte)
227+
Values: 0 to 100.
228+
229+
### 0x41 - Disable Button Input config
230+
Format: Single value (1 byte)
64231

65232
> [!NOTE]
66-
> - These identifiers have been extracted from the macOS 15.4 Beta (24E5238a)'s bluetooth stack.
67-
> - I have already added the ranges of values a command takes that I know of. Feel free to experiemnt by sending the packets for which the range/values are not given here.
233+
> - These identifiers have been extracted from the iOS 19.1 Beta (23B5044l)'s bluetooth stack.
234+
> - I have already added the ranges of values a command takes that I know of. Feel free to experiment by sending the packets for which the range/values are not given here.

0 commit comments

Comments
 (0)