Using a 3rd party Bluetooth LE app - like LightBlue - you can look for a Waxwing's name in a scan of advertising BLE devices. It will be advertised in the format of a hashtag plus the serial number. For example, you'll see #525 as a nearby peripheral in the scan list for Waxwing S/N 525. For your own software, it is easiest to scan for the Waxwing's main Service (4dddd48d-cf30-492e-850b-76d57dd76900). That is how the Parks Audio Waxwing app scans for devices.
4dddd48d-cf30-492e-850b-76d57dd76900
4dddd48d-cf30-492e-850b-76d57dd769014dddd48d-cf30-492e-850b-76d57dd76902The TX command is a characteristic of the main service. It is three bytes of data. The first byte is the Function ID, the second byte is the Function Value, and the third byte does not matter (used for other commands to be documented) so just use zero. The table below shows the values in decimal, but 3rd party programs like LightBlue will typically want hexadecimal.
0x4dddd48d-cf30-492e-850b-76d57dd76900).0x000000. Type 000000 and press send.0x002000. Type 002000 and press send.0x0B0100. Type 0B0100 and press send.0x0B0000. Type 0B0000 and press send.0x4dddd48d-cf30-492e-850b-76d57dd76900).0x630100. Type 630100 and press send.0x630000. Type 630000 and press send.Hopefully, these examples and the table below are all you need to get rolling. There's still a lot to document, so don't hesitate to email me for more assistance.
The use of this API is permitted for any lawful purpose - private or commercial - provided that the following restrictions are adhered to:
Hopefully, these examples and the tables below are all you need to get rolling. There's still a lot to document, so don't hesitate to email me for more assistance.
This API involves three related but separate numbering schemes, and the same function can sit at a different index in each one. Don't assume a function's position in one table tells you its position in another — always look it up by name.
Sent as the 3-byte write described above: [TX Command, Value, 0]. If a row's "RX Stream Index" differs from its TX Command, that's the index where you'll see its current value reported back in the RX stream instead.
| TX Command | RX Stream Index | Function | Default Value | Min Value | Max Value | Notes |
|---|---|---|---|---|---|---|
| 0 | 0 | Volume | 32 | 0 | 32 | |
| 1 | 1 | Gain | 42 | 0 | 76 | |
| 2 | 2 | Warmth | 6 | 0 | 12 | |
| 3 | 3 | Air | 6 | 0 | 12 | |
| 4 | 4 | Treble | 6 | 0 | 12 | |
| 5 | 5 | Bass | 6 | 0 | 12 | |
| 6 | 6 | Bass Boost | 0 | 0 | 1 | |
| 7 | 7 | Hi | 26 | 0 | 28 | |
| 8 | 8 | Lo | 4 | 0 | 28 | |
| 9 | 9 | Mode | 0 | 0 | 4 | |
| 10 | 10 | Grade | 0 | 0 | 3 | Saved as 0 |
| 11 | 11 | Magic | 0 | 0 | 1 | |
| 12 | 12 | FX | 0 | 0 | 4 | |
| 13 | 13 | DeRumble | 0 | 0 | 1 | |
| 14 | 14 | PEQ | 0 | 0 | 1 | |
| 15 | 15 | Load | 1 | 0 | 1 | |
| 16 | 16 | Balance | 15 | 0 | 30 | |
| 17 | 17 | Phase | 0 | 0 | 3 | |
| 18 | 18 | Output | 0 | 0 | 2 | |
| 19 | 19 | EQ | 1 | 0 | 12 | |
| 20 | 20 | Log | 16 | 0 | 31 | Bit 0: on/off, Bits1-4: 16 threshold settings |
| 21 | 21 | Bypass | 0 | 0 | 1 | Saved as 0 |
| 22 | 22 | Levels | 0 | 0 | 1 | |
| 23 | 23 | RESERVED | Not Used | |||
| 24 | 24 | Test | 0 | 0 | 1 | Saved as 0 |
| 25 | 25 | RESERVED | Not Used | |||
| 26 | 26 | RPM33 | 0 | 0 | 1 | |
| 27 | 27 | RPM45 | 0 | 0 | 1 | |
| 28 | 28 | RPM78 | 0 | 0 | 1 | |
| 29 | 29 | Azimuth | 0 | 0 | 1 | |
| 30 | 30 | Fine Balance | 40 | 0 | 80 | |
| 31 | 31 | SineGen | 38 | 0 | 87 | |
| 32 | 32 | SineGen2 | 0 | 0 | 1 | |
| 33 | 33 | Turnover | 8 | 0 | 11 | |
| 34 | 34 | Bass Shelf | 5 | 0 | 5 | |
| 35 | 35 | Treble Cut | 14 | 0 | 19 | |
| 36 | 36 | Frequency (Hz) | 56 | 0 | 63 | |
| 37 | 37 | Gain (dB) | 44 | 0 | 46 | |
| 38 | 38 | Filter Q | 4 | 0 | 10 | |
| 94 | N/A | Edit LOG Time | 0 | 0 | 65535 | Two bytes |
| 100 | 90 | BLE TX Power | 2 | 0 | 2 |
The 100-byte packet broadcast every 500ms once you've enabled the stream (TX Command 99). This packet is described below as well as by this publicly shared Google spreadsheet.
| RX Stream Index | Function | Default Value | Min Value | Max Value | Notes |
|---|---|---|---|---|---|
| 0 | Volume | 32 | 0 | 32 | |
| 1 | Gain | 42 | 0 | 76 | |
| 2 | Warmth | 6 | 0 | 12 | |
| 3 | Air | 6 | 0 | 12 | |
| 4 | Treble | 6 | 0 | 12 | |
| 5 | Bass | 6 | 0 | 12 | |
| 6 | Bass Boost | 0 | 0 | 1 | |
| 7 | Hi | 26 | 0 | 28 | |
| 8 | Lo | 4 | 0 | 28 | |
| 9 | Mode | 0 | 0 | 4 | |
| 10 | Grade | 0 | 0 | 3 | Saved as 0 |
| 11 | Magic | 0 | 0 | 1 | |
| 12 | FX | 0 | 0 | 4 | |
| 13 | DeRumble | 0 | 0 | 1 | |
| 14 | PEQ | 0 | 0 | 1 | |
| 15 | Load | 1 | 0 | 1 | |
| 16 | Balance | 15 | 0 | 30 | |
| 17 | Phase | 0 | 0 | 3 | |
| 18 | Output | 0 | 0 | 2 | |
| 19 | EQ | 1 | 0 | 12 | |
| 20 | Log | 16 | 0 | 31 | Bit 0: on/off, Bits1-4: 16 threshold settings |
| 21 | Bypass | 0 | 0 | 1 | Saved as 0 |
| 22 | Levels | 0 | 0 | 1 | |
| 23 | RESERVED | Not Used | |||
| 24 | Test | 0 | 0 | 1 | Saved as 0 |
| 25 | RESERVED | Not Used | |||
| 26 | RPM33 | 0 | 0 | 1 | |
| 27 | RPM45 | 0 | 0 | 1 | |
| 28 | RPM78 | 0 | 0 | 1 | |
| 29 | Azimuth | 0 | 0 | 1 | |
| 30 | Fine Balance | 40 | 0 | 80 | |
| 31 | SineGen | 38 | 0 | 87 | |
| 32 | SineGen2 | 0 | 0 | 1 | |
| 33 | Turnover | 8 | 0 | 11 | |
| 34 | Bass Shelf | 5 | 0 | 5 | |
| 35 | Treble Cut | 14 | 0 | 19 | |
| 36 | Frequency (Hz) | 56 | 0 | 63 | |
| 37 | Gain (dB) | 44 | 0 | 46 | |
| 38 | Filter Q | 4 | 0 | 10 | |
| 39 | L ADC AVG LSB | N/A | 0 | 99 | xx.XX |
| 40 | L ADC AVG MSB | N/A | 0 | 99 | XX.xx |
| 41 | R ADC AVG LSB | N/A | 0 | 99 | xx.XX |
| 42 | R ADC AVG MSB | N/A | 0 | 99 | XX.xx |
| 43 | L DAC AVG LSB | N/A | 0 | 99 | xx.XX |
| 44 | L DAC AVG MSB | N/A | 0 | 99 | XX.xx |
| 45 | R DAC AVG LSB | N/A | 0 | 99 | xx.XX |
| 46 | R DAC AVG MSB | N/A | 0 | 99 | XX.xx |
| 47 | L ADC PEAK LSB | N/A | 0 | 99 | xx.XX |
| 48 | L ADC PEAK MSB | N/A | 0 | 99 | XX.xx |
| 49 | R ADC PEAK LSB | N/A | 0 | 99 | xx.XX |
| 50 | R ADC PEAK MSB | N/A | 0 | 99 | XX.xx |
| 51 | L DAC PEAK LSB | N/A | 0 | 99 | xx.XX |
| 52 | L DAC PEAK MSB | N/A | 0 | 99 | XX.xx |
| 53 | R DAC PEAK LSB | N/A | 0 | 99 | xx.XX |
| 54 | R DAC PEAK MSB | N/A | 0 | 99 | XX.xx |
| 55 | ADC clips | 0 | 0 | 255 | |
| 56 | DAC clips | 0 | 0 | 255 | |
| 57 | Stereo Detect (SM) | 0 | 0 | 1 | |
| 58 | RPM LSB | 0 | 0 | 99 | xx.XX |
| 59 | RPM MSB | 0 | 0 | 99 | XX.xx |
| 60 | reserved for future fw | 0 | |||
| 61 | reserved for future fw | 0 | |||
| 62 | reserved for future fw | 0 | |||
| 63 | Grade Score | 0 | 0 | 16 | A+=16…P=1 |
| 64 | Grade Seconds LSB | 0 | 0 | 255 | |
| 65 | Grade Seconds MSB | 0 | 0 | 255 | |
| 66 | Log Time B0(LSB) | 0 | 0 | 255 | 10ms incr |
| 67 | Log Time B1 | 0 | 0 | 255 | |
| 68 | Log Time B2 | 0 | 0 | 255 | |
| 69 | Log Time B3(MSB) | 0 | 0 | 255 | |
| 70 | Main FW Ver Min | 1 | 0 | 99 | |
| 71 | Main FW Ver Maj | 1 | 0 | 255 | |
| 72 | Main FW Image Slot | 0 | 0 | 2 | |
| 73 | Main FW Bootloader Ver | 2 | 0 | 255 | |
| 74 | reserved for future fw | 0 | |||
| 75 | reserved for future fw | 0 | |||
| 76 | reserved for future fw | 0 | |||
| 77 | reserved for future fw | 0 | |||
| 78 | reserved for future fw | 0 | |||
| 79 | reserved for future fw | 0 | |||
| 80 | reserved for future fw | 0 | |||
| 81 | reserved for future fw | 0 | |||
| 82 | reserved for future fw | 0 | |||
| 83 | reserved for future fw | 0 | |||
| 84 | reserved for future fw | 0 | |||
| 85 | reserved for future ble | 0 | |||
| 86 | reserved for future ble | 0 | |||
| 87 | reserved for future ble | 0 | |||
| 88 | reserved for future ble | 0 | |||
| 89 | reserved for future ble | 0 | |||
| 90 | BLE TX Power | 2 | 0 | 2 | |
| 91 | System Resets | random byte | 0 | 255 | initial state garbage data - must reset to 0 |
| 92 | Flash Saves | random byte | 0 | 255 | initial state garbage data - must reset to 0 |
| 93 | BLE FW Bootloader Ver | 1 | 0 | 255 | |
| 94 | Serial Number LSB | N/A | S/N from 1 to | ||
| 95 | Serial Number MSB | N/A | 65536 (16bit) | ||
| 96 | Bluetooth FW Ver Min | 2 | 0 | 99 | |
| 97 | Bluetooth FW Ver Maj | 1 | 0 | 255 | |
| 98 | Bluetooth FW Image Bank | 0 | 0 | 2 | |
| 99 | SUM8 | (8bit SUM of 0-84) | 0 | 255 |
The format the Waxwing app uses to save and load a full settings file. This is a 63-element array, not something transmitted over Bluetooth — it's purely how the app stores settings on disk.
| fileSlot Index | Function | Default Value | Min Value | Max Value | Notes |
|---|---|---|---|---|---|
| 0 | Volume | 32 | 0 | 32 | |
| 1 | Gain | 42 | 0 | 76 | |
| 2 | Warmth | 6 | 0 | 12 | |
| 3 | Air | 6 | 0 | 12 | |
| 4 | Treble | 6 | 0 | 12 | |
| 5 | Bass | 6 | 0 | 12 | |
| 6 | Bass Boost | 0 | 0 | 1 | |
| 7 | Hi | 26 | 0 | 28 | |
| 8 | Lo | 4 | 0 | 28 | |
| 9 | Mode | 0 | 0 | 4 | |
| 10 | Grade | 0 | 0 | 3 | Saved as 0 |
| 11 | Magic | 0 | 0 | 1 | |
| 12 | FX | 0 | 0 | 4 | |
| 13 | DeRumble | 0 | 0 | 1 | |
| 14 | PEQ | 0 | 0 | 1 | |
| 15 | Load | 1 | 0 | 1 | |
| 16 | Balance | 15 | 0 | 30 | |
| 17 | Phase | 0 | 0 | 3 | |
| 18 | Output | 0 | 0 | 2 | |
| 19 | EQ | 1 | 0 | 12 | |
| 20 | Log | 16 | 0 | 31 | Bit 0: on/off, Bits1-4: 16 threshold settings |
| 21 | Bypass | 0 | 0 | 1 | Saved as 0 |
| 22 | Levels | 0 | 0 | 1 | |
| 23 | File | 0 | 0 | 25 | |
| 24 | Test | 0 | 0 | 1 | Saved as 0 |
| 25 | Unlock Sort | 0 | 0 | 1 | |
| 26 | Fine Balance | 40 | 0 | 80 | |
| 27 | Turnover | 8 | 0 | 11 | |
| 28 | Bass Shelf | 5 | 0 | 5 | |
| 29 | Treble Cut | 14 | 0 | 19 | |
| 30 | Frequency (Hz) | 56 | 0 | 63 | |
| 31 | Gain (dB) | 44 | 0 | 46 | |
| 32 | Filter Q | 4 | 0 | 10 | |
| 33 | Volume Lock | 1 | 0 | 1 | |
| 34 | Gain Lock | 1 | 0 | 1 | |
| 35 | Warmth Lock | 1 | 0 | 1 | |
| 36 | Air Lock | 1 | 0 | 1 | |
| 37 | Treble Lock | 1 | 0 | 1 | |
| 38 | Bass Lock | 1 | 0 | 1 | |
| 39 | Bass Boost Lock | 1 | 0 | 1 | |
| 40 | Hi Lock | 1 | 0 | 1 | |
| 41 | Lo Lock | 1 | 0 | 1 | |
| 42 | Mode Lock | 1 | 0 | 1 | |
| 43 | Grade Lock | 1 | 0 | 1 | |
| 44 | Magic Lock | 1 | 0 | 1 | |
| 45 | FX Lock | 1 | 0 | 1 | |
| 46 | DeRumble Lock | 1 | 0 | 1 | |
| 47 | PeakNotch Lock | 1 | 0 | 1 | |
| 48 | Load Lock | 1 | 0 | 1 | |
| 49 | Balance Lock | 1 | 0 | 1 | |
| 50 | Phase Lock | 1 | 0 | 1 | |
| 51 | Output Lock | 1 | 0 | 1 | |
| 52 | EQ Lock | 1 | 0 | 1 | |
| 53 | Log Lock | 1 | 0 | 1 | |
| 54 | Bypass Lock | 1 | 0 | 1 | |
| 55 | Levels Lock | 1 | 0 | 1 | |
| 56 | File Lock | 1 | 0 | 1 | |
| 57 | Test Menu Lock | 1 | 0 | 1 | Saved as 1 |
| 58 | Unlock Sort Lock | 1 | 0 | 1 | Saved as 1 |
| 59 | Filename | 'MM 38dB' | |||
| 60 | Log Hours (LSB) | 0 | 0 | 255 | 12 minute units |
| 61 | Log Hours (MSB) | 0 | 0 | 255 | or 0.2 hours |
| 62 | fileSlot Version | 0 (as of 9/2023) | 0 | 255 |
Notes: