Hi, I’m the Toradex AI Assistant.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?

Hello Alvaro,
Thank you for your detailed explanation and the information about your setup. I’ll address your specific questions about enabling RS-485 on the Verdin iMX8M Mini with the Ivy Carrier Board and working with device tree overlays.
1. Device Tree RS-485 Support on Verdin iMX8M Mini + Ivy Carrier Board
The Verdin iMX8M Mini SOM combined with the Ivy Carrier Board does include RS-485 half-duplex support on UART_1 and UART_2, which both expose an RTS pin for direction control (Reference). However, to ensure device tree RS-485 settings take effect, the Linux kernel being used must include RS-485 support baked into the serial driver (most recent NXP and Toradex kernels do include this).
Your device tree overlay is almost correct, but there are a couple of key considerations:
- The RS-485 control via device tree only works if your kernel supports parsing and applying these properties at boot.
- Some distributions like Boot2Qt may have kernel configurations or patches different from Toradex’s reference BSP that could affect this functionality.
- The kernel property
linux,rs485-enabled-at-boot-time
should work out-of-the-box on recent kernels, but Boot2Qt’s behavior might differ if the serial driver or device tree implementation is changed.
Suggestion:
If you’re still not seeing the RS-485 settings applied from the device tree and always needing userspace configuration, first confirm that your running kernel includes this patch/feature (you can check in /proc/config.gz
if CONFIG_SERIAL_IMX_TTY_RS485
is set, or review UART driver sources for RS485 parsing).
2. Echo Suppression
RS-485 can echo transmissions if the transceiver’s receive line is enabled during transmission. As per the carrier board design (Reference):
In this case, the receive enable pin (RE#) can be driven with the RTS signal. This turns off the RX output buffer while sending a message.
With the proper device tree configuration, the kernel should handle this using the RTS signal if it’s connected to RE# (which it is, by hardware design on UART_2). To ensure no echo:
- Use both
linux,rs485-enabled-at-boot-time;
and rs485-rts-active-low;
in your overlay.
- Remove
rs485-rx-during-tx;
unless you have specific requirements to receive while transmitting, as this enables loopback (echo).
&uart3 {
status = "okay";
linux,rs485-enabled-at-boot-time;
rs485-rts-active-low; // Adjust polarity as required by your board
// Remove rs485-rx-during-tx; to suppress echo
};
Note:
- The actual polarity needed for
rs485-rts-active-low
depends on the carrier board’s circuit—check the Ivy Carrier Board schematic to confirm whether RTS low or high enables transmission.
- If echo still appears, confirm the RTS pin is being toggled during transmission. You can check this on the hardware using an oscilloscope or logic analyzer.
3. Relying Solely on Device Tree
If you confirm that your kernel and userland do not override UART settings, and the proper device tree properties are present and loaded (verify with cat /proc/device-tree/soc@0/bus@30800000/serial@30880000/rs485*
paths—may differ by kernel), hardware flow should be handled without further userspace configuration.
If the device tree approach still does not work:
- Boot2Qt may have different kernel/device-tree integration.
- In that case, using
ioctl
in your application may be necessary, or you may consider building the image with a Toradex reference kernel for experiment.
References and Further Reading
Summary:
- RS-485 is fully supported in hardware via UART_2/RTS on your setup.
- Echo can be suppressed by not enabling
rs485-rx-during-tx
and ensuring device tree direction control using RTS.
- Device tree overlays are preferred, but your kernel must support them (verify for Boot2Qt).
- If device tree doesn’t apply settings, it may be a Boot2Qt kernel/config limitation.
If there are further issues, please share your kernel version and a dmesg
log for UART initialization at boot. This helps check if device tree settings are parsed and applied.
Best regards,
Toradex AI Assistant.