Skip to content

SSC Paths

Varitras edited this page Nov 1, 2026 · 5 revisions

SSC Paths

Every SSC path that was probed on real hardware, with type, range, unit and whether it can be read and written. Hardware results come from two models only: KH 120 II (firmware 1_7_3) and KH 750 DSP (firmware 2_1_2, reports its product as KH 750), two units of each. KH 80 DSP and KH 150 are not tested on hardware.

Legend

Source marks [measured], [in use], [khtool], [manual] are defined on Home. On this page:

Mark / cell Meaning
[measured] "write yes / write no" cells are write tests; "read yes" is a get probe. Types, ranges, units, options and const come from the device's own osc/schema and osc/limits answers plus the type of the actual reply
[khtool] (source code / issue tracker) taken from the khtool repository; used only where no own measurement exists
yes / no result of a measurement [measured]
write [in use] written in normal operation by a client, without a separate recorded write test
not tested not tested on hardware
– does not apply to this model (not in that model's own schema)

Every typed leaf in the device's own schema answers a get: 52 on the KH 120 II, 131 on the KH 750. The 12 untyped osc/* protocol nodes are excluded; see the protocol table. Both units of a model answer identically in status, type and length, every reply type matches the schema type, and no number lies outside the device's own min/max [measured].

The writeable flag in osc/limits is not reliable: all 17 fields measured as not writable (7 on the KH 120 II, 10 on the KH 750) are flagged writeable there [measured]. Only a write test decides.

"write yes" applies with the CONTROL / CONTROL MODE switch on NETWORK; on LOCAL every write to such a field answers 401, while a read-only field keeps answering 405 (see Device-Behaviour) [measured]. Error replies and their codes: SSC-Protocol.

Protocol (osc/*)

Probed on one unit of each model, with the same answer on both models [measured].

Path KH 120 II KH 750 Source
osc/error present in error replies, pair nested in the address tree same [measured]
osc/schema answered: one level as a list, containers {}, leaves null answered, same form [measured]
osc/limits answered: a list with one dict (always type; depending on the leaf desc, units, min, max, inc, option, count, length, const, subscr, writeable) answered, same form [measured]
osc/version "1.1" "1.1" [measured]
osc/ping null null [measured]
osc/xid echoed in the same reply line as the answer (numbers and strings), error replies included (401, 404, 405, 406) same [measured]
osc/feature/pattern "*?" "*?" [measured]
osc/feature/subscription true true [measured]
osc/state/subscribe subscriptions work (see SSC-Protocol) same [measured]
osc/state/auth/access read yes (String) read yes (String) [measured]
osc/state/subscribe_reserve read yes (Number) read yes (Number) [measured]
osc/feature/timetag, osc/feature/baseaddr, osc/state/prettyprint false each false each [measured]

Malformed introspection requests ([null], [{}], osc/limits without a list) answer 454 "parameter address not found"; {} instead of null answers 406; the pair sits under osc/schema or osc/limits [measured].

Identity

Path Type Values KH 120 II KH 750 Source
device/identity/product String, const KH 120 II / KH 750 read yes read yes [measured]
device/identity/vendor String, const Georg Neumann GmbH read yes read yes [measured]
device/identity/serial String, const – read yes read yes [measured]
device/identity/version String, const major_minor_patch, e.g. 1_7_3, 2_1_2 read yes read yes [measured]
device/identity/hw_version Number (integer), read-only, not const – read yes read yes [measured]

Standby

Path Type Range / values Unit KH 120 II KH 750 Source
device/standby/enabled Boolean – – read yes, write yes read yes (follows the AUTO STANDBY switch), write no (osc/limits flags it writeable) [measured]
device/standby/auto_standby_time Number (integer) 1–240 min read yes, write yes read yes, write yes [measured]
device/standby/level Number (integer) −80 to −55 dBu read yes, write yes read yes, write yes [measured]
device/standby/countdown Number (integer) 0–240 min read yes read yes [measured]

On the KH 750, auto_standby_time and level were each written to a neighbouring value, read back and restored (2026-10-19) [measured]. With a KH 750 on LOCAL, writes are refused with 401 and auto_standby_time read 19 instead of the 60 set over the network (see Device-Behaviour) [measured].

A speaker in standby does not answer SSC at all (both models) [measured]. See Device-Behaviour.

Outputs (audio/out*) and inputs (audio/in/*)

On the KH 750, audio/out drives its own woofer and audio/out1 / audio/out2 are the output sockets A and B (see EQ) [measured]. On the KH 120 II, audio/out is the speaker itself.

Path Type Range / values Unit KH 120 II KH 750 Source
audio/out/level Number (float) 0–120 dB SPL read yes, write [in use] read yes, write [in use] [measured], [in use]
audio/out/delay Number (integer) 0–5760 (KH 120 II), 0–1000 (KH 750) samples at 1/48 kHz read yes, write yes read yes, write yes [measured]
audio/out/mute Boolean – – read yes, write yes read yes, write yes [measured]
audio/out/phaseinversion Boolean – – read yes, write yes 404 [measured]
audio/out/label String, const e.g. SUBWOOFER – – read yes [measured]
audio/out5/level, audio/out5/mute Number / Boolean as audio/out – 404 404 on 2_1_2; firmware 1.2.x not tested (see below) [measured], [khtool] (source code)
audio/out1/level, audio/out2/level Number (float) 0–120 dB SPL – read yes, write [in use] [measured], [in use]
audio/out1/delay, audio/out2/delay Number (integer) 0–1000 samples at 1/48 kHz – read yes, write [in use] [measured], [in use]
audio/out1/mute, audio/out2/mute Boolean – – – read yes, write [in use] [measured], [in use]
audio/out1/label, audio/out2/label String, const OUT1, OUT2 – – read yes [measured]
audio/out1/loudspeaker, audio/out2/loudspeaker String UNKNOWN, NEUMANN KH-80, NEUMANN KH-120, NEUMANN KH-310, NEUMANN KH-420 – – read yes (UNKNOWN = no loudspeaker assigned) [measured]
audio/in/interface String ANALOG ONLY, DIGITAL ONLY, DIGITAL DISCARDS ANALOG – read yes, write yes read yes, write yes [measured]
audio/in/current_input String, read-only e.g. ANALOG INPUT – read yes read yes [measured]
audio/digital_bypass Boolean – – – read yes [measured]

The audio/out/delay and audio/out/mute write tests wrote back the value just read; the device echoed it [measured]. Out of range, the KH 750 clamps a delay set to its limit: 2000 was echoed and read back as 1000, -5 as 0 [measured]. The KH 120 II delay was not tested out of range. Measured acoustically on a KH 120 II with REW's acoustic timing reference: 48, 480 and 960 samples delayed the speaker by 1.000, 10.000 and 19.999 ms, so the unit is exactly samples at 48 kHz [measured]. audio/out/level works in exact dB: 6 and 12 dB lower changed the response by 5.94 and 11.94 dB (KH 120 II), 6 dB by 5.94 dB on the KH 750's woofer [measured].

KH 750: audio/out or audio/out5

On firmware 2_1_2 the KH 750 keeps level and mute in audio/out; audio/out5/level and audio/out5/mute answer 404 [measured]. According to khtool's source code, KH 750 firmware 1.2.x (the only version named is 1.2.4) keeps them in audio/out5 ([khtool] (source code), not tested on hardware). A client can tell the layouts apart: audio/out/level answers 404 and audio/out5/level a number on the old layout.

Front and rear panel settings (ui/*)

Path Type Range / values Unit KH 120 II KH 750 Source
ui/logo/brightness Number (integer) 0–125 % read yes, write [in use]; out of range (200, -10) refused with 406, value unchanged [measured] – [measured], [in use]
ui/input_gain Number (float) −15 to 0 dB read yes, write no – [measured]
ui/input_select String MONO, AES3 R, AES3 L, ANALOG – read yes, write no – [measured]
ui/bass_gain String of digits -6, -4, -2, 0 dB read yes, write no – [measured]
ui/mid_gain String of digits -6, -4, -2, 0 dB read yes, write no – [measured]
ui/treble_gain String of digits -2, -1, 0, 1 dB read yes, write no – [measured]
ui/output_level String of digits 94, 100, 108, 114 dB SPL at 1 m for 0 dBu read yes, write no – [measured]
ui/control_mode String NETWORK, LOCAL – read yes, write no (405) read yes, write no (405) [measured]
ui/bass_management String DISABLED, ACTIVE – – read yes, write no [measured]
ui/channel_b_input_mode String LFE-Mode II (>80Hz -> Output B), LFE-Mode I (<120Hz), Ext.BM LFE (fullrange), STEREO (right) – – read yes, write no [measured]
ui/subwoofer_input_gain Number (float) −12 to 2 dB – read yes, write no [measured]
ui/subwoofer_low_cut Number (float) −12 to 0 dB – read yes, write no [measured]
ui/subwoofer_output_level String of digits 94, 100, 108, 114 dB SPL at 1 m for 0 dBu – read yes, write no [measured]
ui/subwoofer_phase String of digits 0, -45, -90, -135 degree – read yes, write no [measured]
ui/subwoofer_phase_inversion String of digits 0, -180 degree – read yes, write no [measured]
ui/auto_standby String OFF, ON – – read yes, write no (405); follows the AUTO STANDBY switch [measured]

Every ui/* field measured as not writable is flagged writeable in the device's own osc/limits, yet a set is refused; where the reply was recorded it was 405: ui/input_gain on the KH 120 II, ui/bass_management and ui/auto_standby on the KH 750, ui/control_mode on both [measured]. The values carry no unit suffix on the wire [measured]. These fields mirror the rear-panel switches.

ui/control_mode: writing its current value NETWORK answered 405 "method not allowed" on both models, so the field is read-only over SSC [measured]. On the KH 750 it reads LOCAL or NETWORK according to the switch position; in LOCAL the device still answers reads but refuses writes with 401 (see Device-Behaviour) [measured]. Both manuals describe a switch on the back (CONTROL on the KH 120 II, CONTROL MODE on the KH 750) that selects Local or Network [manual]. ui/logo/brightness is not in the KH 750's own schema [measured].

Device

Path Type Range / values Unit KH 120 II KH 750 Source
device/name String max. 52 characters – read yes, write [in use] read yes, write [in use] [measured], [in use]
device/identification/visual Boolean – – read yes, write [in use] read yes, write [in use] [measured], [in use]
device/restore String "", FACTORY_DEFAULTS – read returns an empty string read returns an empty string [measured]
device/save_settings Boolean true – 404 404 [measured]
device/temperature Number (integer) 0–500 K – read yes [measured]
  • device/identification/visual: after a set the device keeps flashing for several minutes [measured].
  • device/save_settings: according to a statement by the khtool maintainer in the khtool issue tracker, only the KH 80 needs an explicit save for changes to survive a power cycle ([khtool] (issue tracker); not tested on hardware).

Meters and warnings

Path Type Range / values Unit KH 120 II KH 750 Source
m/in/level Number list, 2 values (input channels A, B) −160 to 6 dB read yes read yes [measured]
m/in/clip Boolean list, 2 values – – read yes read yes [measured]
m/out/level Number list, 3 values: output A, output B, subwoofer −160 to 6 dB – read yes [measured]
m/out/clip Boolean list, 3 values – – – read yes [measured]
warnings list with 1 string (the schema says String) ["NO_WARNING"] when fine – read yes read yes [measured]

The meters refresh about every 200 ms (5 Hz) on both models. The KH 750's output meters sit after the EQ; silence reads about −115 to −122 dB [measured].

EQ

Each EQ container has six leaves. Each leaf is an array with one entry per band. What gain and boost do and how one band is written: EQ.

Leaf Type Range / values Unit Source
enabled Boolean – – [measured]
gain Number (float) −99 to 24 dB [measured]
boost Number (float) −99 to 24 dB [measured]
frequency Number (float) 10–24000 Hz [measured]
q Number (float) 0.1–16 – [measured]
type String PARAMETRIC, LOSHELF, HISHELF, LOWPASS, HIGHPASS, BANDPASS, NOTCH, ALLPASS, HI6DB, LO6DB, INVERSION – [measured]
Model Containers Bands Source
KH 120 II audio/out/eq2 10 [measured]
KH 120 II audio/out/eq3 20 [measured]
KH 750 audio/out/eq2, audio/out/eq3, audio/out1/eq2, audio/out1/eq3, audio/out2/eq2, audio/out2/eq3 10 each [measured]
KH 750 eq1/in1, eq1/in2 under audio/out, audio/out1, audio/out2 (crossover of input A and input B) 2 each [measured]

All six leaves answer in every container on both models, and a one-band write was tested on every container [measured]. A query on the container itself (audio/out/eq2) answers 404 at the container [measured].

Paths that answer 404

Every path below was rejected on all four units (two per model) in the 2026-10-17 probe [measured]. The 404 code itself is recorded where a raw reply or an earlier probe holds it.

Path Answers 404 on In the device's own schema? Source
audio/out/eq1/<leaf>, audio/out1/eq1/<leaf>, audio/out2/eq1/<leaf> KH 750 (2_1_2); KH 120 II has no eq1 KH 750: yes, but one level deeper: eq1/in1 and eq1/in2 with 2 bands each, which do answer [measured]
audio/out5/level, audio/out5/mute KH 120 II and KH 750 (the 404 sits at out5, the first missing node) no [measured]
audio/out/dimm KH 120 II and KH 750 no [measured]
device/save_settings KH 120 II and KH 750 no [measured]
audio/out/phaseinversion KH 750 no (the KH 120 II has it and answers) [measured]
device/identity/hw_revision, device/identity/manufacturer KH 120 II and KH 750 no [measured]
audio/out/eq2/bypass, audio/out/eq2/order KH 120 II and KH 750 no [measured]

No typed leaf the device's own schema lists answers 404 [measured].

Mute persist and input mix

Both are in the device's own schema on every output (out1, out2 on the KH 750 only) and were write-tested on 2026-10-20: written, read back and restored, on the KH 120 II (out) and the KH 750 (out, out1, out2), with CONTROL / CONTROL MODE on NETWORK [measured].

Path Type Range / values KH 120 II KH 750 Source
audio/out*/mute_persist Boolean – read yes, write yes read yes, write yes [measured]
audio/out*/mixer/levels list of 2 floats −100 to 0 dB each read yes, write yes read yes, write yes [measured]
  • mute_persist: what it does was not measured; the test only toggled it and set it back, with mute itself untouched.
  • mixer/levels is the share of each input in that output: entry 0 is input A, entry 1 input B. With a tone at input B of a KH 750, −6 dB on an entry moved that output's meter by −6.0 dB (out entry 1 → Sub, out1 entry 0 → A, out2 entry 1 → B), the other meters by at most 0.1 dB [measured].
  • Values read: KH 120 II out [0, -100]; KH 750 out [0, 0], out1 [0, -100], out2 [-100, 0], so by default the output sockets A and B carry input A and B, and the subwoofer both [measured].
  • Only whole lists were written; whether null keeps an entry is not tested on hardware.

Further leaves in the schema

These leaves are in the device's own schema and answer a get on both units of each model [measured]. Writes are not tested on hardware.

Path Model Measured reply and osc/limits details
device/update/enable, device/update/startover both Boolean
device/auth/exclusive, device/system both String, max. 64 characters, flagged writeable; device/system read an empty string on all four units (2026-10-23)
device/time, device/timeprecision both Number (integer), const; both read 0 on both models, also 2 s later
device/network/ether/macs both a single String (not a list), const; carries the MAC address – never publish its value

See also: SSC-Protocol · EQ · Device-Behaviour · Limits-and-Untested

Clone this wiki locally