Download as PDF
AUDAC - Inspired by sound
Hardware command manual

NWP300

Network input panel - BT + 3.5 mm jack (4 CH)

Table of contents

NWP300 Commands List

ASCII Commands (Nwp300 V1.2.1-RD-96)

This is the list of ASCII Commands supported by this device. An ASCII command always follows the same structure:

#|Destination|Source|Type^Target^Command|Arguments|CRC|CRLF

This format uses 3 separator characters for different levels of separating each value in the message:

Messages are Case sensitive, if the example shows the text in uppercase, this should always be uppercase!

Destination

The target device. This consists of 2 parts: Device>Address.

ExamplesDestination
default destinationNWP300>1
broadcast to all Nwp300 devicesNWP300

Device Matching

If the device type or address does not match, the message will be ignored. Device Address 0 is a special address and will always match (this can be seen as a broadcast)

DestinationDevice address: NWP300>2Remarks
NWP300>2Destination Matches Devicethis is an exact match
NWP300>1Message ignoredthe destination address does not match
NWP300Destination Matches Devicethe destination address will always match
NWP300>0Destination Matches DeviceEquivalent to NWP300
CLIENT>2Message ignoredthe device type does not match
CLIENTMessage ignoredthe device type does not match

Source (optional)

The source address is optional when sending, but the device will always fill this field with its own address.

ExamplesSent messageResponse message NWP300>2
broadcast to a Nwp300#|NWP300||...|<CRLF>#||NWP300>2|...|<CRLF>
send to a specific Nwp300#|NWP300>2||...|<CRLF>#||NWP300>2|...|<CRLF>
use a source address in the request message#|NWP300|CLIENT>1|...|<CRLF>#|CLIENT>1|NWP300>2|...|<CRLF>

Type

The type explains what the message wants to do. There are 3 supported message types:

TypeFromToExplanation
SET_REQCLIENTNwp300Change a setting in the Nwp300
GET_REQCLIENTNwp300Request the current status of a setting in the Nwp300
GET_RSPNwp300CLIENTResponse to either a GET_REQ or SET_REQ, if the request was valid

Command, Target, Arguments

These 3 parameters are explained together, because they influence each other. The command dictates the meaning of the argument, while the target distinguishes which exact setting you want to change. the target can also influence the valid range of the argument.

Some commands (like the mixer) can have a range arguments (for the mixer: all mixer volumes are an individual argument). In this case, the argument looks like: idx>val[^idx2>val2], where the part in between the brackets [] can appear 0 or more times.

This device supports special ALL_* commands that allow you to set multiple values in a single command. They look similar to their single counterparts, but the Target starts with ALL_. The Argument is an array of elements, separated by "block separators", instead of a single value.

For example: if there's a device that supports grouping 2 MUTE commands, the following can be shortened:

#|NWP300>1||SET_REQ^TARGET>1^MUTE|TRUE|U|<CRLF>
#|NWP300>1||SET_REQ^TARGET>2^MUTE|TRUE|U|<CRLF>

becomes

#|NWP300>1||SET_REQ^ALL_TARGET^MUTE|TRUE^TRUE|U|<CRLF>

Note: For backwards compatibility reasons there might be gaps in the arguments sent, it is important to leave these gaps in the command you build! A gap is created by putting 2 block separators next to each other: "^^".

You can leverage this as well, if there are parts of this grouped command you don't want to change. You can then leave this value empty like the gaps, and you can only change the values you want, leaving the rest as is.

You can also skip the last elements in the list, if you don't want to change them. For example: the command groups 4 volumes together, all. If you only want to change the first two values, you have 2 options for the "Arguments" field:

Both are equivalent, but in the first example you explicitly define the third and fourth values as "gaps", in the second example they are implicitly defined as gaps.

BT_PAIR

this command is used to enable the pairing process in a bluetooth device

Argument (enable): enable the pairing process

TargetArgumentExample (default value)
INPUT_BLUETOOTH>1>BLUETOOTH>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>1>BLUETOOTH>1^BT_PAIR|FALSE|U|<CRLF>

BT_DISCONNECT

this command is used to disconnect the connected BT device

Argument (enable): disconnect the connected device

