
The Cyclogic CL-MC03**C series (the x in the template name is a wildcard for the variant suffix 1 / 8 / 16 / 32 / 64) is a Modbus RTU interface module that bridges Samsung HVAC indoor units onto a Modbus network. It attaches directly to the Samsung F1/F2 indoor-unit communication bus and exposes ON/OFF, operating mode, set/room temperature, fan speed and louver swing as Modbus holding registers. The module is manufactured by Cyclogic Inc. (Republic of Korea) and OEM-distributed by Samsung HVAC for the North-American market — the device, register map and protocol are identical across all five variants, only the maximum addressable indoor-unit count differs.
| Model | # of indoor units controlled |
|---|---|
| CL-MC0301C | 1 (typical RAC) |
| CL-MC0308C | 1–8 (small DVM/CAC/FJM) |
| CL-MC0316C | 1–16 (mid-size DVM) |
| CL-MC0332C | 1–32 (large DVM) |
| CL-MC0364C | 1–64 (maximum DVM, one adapter per outdoor system) |
Compatible Samsung indoor units include DVM S (AM****N****/AA), CAC (AC****N****/AA), FJM (AJ0***N****/AA) and RAC (AR*********N**). Samsung Novus RAC models AR**JSALBWKNCV and AR**JSFLBWKNCV are explicitly not supported.
The CL-MC03**C is a Modbus RTU slave; TapHome’s ModbusTcpCCU connects to it through an external Modbus RTU-to-TCP gateway that bridges the RS-485 bus onto Ethernet. The current TapHome template addresses only the first indoor unit (IDU 00) on the bus — for multi-IDU installations the template must be imported once per indoor unit (see Troubleshooting below).
Several inconsistencies between the TapHome XML template and the Cyclogic / Samsung manufacturer documentation have been identified — most notably a swap between the Heat and Cool labels in the Mode selector and a temperature scaling factor of /100 instead of the documented /10. See the Inconsistencies between template and manufacturer documentation section before relying on the template in production.
Hardware connection
The CL-MC03**C is a small DIN-housed module (100 × 80 × 24 mm) with a single-row terminal block on the front face. Six labelled connectors carry communication, power and the auxiliary I/O lines.
Terminal block

| # | Connector | Description |
|---|---|---|
| 1 | MODBUS INT | RS-485 (RX+ / RX−) — to the 3rd-party Modbus RTU-to-TCP gateway |
| 2 | RS-485 | F1 / F2 — to the Samsung indoor unit’s F1/F2 communication terminals |
| 3 | MODBUS EXT | Reserved — not used |
| 4 | POWER | 12 V DC supply (+ / −) |
| 5 | DO | Digital Output — contact closes (12–24 V DC) when a Samsung system error occurs |
| 6 | DRY CONT | Dry-contact input for external forced ON/OFF interlock (e.g. window contact) |
The module is powered with 12 V DC, typically drawn directly from the Samsung indoor unit’s V1/V2 terminals on the indoor PCB — no separate power supply is needed for typical installations. Optionally a field-supplied 12 V DC adapter can be used. The Samsung submittal confirms the module accepts 12–24 V DC, but the Cyclogic installation manual specifies 12 V DC as the nominal value.
Disconnect mains power from the Samsung indoor unit before opening it to access the F1/F2 and V1/V2 terminals. Verify polarity on the POWER connector before energising the module. Maximum RS-485 (Modbus) bus length is 500 m; install the module indoors only — the operating temperature range is 0 °C to 40 °C (32 °F to 104 °F).
System topology

There are two valid topologies depending on the Samsung family being integrated:
- Case 1 — DVM / CAC (DIP SW2 = OFF, NASA protocol): one CL-MC03 module sits on the F1/F2 bus shared by one outdoor unit and up to 64 indoor units. Choose the variant that covers the total IDU count of the outdoor system — sizing is one-shot, two adapters cannot be stacked on the same outdoor unit (see Troubleshooting).
- Case 2 — RAC (DIP SW2 = ON, Non-NASA protocol): one CL-MC03 module per RAC outdoor system (typically
CL-MC0301C— single IDU). Multiple modules sit on the same RS-485 bus, each with a unique slave address set via the rotary switches.
Both topologies share a single 3rd-party RS-485-to-Ethernet gateway acting as the Modbus master toward TapHome.
Configuration
DIP switches

