Summary
The Skaarhoj ETH-SDI Link bridges Ethernet-based control systems to embedded SDI workflows for Blackmagic Design cameras. It receives tally and camera control commands over UDP/TCP and embeds them as ancillary data into the SDI output. The device exposes a REST-style HTTP API, a Raw Panel TCP server (port 9923), a TSL UDP listener (port 7001), and a USB serial monitor for configuration and maintenance.
Transport
protocols:
- http
- tcp
- udp
- serial
addressing:
base_url: "http://<device_ip>" # HTTP API and Web UI; port not explicitly stated in source
port: 9923 # Raw Panel TCP server (stated)
# UNRESOLVED: HTTP web port not explicitly stated (default URL omits port)
# Note: UDP TSL listener uses port 7001 (stated separately below); single `port` field cannot represent multi-protocol ports.
serial:
baud_rate: 115200 # stated for Raw Panel over USB mode only
data_bits: null # UNRESOLVED: not stated in source
parity: null # UNRESOLVED: not stated in source
stop_bits: null # UNRESOLVED: not stated in source
flow_control: null # UNRESOLVED: not stated in source
auth:
type: credentials # Web UI uses username/password; default admin/skaarhoj
# Note: credentials transmitted unencrypted. "Allow access without login" option can disable auth.
# UNRESOLVED: auth token format / mechanism (Basic? form?) not specified beyond username+password
udp:
listen_port: 7001 # TSL UDP listener default (stated)
Traits
- queryable # inferred from getInfo, ip=?, getCID, dumpIP, sockets, ping query commands
Actions
# --- USB Serial Monitor commands (protocol: serial) ---
- id: serial_help
label: Show Help Message
kind: query
command: "help"
params: []
- id: serial_set_ip
label: Set Static IP
kind: action
command: "ip={address}"
params:
- name: address
type: string
description: Static IP a.b.c.d, or 0.0.0.0 for DHCP
- id: serial_set_subnet
label: Set Subnet Mask
kind: action
command: "subnet={address}"
params:
- name: address
type: string
description: Subnet mask a.b.c.d
- id: serial_set_gateway
label: Set Gateway Address
kind: action
command: "gateway={address}"
params:
- name: address
type: string
description: Gateway address a.b.c.d
- id: serial_set_dns
label: Set DNS Server
kind: action
command: "dns={address}"
params:
- name: address
type: string
description: DNS server a.b.c.d
- id: serial_reset
label: Soft Reset
kind: action
command: "reset"
params: []
- id: serial_reboot
label: Reboot (alias for reset)
kind: action
command: "reboot"
params: []
- id: serial_notick
label: Disable dot/loopcount output
kind: action
command: "notick"
params: []
- id: serial_ping
label: Ping (Returns ack)
kind: query
command: "ping"
params: []
- id: serial_debug
label: Enable Debug Mode
kind: action
command: "debug"
params: []
- id: serial_sockets
label: Show Socket Status
kind: query
command: "sockets"
params: []
- id: serial_newmac
label: Generate and Save New MAC Address
kind: action
command: "newmac"
params: []
- id: serial_reset_all
label: Clear User Settings and Reset
kind: action
command: "_resetAll"
params: []
- id: serial_get_cid
label: Get Device CID
kind: query
command: "getCID"
params: []
- id: serial_get_info
label: Display Device Status (JSON)
kind: query
command: "getInfo"
params: []
- id: serial_ip_query
label: Get Current IP Address
kind: query
command: "ip=?"
params: []
- id: serial_dump_ip
label: Display IP Configuration
kind: query
command: "dumpIP"
params: []
- id: serial_raw_panel_mode
label: Enter Raw Panel Mode (USB)
kind: action
command: "serialRawPanel"
params: []
- id: rawpanel_list
label: List (Raw Panel)
kind: query
command: "list"
params: []
- id: serial_eth_autoneg
label: Set Ethernet Auto-Negotiation
kind: action
command: "ethautoneg={value}"
params:
- name: value
type: integer
description: "1 = enable, 0 = disable (reboot required)"
# --- HTTP API commands (protocol: http) ---
- id: http_tally_control
label: Tally Control
kind: action
command: "GET http://<device_ip>/tally/{color}/{camera}/{action}"
params:
- name: color
type: string
description: "Tally color: red or green"
- name: camera
type: integer
description: Camera number (1-8)
- name: action
type: string
description: "set (ON), clear (OFF), toggle, or empty (read state)"
- id: http_bars_control
label: Color Bars Control
kind: action
command: "GET http://<device_ip>/bars/{camera}/{action}"
params:
- name: camera
type: integer
description: Camera number (1-8)
- name: action
type: string
description: "set (ON, 30s timeout), clear (OFF), toggle, or empty (read state)"
# --- Raw Panel commands (protocol: tcp, port 9923) ---
- id: rawpanel_hwc_set
label: Set HWC Tally Value
kind: action
command: "HWC#{n}={value}"
params:
- name: n
type: integer
description: "HWC ID 1-16 (odd=red, even=green per camera 1-8)"
- name: value
type: integer
description: "32 = ON, 0 = OFF"
- id: rawpanel_clear
label: Clear All Tallies
kind: action
command: "Clear"
params: []
Feedbacks
- id: tally_state
type: object
description: HTTP API JSON response for tally state
values:
tally: string # "red" or "green"
channel: integer # 1-8
state: boolean
- id: device_info_json
type: object
description: JSON device status returned by getInfo serial command
# UNRESOLVED: exact JSON schema for getInfo response not documented in source
- id: ip_config
type: object
description: IP configuration dump returned by dumpIP serial command
# UNRESOLVED: exact response format not documented in source
- id: socket_status
type: object
description: Socket status returned by sockets serial command
# UNRESOLVED: exact response format not documented in source
- id: device_cid
type: string
description: Device CID returned by getCID serial command
Variables
# UNRESOLVED: no settable continuous parameters documented as direct commands.
# ATEM-2-SDI forwards Iris/Focus/Gain/White Balance/Lift/Gamma/Saturation/Hue/Shutter/Contrast
# from an ATEM switcher, but these are pass-through, not direct settable variables on this device.
Events
# UNRESOLVED: no unsolicited notification protocol documented.
# Note: device emits dot/loopcount output every second by default (disabled via `notick`).
Macros
# UNRESOLVED: no multi-step sequences explicitly documented in source.
Safety
confirmation_required_for: []
interlocks:
- warning: "Avoid enabling multiple control methods simultaneously (ATEM-2-SDI + TSL + Raw Panel). Conflicting commands can cause unpredictable behavior."
- warning: "Login credentials transmitted unencrypted. Use only on trusted local networks. Do not expose directly to the internet."
# UNRESOLVED: no explicit interlock sequences or power-on ordering requirements stated in source.
Notes
- SDI output supports 3G-SDI Level B mapping only; Level A signals are not compatible.
- Camera does not need to run the same video format as the program input (e.g. cameras in Ultra HD while protocol sent over HD-SDI).
- Raw Panel supports up to 3 simultaneous TCP clients on port 9923; device advertises via mDNS.
- HWC tally mapping: HWC #1=Cam1 Red, #2=Cam1 Green, #3=Cam2 Red, #4=Cam2 Green, ... up to Cam8 (HWC #15/#16).
- TSL 3.1 and TSL 5.0 can run simultaneously on the same UDP port 7001.
- Color bars enabled via HTTP/Control tab auto-timeout after 30 seconds.
- ATEM Constellation series switchers may cause slower connection times or intermittent connectivity.
- Entering Raw Panel USB mode (
serialRawPanel) disables all other serial communication until power cycle.
Provenance
source_domains:
- pid.skaarhoj.com
- skaarhoj.com
source_urls:
- https://pid.skaarhoj.com/Manuals/SKAARHOJ_manual-ETH-SDI-LINK-V2.pdf
- https://www.skaarhoj.com/raw-panel
retrieved_at: 2026-06-29T20:31:03.734Z
last_checked_at: 2026-10-07T12:52:40.139Z
Verification Summary
verdict: verified
checked_at: 2026-10-07T12:52:40.139Z
matched_actions: 24
action_count: 24
confidence: medium
summary: "All 24 spec actions match source serial, HTTP and Raw Panel commands with correct shapes; transport values are supported and the source catalogue is fully covered. (14 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "HTTP web port not explicitly stated (URL shows http://<device_ip>/ without port)."
- "Regular USB serial monitor baud rate not stated (115200 only documented for Raw Panel USB mode)."
- "ATEM-2-SDI forwarding parameters are pass-through; no direct commands documented for setting them on this device."
- "HTTP web port not explicitly stated (default URL omits port)"
- "not stated in source"
- "auth token format / mechanism (Basic? form?) not specified beyond username+password"
- "exact JSON schema for getInfo response not documented in source"
- "exact response format not documented in source"
- "no settable continuous parameters documented as direct commands."
- "no unsolicited notification protocol documented."
- "no multi-step sequences explicitly documented in source."
- "no explicit interlock sequences or power-on ordering requirements stated in source."
- "TSL 5.0 message format, TSL 3.1 byte layout, and Raw Panel TCP wire protocol byte format not documented in this source."
- "HTTP API authentication mechanism (Basic Auth header vs form login) not specified."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0