TargetArgumentExample (default value)
INPUT_BLUETOOTH>1>BLUETOOTH>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>1>BLUETOOTH>1^BT_DISCONNECT|FALSE|U|<CRLF>

VOLUME

Set a single Volume in dB

Argument (volume): the requested Volume in dB

TargetArgumentExample (default value)
INPUT_JACK>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_JACK>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_JACK>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_JACK>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_BLUETOOTH>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_BLUETOOTH>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>1>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>2>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>3>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>3>VOLUME>1^VOLUME|0|U|<CRLF>
INPUT_DANTE>4>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^INPUT_DANTE>4>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>1>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>1>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>2>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>2>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>3>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>3>VOLUME>1^VOLUME|0|U|<CRLF>
OUTPUT_DANTE>4>VOLUME>1min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>4>VOLUME>1^VOLUME|0|U|<CRLF>

Grouped Commands

ALL_IN

example (default value): #|NWP300>1||SET_REQ^ALL_IN^VOLUME|^^0^0^0^0^^^0^0^0^0|U|<CRLF>

IndexTarget
1Reserved
2Reserved
3INPUT_JACK>1>VOLUME>1
4INPUT_JACK>2>VOLUME>1
5INPUT_BLUETOOTH>1>VOLUME>1
6INPUT_BLUETOOTH>2>VOLUME>1
7Reserved
8Reserved
9INPUT_DANTE>1>VOLUME>1
10INPUT_DANTE>2>VOLUME>1
11INPUT_DANTE>3>VOLUME>1
12INPUT_DANTE>4>VOLUME>1

ALL_OUT

example (default value): #|NWP300>1||SET_REQ^ALL_OUT^VOLUME|0^0^0^0^^^^|U|<CRLF>

IndexTarget
1OUTPUT_DANTE>1>VOLUME>1
2OUTPUT_DANTE>2>VOLUME>1
3OUTPUT_DANTE>3>VOLUME>1
4OUTPUT_DANTE>4>VOLUME>1
5Reserved
6Reserved
7Reserved
8Reserved

MUTE

mute an audio channel

Argument (enabled): is the audio channel muted

TargetArgumentExample (default value)
INPUT_JACK>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_JACK>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_JACK>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_JACK>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_BLUETOOTH>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_BLUETOOTH>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_BLUETOOTH>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>3>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>3>VOLUME>1^MUTE|FALSE|U|<CRLF>
INPUT_DANTE>4>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^INPUT_DANTE>4>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>1>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>1>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>2>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>2>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>3>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>3>VOLUME>1^MUTE|FALSE|U|<CRLF>
OUTPUT_DANTE>4>VOLUME>1options: TRUE,FALSE#|NWP300>1||SET_REQ^OUTPUT_DANTE>4>VOLUME>1^MUTE|FALSE|U|<CRLF>

Grouped Commands

ALL_IN

example (default value): #|NWP300>1||SET_REQ^ALL_IN^MUTE|^^FALSE^FALSE^FALSE^FALSE^^^FALSE^FALSE^FALSE^FALSE|U|<CRLF>

IndexTarget
1Reserved
2Reserved
3INPUT_JACK>1>VOLUME>1
4INPUT_JACK>2>VOLUME>1
5INPUT_BLUETOOTH>1>VOLUME>1
6INPUT_BLUETOOTH>2>VOLUME>1
7Reserved
8Reserved
9INPUT_DANTE>1>VOLUME>1
10INPUT_DANTE>2>VOLUME>1
11INPUT_DANTE>3>VOLUME>1
12INPUT_DANTE>4>VOLUME>1

ALL_OUT

example (default value): #|NWP300>1||SET_REQ^ALL_OUT^MUTE|FALSE^FALSE^FALSE^FALSE^^^^|U|<CRLF>

IndexTarget
1OUTPUT_DANTE>1>VOLUME>1
2OUTPUT_DANTE>2>VOLUME>1
3OUTPUT_DANTE>3>VOLUME>1
4OUTPUT_DANTE>4>VOLUME>1
5Reserved
6Reserved
7Reserved
8Reserved

MIXER

mixer slider for zones

Argument (volume): mixing volume