| Switch | Position | Function |
|---|---|---|
| SW2 (protocol) | ON | RAC / FJM — model numbers AR*****, AJ***** (Non-NASA protocol) |
| SW2 (protocol) | OFF | DVM / CAC — model numbers AM*****, AC**** (NASA protocol) |
| SW1 (firmware) | ON (default) | Disabled — normal operation |
| SW1 (firmware) | OFF | Enabled — firmware download mode (do not use during normal operation) |
SW2 must be set before powering the module — wiring the module to the wrong protocol family (e.g. SW2 = OFF on a RAC system, or SW2 = ON on a DVM system) will result in no communication at all with the Samsung indoor unit. The Cyclogic manual flags this as the most common installation mistake.
Modbus slave address (RSW1 + RSW2)
The Modbus slave address (the RS-485 address the gateway will use to poll this module) is set via two BCD rotary switches on the circuit board, accessible after removing the four screws on the back of the case:
- RSW1 — tens digit (
0–6) - RSW2 — ones digit (
0–9)
The combined value forms the slave address, valid range 00 – 63. Each module on the same RS-485 bus must have a unique address — the most common conflict is several CL-MC0301C modules left at the factory default. The TapHome template ships with default Slave ID = 1 in its import parameters; if you keep the rotary switches at this address, no change is needed in the imported configuration.
Modbus protocol parameters
These values are fixed in the module firmware and cannot be changed via DIP switches — the RS-485 side of the gateway must be configured to match:
| Parameter | Value |
|---|---|
| Mode | Modbus RTU slave |
| Baud rate | 19 200 bps (the Samsung submittal lists 19600 — this is a typo for the standard Samsung F-bus rate of 19 200) |
| Parity | Even |
| Stop bits | 1 |
| Frame format | 8E1 (8 data bits, even parity, 1 stop bit) |
| Function codes | 03 (Read Holding Registers), 06 (Preset Single Register) |
| Register width | 2 bytes (16 bit) |
| Max RS-485 bus length | 500 m |
Enabling Modbus communication via a TCP gateway
The CL-MC03**C is a native Modbus RTU device — TapHome connects to it over Modbus TCP through a 3rd-party Modbus RTU-to-TCP gateway (sometimes called an RS-485-to-Ethernet converter). Any gateway that can operate in transparent / pass-through Modbus TCP-to-RTU bridge mode will work; commonly used models include the Waveshare RS485-to-Ethernet, USR-TCP232 series and Hi-Flying / HF series.
Configuration on the gateway (model-specific menu names vary):
- Wire the gateway’s RS-485 A/B terminals to the module’s MODBUS INT terminal (RX+ → A, RX− → B). Power the gateway from its own supply (typically 5–24 V DC).
- Set the gateway’s serial port to 19 200 bps, 8 data bits, even parity, 1 stop bit to match the module’s fixed firmware settings. If the gateway also exposes a frame-timing parameter, leave it at the Modbus default (3.5 character idle).
- Set the gateway operating mode to Modbus TCP slave / Modbus TCP-to-RTU bridge / transparent gateway (terminology varies per vendor) on TCP port 502.
- Assign a static IP address to the gateway on the local network — either via the router’s DHCP reservation or directly in the gateway’s web UI. The TapHome template defaults to
192.168.0.1; matching this avoids changing the import parameter. - If the gateway has a built-in 120 Ω termination resistor, enable it only if the gateway sits at one end of the RS-485 bus.
When importing the template in TapHome, provide:
- IP Address — the gateway’s IP on the local network (default:
192.168.0.1) - Slave ID — the module’s Modbus address set via RSW1 + RSW2 (default:
1)
Assign a static IP address to the TCP-to-RTU gateway in the router’s DHCP settings to prevent the address from changing after a power cycle. Multiple
CL-MC03**Cmodules on the same RS-485 bus can share a single gateway — each module is reached by selecting its rotary slave address as the Modbus unit ID in TapHome.
Device capabilities
The template polls 6 holding registers (H:0, H:1, H:4, H:5, H:8, H:9) every 2.5 s for indoor unit 00 on the F1/F2 bus and exposes 5 logical devices.
ON/OFF
Simple switch to turn the indoor unit on or off. Reads register H:0 (Bool) — 0 = OFF, 1 = ON.
The Cyclogic register 40001 (= H:0) is documented as a 2-byte combined write command with Data 1 = ON/OFF and Data 2 = Mode. The TapHome template only writes the Bool ON/OFF byte, so the operating mode must be set separately via the Mode device. On most Samsung indoor units the partial write is accepted as ON/OFF only and the existing mode is preserved — verify on real hardware.
Mode
Operating mode selector. The Cyclogic / Samsung manuals document the following codes:
| Manual code | Mode |
|---|---|
| 0 | Auto |
| 1 | Cooling |
| 2 | Dry (Dehumidification) |
| 3 | Fan |
| 4 | Heat |
| 11 | Auto Cool (read-back only) |
| 12 | Auto Dry (read-back only) |
| 13 | Auto Fan (read-back only) |
| 14 | Auto Heat (read-back only) |
The TapHome template swaps the Heat and Cool labels relative to the Cyclogic / Samsung manuals: template position
1is labelled “Heat” but the underlying Modbus value1is documented as Cooling, and template position4is labelled “Cool” but value4is documented as Heat. On a real Samsung unit, selecting “Heat” from the TapHome UI will therefore engage Cooling mode, and selecting “Cool” will engage Heat. Verify on real hardware before relying on the labels — the template values may need to be re-mapped depending on what the Samsung indoor unit actually does.
The Auto-COOL / Auto-DRY / Auto-FAN / Auto-HEAT sub-modes are documented as read-back only values that reflect the unit’s internal state when running in Auto mode. The TapHome template exposes them as positions 5–8 with raw values 5–8, but the manufacturer specifies values 11–14. Writing any of these positions will send a non-documented Modbus value to the indoor unit and the result is undefined — leave them as Auto when controlling the unit from TapHome.
Reads and writes register H:1 (Int16). Poll interval: 2.5 s.
Fan Speed
Fan speed selector. The Cyclogic / Samsung manuals document only 5 values (0 – 4):
| Manual code | Speed |
|---|---|
| 0 | Automatic |
| 1 | Low |
| 2 | Middle |
| 3 | High |
| 4 | Turbo |
The TapHome template inserts a non-standard “Position-5” slot at value
2, shifting MIDDLE / HIGH / TURBO onto values3/4/5. On a real Samsung unit, selecting “Mid” from the TapHome UI will actually engage HIGH (raw value3), “High” will engage TURBO (raw value4), and “Turbo” will send raw value5, which is not a valid fan code. Slots 6–9 (Position-6, Position-7, 8, 9) are placeholder values not reachable on real Samsung indoor units. Verify on real hardware before relying on the labels.
Per the Cyclogic manual, register 40009 (= H:8) is a 2-byte combined write command with Data 1 = Fan Speed and Data 2 = Louver. The TapHome template writes only the fan-speed byte and the louver position is written separately as a single byte to register H:9 — this may not match what every gateway expects on the combined H:8 register. Verify on real hardware.
Reads and writes register H:8 (Int16). Poll interval: 2.5 s.
Vane Position (Louver Swing)
Decorative-panel louver swing control. The Cyclogic / Samsung manuals document only 4 values (0 – 3):
| Manual code | Position |
|---|---|
| 0 | Swing OFF |
| 1 | Swing ON: Upper & Lower louver |
| 2 | Swing ON: Right & Left louver |
| 3 | Swing ON: Upper & Lower + Right & Left louver |
The TapHome template duplicates “RIGHT & LEFT LOUVER” as both position 2 and position 3 — position 3 should be “UPPER & LOWER + RIGHT & LEFT LOUVER” per the manufacturer documentation. Positions 4–9 (combined U&D / R&L louver, Swing ON, Position-7, Position-6, Position-5 Vertical, Swirl) are undocumented in the Cyclogic and Samsung manuals — they may be speculative slots intended for non-decorative-panel cassette units, but they are not reachable on standard wall, cassette and duct units. Verify on real hardware before relying on the labels.
Reads and writes register H:9 (Int16). Poll interval: 2.5 s.
Thermostat
Set-point and current room temperature reading. Reads register H:4 (Int16, R/W) for the setpoint and register H:5 (Int16, read-only) for the room temperature.
The TapHome template applies a /100 divisor (and
* 100multiplier on write) to both temperature registers, but the Cyclogic Rev. 2 manual and the Samsung submittal both specify /10: raw250= 25.0 °C, not raw2500= 25.0 °C. On a real Samsung indoor unit:
- Setpoints written by TapHome will appear 10× too small (e.g. setting 25 °C will write raw
2500to a register that the device interprets as 250.0 °C and rejects or clamps).- Room temperature readings will appear 10× too small (e.g. raw
235will display as 2.35 °C instead of 23.5 °C).If the values you observe are off by a factor of 10, this is almost certainly the cause. Verify on real hardware and contact TapHome to have the template scaling corrected from
/100to/10if needed.
Poll interval: 2.5 s.
Inconsistencies between template and manufacturer documentation
Several discrepancies between the TapHome XML template and the Cyclogic Rev. 2 (Oct 2017) manual / Samsung submittal (SHA-DVMS-03162021) are documented above. In summary:
| Area | Template | Manual | Impact |
|---|---|---|---|
| Mode labels (positions 1 & 4) | 1 = Heat, 4 = Cool | 1 = Cooling, 4 = Heat | Selecting “Heat” engages Cooling and vice versa — verify on hardware |
| Mode positions 5–9 | Raw values 5–9 (Auto-*) | Auto-* sub-modes use values 11–14 and are read-back only | Writing positions 5–9 sends undocumented values — undefined behaviour |
| Fan Speed positions 2–9 | Inserts non-standard “Position-5” at value 2, shifts Mid/High/Turbo | Manual documents only values 0–4 | Labels “Mid” → HIGH, “High” → TURBO, “Turbo” → invalid; positions 6–9 placeholder |
| Vane Position 3 | Duplicate of “Right & Left Louver” | Should be “Upper & Lower + Right & Left Louver” | Labels mismatch — the underlying register value is correct |
| Vane Position 4–9 | Various labels including “Swirl”, “Position-5 (Vertical)” | Manual documents only values 0–3 | Undocumented — undefined on standard wall / cassette / duct units |
| Thermostat scaling | / 100 and * 100 | / 10 and * 10 | Setpoints 10× too small, room temperature 10× too small |
| ON/OFF write | Single Bool byte (Data 1 only) | Combined 2-byte command (Data 1 = ON/OFF, Data 2 = Mode) | On most units accepted as partial write, but verify mode is preserved |
| Fan Speed write | Single Int16 (Data 1 only) | Combined 2-byte command (Data 1 = Fan, Data 2 = Louver) | Louver position is written separately to H:9 — verify behaviour on real hardware |
These are most likely XML template bugs that should be corrected against real hardware.
Troubleshooting
No Modbus communication
- Verify DIP SW2 is set correctly for the Samsung family — OFF for DVM / CAC (NASA, model prefixes
AM,AC), ON for RAC / FJM (Non-NASA, model prefixesAR,AJ). Wrong protocol = no communication. - Verify the module is powered — the green PWR / System LED on the front panel should be lit. If powered from V1/V2, confirm the Samsung indoor unit is connected to mains.
- Confirm the slave address on RSW1 + RSW2 matches the Slave ID in the TapHome import parameters (factory default =
01, template default =1). - Check the gateway’s serial port settings: 19 200 bps, 8 data bits, even parity, 1 stop bit (8E1) — this is the most common misconfiguration on the gateway side.
- Confirm the gateway is in Modbus TCP-to-RTU transparent bridge mode (not a virtual COM port mode) and listening on TCP port 502.
- Verify the wiring polarity on MODBUS INT — RX+ to gateway A, RX− to gateway B. Some gateways use opposite polarity conventions; if the LEDs blink without successful polling, swap the two wires.
- Check that no second module on the same RS-485 bus is configured with the same RSW address.
Setpoints and room temperature off by a factor of 10
The TapHome XML applies a /100 divisor to registers H:4 and H:5, but the manufacturer documentation specifies /10. A setpoint of 25 °C will therefore be transmitted as raw 2500 to a Samsung indoor unit that expects raw 250, and a room-temperature reading of raw 235 (= 23.5 °C per the manual) will display as 2.35 °C in the TapHome UI. Use TapHome’s Modbus debug tool to read the raw register values, then contact TapHome to have the template scaling corrected from /100 to /10.
Heat and Cool selection are inverted
The TapHome template positions for Heat and Cool do not match the Cyclogic manual (template 1 = Heat / value 1, manual 1 = Cooling). On a real Samsung unit, selecting “Heat” from the TapHome UI will engage Cooling, and “Cool” will engage Heat. Until the template is corrected, choose the option that produces the desired physical behaviour rather than relying on the label.
Mode positions 5–9 do nothing or behave unpredictably
These positions write Modbus values 5–9 to register H:1, but the Cyclogic manual specifies values 11–14 for the Auto-* sub-modes and explicitly notes they are read-back only. Writing values 5–9 sends undocumented codes to the indoor unit — the result is undefined and depends on the Samsung firmware. Restrict mode selection to positions 0 – 4 only.
Fan Speed positions Mid / High / Turbo do not match the label
The TapHome template inserts a non-standard “Position-5” slot at value 2, shifting MIDDLE / HIGH / TURBO onto template values 3 / 4 / 5. As a result, the TapHome label “Mid” actually engages HIGH, “High” actually engages TURBO, and “Turbo” sends raw value 5 which is not a documented fan code. Choose by physical behaviour rather than label until the template is corrected.
One indoor unit on a multi-IDU adapter does not respond
If you have a CL-MC0308C or larger and want to control more than the first indoor unit, the current template alone is insufficient — it only polls registers for IDU 00. For each additional IDU, import the template a second (third, …) time and edit the register addresses inside the imported configuration to add +20 × N to each (e.g. IDU 01 → H:20, H:21, H:24, H:25, H:28, H:29). A native multi-IDU template is on the roadmap.
Two adapters on the same outdoor unit don’t cover all indoor units
You cannot stack two smaller CL-MC03**C variants on the same Samsung outdoor system — both modules will count IDU addresses from 00 upward and the higher-numbered IDUs will be unreachable. Replace the two modules with a single larger variant sized for the total IDU count (per Samsung HVAC FAQ, Nov 2016).
