--- title: Zero-Code Firmware Series EQ HID Control Protocol and Command Set description: EQ HID control protocol for zero-code firmware series devices, including message structure, command set, and field descriptions for mode switching, parameter read/write, and device information retrieval. keywords: EQ, HID, Control Protocol, Command Set, USB HID, XU316, Zero-Code Firmware, Phaten Audio --- --8<-- "common/phaten_xmos_support_img.md" # Zero-Code Firmware Series EQ HID Control Protocol and Command Set ## 1. Protocol Foundation Specifications ### 1.1 Underlying Communication Protocol Based on USB HID (Human Interface Device) protocol. | Parameter | Value | | :--- | :--- | | Report ID | 0x01 | | Packet Size | 64 bytes | | Transfer Direction | Bidirectional (Host <-> Device) | ### 1.2 Message Format and Data Transmission **Common Message Format** All commands and responses follow the Report structure below: | Field | Bytes | Description | | :--- | :--- | :--- | | Report ID | 1 | Fixed as `0x01` | | Sync Header | 1 | Fixed as `0x77` (command start identifier) | | Command Code | 1 | Indicates specific operation (e.g., `0x8A`) | | Data Area | 61 | Specific data content (unused bytes typically filled with 0) | **Data Transmission Notes** * **Byte Order**: All multi-byte data is transmitted in **Little Endian** mode. * **Floating Point**: Follows IEEE 754 float format. --- ## 2. Protocol Command Set ### 2.1 Command Classification Overview | Command Code | Command Description | Direction | Function | | :--- | :--- | :--- | :--- | | **0x8A** | SET_EQ_MODE | Host→Device | Switch current EQ mode | | **0x8B** | GET_EQ_MODE | Host→Device | Get current EQ mode information (mode number, gain, name) | | **0x8C** | SET_MODE_GAIN_AND_NAME | Host→Device | Set overall gain and name for specified mode | | **0x8D** | SET_EQ_PARAMS | Host→Device | Send single filter parameters | | **0x8E** | GET_EQ_PARAMS | Host→Device | Read single filter parameters | | **0x8F** | GET_DEVICE_INFO | Host→Device | Get device basic information (PID, VID, SN, etc.) | | **0x90** | RESET_EQ_PARAMS | Host→Device | Reset EQ parameters (restore presets) | --- ## 3. Basic Function Command Details ### 3.1 Switch EQ Mode (0x8A) **Host Sends** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header | | 2 | 1 | `0x8A` | Command code | | 3 | 1 | `Mode` | Mode value
0-5: Preset modes
6-8: User modes
9: Bypass | | 4-63 | 60 | `Reserved` | Reserved bytes (0x00) | --- ### 3.2 Get Current EQ Mode Information (0x8B) **Host Sends** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header | | 2 | 1 | `0x8B` | Command code | | 3-63 | 61 | `Reserved` | Reserved bytes (0x00) | **Device Returns (Response)** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header 1 | | 2 | 1 | `0x8B` | Sync header 2 (echo command code) | | 3 | 1 | `Mode` | Current mode value | | 4-7 | 4 | `Gain` | Overall gain (int32, little endian, range 0~-50dB) | | 8-23 | 16 | `Name` | Mode name (UTF-8 string) | | 24-63 | 40 | `Reserved` | Reserved bytes | --- ### 3.3 Set Mode Overall Gain and Name (0x8C) **Host Sends** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header | | 2 | 1 | `0x8C` | Command code | | 3 | 1 | `Mode` | Target mode value (0-9) | | 4-7 | 4 | `Gain` | Overall gain (int32, little endian) | | 8-23 | 16 | `Name` | Mode name (UTF-8 string) | | 24-63 | 40 | `Reserved` | Reserved bytes | --- ### 3.4 Send EQ Parameters (0x8D) **Host Sends** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header | | 2 | 1 | `0x8D` | Command code | | 3 | 1 | `Mode` | Mode value (0-9) | | 4 | 1 | `Band` | Filter index (0-7) | | 5 | 1 | `Type` | Filter type (see table below) | | 6-9 | 4 | `Freq` | Center frequency Hz (float, little endian) | | 10-13 | 4 | `Q` | Q value (float, little endian) | | 14-17 | 4 | `BW` | Bandwidth Hz (float, little endian) | | 18-21 | 4 | `Gain` | Gain dB (float, little endian) | | 22-63 | 42 | `Reserved` | Reserved bytes | **Filter Type Codes** | Code | Type | Code | Type | | :--- | :--- | :--- | :--- | | 0x00 | Bypass | 0x06 | Band Reject | | 0x01 | All Pass | 0x07 | Notch | | 0x02 | Peak | 0x08 | Constant Q | | 0x03 | Low Pass | 0x09 | Low Shelf | | 0x04 | High Pass | 0x0A | High Shelf | | 0x05 | Band Pass | | | --- ### 3.5 Read EQ Parameters (0x8E) **Host Sends** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header | | 2 | 1 | `0x8E` | Command code | | 3 | 1 | `Mode` | Mode value (0-9) | | 4 | 1 | `Band` | Filter index (0-7) | | 5-63 | 59 | `Reserved` | Reserved bytes | **Device Returns (Response)** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header 1 | | 2 | 1 | `0x8E` | Sync header 2 (echo command code) | | 3 | 1 | `Mode` | Mode value | | 4 | 1 | `Band` | Filter index | | 5 | 1 | `Type` | Filter type | | 6-9 | 4 | `Freq` | Center frequency (float, little endian) | | 10-13 | 4 | `Q` | Q value (float, little endian) | | 14-17 | 4 | `BW` | Bandwidth (float, little endian) | | 18-21 | 4 | `Gain` | Gain (float, little endian) | | 22-63 | 41 | `Reserved` | Reserved bytes | --- ### 3.6 Get Device Information (0x8F) **Host Sends** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header | | 2 | 1 | `0x8F` | Command code | | 3-63 | 61 | `Reserved` | Reserved bytes | **Device Returns (Response)** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header 1 | | 2 | 1 | `0x8F` | Sync header 2 (echo command code) | | 3-4 | 2 | `PID` | Product ID (uint16, little endian) | | 5-6 | 2 | `VID` | Vendor ID (uint16, little endian) | | 7-22 | 16 | `Product` | Product string (UTF-8) | | 23-38 | 16 | `Vendor` | Vendor string (UTF-8) | | 39-54 | 16 | `SN` | Serial number string (UTF-8) | | 55-63 | 9 | `Reserved` | Reserved bytes | --- ### 3.7 Reset EQ Parameters (0x90) **Host Sends** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header | | 2 | 1 | `0x90` | Command code | | 3 | 1 | `Mode` | Mode number (0-9)
`0xFF` indicates reset all modes | | 4-63 | 60 | `Reserved` | Reserved bytes | **Device Returns (Response)** | Byte Position | Length | Content | Description | | :--- | :--- | :--- | :--- | | 0 | 1 | `0x01` | Report ID | | 1 | 1 | `0x77` | Sync header 1 | | 2 | 1 | `0x90` | Sync header 2 (echo command code) | | 3 | 1 | `Status` | Status code (0x00=success, 0x01=failure) | | 4-63 | 60 | `Reserved` | Reserved bytes | ## Inquiries and Feedback
Click to expand inquiry and feedback form --8<-- "common/customer_form.md"