How to Fix Modbus RTU CRC Errors on RS-485
The symptom is a Modbus RTU link that mostly works but keeps logging CRC or checksum errors, or one that fails constantly even though the wiring looks connected. Every Modbus RTU frame carries a CRC-16 that the receiver recomputes; when the recomputed value does not match, the frame is silently discarded, so CRC errors surface as retries, intermittent timeouts, and gaps in trends. This page walks the causes in likelihood order, from port settings through termination and biasing to grounding and cable faults, with a test and a fix for each.
Fix Modbus RTU CRC errors in one line: A Modbus RTU CRC error means bytes arrived but were corrupted in transit, so the receiver's recomputed CRC-16 did not match the one in the frame and the message was thrown away. Constant CRC errors usually mean a baud rate, parity, or stop-bit mismatch between master and slave. Intermittent errors point at the physical layer: missing or doubled 120 ohm termination, an unbiased idle line, ground potential differences between nodes, or noisy and untwisted cable. Fix the port settings first, then work through termination, biasing, and grounding in that order.
First Checks: Port Settings Before Wiring
Before touching a screwdriver, confirm every node on the bus agrees on baud rate, parity, and stop bits. A mismatch does not produce silence - it produces garbage. The receiving UART samples bits at the wrong times or interprets the parity bit as data, the frame decodes into wrong bytes, and the CRC check fails on nearly every message. If your error counter shows failures on almost every poll rather than an occasional hit, a settings mismatch is far more likely than a wiring problem, and it costs nothing to verify.
The Modbus over Serial Line specification uses even parity as its default, with one stop bit when parity is in use and two stop bits when parity is set to none. Devices from different vendors ship with different defaults, and a replacement device configured out of the box is a classic source of sudden CRC errors on a bus that ran clean for years. Check the settings on the device that was most recently added or replaced first, because the newest node on the bus is the most likely one to disagree with the rest.
Termination and Biasing: The Idle-Line Problems
If settings match and errors are intermittent, look at termination next. An RS-485 bus should be a single daisy chain with a termination resistor at each of its two physical ends, commonly 120 ohm to match the characteristic impedance of the pair. With no termination on a longer or faster bus, signal edges reflect off the open ends and arrive back on top of later bits, corrupting frames unpredictably. The opposite error is just as common: termination resistors enabled on every node instead of only the two ends, which loads the bus so heavily that drivers can no longer develop a clean differential voltage.
Biasing, also called line polarization, is the subtler cousin. Between frames, no driver is on the bus and the pair floats unless bias resistors pull it to a defined idle state. A floating pair drifts near the receiver threshold, and electrical noise then flips it randomly, which receivers interpret as start bits and phantom bytes. Those phantom bytes land in front of real frames and break the CRC. Biasing belongs at one point on the bus, typically the master or converter, and many converters have it switchable - check that it is actually enabled. The Modbus serial line specification describes both termination and polarization for exactly these reasons.
The test for both is a scope if you have one, and substitution if you do not. On a scope, reflections show as ringing after each edge, and a missing bias shows as an idle line sitting near zero volts differential instead of a defined offset. Without a scope, temporarily shorten the bus to master plus one nearby slave with correct termination: if the errors vanish on the short bus and return on the full run, the physical layer of the long run is your problem.
Grounding, Noise, and Cable Faults
RS-485 is differential, which makes it noise-tolerant, but the transceivers still need every node's ground reference to stay within their common-mode range. When nodes are powered from different sources across a site, ground potential differences can push the pair outside that range, corrupting data or eventually damaging transceivers. The symptom is often errors that correlate with equipment switching - a pump starting, a VFD ramping - rather than with traffic. The fixes are a signal common conductor run with the pair where the design allows it, or isolated converters and repeaters that break the ground path entirely.
Cable itself is the last of the usual suspects but a real one. The pair should be twisted, ideally shielded with the shield grounded at one end, routed away from power conductors and VFD output cables. A bus wired as a star instead of a daisy chain creates multiple reflection points that no termination scheme can fully tame. Water in a junction box, a nicked conductor, or a loose terminal produce errors that wander with temperature and vibration. Walking the route and re-terminating suspect joints is unglamorous and frequently the fix.
When to Escalate
If port settings are verified, termination and biasing are correct, isolation has been tried, and errors persist, stop guessing and capture evidence. A serial line analyzer or a converter with a monitor port shows whether corruption is happening on specific slaves, at specific times, or across the whole bus, and that pattern is what a support engineer or integrator needs. Persistent errors confined to one device suggest a failing transceiver in that device; errors across the bus that survive isolation suggest an environmental source worth an electrician's attention.
It also helps to know what your SCADA layer sees. A polling engine retries failed frames, so a bus running with a background CRC error rate can look healthy on the surface while burning its bandwidth on retries. A monitoring platform such as Merobix that records per-device communication quality and poll failures over time turns an invisible degradation into a trend you can act on before the bus fails outright, and shows immediately whether a wiring fix actually reduced the error rate.
Frequently Asked Questions
What causes CRC errors on a Modbus RTU network?
Anything that corrupts bytes between sender and receiver. Constant errors on nearly every frame usually mean a baud rate, parity, or stop-bit mismatch. Intermittent errors point at the physical layer: reflections from missing or doubled termination, an unbiased floating idle line generating phantom bytes, ground potential differences between nodes, electrical noise coupled from nearby power wiring, or damaged cable and loose terminals.
Does a CRC error mean the message was lost?
The corrupted frame is discarded by the receiver, so that individual exchange fails. Whether data is actually lost depends on the master, which normally retries the poll. Occasional CRC errors therefore cost latency and bandwidth rather than data, but a rising error rate means more retries, slower effective polling, and eventually timeouts when retries are exhausted, so a bus with chronic CRC errors should be fixed rather than tolerated.
Where do the termination resistors go on an RS-485 bus?
At the two physical ends of the daisy chain, and only there. Each end gets one resistor across the pair, commonly 120 ohm to match the cable's characteristic impedance. Enabling termination on intermediate nodes overloads the bus and weakens the signal for everyone. Biasing is different: it belongs at a single point, usually the master or converter, to hold the line in a defined state when no driver is transmitting.
Sources and verification
This page references the protocol specifications published by the organizations below. Editions, product capabilities, and documentation change over time - confirm current requirements and specifications directly with the source.
- Modbus Application Protocol Specification - Modbus Organization
Merobix is not affiliated with, endorsed by, or sponsored by these organizations; their names are used only to identify the standards and products discussed.
Automation services
Need help turning this into a working system?
Merobix integrates SCADA, programs Allen-Bradley and Siemens PLCs, and designs and fabricates industrial control panels.
Meeting requests are reviewed before confirmation.