HID Device Control Commands¶
Command Set Scope¶
Applicability
This page contains device management business commands that exist only on the USB HID channel (firmware upgrade, reboot, EQ band count, upsampling, EX3D). Packet structure (64 bytes, sync header 0x77, Report ID 0x01): see USB HID Base Protocol; EQ and tone control commands (dual UART/HID channel): see EQ and Tone Control Commands.
This page is same-source maintained with the "Product Control Commands" chapter of product datasheets. EX3D commands apply only to VID 0x20B1, PID 0x80D3 (V7.1 spatial audio dedicated devices); product firmwares may support different command subsets — refer to the product datasheet.
Command Overview¶
| Command Header | Name | Function | Applicability Notes |
|---|---|---|---|
| 0xA7 | FIRMWARE_UPGRADE_START | Start firmware upgrade | |
| 0xA8 | FIRMWARE_UPGRADE_DATA | Transmit firmware data block | 57 bytes per block |
| 0xA9 | FIRMWARE_UPGRADE_END | End firmware upgrade | Device verifies image integrity |
| 0xAA | FIRMWARE_UPGRADE_STATUS | Get upgrade status | |
| 0xAB | FIRMWARE_UPGRADE_ABORT | Abort firmware upgrade | |
| 0xAC | FIRMWARE_UPGRADE_ERASE | Erase upgrade image | |
| 0xAE | DEVICE_REBOOT | Device reboot | No response |
| 0xB3 | SET_EQ_BAND_COUNT | Set EQ band count | 8/16/24/32 bands, saved to Flash |
| 0xB4 | GET_EQ_BAND_COUNT | Get EQ band count | |
| 0x80 | SET_UPSAMPLE | Set sample rate upsampling | 0=disable 1=enable |
| 0x81 | GET_UPSAMPLE | Get upsampling status | |
| 0xB0 | SET_EX3D_CMD | Send EX3D set command | VID 0x20B1/PID 0x80D3 only |
| 0xB1 | GET_EX3D_CMD | Read EX3D command | VID 0x20B1/PID 0x80D3 only |
Command Details¶
Set Sample Rate Upsampling SET_UPSAMPLE (0x80)¶
Function: Set device sampling rate upsampling switch
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0x80 |
| 3 | 1 | upsample | Upsample status (0=Disable, 1=Enable) |
| 4-63 | 60 | reserved | Reserved fields (fill with 0) |
Parameter Description: - Upsample status: 0=Disable upsampling, 1=Enable upsampling
Return Value: No direct return value. To confirm upsampling status, use GET_UPSAMPLE (0x81).
Get Upsampling Status GET_UPSAMPLE (0x81)¶
Function: Read device current sampling rate upsampling status
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0x81 |
| 3-63 | 61 | reserved | Reserved fields (fill with 0) |
Response Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0x81 (echo) |
| 3 | 1 | upsample | Current upsample status (0=Disabled, 1=Enabled) |
| 4-63 | 60 | reserved | Reserved fields (fill with 0) |
Start Firmware Upgrade FIRMWARE_UPGRADE_START (0xA7)¶
Function: Start firmware upgrade process, send firmware size and get upgrade parameters
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xA7 |
| 3-6 | 4 | fw_size | Firmware size (bytes, uint32, little endian) |
| 7-63 | 57 | reserved | Reserved fields (fill with 0) |
Response Format (64 bytes) (Auto-report):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xA7 |
| 2 | 1 | status | Status code (0x00=success, 0x01=failure, 0x03=invalid size) |
| 3-6 | 4 | aligned_size | Page-aligned actual size (uint32, little endian) |
| 7-8 | 2 | total_blocks | Total blocks (uint16, little endian) |
| 9-63 | 55 | reserved | Reserved fields (fill with 0) |
Transmit Firmware Data Block FIRMWARE_UPGRADE_DATA (0xA8)¶
Function: Transfer firmware data block, 57 bytes per block
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xA8 |
| 2-3 | 2 | block_num | Block number (starting from 0, uint16, little endian) |
| 4 | 1 | data_len | Data length (fixed 57) |
| 5-61 | 57 | data | Firmware data (57 bytes) |
| 62 | 1 | checksum | Checksum (sum of bytes 0-61 mod 256) |
Response Format (64 bytes) (Auto-report):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xA8 |
| 2 | 1 | status | Status code (0x00=success, 0x04=block number error, 0x05=checksum error) |
| 3-4 | 2 | ack_block | Acknowledged block number (uint16, little endian) |
| 5-63 | 59 | reserved | Reserved fields (fill with 0) |
End Firmware Upgrade FIRMWARE_UPGRADE_END (0xA9)¶
Function: Complete firmware transfer, verify image integrity
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xA9 |
| 2-5 | 4 | fw_size | Total firmware size (for verification, uint32, little endian) |
| 6-63 | 58 | reserved | Reserved fields (fill with 0) |
Response Format (64 bytes) (Auto-report):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xA9 |
| 2 | 1 | status | Status code (0x00=success, 0x01=failure) |
| 3-63 | 61 | reserved | Reserved fields (fill with 0) |
Get Upgrade Status FIRMWARE_UPGRADE_STATUS (0xAA)¶
Function: Query upgrade status, progress, received blocks, total blocks, etc.
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xAA |
| 2-63 | 62 | reserved | Reserved fields (fill with 0) |
Response Format (64 bytes) (Auto-report):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xAA |
| 2 | 1 | status | Upgrade status (0=Idle, 1=Preparing, 2=Transferring, 3=Finalizing, 4=Completed, 5=Error, 6=Aborted) |
| 3-4 | 2 | received_blocks | Received blocks (uint16, little endian) |
| 5-6 | 2 | total_blocks | Total blocks (uint16, little endian) |
| 7-8 | 2 | written_pages | Written pages (uint16, little endian) |
| 9-10 | 2 | total_pages | Total pages (uint16, little endian) |
| 11-14 | 4 | received_bytes | Transferred bytes (uint32, little endian) |
| 15-18 | 4 | total_bytes | Total bytes (uint32, little endian) |
| 19 | 1 | error_code | Error code |
| 20-63 | 44 | reserved | Reserved fields (fill with 0) |
Upgrade Status Enumeration: - 0: IDLE (Idle) - 1: PREPARING (Preparing) - 2: TRANSFERRING (Transferring) - 3: FINALIZING (Finalizing) - 4: COMPLETED (Completed) - 5: ERROR (Error) - 6: ABORTED (Aborted)
Abort Firmware Upgrade FIRMWARE_UPGRADE_ABORT (0xAB)¶
Function: Abort current upgrade process, optionally erase transferred data
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xAB |
| 2 | 1 | erase_flag | Erase flag (0x00=keep data, 0x01=erase data) |
| 3-63 | 61 | reserved | Reserved fields (fill with 0) |
Response Format (64 bytes) (Auto-report):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xAB |
| 2 | 1 | status | Status code (0x00=success) |
| 3-63 | 61 | reserved | Reserved fields (fill with 0) |
Erase Upgrade Image FIRMWARE_UPGRADE_ERASE (0xAC)¶
Function: Erase existing upgrade image in Flash
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xAC |
| 2-63 | 62 | reserved | Reserved fields (fill with 0) |
Response Format (64 bytes) (Auto-report):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xAC |
| 2 | 1 | status | Status code (0x00=success) |
| 3-63 | 61 | reserved | Reserved fields (fill with 0) |
Device Reboot DEVICE_REBOOT (0xAE)¶
Function: Reboot device immediately
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | sync_header | Sync header: 0x77 |
| 1 | 1 | cmd_header | Command header: 0xAE |
| 2-63 | 62 | reserved | Reserved fields (fill with 0) |
Response: No response, device reboots immediately.
Set EQ Band Count SET_EQ_BAND_COUNT (0xB3)¶
Function: Set EQ band count, supports dynamic switching among 8/16/24/32 bands, controls number of DSP cores participating in processing
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB3 |
| 3 | 1 | band_count | EQ band count (8/16/24/32) |
| 4-63 | 60 | reserved | Reserved fields (fill with 0) |
EQ Band Count Definitions: - 8: Only Core0 participates in processing - 16: Core0 + Core1 participate in processing - 24: Core0 + Core1 + Core2 participate in processing - 32: All 4 cores participate in processing
Device Processing: - Only accepts 8, 16, 24, 32; other values are rejected - Saved to Flash (independent file eq_band_cnt), restored on power-up - After setting, triggers parameter sync to tile1, cores on tile1 not participating in processing bypass audio
Response Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB3 (echo) |
| 3 | 1 | status | Status code (0x00=success, 0x01=failure) |
| 4 | 1 | band_count | Current EQ band count (8/16/24/32) |
| 5-63 | 59 | reserved | Reserved fields (fill with 0) |
Get EQ Band Count GET_EQ_BAND_COUNT (0xB4)¶
Function: Read current EQ band count
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB4 |
| 3-63 | 61 | reserved | Reserved fields (fill with 0) |
Response Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB4 (echo) |
| 3 | 1 | band_count | Current EQ band count (8/16/24/32) |
| 4-63 | 60 | reserved | Reserved fields (fill with 0) |
Send EX3D Set Command SET_EX3D_CMD (0xB0)¶
Function: Send EX3D setting command, encapsulates all EX3D SET commands for spatial audio parameter configuration
Applicable Devices: VID 0x20B1, PID 0x80D3 (V7.1 spatial audio dedicated devices)
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (SET format) |
| 7-10 | 4 | param1 | int32 Parameter 1 (varies by command) |
| 11-14 | 4 | param2 | int32 Parameter 2 (varies by command) |
| 15-18 | 4 | param3 | int32 Parameter 3 (varies by command) |
| 19-63 | 45 | reserved | Reserved fields (fill with 0) |
Supported EX3D SET Commands:
| EX3D Command Code | Command Name | Function Description |
|---|---|---|
| 0x84 | CMD_SOUND_FIELD | Set sound field mode |
| 0x87 | CMD_LMT_THRESHOLD | Set gunshot threshold |
| 0x93 | CMD_EXPAND_GAIN | Set footstep gain |
Response Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 (echo) |
| 3 | 1 | status | Status code (0x00=success, 0x01=failure) |
| 4-7 | 4 | ex3d_cmd | EX3D command code (echo) |
| 8-11 | 4 | retval | Return value (0xFFFFFFFF indicates parameter error) |
| 12-63 | 52 | reserved | Reserved fields (fill with 0) |
Read EX3D Command GET_EX3D_CMD (0xB1)¶
Function: Read EX3D parameters, encapsulates all EX3D GET commands for spatial audio parameter reading
Applicable Devices: VID 0x20B1, PID 0x80D3 (V7.1 spatial audio dedicated devices)
Request Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (GET format) |
| 7-10 | 4 | param1 | uint32 Parameter 1 (channel number, index, etc.) |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
Supported EX3D GET Commands:
| EX3D Command Code | Command Name | Function Description |
|---|---|---|
| 0x184 | CMD_SOUND_FIELD | Get sound field mode |
| 0x187 | CMD_LMT_THRESHOLD | Get gunshot threshold |
| 0x18D | CMD_LEVEL | Get audio level |
| 0x193 | CMD_EXPAND_GAIN | Get footstep gain |
Response Format (64 bytes):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 (echo) |
| 3-6 | 4 | ex3d_cmd | EX3D command code (echo) |
| 7-10 | 4 | retval1 | uint32 Return value 1 |
| 11-14 | 4 | retval2 | uint32 Return value 2 |
| 15-18 | 4 | retval3 | uint32 Return value 3 |
| 19-63 | 45 | reserved | Reserved fields (fill with 0) |
EX3D Sub-Command Details¶
EX3D Sub-Command Detailed Descriptions¶
EX3D Protocol Note
The following commands are sent via 0xB0/0xB1 encapsulation and are only applicable to V7.1 spatial audio devices with VID 0x20B1, PID 0x80D3.
2.3.1 EX3D Command Code Format Description¶
- SET Command Format:
base_command_code & ~0x0100(clear bit 9) - Example: Set gunshot threshold = 0x87 & ~0x0100 = 0x87
-
Example: Set footstep gain = 0x93 & ~0x0100 = 0x93
-
GET Command Format:
base_command_code | 0x0100(set bit 9) - Example: Get gunshot threshold = 0x87 | 0x0100 = 0x187
- Example: Get footstep gain = 0x93 | 0x0100 = 0x193
2.3.2 Sound Field Mode Control (CMD_SOUND_FIELD = 0x84)¶
Function: Set or get current sound field mode
Application Scenario: Switch between FPS Game/RPG Game/3A Game sound field effects
SET Command Request Packet Format (0xB0 encapsulated):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x84 = CMD_SET(CMD_SOUND_FIELD)) |
| 7-10 | 4 | mode | uint32 User mode value: 1=FPS Game, 2=RPG Game, 3=3A Game |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
User Mode → Internal IR Algorithm Mapping:
| User Value | Meaning | STEREO_EN=1 (IR) | V71_AUDIO_MODE=1 (IR) |
|---|---|---|---|
| 1 | FPS Game | IR_GAME (1) | IR_7_1_GAME (4) |
| 2 | RPG Game | IR_MUSIC (2) | IR_7_1_MUSIC (5) |
| 3 | 3A Game | IR_MOVIE (3) | IR_7_1_MOVIE (6) |
SET Command Response Packet Format:
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 (echo) |
| 3 | 1 | status | Status code (0x00=success, 0x01=failure) |
| 4-7 | 4 | ex3d_cmd | EX3D command code (0x84, echo) |
| 8-11 | 4 | retval | Return value (0xFFFFFFFF=invalid index, others=success) |
| 12-63 | 52 | reserved | Reserved fields (fill with 0) |
GET Command Request Packet Format (0xB1 encapsulated):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x184 = CMD_GET(CMD_SOUND_FIELD)) |
| 7-63 | 57 | reserved | Reserved fields (fill with 0) |
GET Command Response Packet Format:
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 (echo) |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x184, echo) |
| 7-10 | 4 | mode | uint32 Current user mode value (1=FPS Game, 2=RPG Game, 3=3A Game) |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
2.3.3 Gunshot Threshold Control (CMD_LMT_THRESHOLD = 0x87)¶
Function: Set/get gunshot sound effect trigger threshold
Application Scenario: Detect gunshots and trigger corresponding audio processing in FPS Game/3A Game modes
SET Command Request Packet Format (0xB0 encapsulated):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x87 = CMD_SET(CMD_LMT_THRESHOLD)) |
| 7-10 | 4 | threshold | int32 Threshold value (range: -96 ~ 0 dB) |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
SET Command Response Packet Format:
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 (echo) |
| 3 | 1 | status | Status code (0x00=success, 0x01=failure) |
| 4-7 | 4 | ex3d_cmd | EX3D command code (0x87, echo) |
| 8-11 | 4 | retval | Return value (0xFFFFFFFF=invalid index, others=success) |
| 12-63 | 52 | reserved | Reserved fields (fill with 0) |
GET Command Request Packet Format (0xB1 encapsulated):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x187 = CMD_GET(CMD_LMT_THRESHOLD)) |
| 7-63 | 57 | reserved | Reserved fields (fill with 0) |
GET Command Response Packet Format:
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 (echo) |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x187, echo) |
| 7-10 | 4 | threshold | int32 Current threshold value (range: -96 ~ 0 dB) |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
2.3.4 Footstep Gain Control (CMD_EXPAND_GAIN = 0x93)¶
Function: Set/get footstep sound effect gain
Application Scenario: Enhance footstep effects in FPS Game/3A Game modes
SET Command Request Packet Format (0xB0 encapsulated):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x93 = CMD_SET(CMD_EXPAND_GAIN)) |
| 7-10 | 4 | gain | int32 Gain value (range: 0 ~ 24 dB) |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
SET Command Response Packet Format:
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB0 (echo) |
| 3 | 1 | status | Status code (0x00=success, 0x01=failure) |
| 4-7 | 4 | ex3d_cmd | EX3D command code (0x93, echo) |
| 8-11 | 4 | retval | Return value (0xFFFFFFFF=invalid index, others=success) |
| 12-63 | 52 | reserved | Reserved fields (fill with 0) |
GET Command Request Packet Format (0xB1 encapsulated):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x193 = CMD_GET(CMD_EXPAND_GAIN)) |
| 7-63 | 57 | reserved | Reserved fields (fill with 0) |
GET Command Response Packet Format:
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 (echo) |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x193, echo) |
| 7-10 | 4 | gain | int32 Current gain value (range: 0 ~ 24 dB) |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
2.3.5 Level Retrieval (CMD_LEVEL = 0x8D)¶
Function: Get channel level data
Application Scenario: Real-time audio level meter display
GET Command Request Packet Format (0xB1 encapsulated):
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x18D = CMD_GET(CMD_LEVEL)) |
| 7-10 | 4 | count | uint32 Channel count (1-16) |
| 11-63 | 53 | reserved | Reserved fields (fill with 0) |
GET Command Response Packet Format:
| Offset | Length | Field Name | Description |
|---|---|---|---|
| 0 | 1 | report_id | Fixed value: 0x01 |
| 1 | 1 | sync_header | Sync header: 0x77 |
| 2 | 1 | cmd_header | Command header: 0xB1 (echo) |
| 3-6 | 4 | ex3d_cmd | EX3D command code (0x18D, echo) |
| 7 onwards | N | levels | float32[] Array of channel level values |
| ... | ... | ... | Reserved fields (fill with 0) |
Typical Business Flows¶
Firmware Upgrade Flow¶
- Send FIRMWARE_UPGRADE_START (0xA7) with the firmware size
- Device returns the page-aligned size and total block count
- Send FIRMWARE_UPGRADE_DATA (0xA8) in a loop to transfer firmware data blocks
- After the transfer, send FIRMWARE_UPGRADE_END (0xA9) to finish the upgrade
- Device verifies image integrity and returns status
EX3D Sound Field Read Flow¶
Applicable devices: VID 0x20B1, PID 0x80D3 (V7.1 spatial audio dedicated devices)
- Send GET_EX3D_CMD (0xB1) wrapping CMD_SOUND_FIELD (0x184)
- Device returns the current sound field mode (1=FPS Game, 2=RPG Game, 3=3A Game)
- Update the UI state based on the sound field mode
EX3D Sound Field Set Flow¶
Applicable devices: VID 0x20B1, PID 0x80D3 (V7.1 spatial audio dedicated devices)
- Send SET_EX3D_CMD (0xB0) wrapping CMD_SOUND_FIELD (0x84) and the target mode value
- Device updates the internal sound field mode state and returns a response
- When switching from RPG Game to FPS Game/3A Game, re-read the FPS control parameters
EX3D FPS Control Parameter Read Flow¶
Applicable devices: VID 0x20B1, PID 0x80D3 (V7.1 spatial audio dedicated devices)
- Send GET_EX3D_CMD (0xB1) wrapping CMD_LMT_THRESHOLD (0x187) to read the gunshot threshold
- Send GET_EX3D_CMD (0xB1) wrapping CMD_EXPAND_GAIN (0x193) to read the footstep gain
- Device returns the current threshold and gain values respectively

