Summary
The iTach family (WiFi and wired Ethernet variants WF2IR/WF2SL/WF2CC and IP2IR/IP2SL/IP2CC) is a line of network-attached control endpoints exposing IR, serial, and contact-closure ports. This spec covers the unified TCP API used to discover devices, configure modules, and control I/O. Primary transport is raw TCP to port 4998; a secondary raw-TCP serial bridge listens on port 4999 for SL variants (with multiport mode enabled).
Transport
protocols:
- tcp
addressing:
port: 4998
auth:
type: none # inferred: no auth procedure in source
Traits
- queryable # inferred from getversion/getdevices/get_NET/get_IR/get_SERIAL/getstate query commands
- routable # inferred from setstate input/output selection and set_IR mode selection
Actions
- id: getversion
label: Get device version
kind: query
command: "getversion"
params: []
- id: getdevices
label: Get device capabilities
kind: query
command: "getdevices"
params: []
- id: blink_enable
label: Blink device LED (enable)
kind: action
command: "blink,1"
params: []
- id: blink_disable
label: Blink device LED (disable)
kind: action
command: "blink,0"
params: []
- id: get_NET
label: Get network configuration
kind: query
command: "get_NET,{module}:{port}"
params:
- name: module
type: integer
description: Module address (always 0 for network config on iTach)
- name: port
type: integer
description: Port/connector address (always 1 for network config)
- id: get_IR
label: Get IR port mode
kind: query
command: "get_IR,{module}:{port}"
params:
- name: module
type: integer
description: Module address (1 for iTach IR module)
- name: port
type: integer
description: Port/connector address (1-3)
- id: set_IR
label: Set IR port mode
kind: action
command: "set_IR,{module}:{port},{mode}"
params:
- name: module
type: integer
description: Module address (1 for iTach IR module)
- name: port
type: integer
description: Port/connector address (1-3)
- name: mode
type: enum
values: [IR, IR_BLASTER, SENSOR, SENSOR_NOTIFY, LED_LIGHTING]
description: |
Port I/O mode. IR_BLASTER supported only on port 3.
LED_LIGHTING is iTach-specific. SENSOR/SENSOR_NOTIFY for polled/notify sensor mode.
- id: sendir
label: Transmit IR code
kind: action
command: "sendir,{module}:{port},{ID},{freq},{repeat},{offset},{on1},{off1},{on2},{off2},...,{onN},{offN}"
params:
- name: module
type: integer
description: Module address (1 for iTach IR module)
- name: port
type: integer
description: Port/connector address (1-3)
- name: ID
type: integer
description: Code ID echoed in completeir response (0-65535)
- name: freq
type: integer
description: Carrier frequency in Hz (15000-500000)
- name: repeat
type: integer
description: Repeat count (1-50 for iTach)
- name: offset
type: integer
description: Preamble offset (1-383); must be odd when repeat > 1
- name: on_off_sequence
type: string
description: Alternating on/off pulse counts; equal count of on and off values
- id: stopir
label: Stop IR transmission
kind: action
command: "stopir,{module}:{port}"
params:
- name: module
type: integer
description: Module address (1 for iTach IR module)
- name: port
type: integer
description: Port/connector address (1-3)
- id: get_IRL
label: Enable IR Learner
kind: action
command: "get_IRL"
params: []
- id: stop_IRL
label: Disable IR Learner
kind: action
command: "stop_IRL"
params: []
- id: get_SERIAL
label: Get serial port configuration
kind: query
command: "get_SERIAL,{module}:{port}"
params:
- name: module
type: integer
description: Module address (1 for iTach serial module)
- name: port
type: integer
description: Port/connector address (1)
- id: set_SERIAL
label: Set serial port configuration
kind: action
command: "set_SERIAL,{module}:{port},{baudrate},{flowcontrol},{parity},{stopbits}"
params:
- name: module
type: integer
description: Module address (1 for iTach serial module)
- name: port
type: integer
description: Port/connector address (1)
- name: baudrate
type: integer
description: Baud rate (300-115200; all values in range supported on iTach)
- name: flowcontrol
type: enum
values: [FLOW_NONE, FLOW_HARDWARE]
description: Flow control mode
- name: parity
type: enum
values: [PARITY_NO, PARITY_ODD, PARITY_EVEN]
description: Parity bit mode
- name: stopbits
type: enum
values: [STOPBITS_1, STOPBITS_2]
description: Stop bit mode
- id: getstate_relay
label: Get state of relay output (CC variant)
kind: query
command: "getstate,{module}:{port}[,{mode}]"
params:
- name: module
type: integer
description: Module address (1 for iTach CC/relay module)
- name: port
type: integer
description: Port/connector address (1-3)
- name: mode
type: enum
values: [notify]
description: Optional; pass "notify" to enable TCP change notifications
- id: setstate_relay
label: Set state of relay output (CC variant)
kind: action
command: "setstate,{module}:{port},{state}"
params:
- name: module
type: integer
description: Module address (1 for iTach CC/relay module)
- name: port
type: integer
description: Port/connector address (1-3)
- name: state
type: enum
values: ["0", "1"]
description: 0 = off (open), 1 = on (closed) for SPST
- id: getstate_sensor
label: Get state of sensor input (IR port in SENSOR mode)
kind: query
command: "getstate,{module}:{port}[,{mode}]"
params:
- name: module
type: integer
description: Module address (1 for iTach IR module when port is in SENSOR mode)
- name: port
type: integer
description: Port/connector address (1-3)
- name: mode
type: enum
values: [notify]
description: Optional; pass "notify" to enable TCP change notifications
Feedbacks
- id: version
type: string
description: Firmware version string returned by getversion (e.g. "710-2000-XX")
- id: device_capability
type: string
description: Multi-line response from getdevices; one line per module in the format `device,<module>,<ports> <type>`. Response terminated by `endlistdevices`. Example iTach IP2IR: `device,0,0 ETHERNET` and `device,1,3 IR`.
- id: network_config
type: string
description: Response from get_NET in the format `NET,<module>:<port>,<cfglock>,<IPconfig>,<IPaddr>,<subnet>,<gateway>`. UNRESOLVED: cfglock/IPconfig/IPaddr/subnet/gateway field structures not enumerated in summary form.
- id: ir_port_mode
type: string
description: Response from get_IR/set_IR in the format `IR,<module>:<port>,<mode>`
- id: serial_config
type: string
description: Response from get_SERIAL/set_SERIAL in the format `SERIAL,<module>:<port>,<baudrate>,<flowcontrol>,<parity>[,stopbits]`
- id: relay_state
type: enum
values: ["0", "1"]
description: State of relay output; 0 = off (open), 1 = on (closed)
- id: sensor_state
type: enum
values: ["0", "1"]
description: State of sensor input; 0 = off (open), 1 = on (closed)
- id: completeir
type: string
description: Response when sendir completes successfully: `completeir,<module>:<port>,<ID>`
- id: busyir
type: string
description: Response when sendir is rejected because the port is busy transmitting a different IR code
- id: ir_learner_status
type: enum
values: [IR Learner Enabled, IR Learner Disabled]
description: Response confirming get_IRL / stop_IRL activation
- id: stopir_echo
type: string
description: Echo of the stopir request from the device (for all products except GC-100): `stopir,<module>:<port>`
- id: ir_code_stream
type: string
description: Streamed IR code strings in Global Cache IR Format while IR Learner is active (module/port always "1")
Variables
# UNRESOLVED: source does not enumerate variable slots as discrete settable parameters;
# all device configuration is performed via the command set above (get_NET/set_NET,
# get_IR/set_IR, get_SERIAL/set_SERIAL, getstate/setstate).
Events
- id: statechange_tcp
description: |
TCP state change notification. Streamed in the format
`statechange,<module>:<port>,<state>` when notify mode is enabled on a
sensor or relay port. Notification persists for the life of the TCP
connection of the client that enabled it. Source: Appendix C.
- id: sensor_statechange_udp
description: |
UDP change notification for sensor class modules. Delivered as a
multicast UDP message in the same format as the sensor getstate response.
Configured via set_SENSORNOTIFY (notify port, interval, debounce).
UNRESOLVED: iTach-specific support for UDP change notification not
explicitly confirmed in source tables (set_SENSORNOTIFY row lists
Flex and Global Connect only).
- id: receiveIR_stream
description: |
Streamed IR code strings (Global Cache IR Format) from receiveIR
receive mode. UNRESOLVED: receiveIR is listed in source as supported
only on Global Connect IR product line per the parameter table;
applicability to iTach WF2IR not confirmed.
Macros
# UNRESOLVED: source does not describe any multi-step sequences that should
# be encoded as macros.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source does not document safety warnings, interlock procedures,
# or power-on sequencing requirements. Smooth Continuous IR Repeat section
# warns of runaway-volume scenarios when an IR repeat request is interrupted
# mid-transmission, but this is a usage guideline, not a device interlock.
Notes
- Source is the unified Global Cache TCP API v1.1.2 which covers GC-100, iTach, Flex, and Global Connect product lines. The IR/Serial/Relay class commands that are explicitly not supported on iTach (e.g.
get_RELAY/set_RELAY,set_NET,receiveIR,CEC,getactive) are excluded from the Actions section per the source's compatibility tables. - The iTach supports up to 8 simultaneous TCP API connections on port 4998.
- For SL variants, raw TCP connections to port 4999 provide a transparent network-to-serial bridge. iTach supports 4 simultaneous connections on this bridge only when multiport mode is enabled via the device's web configuration. The IP2SL/WF2SL hardware exposes a single serial port.
- IR module default mode on iTach: ports 1 and 2 default to
IR(emitter); port 3 defaults toIR_BLASTER. - For set_SERIAL on iTach, all baud rates in the range 300-115200 are supported (Flex and Global Connect support a restricted subset of specific values).
set_SERIALon iTach does not accept acable_idparameter (that is Flex-only).setstateon iTach CC does not accept the optionalperiod(pulse) parameter (that is Flex-only).- For state values on iTach CC, only
0and1are valid. State2(on2 for SPDT/DPDT) is Flex-only. - A
completeirresponse is sent when IR transmission completes.busyiris returned if a different IR code is currently transmitting on the requested port. set_NETis not supported on iTach; network configuration must be performed via the device's web configuration pages.</mm:think>Spec drafted from refined Unified TCP API v1.1.2. iTach-only commands kept; Flex/GC-100/GC-only rows excluded.
Provenance
source_domains:
- globalcache.com
source_urls:
- https://www.globalcache.com/files/docs/api-gc-unifiedtcp.pdf
retrieved_at: 2026-04-30T04:31:02.945Z
last_checked_at: 2026-06-02T21:41:45.816Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:41:45.816Z
matched_actions: 16
action_count: 16
confidence: medium
summary: "All 16 spec actions are present verbatim in source; iTach-inapplicable commands (set_NET, get_RELAY, receiveIR, getactive, CEC) correctly excluded; transport port 4998 confirmed. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source document is the unified Global Cache TCP API v1.1.2 which covers GC-100, iTach, Flex, and Global Connect families; commands that are not supported on the iTach product family are listed in source but excluded from this spec."
- "cfglock/IPconfig/IPaddr/subnet/gateway field structures not enumerated in summary form."
- "source does not enumerate variable slots as discrete settable parameters;"
- "iTach-specific support for UDP change notification not"
- "receiveIR is listed in source as supported"
- "source does not describe any multi-step sequences that should"
- "source does not document safety warnings, interlock procedures,"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0