Home Assistant Modbus ‘No Response’ but QModMaster Works
You wired up a Modbus device — say, an Aqotec controller behind a Waveshare RS485-to-Ethernet gateway — and QModMaster reads its registers without a hitch. Then Home Assistant logs No response received from the remote unit or Unable to decode response, and nothing updates. This exact “QModMaster works, HA doesn’t” situation comes up regularly in the Home Assistant community. The good news: QModMaster just proved your hardware chain is fine. The fault is almost certainly in the HA configuration — and there is a systematic way to find it.
The bisection rule: if QModMaster reads, the wire is fine
A successful QModMaster read proves, in one shot, that the serial parameters (baud rate, parity, stop bits) or the TCP host and port, the gateway’s operating mode, the wiring, the slave address, and the device itself all work — with exactly the settings you typed in. So stop re-crimping cables and swapping adapters. From here on, the only remaining suspect is how the Home Assistant modbus integration is configured. Keep the working QModMaster session open next to your HA config; you will compare the two value by value.
Step 1 — Write down the four values that worked in QModMaster
- Connection mode: RTU on a serial port, or TCP to the gateway’s IP and port (e.g.
192.168.1.100:8899for a transparent bridge,:502for a Modbus-TCP gateway). - Unit identifier / slave address: the slave ID the read succeeded with.
- Function code and start address: e.g. Read Input Registers (FC04) starting at address 0, or Read Holding Registers (FC03).
- Register count and display format: how many registers you read, and whether the value was 16-bit, 32-bit float, etc.
Step 2 — Match each value to an HA config key
These five mismatches cause nearly every “QModMaster works, HA doesn’t” case:
- Wrong slave / unit ID → “No response received from the remote unit”. The HA
slave:key must equal the Unit Identifier that worked in QModMaster. If a TCP gateway serves several slaves, every sensor entry needs its ownslave:— one shared value silently breaks the rest. - Wrong count → “Unable to decode response”. HA’s
count:must equal the number of registers the device actually returns. If QModMaster read 10 registers, the sensor needscount: 10; a 32-bit float needscount: 2. - Wrong data_type → decode errors or garbage values. Match
data_type:(int16, uint16, int32, uint32, float32, string…) to the device manual. If floats come back as astronomical numbers, check the byte order too — see our float byte-order fix guide. - Holding vs. input mix-up. QModMaster’s “Read Holding Registers” (FC03) maps to HA
input_type: holding; “Read Input Registers” (FC04) maps toinput_type: input. Reading the wrong table produces exception responses the decoder cannot handle. - Polling too fast. Some devices drop off the bus if polled aggressively. Start with
scan_interval: 30and only speed up once the device proves it tolerates it.
Minimal working HA modbus config to compare against
Use this as a reference skeleton, then replace every value with what worked in your QModMaster session and your device’s manual:
modbus:
- name: hub1
type: rtuovertcp # tcp, rtuovertcp, or serial — must match QModMaster's mode
host: 192.168.1.100
port: 8899
sensors:
- name: "Voltage"
slave: 1 # = the Unit Identifier that worked in QModMaster
address: 0
input_type: input # input = FC04, holding = FC03
data_type: float32
count: 2
scan_interval: 30
unit_of_measurement: "V"
Key names follow the Home Assistant modbus integration documentation; always double-check them against the HA version you run, since integration options evolve.
If it still fails after the config matches
- Open Settings → System → Logs in HA and read the exact frame-level error — it usually names the register or the slave that failed.
- Some gateways need a small
delaybetween requests, and some devices need a longer response timeout than HA’s default. - Capture both directions: compare a Wireshark capture of QModMaster’s request frame against HA’s request frame. The first byte that differs is your bug.
And if you haven’t done the probe-first workflow yet, start here: test your Modbus link with QModMaster before writing the Home Assistant config — five minutes with the GUI saves hours of YAML guessing.
