Summary
Networked 2-channel power amplifier in the BSS Audio / Crown DCi family, controlled via the Harman HiQnet protocol. This spec covers HiQnet message-level control over TCP/IP (port 3804). The source is the generic HiQnet Third Party Programmer Documentation; device-specific parameter Object/Parameter IDs are not enumerated there and must be obtained via System Architect or a Soundweb London control document.
Transport
protocols:
- tcp
addressing:
port: 3804
base_url: ""
auth:
type: UNRESOLVED
Authentication requirements are not stated in the source. Session numbers (Hello/HelloInfo, §7) are optional coherency tokens, not credentials.
RS232 is also defined in the source as a HiQnet packet service (6.1.1 states "dbx HiQnet Devices are fixed at 57.6 kbps, 8N1" — that is dbx-specific, not BSS Audio). Serial config for the DCi 2 600N is therefore not stated in this source and omitted.
Traits
traits:
- powerable
- queryable
- levelable
- routable
Traits inferred from documented HiQnet message primitives: powerable (param set/get on power state params), queryable (GetAttributes / MultiParamGet), levelable (ParamSetPercent and gain params), routable (router/source-select example in §6.1.10). Device-specific confirmation requires the DCi parameter map.
Actions
actions:
- id: get_attributes
label: GetAttributes
kind: query
command: "0x010D"
description: "Get n attribute values from an Object or Virtual Device."
params:
- name: no_of_attributes
type: integer
description: "UWORD count of AIDs that follow"
- name: attribute_ids
type: array
description: "List of zero-based UWORD Attribute IDs"
- id: get_vd_list
label: GetVDList
kind: query
command: "0x011A"
description: "Get list of Virtual Devices in a Device. Destination address 0xFFFF00000000."
params:
- name: workgroup_path
type: string
description: "Workgroup asked to respond"
- id: store
label: Store
kind: action
command: "0x0124"
description: "Store performance data to non-volatile local storage (FLASH)."
params:
- name: store_action
type: integer
description: "0=Parameters, 1=Subscriptions, 2=Scenes, 3=Snapshots, 4=Presets, 5=Venue"
- name: store_number
type: integer
description: "UWORD local storage space identifier"
- name: workgroup_path
type: string
description: "Not used; set length to 0"
- name: scope
type: integer
description: "UBYTE reserved for automation"
- id: recall
label: Recall
kind: action
command: "0x0125"
description: "Recall performance data. Recall Action 2=Scene, 3=Snapshot, 4=Preset, 5=Venue."
params:
- name: recall_action
type: integer
description: "0=Parameters, 1=Subscriptions, 2=Scenes, 3=Snapshots, 4=Presets, 5=Venue"
- name: recall_number
type: integer
description: "UWORD storage space or venue recall number"
- name: workgroup_path
type: string
description: "Workgroup doing Recall Venue; otherwise 0"
- name: scope
type: integer
description: "UBYTE reserved for automation"
- id: locate
label: Locate
kind: action
command: "0x0129"
description: "Flash Locate LEDs to identify the device to the operator. Compulsory on Device Manager VD."
params:
- name: time
type: integer
description: "UWORD ms. 0x0000=off, 0xFFFF=on, 0x0001-0xFFFE=flash period (2Hz)"
- name: hiqnet_serial_number
type: string
description: "BLOCK serial number of Device to be located"
- id: multi_param_set
label: MultiParamSet
kind: action
command: "0x0100"
description: "Set NumParam parameter values within an Object or Virtual Device."
params:
- name: num_param
type: integer
description: "UWORD count of Param_ID/Param_Value pairs"
- id: multi_param_get
label: MultiParamGet
kind: query
command: "0x0103"
description: "Get NumParam parameter values within an Object or Virtual Device."
params:
- name: num_param
type: integer
description: "UWORD count of Param_IDs"
- id: multi_param_subscribe
label: MultiParamSubscribe
kind: action
command: "0x010F"
description: "Subscribe to publisher params; receive MultiParamSet updates on change. Sensor rate is fastest update requested."
params:
- name: no_of_subscriptions
type: integer
description: "UWORD count of subscription entries"
- id: multi_param_unsubscribe
label: MultiParamUnsubscribe
kind: action
command: "0x0112"
description: "Cancel parameter subscriptions by Publisher Param_ID."
params:
- name: number_of_subscriptions
type: integer
description: "UWORD count of Publisher Param_IDs"
- id: multi_object_param_set
label: MultiObjectParamSet
kind: action
command: "0x0101"
description: "Device-emitted message encoding parameter values across multiple objects. Num_Objects, then per-object Object_Dest (ULONG) + Num_Params (UWORD) + values."
params:
- name: num_objects
type: integer
description: "UWORD count of objects"
- id: param_set_percent
label: ParamSetPercent
kind: action
command: "0x0102"
description: "Set params via 0-100% percentage; 1.15 signed fixed-point UWORD (0x8000=-100%, 0x7FFF=~+100%). No prior knowledge of param attributes required."
params:
- name: num_param
type: integer
description: "UWORD count of PARAM_ID/percentage pairs"
- id: param_subscribe_percent
label: ParamSubscribePercent
kind: action
command: "0x0111"
description: "Subscribe to params; updates sent as ParamSetPercent messages. Same payload as MultiParamSubscribe."
params:
- name: no_of_subscriptions
type: integer
description: "UWORD count of subscription entries"
- id: parameter_subscribe_all
label: ParameterSubscribeAll
kind: action
command: "0x0114"
description: "Subscribe to every state variable under an Object or Virtual Device."
params:
- name: subscription_type
type: integer
description: "UBYTE: 0=ALL, 1=Non-Sensor, 2=Sensor"
- id: parameter_unsubscribe_all
label: ParameterUnSubscribeAll
kind: action
command: "0x0114"
description: "Unsubscribe from every state variable under an Object or Virtual Device. Distinct invocation of the 0x0114 opcode with unsubscribe semantics."
params:
- name: subscription_type
type: integer
description: "UBYTE: 0=ALL, 1=Non-Sensor, 2=Sensor"
- id: feedback_subscribe
label: ParameterSubscribe (Feedback)
kind: action
command: "0x0113"
description: "Subscribe to a specific parameter to receive change feedback (MSG_ID 0x0113). Continues until unsubscribe or power loss."
params:
- name: subscriber_address
type: string
description: "UWORD:ULONG HiQnet address 0xNODEVDOBJECT"
- name: subscription_type
type: integer
description: "UBYTE: 0=ALL, 1=Non-Sensor, 2=Sensor"
- name: sensor_rate
type: integer
description: "UWORD period in ms"
- name: subscription_flags
type: integer
description: "UWORD; bit 0 set = send initial updates"
- id: disco_info
label: DiscoInfo
kind: action
command: "0x0000"
description: "Routing-layer message. Query form DiscoInfo(Q) finds devices; Info form DiscoInfo(I) announces/replies. Payload: HiQnet Device, Cost, Serial Number, Max Message Size, Keep Alive Period, NetworkID, NetworkInfo."
params:
- name: hiqnet_device
type: integer
description: "UWORD sender device address"
- name: cost
type: integer
description: "UBYTE aggregated route cost back to source"
- name: serial_number
type: string
description: "BLOCK sender HiQnet serial number"
- name: max_message_size
type: integer
description: "ULONG"
- name: keep_alive_period
type: integer
description: "UWORD ms; minimum 250"
- name: network_id
type: integer
description: "UBYTE: 1=TCP/IP, 4=RS232"
- id: get_network_info
label: GetNetworkInfo
kind: query
command: "0x0002"
description: "Get info on each network interface. Reply contains Number of Interfaces, and per interface Max Message Size + NetworkID + NetworkInfo."
params:
- name: serial_number
type: string
description: "BLOCK destination serial number"
- id: request_address
label: RequestAddress
kind: action
command: "0x0004"
description: "Request use of a specific HiQnet address. Source 0x000000000000, destination broadcast 0xFFFF00000000."
params:
- name: hiqnet_device_address
type: integer
description: "UWORD requested address"
- id: address_used
label: AddressUsed
kind: action
command: null
description: "Notify that a HiQnet address is already in use. The source conflicts: the routing table lists 0x0005, while the AddressUsed message format lists 0x0004. Opcode is unresolved. Destination broadcast 0xFFFF00000000."
params: []
- id: set_address
label: SetAddress
kind: action
command: "0x0006"
description: "Set a specific non-zero HiQnet Device address and network interface info."
params:
- name: serial_number
type: string
description: "BLOCK 128-bit GUID"
- name: new_device_address
type: integer
description: "UWORD"
- name: network_id
type: integer
description: "UBYTE"
- id: goodbye
label: Goodbye
kind: action
command: "0x0007"
description: "Notify receiver that the sender is shutting down; frees peer routing resources without waiting for keep-alive timeout. Not sent on keep-alive timeout."
params:
- name: device_address
type: integer
description: "UWORD"
- id: hello_query
label: Hello (Query)
kind: action
command: "0x0008"
description: "Open a session between two HiQnet devices. FLAGS=0x0020 (Guaranteed). No session header extension yet."
params:
- name: session_number
type: integer
description: "UWORD non-zero; this device's newly invented session number"
- name: flag_mask
type: integer
description: "UWORD supported header flags; minimum 0x01FF"
- id: hello_info
label: Hello (Info)
kind: action
command: "0x0008"
description: "Reply to Hello(Query). FLAGS=0x0124 (Session+Guaranteed+Information). Carries SESSION NUMBER header extension."
params:
- name: remote_session_number
type: integer
description: "UWORD non-zero; DEST device's session number (echoed from query)"
- name: local_session_number
type: integer
description: "UWORD non-zero; this device's session number"
- name: flag_mask
type: integer
description: "UWORD supported header flags"
- id: subscribe_event_log
label: SubscribeEventLog
kind: action
command: "0x0115"
description: "Request event log subscription from a Device Manager VD. Category filter is a ULONG bit-field (1=subscribe, 0=no action); server ORs filters."
params:
- name: max_data_size
type: integer
description: "UWORD max additional-data size the client will accept"
- name: category_filter
type: integer
description: "ULONG bit-field of categories to subscribe"
- id: unsubscribe_event_log
label: UnsubscribeEventLog
kind: action
command: "0x012B"
description: "Cancel event log subscription. Category is ULONG; 1 bit = unsubscribe, 0 = do nothing."
params:
- name: category
type: integer
description: "ULONG bit-field"
- id: request_event_log
label: RequestEventLog
kind: query
command: "0x012C"
description: "Request current event log contents. Reply contains No Of Entries followed by per-entry Category, Event ID, Priority, Sequence Number, Time, Date, Information, Additional Data."
params: []
Feedbacks
feedbacks:
- id: attribute_value
type: object
description: "GetAttributes INFORMATION response. Per AID: UWORD AID, UBYTE data type, N-byte value."
- id: vd_list_entry
type: object
description: "GetVDList INFORMATION response. Workgroup Path, NumVDs, then per VD: UBYTE VDAddress, UWORD VDClassID."
- id: param_value
type: object
description: "MultiParamGet INFORMATION response (0x0103). NumParam then Param_Value entries."
- id: subscribed_param_update
type: object
description: "Unsolicited MultiParamSet (0x0100) or ParamSetPercent (0x0102) pushed when a subscribed parameter changes."
- id: network_info
type: object
description: "GetNetworkInfo INFORMATION response. Number of Interfaces, then per interface Max Message Size + NetworkID + NetworkInfo (MAC, DHCP flag, IP, SubnetMask, Gateway)."
- id: event_log_entry
type: object
description: "RequestEventLog INFORMATION (0x012C) / RequestLogInfo(I) pushed for subscribed events. Per entry: Category, Event ID, Priority (0=Fault/1=Warning/2=Info), Sequence Number, Time, Date, Information, Additional Data."
- id: protocol_error
type: object
description: "HiQnet error header (FLAGS=0x0008) returned for malformed/invalid messages. Contains UWORD error code (Control Network Event IDs 0x0001-0x0011) and STRING error message."
- id: store_info
type: object
description: "Store(info) message indicating a storage location has been modified."
Variables
variables: []
Events
events: []
Macros
macros: []
Safety
confirmation_required_for: []
interlocks: []
Notes
- Protocol family. The device is a HiQnet node. All control is via HiQnet binary messages (MESSAGE ID UWORD opcode + typed payload), framed by the HiQnet header (Version 0x02, Header Length, Message Length, Source/Dest HiQnet address, Flags, Hop Count, Sequence Number).
- Transport. TCP/IP on IANA port 3804 ("HiQnet-port 3804/tcp Harman HiQnet Port"). UDP 3804 is also defined for open-loop control; not used here. RS232 framing (0xF0 sync, 0x64/0x00 frame start, CCITT-8 checksum, ping/resync) applies only on the serial packet service and is omitted from this TCP spec.
- Sessions optional. Third-party controllers may operate session-less; if a Hello(Query) with a session number returns Hello(Error), fall back to session-less communication. A MultiParamGet(NumParams=0) may then be used to start Keep Alives for backward compatibility.
- Keep Alive. Default 10000 ms; minimum 250 ms. Guaranteed-service (TCP) keep-alive = DiscoInfo(I) sent KAP ms after last transmitted message; route times out if nothing received within KAP.
- Parameter discovery. Per-parameter Class ID, data type, min/max, control law, and flags are retrievable via GetAttributes (Attribute IDs 0-5). Concrete DCi 2 600N Object/Parameter addresses are not in this document.
- Big-endian. All multi-byte HiQnet fields are network-byte-ordered (big-endian). Strings are Unicode with a UWORD byte-count prefix including the NULL terminator.
Provenance
source_domains:
- audioarchitect.harmanpro.com
- bssaudio.com
- crownaudio.com
source_urls:
- https://audioarchitect.harmanpro.com/resource/audio-architect-hiqnet-third-party-programmers-guide.pdf
- https://bssaudio.com/en/site_elements/drivecore-install-network-manual-english
- https://audioarchitect.harmanpro.com/resource/audio-architect-hiqnet-third-party-programmers-quick-start-guide.pdf
- https://www.crownaudio.com/en/softwares/crown-dci-q-sys-plugin-v1-4-1
retrieved_at: 2026-06-30T03:35:22.682Z
last_checked_at: 2026-10-07T12:45:22.492Z
Verification Summary
verdict: verified
checked_at: 2026-10-07T12:45:22.492Z
matched_actions: 26
action_count: 26
confidence: medium
summary: "All 26 action units map to documented HiQnet message IDs and port 3804/tcp is confirmed; the source is a generic HiQnet guide (no DCi model named) and AddressUsed has a documented 0x0004/0x0005 conflict. (10 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source is generic HiQnet programmer doc, not a DCi 2 600N device-specific parameter catalogue. Object IDs, Parameter IDs, and per-channel controls (mute, gain, routing, presets per channel) for the DCi 2 600N are not listed."
- "firmware version compatibility not stated in source"
- "power/voltage/current specifications not in this source"
- "Device-specific parameters (channel gain, mute, source/router, presets, DSP objects, meters) for the DCi 2 600N are not enumerated in this generic HiQnet programmer document. Parameter Class IDs, min/max, control laws, and Object/Parameter addresses must be obtained from a Soundweb London / DCi parameter map or via System Architect \"Copy HiQnet Information\"."
- "device-emitted unsolicited events (other than subscription updates and event-log pushes already covered in Feedbacks) are not enumerated for the DCi 2 600N in this source."
- "no multi-step sequences are explicitly authored for the DCi 2 600N in the source. The closed-loop TCP/IP use case (§4.5.5) describes a recommended session establishment sequence but it is generic guidance, not a device macro."
- "no safety warnings, interlock procedures, or power-on sequencing requirements are documented in this source. Power amplifier output protection, clip/limiter behaviour, and load-impedance handling are not covered."
- "DCi 2 600N-specific RS232 baud rate (the 57.6 kbps figure in §6.1.1 is stated for dbx HiQnet Devices, not BSS Audio)."
- "voltage, current, and power specifications not in source."
- "firmware version compatibility not stated in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0