KSM Communication Protocol v3.0
This document provides technical data to facilitate communication with Koolance devices that support it. Koolance maintains and provides the Koolance System Monitor (KSM) program, which already has this protocol built-in and is sufficient for most users. If the KSM software does not meet your requirements, custom integration with your software can be achieved by understanding and implementing the protocol described in this document.
The original KSM software can be found at https://koolance.com/software.
Disclaimer: The software and communication protocol are provided "AS IS", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software and communication protocol or the use or other dealings in the software and communication protocol.
© 2025 Koolance, Inc.
USB-Serial Drivers
Communication between the KSM software and devices is performed via system COM ports, utilizing the RS232 serial protocol. To support serial communication over USB, your system may require USB-UART drivers. These drivers can be found from FTDI at https://www.ftdichip.com/Drivers/D2XX.htm. A setup executable for these drivers is available for Windows, while source files are available to compile on Linux.
Protocol Overview
The protocol operates on a request-response paradigm (Polling). Request messages are sent by the client (your software) to the Koolance device, and the device then sends a response back. The KSM software defaults to a 3-second polling interval, but the polling frequency is left for you to determine. The first byte in a response from your device is not only a directional flag but also an identifier for the firmware the device uses. Therefore, it may be any one of the listed 32-bit STX device-to-client codes for a given protocol. In the future, the STX response codes may expand to include other devices or hardware.
Example Commands
The following example commands are using the f.DF variant. Other variants will have different byte orders and lengths. Please ensure you are using the variant your Koolance device supports.
WARNING: Requests will vary depending on the current settings of the applicable Koolance device. Using these examples verbatim may cause unintended changes to settings. Use a Data Request (CF 01 08) to poll existing settings specific to your device.
Spaces between bytes are included here for readability. Commands should be transmitted in raw binary.
Making a Data Request
Request: CF 01 08
Response: DF 02 08 AA 0F AC 0F AC 00 00 00 00 00 00 00 34 00 07 06 AE AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 00 02 00 01 00 01 00
Changing the Set-Point to 40°C LIQ temp
(Also note the unit change to °C)
(0x01 * 44) + 40 = 84 = 0x54
Request: CF 04 00 00 00 00 00 00 00 00 00 00 00 00 01 54 00 07 06 AE AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 00 01 00 00 00 01 41
Response: None
Protocol Variants
The following tables detail various protocol variants supported by Koolance devices.
f.DF Protocol Variant
Supported Devices: CTR-KSM100, RPM-ALX400, ALX-750-P400, ALX-1450-P400, ALX-2000-P400, ALR-4500A, ALR-4500C, ALH-2000 (Rev 1.0/1.1)
Byte | Device | Explanation |
---|---|---|
0 | STX |
|
1 | Command |
|
2,3 | LIQ Temp (°C) |
|
4,5 | CH1 Temp |
|
6,7 | CH2 Temp |
|
8,9 | Fan RPM |
|
10,11 | Pump RPM |
|
12,13 | Flow Meter |
|
14 | Fan Mode |
|
15 | Fan Power / Set Point |
|
16,17 | Pump Power | See Chart FM1 |
18,19 | Flow Meter |
|
20,21 | LIQ Temp |
|
22,23 | CH1 Temp |
|
24,25 | CH2 Temp |
|
26,27 | Flow Meter |
|
28,29 | Fan RPM |
|
30,31 | Pump RPM |
|
32,33 | LIQ Temp |
|
34,35 | CH1 Temp |
|
36,37 | CH2 Temp |
|
38,39 | Flow Meter |
|
40,41 | Fan RPM |
|
42,43 | Pump RPM | See Chart LS1 |
44,45 | Unit | Sum(Byte 0, ... Byte 49) % 0x64 |
46,47 | Level Sensor | |
48,49 | Level Sensor Setup | |
50 | Check Sum |
f.DF (43 Bytes) Protocol Variant
Supported Devices: LLX-7000
Byte | Device | Explanation |
---|---|---|
0 | STX |
|
1 | Command |
|
2,3 | LIQ Temp (°C) |
|
4,5 | CH1 Temp |
|
6,7 | CH2 Temp |
|
8,9 | Fan RPM |
|
10,11 | Pump RPM |
|
12,13 | Flow Meter |
|
14,15 | Fan Power / Set Point |
|
16,17 | Pump Power |
|
18,19 | Flow Meter | See Chart FM1 |
20,21 | LIQ Temp |
|
22,23 | CH1 Temp |
|
24,25 | CH2 Temp |
|
26,27 | Flow Meter |
|
28,29 | LIQ Temp |
|
30,31 | CH1 Temp |
|
32,33 | CH2 Temp |
|
34,35 | Flow Meter |
|
36,37 | Unit |
|
38,39 | Level Sensor | See Chart LS1 |
40,41 | Level Sensor Setup | Sum(Byte 0, ... Byte 41) % 0x64 |
42 | Check Sum |
NOTE: Devices using the 43 byte length f.DF variant can only be polled for data. Adjusting device settings via protocol is unsupported.
f.3C Protocol Variant
Supported Devices: EXC-900
Byte | Device | Explanation |
---|---|---|
0 | STX |
|
1 | Command |
|
2,3 | LIQ Temp |
|
4,5 | EXT Temp |
|
6,7 | AMB Temp |
|
8,9 | Fan RPM |
|
10,11 | Pump RPM |
|
12,13 | Flow Meter |
|
14,15 | Temp Set Point |
|
16,17 | Pump Power |
|
18,19 | Flow Meter |
|
20,21 | (±) Set-Point |
|
22,23 | CH1 Temp |
|
24,25 | CH2 Temp |
|
26,27 | Flow Meter |
|
28,29 | Fan RPM |
|
30,31 | Pump RPM |
|
32,33 | (±) Set-Point |
|
34,35 | Flow Meter |
|
36,37 | Unit | See Chart LS1 |
38,39 | Level Sensor | Sum(Byte 0, ... Byte 49) % 0x64 |
40,41 | Level Sensor Setup | |
42,43 | Check Sum | |
44,45 | Unit | |
46,47 | Level Sensor | |
48,49 | Level Sensor Setup | |
50 | Check Sum |
f.32 Protocol Variant
Supported Devices: ALH-2000 (Rev 1.2)
Byte | Device | Explanation |
---|---|---|
0 | STX |
|
1 | Command |
|
2,3 | LIQ Temp (°C) |
|
4,5 | CH1 Temp |
|
6,7 | CH2 Temp |
|
8,9 | Fan RPM |
|
10,11 | Pump RPM |
|
12,13 | Flow Meter |
|
14 | Fan Mode |
|
15 | Fan Power / Set Point |
|
16 | Heater |
|
17 | Pump Power |
|
18,19 | Flow Meter |
|
20,21 | LIQ Temp |
|
22,23 | CH1 Temp |
|
24,25 | CH2 Temp |
|
26,27 | Flow Meter |
|
28,29 | Fan RPM |
|
30,31 | Pump RPM |
|
32,33 | LIQ Temp |
|
34,35 | CH1 Temp |
|
36,37 | CH2 Temp |
|
38,39 | Flow Meter |
|
40,41 | Fan RPM |
|
42,43 | Pump RPM | See Chart LS1 |
44,45 | Unit | Sum(Byte 0, ... Byte 49) % 0x64 |
46,47 | Level Sensor | |
48,49 | Level Sensor Setup | |
50 | Check Sum |
f.26 Protocol Variant
Supported Devices: ALR-4600A, ALR-4600C
Byte | Device | Explanation |
---|---|---|
0 | STX |
|
1 | Command |
|
2,3 | LIQ Temp (°C) |
|
4,5 | CH1 Temp |
|
6,7 | CH2 Temp |
|
8,9 | Fan RPM |
|
10,11 | Pump RPM |
|
12,13 | Flow Meter |
|
14,15 | Fan Mode / Set Point |
|
16,17 | Pump Power |
|
18,19 | Flow Meter |
|
20,21 | LIQ Temp |
|
22,23 | CH1 Temp |
|
24,25 | CH2 Temp |
|
26,27 | Flow Meter |
|
28,29 | Fan RPM |
|
30,31 | Pump RPM |
|
32,33 | LIQ Temp |
|
34,35 | CH1 Temp |
|
36,37 | CH2 Temp | See Chart LS1 |
38,39 | Flow Meter | Sum(Byte 0, ... Byte 51) % 0x64 |
40,41 | Fan RPM | |
42,43 | Pump RPM | |
44,45 | Unit | |
46,47 | Level Sensor | |
48,49 | Level Sensor Setup | |
50,51 | Fan Ramp |
|
52 | Check Sum |
Reference Charts
Chart CP1: Connection Parameters
Serial Port | COM1, COM2, etc. | Flow Control (Handshake) | None | |
Bits/Second (Baud Rate) | 9600 bps | Discard Null | False | |
Parity | None | DTR (Data Terminal Ready) | False | |
Data Bits | 8 | RTS (Request To Send) | False | |
Stop Bits | 1 | Received Bytes Threshold | 1 |
Chart FM1: Flow Meter Setting Values
Flow Meter | Tubing Inner Diameter | ||
---|---|---|---|
6 mm | 10 mm | 13 mm | |
INS-FM14 | 0x057E | 0x0582 | 0x0586 |
INS-FM16 | 0x0646 | 0x064A | 0x064E |
INS-FM17 | 0x06AA | 0x06AE | 0x06B2 |
INS-FM18 | 0x070E | 0x0712 | 0x0716 |
INS-FM19 | 0x0772 | 0x0776 | 0x077A |
Chart LS1: Level Sensor Values
State | Hex | Alarm | Relay |
---|---|---|---|
All Off | 0x0001 | OFF | OFF |
Alarm | 0x0002 | ON | OFF |
Relay | 0x0003 | OFF | ON |
All On | 0x0004 | ON | ON |
Variants f.DF, f.DF43, f.32
Chart FA1: Fan Auto Mode Set-Point Range
Sensor | °C | °F | Increments | ||
---|---|---|---|---|---|
Min | Max | Min | Max | ||
LIQ | -30 | 90 | -22 | 194 | 1 |
CH1 | -20 | 120 | -4 | 248 | 1 |
CH2 | -20 | 120 | -4 | 248 | 1 |
Chart AR1: Alarm / Relay Setting Range
Sensor | °C / LPM | °F / GPM | Increments | ||
---|---|---|---|---|---|
Min | Max | Min | Max | ||
LIQ | 0 | 99 | 32 | 211 | 1 |
CH1 | 0 | 119 | 32 | 247 | 1 |
CH2 | 0 | 119 | 32 | 247 | 1 |
FAN | 100 | 10000 | 100 | 10000 | 100 |
PUMP | 100 | 10000 | 100 | 10000 | 100 |
FLOW | 0.1 | 20 | 0.1 | 2.7 | 0.1 |
Variant f.3C
Chart SP1: Temp Set-Point Range
Sensor | °C | °F | Increments | ||
---|---|---|---|---|---|
Min | Max | Min | Max | ||
LIQ | -20 | 120 | -4 | 248 | 1 |
EXT | -20 | 120 | -4 | 248 | 1 |
LIQ-AMB | -50 | 50 | -58 | 122 | 1 |
EXT-AMB | -50 | 50 | -58 | 122 | 1 |
Chart AR2: Alarm / Relay Setting Range
Sensor | °C / LPM | °F / GPM | Increments | ||
---|---|---|---|---|---|
Min | Max | Min | Max | ||
LIQ | 0 | 99 | 32 | 211 | 1 |
EXT | 0 | 119 | 32 | 247 | 1 |
LIQ-AMB | 0 | 119 | 32 | 247 | 1 |
EXT-AMB | 0 | 119 | 32 | 247 | 1 |
FLOW | 0.1 | 20 | 0.1 | 2.7 | 0.1 |
FAN | 100 | 10000 | 100 | 10000 | 100 |
PUMP | 100 | 10000 | 100 | 10000 | 100 |