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.

The Waxwing BLE Service:

4dddd48d-cf30-492e-850b-76d57dd76900

The Service's characteristics:

The 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.

Tutorial examples:

  1. Start the LightBlue app and find your Waxwing in the list of devices. Press "Connect".
  2. Scroll down to the Waxwing Service (0x4dddd48d-cf30-492e-850b-76d57dd76900).
  3. Click on "TX command to Waxwing".
  4. Click "Write new value". Now let's set the Waxwing's Volume to Mute. This would be 0 for the function, 0 for the value, and 0 for the unused third byte. In hexadecimal this will be 0x000000. Type 000000 and press send.
  5. Click "Write new value". Now let's set the Waxwing's Volume back to 100%. This would be 0 for the function, 32 for the value, and 0 for the unused third byte. In hexadecimal this will be 0x002000. Type 002000 and press send.
  6. Click "Write new value". Now let's turn on Magic. This would be 11 for the function, 1 for the value, and 0 for the unused third byte. In hexadecimal this will be 0x0B0100. Type 0B0100 and press send.
  7. Click "Write new value". Now let's turn off Magic. This would be 11 for the function, 0 for the value, and 0 for the unused third byte. In hexadecimal this will be 0x0B0000. Type 0B0000 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.

Waxwing API Terms (8/10/24):

The use of this API is permitted for any lawful purpose - private or commercial - provided that the following restrictions are adhered to:

  1. Prohibited Uses:
  2. Liability:
Function ID Function Name Default Value Min Value Max Value
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
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 0 0 TBD
21 Bypass 0 0 1
22 Levels - - -
23 File - - -
24 Test 0 0 1
25 Sort - - -
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