TargetArgument IndexArgumentExample (default value)
OUTPUT_DANTE>1>MIXER>1min: 1, max: 16min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>1>MIXER>1^MIXER|1>-90^2>-90^3>0^4>-90^5>-90^6>-90^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90^13>-90^14>-90^15>-90^16>-90|U|<CRLF>
OUTPUT_DANTE>2>MIXER>1min: 1, max: 16min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>2>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>0^5>-90^6>-90^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90^13>-90^14>-90^15>-90^16>-90|U|<CRLF>
OUTPUT_DANTE>3>MIXER>1min: 1, max: 16min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>3>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>-90^5>0^6>-90^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90^13>-90^14>-90^15>-90^16>-90|U|<CRLF>
OUTPUT_DANTE>4>MIXER>1min: 1, max: 16min: -90, max: 0#|NWP300>1||SET_REQ^OUTPUT_DANTE>4>MIXER>1^MIXER|1>-90^2>-90^3>-90^4>-90^5>-90^6>0^7>-90^8>-90^9>-90^10>-90^11>-90^12>-90^13>-90^14>-90^15>-90^16>-90|U|<CRLF>

ROUTE

change the routing of a zone

Argument (input): the input that is selected in that zone. -1 = Mixed (not settable), O = OFF, 1 = input 1 ,...

TargetArgumentExample (default value)
OUTPUT_DANTE>1>MIXER>1min: -1, max: 21#|NWP300>1||SET_REQ^OUTPUT_DANTE>1>MIXER>1^ROUTE|0|U|<CRLF>
OUTPUT_DANTE>2>MIXER>1min: -1, max: 21#|NWP300>1||SET_REQ^OUTPUT_DANTE>2>MIXER>1^ROUTE|0|U|<CRLF>
OUTPUT_DANTE>3>MIXER>1min: -1, max: 21#|NWP300>1||SET_REQ^OUTPUT_DANTE>3>MIXER>1^ROUTE|0|U|<CRLF>
OUTPUT_DANTE>4>MIXER>1min: -1, max: 21#|NWP300>1||SET_REQ^OUTPUT_DANTE>4>MIXER>1^ROUTE|0|U|<CRLF>

Grouped Commands

ALL_OUT

example (default value): #|NWP300>1||SET_REQ^ALL_OUT^ROUTE|0^0^0^0^^^^|U|<CRLF>

IndexTarget
1OUTPUT_DANTE>1>MIXER>1
2OUTPUT_DANTE>2>MIXER>1
3OUTPUT_DANTE>3>MIXER>1
4OUTPUT_DANTE>4>MIXER>1
5Reserved
6Reserved
7Reserved
8Reserved

CRC

The CRC block is calculated over the message starting from and including the first pipe "|", up to and including the last pipe before the CRC Block. These CRC's can ensure message integrity if desired.

CRC TypeConfigurationFormatExamplenotes
None/U`#|ALL||SET_REQ^INPUT_LINE>1^VOLUME|0|U|<CRLF>`'U' means unused
CRC16-ARC
  • input reflected
  • output reflected
  • polynomial: 0x8005
  • initial value: 0x0000
  • final exor: 0x0000
XXXX`#|ALL||SET_REQ^INPUT_LINE>1^VOLUME|0|C06C|<CRLF>`calculator
CRC32
  • input reflected
  • output reflected
  • polynomial: 0x04C11DB7
  • initial value: 0xFFFFFFFF
  • final exor: 0xFFFFFFFF
XXXXXXXX`#|ALL||SET_REQ^INPUT_LINE>1^VOLUME|0|D887125C|<CRLF>`calculator

The examples in the table above are example for calculating the CRC, they may not be a valid command for the Nwp300

The CRC can ensure data integrity accross unreliable data channels (RS232, RS485), but they are by no means a security measure! If someone has the knowledge and means to maliciously alter a message, correcting the CRC becomes trivial for the attacker. We support different kinds of CRC for maximum flexibility, but we recommend not using any so you do not get a false sense of security.

Stop Bytes

The final 2 characters are denoted as <CRLF>, they mean "Carriage Return, Line Feed" or simply put a new line. Depending on the tool used to create the command, you can have different representations:

We support both CRLF and LF only

Top