NIBE heat pump Modbus integration: complete installer guide (F- and S-series)
NIBE is one of the largest heat pump manufacturers in Europe, with two very different control generations in the field: the older F-series (F1155, F1255, SMO 40 and siblings) and the modern S-series (S1155, S1255, VVM S320/S500, SMO S40). For installers and system integrators, this matters because the two generations take fundamentally different Modbus routes — one needs an external accessory, the other has Modbus TCP built in. This guide walks through the model matrix, the wiring and menu path per generation, the register reference you will actually use on site, and where most installations run into trouble.
F-series vs. S-series: which Modbus path per model
| Generation | Modbus interface | Hardware | Protocol |
|---|---|---|---|
| F-series (F1145, F1155, F1245, F1255, F1345, F370, F470, F730, F750, VVM 310/320/325/500, SMO 40) | External, via accessory | MODBUS 40 (part no. 067 144) | Modbus RTU over RS485, 9600 8N1 |
| S-series (S1155, S1255, S1156, S1256, S2125, VVM S320/S325/S500, SMO S40, SVM S332, S735) | Built in | None needed | Modbus TCP/IP over Ethernet or WiFi, port 502 |
F2040 and F2120 outdoor units are not on the MODBUS 40 compatibility list. They are driven by a controller (SMO 40 or SMO S40) and the Modbus interface sits on the controller, not on the outdoor unit.
MODBUS 40 for the F-series: hardware and wiring
The MODBUS 40 is a separate board (designation AA9) you physically install inside the heat pump. It has two terminal blocks: X1 goes to the heat pump's input board and X2 faces the external Modbus master (BMS, gateway, PLC).
X2 terminal layout (to Modbus master)
| Pin | Function |
|---|---|
| GND | Signal ground |
| B | RS485 B / Data+ / non-inverting |
| A | RS485 A / Data− / inverting |
| 12V | 12 V DC auxiliary supply (optional) |
X1 terminal layout (to heat pump, internal)
For F1145/F1155, F1245/F1255, F370/F470, F730/F750, VVM 310/320/325/500 and SMO 40: connect MODBUS 40 terminal X1 to X4:9-12 on input board AA3. Pin order: 9 = GND, 10 = B, 11 = A, 12 = 12V. For the F1345 (non-2.0): terminal block X6:4-7.
Cable specification
NIBE specifies "LiYY, EKKX or equivalent", which in practice means a shielded twisted-pair cable in AWG 22-24. Belden 9841 or any equivalent Modbus RTU cable works fine. NIBE does not publish a hard maximum length; the RS485 standard allows up to 1,200 m at 9600 baud, but in a residential install that is rarely relevant. Ground the shield at the master side only — not both ends.
Communication settings (fixed, not configurable)
- Mode: RTU
- Baud rate: 9600 (no 19200 or higher)
- Frame: 8N1 (8 data bits, no parity, 1 stop bit)
Slave address
MODBUS 40 firmware up to version 7 is hard-wired at 0x01. From MODBUS 40 firmware version 10 the address becomes configurable (1-247) via Menu 5.3.11 on the heat pump. That menu only appears when MODBUS 40 firmware 10 or higher is detected.
Termination and bias
Fit 120 Ω termination resistors at both physical ends of the bus. For a point-to-point connection under ~10 m at 9600 baud you can often skip termination without issues. Bias is rarely needed on a single master-slave setup — most USB-RS485 adapters have bias pull-ups built in. For the underlying theory see our article on RS485 wiring and Modbus RTU.
Activating MODBUS 40 in the menu
On the F-series touchscreen or jog-wheel interface you reach the service menu like this:
- 1
Open the service menu
Hold the Back button for 7 seconds from the home screen. An orange menu 5 "Service" appears. There is no numeric code required (the online myth about "code 1000" does not exist in any official NIBE F-series documentation).
- 2
Activate MODBUS 40
Go to Menu 5.2 "System settings" (or Menu 5.2.4 "Accessories" on F1345 and VVM 310/320/325/500) and activate the MODBUS 40.
- 3
Set the slave address (optional)
Menu 5.3.11: only visible when MODBUS 40 version 10+ is detected. Range 1-247.
- 4
Verify firmware
Menu 3.1 "Operating information" shows the MODBUS 40 firmware version. You need version 7+ for basic functionality; the heat pump firmware must be higher than 3000 (and 5539+ or F1345 4150R7+ for the configurable address).
S-series: Modbus TCP in three steps
The S-series has Modbus TCP/IP built in on port 502 — no accessory, no license. You do need software version 2.2.1 or higher. AUX functions over Modbus work from 2.4.3, external BT50 sensor injection (registers 5986/5987) from 4.2.4, and the new external power-limit registers (6007/6008) from 4.7.5 (December 2025).
- 1
Network setup
Menu 5.2 "Network settings": choose Ethernet or WiFi, pick DHCP or a static IP. Reserve a fixed IP for the heat pump in your router — a shifting DHCP lease breaks every Modbus config. The S-series only accepts private ranges: 10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0/16.
- 2
Activate Modbus TCP
Menu 7.5.9 "Modbus TCP/IP" → turn Activated on. Same menu offers IP address restriction (whitelist one trusted master IP) and Reading Modbus only (read-only).
- 3
Confirm the IP
Menu 3.1.13 "Connections" shows the current IP, subnet mask and MAC address. Test from your laptop with
pingand a simple Modbus tool like Modbus Poll or QModMaster againsttcp://[IP]:502, Unit ID 1.
Polling limits S-series
- Maximum 20 registers per Modbus request
- Maximum 100 registers per second total throughput
- 60-second scan intervals are the community standard; polling more aggressively is pointless and can crash the TCP service until a reboot
Register reference: the 16 parameters you will actually use
The F-series keeps everything in Holding Registers (FC03 read, FC10 write). The S-series splits read-only data into Input Registers (FC04) and R/W parameters into Holding Registers (FC03). Note: "Write Single Register" (FC06) does not work on MODBUS 40 — always use FC10 (Write Multiple).
| Parameter | F-series | S-series | Type | Scale | Unit | R/W |
|---|---|---|---|---|---|---|
| Outdoor temperature BT1 | 40004 | 1 | s16 | /10 | °C | R |
| Calculated supply temperature | 43009 | 1017 | s16 | /10 | °C | R |
| Supply temperature BT2 | 40008 | 5 | s16 | /10 | °C | R |
| Return temperature BT3 | 40012 | 7 | s16 | /10 | °C | R |
| DHW top BT7 | 40013 | 8 | s16 | /10 | °C | R |
| DHW load BT6 | 40014 | 9 | s16 | /10 | °C | R |
| Room temperature BT50 | 40033 | 26 | s16 | /10 | °C | R |
| Compressor frequency | 43136 | 1046 | u16 | /10 | Hz | R |
| Compressor state | 43427 | 1100 | u8 | 1 | enum | R |
| Compressor run hours | 43420 | 1087 | s32 | 1 | h | R |
| Compressor starts | 43416 | 1083 | s32 | 1 | — | R |
| Heat delivered (comp + aux) | 44300 | 1577 | u32 | /10 | kWh | R |
| Heat delivered (comp only) | 44308 | 1585 | u32 | /10 | kWh | R |
| Operating mode | 47137 | 237 | u8 | 1 | enum | R/W |
| Active alarm | 45001 | 1975 | u16 | 1 | code | R |
| Degree minutes | 43005 | 18 | s16 | 1 | DM | R(/W) |
Enum values. Operating mode: 0 = Auto, 1 = Manual, 2 = Add-heat only. Priority (43086 / 1028): 10 = Off, 20 = Hot water, 30 = Heating, 40 = Pool, 60 = Cooling. Compressor state F-series: 20 = Stopped, 40 = Starting, 60 = Running, 100 = Stopping. S-series: 0 = Off, 1 = On. DHW mode F-series (47041): 0 = Economy, 1 = Normal, 2 = Luxury.
PLC off-by-one
Some PLCs and BMS platforms count addresses starting at 1 instead of 0. If you read address 40005 in a Siemens or WAGO project for outdoor temperature, that is usually identical to NIBE's 40004. NIBE warns about this explicitly in the MODBUS 40 FAQ.
myUplink cloud vs. local Modbus
Many end users only know the myUplink app and wonder why Modbus is worth pulling in. Short version:
| Aspect | myUplink cloud | Local Modbus |
|---|---|---|
| Data freshness | Updates a few times per hour, typically 15-30 min old | Real-time, sub-second polling |
| Data coverage | Subset of parameters | All 1,000+ F-series or 2,200+ S-series registers |
| Internet dependency | Yes (even for your own dashboard) | No, fully local |
| Remote changes | Requires myUplink Premium subscription | Native via Modbus write commands |
| History | Limited to platform retention | Your own database (InfluxDB, TimescaleDB, etc.) |
| Integration with BMS / energy management | None, limited API | Direct integration |
| Lifecycle | Platforms get retired (NIBE Uplink → myUplink) | Modbus is 1979 and will outlive us all |
Both work in parallel: the S-series speaks Modbus TCP on port 502 and myUplink over the cloud at the same time, with no conflict as long as you don't simultaneously write the same parameter from both sides.
The cloud transition: Uplink to myUplink
NIBE retired the old nibeuplink.com platform during 2024 in favour of myuplink.com (developed by myUpTech AB). The myUplink migration firmware rolled out for F1145/F1245 from version 9699R4 (June 2024) and for F750 from 9682R5 (February 2024). Home Assistant deprecated its old hass_nibe integration that talked to the legacy Uplink API; its replacement nibe_heatpump is fully local (Modbus TCP for S-series, UDP NibeGW gateway for F-series) and therefore independent of whatever cloud platform NIBE launches next.
For installers doing remote service: myUplink PRO is the separate installer app with direct WiFi commissioning and full installer-level parameters — free for certified professionals.
PV-surplus control over Modbus
Firmware 4.7.5 (December 2025) introduced two new S-series registers that enable PV-surplus control over Modbus without the SG-Ready relay dance:
- Register 6007 (Holding, R/W): external power limit in watts. Write 3000 to cap total draw at 3 kW when there's little surplus.
- Register 6008 (Holding, R/W): power control mode. Switches between off, heating priority and DHW priority.
Paired with an inverter readout (e.g. a Fronius Symo or SMA Tripower over their own Modbus TCP), a central controller or ModbusCloud flow can modulate the heat pump on live self-consumption. On F-series systems, the equivalent functionality is exposed via register 47370 and surrounding settings.
Troubleshooting: the failures you will actually see
"MODBUS 40 doesn't appear in the menu." Check the physical cable X1 → X4:9-12 and the 12 V supply (AA9 is powered from the heat pump). Heat pump firmware must be higher than 3000; MODBUS 40 firmware at least version 7.
"No communication, no alarm." Baud rate check: must be 9600 8N1. Slave address: on MODBUS 40 ≤ v7 it is hard-wired at 0x01, so don't put anything else on address 1 on the same bus. Confirm Menu 5.2 shows MODBUS 40 as activated.
CRC errors. Usually swapped A/B: NIBE defines A = inverting (Data−), B = non-inverting (Data+). Swap A and B at one end, not both. Other causes: missing GND reference (RS485 is differential but still needs a common ground), long unshielded runs next to power cables, or a cheap USB-RS485 adapter with local echo feeding its own frames back.
"Write doesn't work." MODBUS 40 supports FC10 (Write Multiple) but not FC06 (Write Single). Many Modbus clients default to FC06 for a single register write and fail silently. Force FC10 or use tools that do so by default.
S-series TCP crashes after controller reboot. A few community reports after Home Assistant restarts with aggressive polling. Stay under 100 registers/sec and power-cycle the heat pump if the TCP service stops responding. Firmware 4.8.7 resolves most reported stability issues.
DHCP lease change. If the router reassigns, your configured IP no longer matches. Always reserve a fixed IP for the heat pump by MAC address.
Regulatory context: UK and Ireland
For UK installations under the Boiler Upgrade Scheme (BUS) — £7,500 for air-source and ground-source heat pumps, extended to 2028 — there is no specific Modbus monitoring requirement. BUS focuses on install quality via MCS certification. Under the former RHI programme there was a metering and monitoring service packages (MMSP) requirement, but that no longer applies.
That said, MCS best practice now leans on continuous monitoring for SPF verification on larger commercial systems, and under EPBD-III transposition across Europe (relevant for Irish and Northern Ireland installs), monitoring obligations are tightening for non-residential systems over 70 kW. For commercial NIBE installs (offices, schools, care homes) a Modbus feed is increasingly the only practical way to produce auditable SPF reports.
ModbusCloud as the integration point
For installers managing multiple NIBE sites, ModbusCloud works as follows. Connect the MCG-1 Gateway to X2 of MODBUS 40 (F-series) or plug it into the local network next to the S-series. The gateway reads the relevant registers and streams them to the ModbusCloud portal, where you configure per-site dashboards, alarm thresholds and reporting. The same gateway can simultaneously ingest the PV inverter (Modbus TCP), an Eastron SDM630 energy meter (Modbus RTU) and other RS485/TCP devices in one stream.
Practical example: an installer with 40 NIBE sites filters the portal on "every heat pump where the self-calculated SPF (from 44300 and 43084) has dropped below 3.5" and schedules service accordingly. Because it runs locally over Modbus, the data is real-time — no 15-minute myUplink lag. ModbusCloud is vendor-neutral: you manage NIBE, Daikin, Mitsubishi VRF and anything else Modbus-capable in the same portal.
Frequently asked questions
Conclusion
Integrating NIBE over Modbus is well documented once you adopt the model-matrix mindset: F-series means MODBUS 40 as an accessory on RS485, S-series means native TCP. Register mapping differs between generations, but the 16 parameters you will actually use 95% of the time sit in the table above. Most installers start with the cheapest route — a simple gateway that walks the most common registers and relays them over MQTT or a cloud platform — and expand from there. With hundreds of thousands of NIBE installations across Europe already, Modbus literacy is no longer optional — it's daily toolkit.
Ready to get started?
Order the ModbusCloud Gateway and start monitoring your installations within 5 minutes.
View the gatewayReady to get started?
Order the ModbusCloud Gateway and start monitoring your installations within 5 minutes.
View the gateway