Skip to content

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

  1. Send FIRMWARE_UPGRADE_START (0xA7) with the firmware size
  2. Device returns the page-aligned size and total block count
  3. Send FIRMWARE_UPGRADE_DATA (0xA8) in a loop to transfer firmware data blocks
  4. After the transfer, send FIRMWARE_UPGRADE_END (0xA9) to finish the upgrade
  5. Device verifies image integrity and returns status

EX3D Sound Field Read Flow

Applicable devices: VID 0x20B1, PID 0x80D3 (V7.1 spatial audio dedicated devices)

  1. Send GET_EX3D_CMD (0xB1) wrapping CMD_SOUND_FIELD (0x184)
  2. Device returns the current sound field mode (1=FPS Game, 2=RPG Game, 3=3A Game)
  3. 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)

  1. Send SET_EX3D_CMD (0xB0) wrapping CMD_SOUND_FIELD (0x84) and the target mode value
  2. Device updates the internal sound field mode state and returns a response
  3. 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)

  1. Send GET_EX3D_CMD (0xB1) wrapping CMD_LMT_THRESHOLD (0x187) to read the gunshot threshold
  2. Send GET_EX3D_CMD (0xB1) wrapping CMD_EXPAND_GAIN (0x193) to read the footstep gain
  3. Device returns the current threshold and gain values respectively

Consultation and Feedback

Click to expand consultation and feedback form
×

Notice

Company Name:

Email Address:

Subject:

Message: