[New Device] AULA F99 Keyboard
Name of device:
Link to manufacturer's product page:
https://www.aulastar.com/gaming-keyboard/156.html
Please select what type of device/interface the device uses:
ID information:
Wireless
VID: 0x3554, PID: 0xfa09, Page: 0xff02, Usage: 0x0002
Wired
VID: 0x258a, PID: 0x010c
Please attach screenshots of the device's official control application here:
Please attach device captures here:
I have been able to capture only in wireless mode for now:
F99-7-keys-colorful-starts-with-blue.pcapngF99-7-keys-red.pcapng F99-handshake.pcapng F99-red-full-keyboard-breathing.pcapng F99-red-sound-waves.pcapng F99-1-key-letter-u-rainbow.pcapng
Procotol for wireless mode
I managed to reverse engineer the led direct mode by running the "sound waves" tool of the official software.
Packets have 20 bytes and go like this:
| Byte(s) | Size | Group | Description |
|---|---|---|---|
| 0-4 | 5 | Header | Command and sequencing info |
| 5-18 | 14 | Payload | The actual data |
| 19 | 1 | CRC | Sum of bytes 0-18 & 0xFF |
The header looks like this:
| Byte | Field | Value | Description |
|---|---|---|---|
| 0 | Signature 1 | 0x13 | Static byte, part of the command signature. |
| 1 | Signature 2 | 0x07, 0x05, 0x88 | Type of command. 0x05 gets the model ID and other data which I'm not sure what they are. 0x07 Is the first the software runs, don't know what it is either. 0x88 sends LED color information. |
| 2 | Total Packets | 0x01 - 0x0N | The total number of packets in this complete message. When the message is too big to fit a single packet, multiple packets will be sent. |
| 3 | Packet Index | 0x00 - 0x0N-1 | The index of the current packet in the message. |
| 4 | Mode & Data Length | Mode: 0x10, 0x20; Data Length: 0x0N | For setting colors, the mode can be 0x10 (individual LED colors) or 0x20 (full keyboard solid color). There other modes apparently, but I don't know much about them yet. N is the number of meaningful bytes in this packet's payload. So in a payload with only 5 bytes, this will be 0x15. |
For example, to set the whole keyboard as red, you would send:
0x13, 0x88, 0x1, 0x0, 0x23, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe
(1 packet, mode 0x20 (solid color), payload size of 3 bytes (just the color), color FF0000, padding, CRC)
To set specific key colors, the payload goes like this:
R,G,B,Count,Key,Key,Key...
So for setting one single key in a specific color:
0x13, 0x88, 0x1, 0x0, 0x15, 0x0, 0x0, 0x8b, 0x1, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x69
(1 packet, mode 0x10 (per-key color), payload size of 5 bytes, color 00008B, 1 key, key code (0x2c), padding, CRC)
Example of message bigger than 20 bytes:
0x13, 0x88, 0x2, 0x0, 0x1e, 0x0, 0x1c, 0xe7, 0x6, 0x2b, 0x31, 0x26, 0x32, 0x27, 0x2d, 0x0, 0x9f, 0xff, 0x1, 0x6b
(2 packets, packet number 0, mode 0x10, payload size of 0x0e (14) bytes, color 001CE7, 6 keys, the 6 IDs, color 009FFF, 1 key, CRC)
0x13, 0x88, 0x2, 0x1, 0x11, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdb
(2 packets, packet number 1, mode 0x10, payload size of 0x01 byte, key code 0x2c (continuation of last packet), padding, CRC)
Getting device model ID:
The OEM software sends this to get info about the device (basically just command 0x05 according to the above)
0x13, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19
Input with model ID is:
0x13, 0x5, 0x1, 0x0, 0xa, 0x3, 0x0, 0x0, 0x0, 0x0, 0xa4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcb where the 10th byte is the model ID. 0xa4 is Aula F99, 0xcd is Aula F75 (#4232), which means the IDs are the same as used in the wired protocol. SignalRGB supports the wired protocol and they have those same IDs in their Sinowealth plugin.
I have a PoC for the solid color, that should work in a lot of other devices with the same wireless receiver in !3026, and another specific for Aula F99 in !3027.
Checklist for Step2
-
Name of device -
A link to the vendors product page has been included -
The transport bus has been identified and the appropriate label added to the issue. -
The device ID's have been included for USB or PCI -
Screenshots of the OEM Application are included -
There is either, appropriate code examples linked or suitable device captures attached
