Summary
The BSS Audio BLU-Si is a Soundweb London DSP device controllable via the London Direct Inject (DI) protocol over Ethernet (TCP) or serial RS-232. This spec covers the binary DI message set used to set, subscribe, bump, and recall parameter values and presets on any Soundweb London processing object. Crown, JBL, and AKG devices do not respond to this protocol.
Transport
protocols:
- tcp
- serial
addressing:
port: 1023 # Soundweb London listens on TCP 1023, accepts multiple connections
serial:
baud_rate: null # UNRESOLVED: baud rate is configured in Audio Architect Properties window, not stated
data_bits: null # UNRESOLVED: not stated
parity: null # UNRESOLVED: not stated
stop_bits: null # UNRESOLVED: not stated
flow_control: none # inferred: 9-pin D-type uses only pins 2,3,5 (TX/RX/GND)
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- queryable # inferred: SUBSCRIBE / SUBSCRIBE PERCENT return parameter values
- levelable # inferred: SET PERCENT / BUMP PERCENT operate on percentage ranges
Actions
# All frames share framing: 0x02 start byte, 0x03 end byte, single-byte XOR
# checksum of all body bytes (computed BEFORE byte substitution). After checksum
# is calculated, byte substitution is applied to the body per the substitution
# table below (0x02->0x1B 0x82, 0x03->0x1B 0x83, 0x06->0x1B 0x86,
# 0x15->0x1B 0x95, 0x1B->0x1B 0x9B). Templates below show PRE-substitution form.
#
# Addressing fields (common to addressed messages):
# node : 2 bytes, physical device, range 0x0001..0xFFFE
# virt_dev : 1 byte, processing category (Audio 0x03, Logic 0x02)
# object_id : 3 bytes, processing object (Mixer, EQ, Source Selector, ...)
# param_id : 2 bytes, parameter within object (Gain, Mute, Source, ...)
# value : 4 bytes (32-bit signed) for non-string; string payload for SET STRING
- id: set_raw
label: SET (raw value)
kind: action
command: "0x02 0x88 {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {val_b1} {val_b2} {val_b3} {val_b4} {checksum} 0x03"
params:
- name: node
type: integer
description: Node Address 0x0001..0xFFFE
- name: virt_dev
type: integer
description: Virtual Device byte (0x03 Audio, 0x02 Logic)
- name: object_id
type: integer
description: 3-byte Object ID
- name: param_id
type: integer
description: 2-byte Parameter ID
- name: value
type: integer
description: 4-byte (32-bit signed) raw value
- id: set_percent
label: SET PERCENT
kind: action
command: "0x02 0x8D {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {val_b1} {val_b2} {val_b3} {val_b4} {checksum} 0x03"
params:
- name: node
type: integer
description: Node Address 0x0001..0xFFFE
- name: virt_dev
type: integer
- name: object_id
type: integer
- name: param_id
type: integer
- name: percent
type: number
description: Percentage 0..100 (raw = percent x 65536)
- id: bump_percent
label: BUMP PERCENT
kind: action
command: "0x02 0x90 {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {val_b1} {val_b2} {val_b3} {val_b4} {checksum} 0x03"
params:
- name: node
type: integer
- name: virt_dev
type: integer
- name: object_id
type: integer
- name: param_id
type: integer
- name: delta
type: integer
description: Signed percentage delta to bump up/down
notes:
- BUMP PERCENT does not trigger SET/SET PERCENT subscription updates; a fresh SUBSCRIBE is required to read the new value.
- id: set_string
label: SET STRING
kind: action
command: "0x02 0x91 {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {length} {ascii_bytes..32} 0x00 {checksum} 0x03"
params:
- name: node
type: integer
- name: virt_dev
type: integer
- name: object_id
type: integer
- name: param_id
type: integer
- name: text
type: string
description: Up to 32 ASCII characters; length prefix and 0x00 terminator appended
- id: subscribe
label: SUBSCRIBE (raw)
kind: query
command: "0x02 0x89 {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {checksum} 0x03"
params:
- name: node
type: integer
- name: virt_dev
type: integer
- name: object_id
type: integer
- name: param_id
type: integer
notes:
- Returns current value immediately as a SET (or SET STRING) message; further updates sent on change until UNSUBSCRIBE or device reboot.
- id: subscribe_percent
label: SUBSCRIBE PERCENT
kind: query
command: "0x02 0x8E {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {checksum} 0x03"
params:
- name: node
type: integer
- name: virt_dev
type: integer
- name: object_id
type: integer
- name: param_id
type: integer
notes:
- Returns current value as a SET PERCENT message; further SET PERCENT updates on change until UNSUBSCRIBE PERCENT or reboot.
- id: unsubscribe
label: UNSUBSCRIBE
kind: action
command: "0x02 0x8A {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {checksum} 0x03"
params:
- name: node
type: integer
- name: virt_dev
type: integer
- name: object_id
type: integer
- name: param_id
type: integer
- id: unsubscribe_percent
label: UNSUBSCRIBE PERCENT
kind: action
command: "0x02 0x8F {node_hi} {node_lo} {virt_dev} {obj_b1} {obj_b2} {obj_b3} {param_hi} {param_lo} {checksum} 0x03"
params:
- name: node
type: integer
- name: virt_dev
type: integer
- name: object_id
type: integer
- name: param_id
type: integer
- id: recall_preset
label: Recall Parameter Preset
kind: action
command: "0x02 0x8C {preset_b1} {preset_b2} {preset_b3} {preset_b4} {checksum} 0x03"
params:
- name: preset_id
type: integer
description: 4-byte Preset ID (as shown in Parameter Preset window)
notes:
- No addressing used; preset ID is the 4-byte value. Parameter Presets cannot be subscribed to.
Feedbacks
# Subscription responses returned by the device (unsolicited after subscribe):
- id: set_response
type: raw
description: SET message returned from a SUBSCRIBE, carrying the 4-byte raw value of the subscribed parameter
- id: set_percent_response
type: raw
description: SET PERCENT message returned from a SUBSCRIBE PERCENT, carrying the 4-byte percentage value
- id: set_string_response
type: string
description: SET STRING message returned from a SUBSCRIBE to a string parameter, up to 32 ASCII bytes
Variables
# Parameter value semantics documented by the source (per parameter type):
- name: two_state
type: enum
values: [0, 1]
description: e.g. mute; 0 = 0%, 1 = 100%
- name: multi_state
type: enum
values: [0, 1, 2, 3, 4]
description: e.g. source selector, input card gain; discrete values 0..N depending on enumeration count
- name: gain_raw
type: integer
range: [-280617, 100000]
description: Gain parameter raw value; -280617 = -80dB (0%), 0 = unity, 100000 = +10dB (100%). Log scale -inf..-10dB, linear above -10dB.
- name: meter_raw
type: integer
range: [-800000, 400000]
description: Meter raw value; -800000 = -80dB (0%), 0 = 0dB (66.66%), 400000 = +40dB (100%). Linear scale. dB = raw / 10000.
- name: percent_value
type: number
range: [0, 100]
description: Percentage representation; raw = percent x 65536
Events
# No explicit unsolicited events documented. Subscription-driven SET / SET PERCENT
# messages are the only push mechanism (see Feedbacks).
# UNRESOLVED: device may emit additional status; none documented in source.
Macros
# No multi-step sequences explicitly described in source.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlock procedures, or power-on sequencing
# requirements stated in source.
Notes
- Protocol name: London Direct Inject (DI). Applies to all Soundweb London devices; does NOT apply to Crown, JBL, AKG devices.
- Soundweb London devices are always listening; no enable step required for third-party control.
- Control over BLU-Link, Dante, CobraNet, AVB is not supported — Ethernet RJ-45 (100Mb/s) and RS-232 (9-pin D, pins 2/3/5) only.
- Message structure is identical for Ethernet and serial.
- Serial acknowledgement: device returns
0x06on valid receipt+checksum,0x15on invalid checksum. Device may be configured to wait for ack on its own transmissions; retransmits after 1s if neither received. Ack config and baud rate live in Audio Architect Properties window. - Ethernet/TCP: no application-level ack (TCP is reliable); client normally opens socket and holds it open indefinitely. Multiple TCP connections accepted.
- Framing: every message starts
0x02, ends0x03, last body byte before0x03is single-byte XOR checksum of all body bytes. - Byte substitution (applied AFTER checksum, increases message length):
0x02->0x1B 0x820x03->0x1B 0x830x06->0x1B 0x860x15->0x1B 0x950x1B->0x1B 0x9B
- Addressing is hierarchical: Node Address (2 bytes, 0x0001..0xFFFE), Virtual Device (1 byte: Audio 0x03, Logic 0x02), Object ID (3 bytes), Parameter ID (2 bytes). Node Address shown in Venue Explorer / Room view; Object ID and Parameter ID shown in Venue Explorer; all three shown in Properties window when object selected.
- Preset recall uses the Preset ID (shown in Parameter Preset window) as the 4-byte value; no addressing.
- Subscription caveat: BUMP PERCENT changes do not generate subscription updates — re-SUBSCRIBE to read the new value. Subscriptions persist until UNSUBSCRIBE or device reboot.
Provenance
source_domains:
- bssaudio.com
- help.harmanpro.com
source_urls:
- https://bssaudio.com/en/site_elements/soundweb-london-third-party-control-application-guide
- https://help.harmanpro.com/using-telnet-with-soundweb-london
- https://help.harmanpro.com/en_US/soundweb-london-using-the-ethernet-trigger-and-serial-trigger-logic-objects
- https://help.harmanpro.com/en_US/bss
retrieved_at: 2026-06-30T18:58:08.457Z
last_checked_at: 2026-07-07T11:07:18.707Z
Verification Summary
verdict: verified
checked_at: 2026-07-07T11:07:18.707Z
matched_actions: 9
action_count: 9
confidence: medium
summary: "All nine spec actions match opcodes in the source; transport parameters (port 1023, TCP/serial protocols) verified verbatim; no undocumented commands in source. (9 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "full byte-by-byte frame layout diagrams were picture-only in the source and omitted; field sizes are documented but exact byte ordering within each frame is inferred from the Addressing section ordering (Node, Virtual Device, Object ID, Parameter ID, Value)."
- "baud rate is configured in Audio Architect Properties window, not stated"
- "not stated"
- "device may emit additional status; none documented in source."
- "no safety warnings, interlock procedures, or power-on sequencing"
- "exact byte-by-byte layout of each frame was shown only as embedded pictures in the source (omitted here); field order in templates above is inferred from the Addressing section's documented ordering."
- "serial port configuration (baud/data/parity/stop) not stated in source — only \"found in Audio Architect Properties window\"."
- "firmware version compatibility not stated in source."
- "protocol version number not stated in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0