AnsweredAssumed Answered

i.MX6: how to use RTS/CTS properly using UART (DTE/DCE)

Question asked by Marco Cavallini on Apr 19, 2016
Latest reply on Aug 6, 2020 by Marco Cavallini

I have read a lot of posts in this community and on the internet

and the datasheet but I'm still confused about the RTS/CTS management with i.MX6.

Looks line any board is supporting these signals properly nor anybody really cares about them,

so I wonder if someone out there has experienced and solved this problem.


I need to reproduce the behaviour I have connecting two PCs with a

Loopback handshaking null modem cable


If I use 2 PCs I see RTS low during the transmission of data on TX


Using an i.MX6 UART3 (/dev/ttymxc2) configured in the Device Tree as follows

I get this 2 different behaviours depending on the "fsl,dte-mode" only.


TX and RTS are normally low

If I set "fsl,dte-mode" I see RTS going high during a period of time similar to the trasmission of data

but there is no data exiting out on TX


If I comment (unset) "fsl,dte-mode" I see data exiting out on TX

but RTS is always low not moving and not handshaking data.


Would be possible to use RTS/CTS like a PC does?


I tested this with linux kernel 3.14.28 and 4.1.15 without success.


pinctrl_uart3_mh: uart3grp-mh {

    fsl,pins = <

        MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1

        MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1

        MX6QDL_PAD_EIM_D23__UART3_CTS_B   0x1b0b1

        MX6QDL_PAD_EIM_D31__UART3_RTS_B   0x1b0b1




&uart3 {            // /dev/ttymxc2

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_uart3_mh>;



    status = "okay";



Any hint would be greatly appreciated.