You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -4,7 +4,7 @@ AACP uses opcode `9` for control commands. opcodes are 16 bit integers that spec
4
4
5
5
An AACP packet is formated as:
6
6
7
-
`04 00 04 00 [opcode, little endianness] [data]`
7
+
`04 00 04 00 [opcode, little endian] [data]`
8
8
9
9
So, our control commands becomes
10
10
@@ -15,53 +15,220 @@ So, our control commands becomes
15
15
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.
16
16
17
17
## 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 |
| 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) |
62
18
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 |
### 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)
64
231
65
232
> [!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