Summary
CoolAutomation Cool Linknet is a CoolMaster Product Line gateway that bridges HVAC indoor units on L1–L8 to a control system over RS-232 (DB9) and/or TCP/IP Ethernet using a text-based ASCII I/F protocol. This spec covers both transports: the ASCII I/F IP Server ("aserver") on TCP port 10102 and the RS-232 DB9 interface at 9600 8N1.
Transport
protocols:
- tcp
- serial
addressing:
port: 10102
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from on/off/allon/alloff command examples
- routable # inferred from line/sddp/hdl routing command examples
- queryable # inferred from ls/ls2/query/ifconfig/set query examples
- levelable # inferred from temp/feed/fspeed level-setting command examples
Actions
# Configuration Commands (section 6.2.1)
- id: set
label: Get/Set Cool Linknet settings
kind: action
command: "set [SETTING] [VALUE]" # e.g. "set echo 0", "set aserverport 12345"
params:
- name: setting
type: string
description: Setting name (S/N, version, app, baud, echo, verbose, aserverport, aserverprompt, deg, melody, filter visi, HVAC lines, mmi lock)
- name: value
type: string
description: Setting value (defaults: baud 9600, aserverport 10102, echo 1, verbose 0)
- id: set_defaults
label: Restore all settings to defaults
kind: action
command: "set defaults"
params: []
- id: line_query
label: Query HVAC lines status
kind: query
command: "line"
params: []
- id: line_set
label: Set HVAC line configuration
kind: action
command: "line PROPERTY Ln VAL" # e.g. "line master L4 0", "line baud L3 19200 8E1"
params:
- name: property
type: string
description: master, simul, myid, baud, type, scan, DCOUT, slink, haux
- name: line
type: string
description: L1..L8
- name: value
type: string
description: Property value
- id: ifconfig_query
label: Query Ethernet network configuration
kind: query
command: "ifconfig"
params: []
- id: ifconfig_set
label: Set Ethernet network configuration
kind: action
command: "ifconfig PROPERTY VALUE" # e.g. "ifconfig IP 192.168.1.102"
params:
- name: property
type: string
description: IP, Netmask, Gateway, DNS1, DNS2
- name: value
type: string
description: IP address string, or "DHCP"
- id: ifconfig_enable
label: Enable Ethernet
kind: action
command: "ifconfig enable"
params: []
- id: ifconfig_disable
label: Disable Ethernet
kind: action
command: "ifconfig disable"
params: []
- id: boot
label: Enter Boot Mode
kind: action
command: "boot"
params: []
- id: boot_reset
label: Reset Cool Linknet
kind: action
command: "boot 2"
params: []
- id: sddp_query
label: Query SDDP module status
kind: query
command: "sddp"
params: []
- id: sddp_enable
label: Persistently enable SDDP module (effective after reset)
kind: action
command: "sddp enable"
params: []
- id: sddp_disable
label: Persistently disable SDDP module (effective after reset)
kind: action
command: "sddp disable"
params: []
- id: sddp_identify
label: Send SDDP IDENTIFY message to Control4 Composer
kind: action
command: "sddp identify"
params: []
- id: sddp_offline
label: Signal Cool Linknet going offline
kind: action
command: "sddp offline"
params: []
- id: sddp_alive
label: Signal Cool Linknet online
kind: action
command: "sddp alive"
params: []
- id: knx_query
label: Query KNX status
kind: query
command: "knx"
params: []
- id: knx_addr
label: Set KNX physical address
kind: action
command: "knx addr AREA/LINE/DEVICE"
params:
- name: address
type: string
description: KNX area/line/device address (e.g. 1/1/1)
- id: knx_ram
label: Create KNX group Data Base (effective after reboot)
kind: action
command: "knx ram R"
params:
- name: count
type: integer
description: Number of KNX groups
- id: knx_funcs
label: List all available KNX group functions
kind: query
command: "knx funcs"
params: []
- id: knx_group
label: List existing KNX groups
kind: query
command: "knx group"
params: []
- id: knx_group_address
label: List KNX groups for given group address
kind: query
command: "knx group GA"
params:
- name: ga
type: string
description: KNX group address (Main/Mid/Sub or Main/Sub)
- id: knx_group_create
label: Create new KNX group linking GA to function and UID
kind: action
command: "knx group GA FUNC DIRECTION UID" # e.g. "knx group 10/0/1 M < L1.100"
params:
- name: ga
type: string
- name: function
type: string
description: onoff, ST, RT, Mode, M, Fstep, F8, F%
- name: direction
type: string
description: "<" (input to Cool Linknet) or ">" (output from Cool Linknet)
- name: uid
type: string
description: Indoor Unit UID (Ln.XYY)
- id: knx_group_delall
label: Delete all KNX groups
kind: action
command: "knx group dellall"
params: []
- id: knx_group_delete
label: Delete KNX group number G
kind: action
command: "knx group -G"
params:
- name: g
type: integer
description: KNX group number to delete
- id: props_query
label: List all stored Indoor Unit properties
kind: query
command: "props"
params: []
- id: props_set
label: Change Indoor Unit property
kind: action
command: "props UID_STRICT PROPERTY VAL" # e.g. "props L6.204 name Kitchen", "props L1.101 mode +c+f+hx-h-d-hh-a"
params:
- name: uid
type: string
description: UID_STRICT in form Ln.XYY
- name: property
type: string
description: name, visi, fspeed, mode, tlim, elock
- name: value
type: string
description: Property value
- id: props_delall
label: Erase all Indoor Unit properties and return to defaults
kind: action
command: "props delall"
params: []
- id: link_query
label: List existing links
kind: query
command: "link"
params: []
- id: link_delall
label: Delete all links
kind: action
command: "link delall"
params: []
- id: link_delete
label: Delete link number L
kind: action
command: "link -L"
params:
- name: l
type: integer
- id: link_ram
label: Create link Data Base for R groups (effective after reboot)
kind: action
command: "link ram R"
params:
- name: count
type: integer
- id: link_create
label: Create new link between two Indoor Units
kind: action
command: "link UID1_STRICT[=|~]UID2_STRICT" # e.g. "link L3.082=L1.101"
params:
- name: uid1
type: string
- name: link_type
type: string
description: "=" regular link or "~" haux link
- name: uid2
type: string
- id: plug
label: Forward ASCII I/F command to CoolPlug on CH line
kind: action
command: "plug UID_STRICT ASCII_IF_COMMAND" # e.g. "plug L3.080 set"
params:
- name: uid
type: string
- name: command
type: string
description: ASCII I/F command to forward
- id: ad
label: Forward ASCII I/F command to CMNET-GR-GMV5 device on GMV5 line
kind: action
command: "ad Ln ASCII_IF_COMMAND" # e.g. "ad L8 set"
params:
- name: line
type: string
description: HVAC line (e.g. L8)
- name: command
type: string
- id: hdl_query
label: List existing HDL AC configurations
kind: query
command: "hdl"
params: []
- id: hdl_delall
label: Delete all HDL AC configurations
kind: action
command: "hdl delall"
params: []
- id: hdl_delete
label: Delete HDL AC configuration for specific Indoor Unit
kind: action
command: "hdl - UID_STRICT"
params:
- name: uid
type: string
- id: hdl_create
label: Create HDL AC configuration for Indoor Unit
kind: action
command: "hdl + UID_STRICT CHANNEL AC_NO ENABLE m0m1m2m3m4f0f1f2f3" # e.g. "hdl + L2.301 2 2 1 ++----+-+"
params:
- name: uid
type: string
- name: channel
type: integer
- name: ac_no
type: integer
- name: enable
type: integer
description: 0 invalid, 1 valid
- name: modes_fans
type: string
description: m0=cool m1=heat m2=fan m3=auto m4=dry f0=auto f1=high f2=medium f3=low; + allowed, - not allowed
- id: hdl_eth_query
label: Print HDL ethernet status and packet counters
kind: query
command: "hdl eth"
params: []
- id: hdl_eth_enable
label: Enable HDL over ethernet (effective after reboot)
kind: action
command: "hdl eth enable"
params: []
- id: hdl_eth_disable
label: Disable HDL over ethernet (effective after reboot)
kind: action
command: "hdl eth disable"
params: []
- id: hdl_eth_myid
label: Change HDL Subnet/Device ID in hex (effective after reboot)
kind: action
command: "hdl eth myid ID" # e.g. "hdl eth myid 0163"
params:
- name: id
type: string
description: 4 hex digits; MS byte = Subnet ID, LS byte = Device ID
- id: simul
label: Simulate CNT Indoor Units on HVAC Line Ln (not persistent across reset)
kind: action
command: "simul [Ln] CNT" # e.g. "simul L2 5"
params:
- name: line
type: string
description: L1..L8 (optional; default = first not Unused line)
- name: count
type: integer
- id: gpio_query
label: Query GPIO functionality
kind: query
command: "gpio"
params: []
- id: gpio_func
label: Set GPIO function (effective after reboot)
kind: action
command: "gpio func NAME FUNCTION" # e.g. "gpio func A Unused"
params:
- name: name
type: string
description: A, B, C, or D
- name: function
type: string
description: Unused, ALL OFF, ALL ON, OOS, ALL INH, FLRS, BI, BO, AI
- id: gpio_norm
label: Set GPIO normal signal level state
kind: action
command: "gpio norm NAME STATE" # e.g. "gpio norm A C"
params:
- name: name
type: string
description: A, B, C, or D
- name: state
type: string
description: "c/C" = N.C. (Normally Closed), "o/O" = N.O. (Normally Open)
- id: info
label: Query DIP switches position and DC output on L1/L2
kind: query
command: "info"
params: []
- id: modbus_query
label: Query ModBus configurations
kind: query
command: "modbus"
params: []
- id: modbus_set
label: Set ModBus setting
kind: action
command: "modbus SETTING VALUE" # e.g. "modbus IP enable", "modbus server port 500"
params:
- name: setting
type: string
description: IP, server port, ignore
- name: value
type: string
- id: modbus_cg4
label: List CoolGate 4 ModBus addresses of existing Indoor Units
kind: query
command: "modbus cg4"
params: []
# HVAC Status and Control Commands (section 6.2.2)
- id: on
label: Turn on Indoor Unit(s)
kind: action
command: "on [UID]" # e.g. "on L1.102", "on L2*", "on"
params:
- name: uid
type: string
description: UID (Ln.XYY, Ln*, or omitted for all)
- id: allon
label: Turn on all Indoor Units
kind: action
command: "allon"
params: []
- id: off
label: Turn off Indoor Unit(s)
kind: action
command: "off [UID]" # e.g. "off L1.102", "off L2*", "off"
params:
- name: uid
type: string
- id: alloff
label: Turn off all Indoor Units
kind: action
command: "alloff"
params: []
- id: cool
label: Set operation mode to Cool
kind: action
command: "cool [UID]" # e.g. "cool L1.102", "cool L2*", "cool"
params:
- name: uid
type: string
- id: heat
label: Set operation mode to Heat
kind: action
command: "heat [UID]" # e.g. "heat L1.102", "heat L2*", "heat"
params:
- name: uid
type: string
- id: fan_mode
label: Set operation mode to Fan
kind: action
command: "fan [UID]" # e.g. "fan L1.102", "fan L2*", "fan"
params:
- name: uid
type: string
- id: dry
label: Set operation mode to Dry
kind: action
command: "dry [UID]" # e.g. "dry L1.102", "dry L2*", "dry"
params:
- name: uid
type: string
- id: auto
label: Set operation mode to Auto
kind: action
command: "auto [UID]" # e.g. "auto L1.102", "auto L2*", "auto"
params:
- name: uid
type: string
- id: temp
label: Set Indoor Unit Set Temperature
kind: action
command: "temp [UID] [±]TEMP" # e.g. "temp L1.102 23", "temp L2* -2", "temp L2* 24.5"
params:
- name: uid
type: string
- name: temperature
type: string
description: "[±]nn or nn.n (precision depends on AC type: 0.1, 0.3, 0.5 or 1 °C)"
- id: feed
label: Suggest Ambient Temperature to Indoor Unit(s)
kind: action
command: "feed [UID] [±]TEMP" # e.g. "feed L1.102 23.5", "feed L2* -2"
params:
- name: uid
type: string
- name: temperature
type: string
description: "[±]nn or nn.n; 0 stops suggesting"
- id: fspeed
label: Set Indoor Unit Fan Speed
kind: action
command: "fspeed [UID] SPEED" # e.g. "fspeed L1.102 l", "fspeed L2* h", "fspeed m"
params:
- name: uid
type: string
- name: speed
type: string
description: "v/V very-low, l/L low, m/M medium, h/H high, t/T top, a/A auto"
- id: swing
label: Set Indoor Unit louver position
kind: action
command: "swing [UID] POSITION" # e.g. "swing L1.102 h", "swing 3"
params:
- name: uid
type: string
- name: position
type: string
description: "h horizontal, v vertical, a auto, 3 30°, 4 45°, 6 60°, - stop swing"
- id: filt
label: Reset Filter Sign
kind: action
command: "filt [UID]" # e.g. "filt L1.102", "filt L2*", "filt"
params:
- name: uid
type: string
- id: ls
label: List Indoor Unit(s) status (visible only)
kind: query
command: "ls [UID]" # e.g. "ls L2", "ls L2.101"
params:
- name: uid
type: string
- id: ls_all
label: List all Indoor Unit(s) status including invisible ones
kind: query
command: "ls+" # or "ls" with no UID but listed from example
params: []
- id: ls2
label: List Indoor Unit(s) status with decimal temperature precision
kind: query
command: "ls2 [UID]" # e.g. "ls2 L2", "ls2 L2.101"
params:
- name: uid
type: string
- id: query
label: Query one operation condition of an Indoor Unit
kind: query
command: "query UID_STRICT CONDITION" # e.g. "query L1.100 o"
params:
- name: uid
type: string
description: UID_STRICT in form Ln.XYY
- name: condition
type: string
description: "o On/Off, m Mode, f Fan Speed, t Set Temp, e Failure Code, a Ambient Temp, h Set Temp 0.01°, s Louver Position"
- id: wh
label: Control Water Heater Unit (ME / P1P2 Altherma)
kind: action
command: "wh UID_STRICT [OP]" # e.g. "wh L1.101 w", "wh L4.000 t40", "wh L4.000 t+", "wh L4.000 b+", "wh L4.000"
params:
- name: uid
type: string
- name: operation
type: string
description: "h heat, e eco, w hot, a anti-freeze, t<+|-> or t<temp> tank, b<+|-> booster, (no letter) print status"
- id: main_query
label: List main RC setting on a line
kind: query
command: "main Ln" # e.g. "main L2"
params:
- name: line
type: string
- id: main_set
label: Change Daikin Indoor Unit main RC setting
kind: action
command: "main UID_STRICT 0|1" # e.g. "main L2.206 0", "main L2.201 1"
params:
- name: uid
type: string
- name: value
type: integer
description: "0 unset, 1 set as main RC"
- id: vam
label: Control Ventilation Unit
kind: action
command: "vam [UID_STRICT] OP" # e.g. "vam L1.101 x", "vam L1.101 +"
params:
- name: uid
type: string
- name: operation
type: string
description: "a auto, b bypass, x heat-exchange, n normal, S sleep, l low fan, L low-fan fresh-up, h high fan, H high-fan fresh-up, s super-high, t top, A auto fan, + on, - off"
- id: lock_query
label: Query locks for specific or all Indoor Units
kind: query
command: "lock [UID_STRICT]" # e.g. "lock L1.103", "lock L2.101"
params:
- name: uid
type: string
- id: lock_set
label: Lock/Unlock Indoor Unit(s)
kind: action
command: "lock [UID] [-|+][o|m|t|n]" # e.g. "lock L1.102 +m-t", "lock L5.002 +"
params:
- name: uid
type: string
- name: lock_ops
type: string
description: "Full +/- = lock/unlock all; o on/off, m mode, t setpoint, n on"
- id: inhibit
label: Force Indoor Unit(s) to OFF state
kind: action
command: "inhibit [UID] 0|1" # e.g. "inhibit L1.102 1", "inhibit 0"
params:
- name: uid
type: string
- name: value
type: integer
description: "1 enable inhibit, 0 remove inhibit"
- id: group_query
label: List existing groups
kind: query
command: "group"
params: []
- id: group_create
label: Create new group; UID2 will follow UID1
kind: action
command: "group UID1_STRICT UID2_STRICT" # e.g. "group L5.001 L5.002"
params:
- name: uid1
type: string
- name: uid2
type: string
- id: group_delete
label: Delete group number G
kind: action
command: "group -G"
params:
- name: g
type: integer
- id: group_delall
label: Delete all groups
kind: action
command: "group delall"
params: []
- id: group_ram
label: Create group Data Base for R groups (effective after reboot)
kind: action
command: "group ram R"
params:
- name: count
type: integer
- id: va_query
label: List all VA associations
kind: query
command: "va"
params: []
- id: va_auto
label: Automatically associate VA's with existing (visible) UID's
kind: action
command: "va auto"
params: []
- id: va_delall
label: Delete all VA associations
kind: action
command: "va delall"
params: []
- id: va_ram
label: Create VA Data Base for R associations (effective after reboot)
kind: action
command: "va ram R"
params:
- name: count
type: integer
- id: va_delete
label: Delete VA association by UID or VA number
kind: action
command: "va - UID_STRICT|VA" # e.g. "va - L1.100", "va - 4"
params:
- name: target
type: string
description: UID_STRICT or VA number
- id: va_add
label: Add new VA association
kind: action
command: "va + UID_STRICT VA" # e.g. "va + L1.100 7"
params:
- name: uid
type: string
- name: va
type: integer
Feedbacks
- id: on_off
type: enum
values: [on, off]
- id: set_temperature
type: number
description: Set Temperature in current scale (Celsius or Fahrenheit per `deg` setting); precision 0.1, 0.3, 0.5 or 1 °C depending on AC type
- id: room_temperature
type: number
description: Ambient temperature in current scale
- id: fan_speed
type: enum
values: [vlow, low, med, high, top, auto]
- id: operation_mode
type: enum
values: [cool, heat, fan, dry, auto]
- id: failure_code
type: string
description: "OK = no failure, otherwise Indoor Failure Code (e.g. U4)"
- id: filter_sign
type: enum
values: ["-", "#"]
- id: demand
type: enum
values: ["0", "1"]
- id: louver_position
type: enum
values: [h, v, a, "3", "4", "6", x]
- id: exit_code
type: object
description: Numeric `ERROR:N` or verbose form per section 6.1.2; e.g. 0 OK, 1 No UID, 6 Unknown Command, 18 SDDP Not Initialized
Variables
- id: aserverport
type: integer
description: ASCII I/F IP Server TCP port (default 10102)
- id: baud
type: integer
description: RS232 interface baud rate (default 9600, range 1200...115200)
- id: echo
type: enum
values: ["0", "1"]
description: RS232 echo control; 0 disabled, 1 enabled (default 1)
- id: verbose
type: enum
values: ["0", "1"]
description: Exit code format; 0 numeric, 1 verbose (default 0)
- id: aserverprompt
type: enum
values: ["0", "1"]
description: ASCII I/F IP Server prompt character; 0 disabled, 1 enabled (default 1)
- id: deg
type: enum
values: [C, F]
description: Temperature scale (C Celsius or F Fahrenheit) used for `temp`, `feed` and `ls` output
- id: mmi_lock
type: enum
values: ["0", "1"]
description: Prohibit LCD touch screen operation (firmware ≥ 1.3.0)
- id: ip_address
type: string
description: Ethernet IP address; "DHCP" or static IPv4 string (set via `ifconfig IP`)
- id: netmask
type: string
description: Ethernet netmask (set via `ifconfig Netmask`)
- id: gateway
type: string
description: Ethernet gateway (set via `ifconfig Gateway`)
- id: dns1
type: string
description: Preferred DNS server (set via `ifconfig DNS1`)
- id: dns2
type: string
description: Alternate DNS server (set via `ifconfig DNS2`)
- id: modbus_ip_enabled
type: enum
values: [enable, disable]
description: ModBus IP server state (effective after reboot)
- id: modbus_server_port
type: integer
description: ModBus IP server port (default 502)
Events
# UNRESOLVED: source describes no unsolicited event stream; only the aserver prompt
# character `>` is sent upon connection when enabled. No asynchronous event tokens
# (e.g. status change notifications) are documented.
Macros
# No multi-step sequences are explicitly described in the source. The Cool Linknet
# itself is a gateway and does not define macro sequences of its own.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings, interlock procedures, or
# power-on sequencing requirements specific to the Cool Linknet unit. Per-HVAC
# line interactions (e.g. inhibit forcing Indoor Unit OFF) are operational, not
# safety-critical.
Notes
- The source document is the CoolMaster Product Line PRM, which the manufacturer explicitly states applies to CooLinkNet ("Communication between DTE and CooLinkNet via ASCII I/F..."). All commands above are therefore sourced from the CoolMaster PRM, not a Cool Linknet-specific manual.
- Two transports available: RS-232 (DB9 female, 9600 8N1, no flow control) and TCP/IP Ethernet. Both use the same ASCII I/F command set.
- ASCII I/F framing: commands to the device end with
<CR><LF>or single<CR>(0x0D / 0x0A / 0x0D). Responses end with<CR><LF>. Commands are case-sensitive; the only separator between command name and parameters is a single space (0x20). - Prompt character: RS-232 unconditionally sends
>after each response. Aserver prompt (>) is configurable viaset aserverpromptand is enabled by default. - Exit codes can be returned as
ERROR:N(numeric) or verbose text per section 6.1.2; theverbosesetting toggles between them. - The
lsandls2commands return fixed-position status strings (see field-position tables in source).ls2adds decimal temperature precision. - The
querycommand supports conditions: o (On/Off), m (Mode), f (Fan Speed), t (Set Temperature natural), e (Failure Code), a (Ambient Temperature), h (Set Temperature 0.01°), s (Louver Position). - Set Temperature precision varies by HVAC type: 0.1 °C (DK, ME, SM), 0.3 °C (FJ), 0.5 °C (SA, TO, PN, MH, LG), 1 °C (HT, GR, MD, CG, KT, TR, TI, MT, BSM).
feed(Ambient Temperature suggestion) is supported only for AC types ME, PBM, SI (firmware ≥ 0.4.7), EL, GRNS, UMM (GS538/9, SMT-HOA).- Line L3 is by default used for ModBus RTU RS485 and can also be shared with KNX, PlugBus (CoolHub), HDL buspro 4-wire, and ModBus RTU CoolGate 4/5.
- Cool Linknet maintains a constant cloud connection to CoolRemote when TCP/IP networking has internet access.
- The
propscommand can setelock(Enforced Lock) on Indoor Units to inhibit external changes for: o (On/Off), m (Mode), t (Setpoint), c (Forced Cool), h (Forced Heat).
Provenance
source_domains:
- support.coolautomation.com
source_urls:
- https://support.coolautomation.com/hc/en-us/article_attachments/17317574262557/CM5-PRM.pdf
- https://support.coolautomation.com/hc/en-us/articles/4987468741789-ModBus-Integration-Guidelines
- https://support.coolautomation.com/hc/en-us/articles/4987523432221-REST-API-Integration-2019
- https://support.coolautomation.com/hc/en-us/articles/29441867901853-Modbus-Server-Integration-Registers-Sample
- https://support.coolautomation.com/hc/en-us/articles/4987429359005-BACnet-Integration-Guidelines
retrieved_at: 2026-05-27T13:24:45.663Z
last_checked_at: 2026-06-02T21:41:18.229Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:41:18.229Z
matched_actions: 87
action_count: 87
confidence: medium
summary: "All 87 spec actions match verbatim source commands and both transport parameters (port 10102, 9600 8N1) are confirmed in the source. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "Cool Linknet-specific model number / SKU not stated in source; the source uses the broader CoolMaster Product Line PRM that includes CooLinkNet."
- "source describes no unsolicited event stream; only the aserver prompt"
- "source contains no explicit safety warnings, interlock procedures, or"
- "Cool Linknet-specific hardware revisions, SKU variants, and any firmware version compatibility notes are not stated in the source. The PRM covers the broader CoolMaster Product Line."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0