BSS Soundweb London
Controls Harman BSS Soundweb London BLU-series digital signal processors (BLU-100, BLU-160, BLU-800, BLU-806, BLU-320, BLU-DAN and relatives) over the published London DI third-party control protocol on TCP port 1023.
One GEM device represents the DSP. Each zone maps to a gain object inside the DSP's design file, giving you level, mute and state feedback per zone. Preset recall is device-wide.
This driver controls a DSP that has already been designed and commissioned. It does not create, edit, or discover audio objects — the signal flow lives in the design file authored in Audio Architect (or the legacy London Architect), and GEM addresses objects that design already contains.
Prerequisites
- The BLU device must be commissioned with its design file loaded and running.
- TCP 1023 must be reachable from the GEM server. There is no login — the DI protocol is unauthenticated, and the device accepts multiple simultaneous connections.
- You need the HiQnet object address of every gain block you intend to control. Read it off the object in the design file.
Because the control port is unauthenticated, the DSP's control VLAN should not be reachable from untrusted networks. Anyone who can open TCP 1023 can change gain, mute, and recall presets.
Finding an object address
In the design file, each processing object carries a HiQnet address printed as 0xnnnnvvbbbbbb:
| Part | Width | Meaning |
|---|---|---|
nnnn | 2 bytes | HiQnet node address of the unit |
vv | 1 byte | Virtual device — 03 for audio processing objects |
bbbbbb | 3 bytes | Object ID within that virtual device |
So 0x083203000100 is node 0832, virtual device 03, object 000100. That 12-hex-digit string is what goes in the zone address.
London Architect displays node, virtual device, and object in hex, but state-variable IDs in decimal. When cross-referencing the design file against this page, don't mix the two.
Setup steps
- Go to /admin/devices and create a device with driver
bss_soundweb_london. - Set DSP IP to the BLU device's address. Leave TCP Port at
1023. - Save and enable the device.
- Create one zone per gain object at /admin/zones, setting Address to that object's 12-hex-digit HiQnet address.
- Reload the device. On connect the driver subscribes to gain and mute on every zone — a subscribe returns the current value immediately and then on every change, so zones populate without polling.
Attribute reference
Device
| Attribute | Required | Default | Purpose |
|---|---|---|---|
ip | yes | — | LAN IP or hostname of the BLU device. |
port | no | 1023 | London DI control port. |
send_ack | no | true | Reply with ACK to every well-formed inbound message. See Acknowledgement below. |
volume_step | no | 5 | Percentage change applied by volume_up / volume_down. |
Zone
Zones need only an Address. The driver writes state onto each zone as subscriptions report:
| Attribute | Meaning |
|---|---|
state | on when unmuted, off when muted. |
mute_state | on when muted, off when unmuted. |
level | Gain as 0–100% of the object's designed range. |
gain_state | Absolute gain in dB, when a raw gain update arrives. |
polarity | Polarity invert flag. |
Zone address format
The 12-hex-digit HiQnet address of a gain object — 083203000100. A leading 0x and : separators are both accepted, so 0x0832:03:000100 parses identically.
Commands
| Command | Arguments | Notes |
|---|---|---|
on / off | address | Unmute / mute the gain object. |
mute_on / mute_off | address | Explicit mute control. |
set_level | address, level | Gain as 0–100% of the object's designed range. |
volume_up / volume_down | address | Relative change by volume_step percent. |
set_gain | address, gain | Absolute gain in dB, e.g. -12.5. |
set_polarity | address, value | Polarity invert, 0 or 1. |
set_sv | address, sv, value | Escape hatch — set any state variable to a raw integer. |
subscribe / unsubscribe | address | Manage feedback for a zone. |
preset | preset | Recall a venue preset by index. |
param_preset | preset | Recall a parameter preset by index. |
Level vs gain
set_level and set_gain are two different things, and the difference matters when commissioning:
set_levelsends a percentage and lets the DSP map it. 0% is whatever minimum that object was designed with — commonly −80 dB, but it is design-dependent. This is the right command for a room volume control.set_gainsends absolute dB using the protocol's sub-ranged gain law (linear at 10000 per dB down to −10 dB, logarithmic below). Use it when you need a specific, repeatable value.
The driver converts in both directions, so set_gain -12.5 means −12.5 dB regardless of the object's range.
Known limitations
- Object addresses are design-file-specific. A zone address is only meaningful against the design currently loaded on the DSP. Re-addressing objects in Audio Architect invalidates existing zone addresses, and the DSP silently ignores messages for objects that don't exist — a wrong address looks identical to a dead command.
- Only gain-object state variables are modelled (gain
0, mute1, polarity2). Anything else — meters, source selectors, logic, router objects — must go throughset_svwith a raw SV ID and integer value, with no scaling or feedback applied. Meter subscriptions with periodic rates are not exposed. - Discovery is not possible. The protocol has no object enumeration; addresses must be read from the design file by hand.
- String state variables (
DI_SETSTRINGSV) are not implemented. - Venue vs parameter preset semantics were not verified against hardware. They are separate commands with separate numbering, and each unit is individually configured whether to respond at all.
Acknowledgement
If the device's Acknowledge property is enabled, it re-sends any unacknowledged message once per second, indefinitely. In GEM this looks exactly like a stuck subscription — the same value arriving over and over.
The driver replies with ACK to every well-formed message by default, which stops that loop. The vendor documentation is internally inconsistent about whether acknowledgement applies over Ethernet at all (one section says TCP makes it unnecessary; the FAQ describes the retry behaviour as configurable per device), so acknowledging is the safe default. Set send_ack to false if a site needs the raw behaviour.
The DSP also acknowledges your messages, and that cannot be disabled — bare ACK bytes therefore appear between frames on the wire. The driver skips them.
Troubleshooting
| Symptom | Check |
|---|---|
| Connects, but nothing responds | Confirm the zone address matches an object in the design file currently loaded. The DSP silently ignores addresses it doesn't recognise. |
| State updates repeat once per second | The device's Acknowledge property is on and something isn't acknowledging. Leave send_ack enabled, or turn Acknowledge off on the device. |
| Levels look wrong at the extremes | set_level is a percentage of the object's designed range — 0% is that object's minimum, not a fixed −80 dB. Use set_gain for absolute dB. |
| Mute appears inverted | Mute is 0 = unmuted / 1 = muted. This encoding comes from Harman's support material rather than the Interface Kit itself; confirm on first commissioning. |
| Preset recall does nothing | Each unit is individually configured whether to respond to preset recall. Confirm venue vs parameter preset — separate commands, separate numbering. Preset IDs are the index in the design tree and are fixed once created (deleting a preset does not renumber the rest). |
| Checksum mismatch warnings in the log | Something is corrupting the stream — usually a serial-over-IP gateway rewriting bytes. The DI protocol is binary and must pass through untouched. |