I want to connect a Pixhawk 4 (It's a flight controller) to a Raspberry Pi 3. Therefor I purchased this FTDI USB adapter. Its pinout is the following:

1   DTR
2   RX
3   TX
4   VCC
5   CTS
6   GND

The Pixhawk has a output Port called TELEM 2, which is supposed to be used for this purpose as described here. Its pins are the following:

1   +5V
2   Tx
3   Rx
4   CTS
5   RTS
6   GND

All the pinx fit together except for the Pixhawk's RTS pin and the breakoutboard's DTR. So I was wondering, if I can just connect the breakoutboard's DTR to the Pixhawk's CTS?

The breakout board also has an actual RTS pin, but there is no header soldered onto that pin and I don't have a header nor a soldering iron available here.

EDIT: As it was pointed out to me by @justme that it depends on how the software handles the handshakes, I would like to add, that the software that is most important to me in this context is the Open Source project MAVSDK. In the github repository in the file src/core/serial_connection.cpp I found the following lines of code:

if (_flow_control) {
    dcb.fOutxCtsFlow = TRUE;
    dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
    dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
} else {
    dcb.fDtrControl = DTR_CONTROL_DISABLE;
    dcb.fRtsControl = RTS_CONTROL_DISABLE;

So I guess in this case the Handshake can be deactivated by setting _flow_control to false.

What do I need to look for in the source code, if I want to know, if my Pin connections will "not work at all, or it works poorly, or it just works"?

  • 2
    \$\begingroup\$ I don't know anything about Pixhawk, but modern systems generally don't use hardware handshake pins. Try connecting only TX, RX & GND and see if it works. \$\endgroup\$
    – Tagli
    Commented Mar 18, 2021 at 14:38
  • \$\begingroup\$ Since the FTDI adapter has handshake pins it may support them. You may need to disable them in SW. \$\endgroup\$
    – Mattman944
    Commented Mar 18, 2021 at 14:52
  • \$\begingroup\$ It depends on how the PC software opens the serial port and wants to use the handshake pins. And we can't know that. Either it does not work at all, or it works poorly, or it just works. \$\endgroup\$
    – Justme
    Commented Mar 18, 2021 at 14:54
  • \$\begingroup\$ @Justme Is there any way for me to find out how the pc opens the serial port without just trying out? \$\endgroup\$
    – Max
    Commented Mar 18, 2021 at 15:38
  • \$\begingroup\$ @Max look at the program source code? \$\endgroup\$
    – Justme
    Commented Mar 18, 2021 at 16:10

1 Answer 1


Not a good idea.

Connect the CTS to CTS, and RTS to RTS. DTR is different. The FTDI has both CTS and RTS pins.

RTS and CTS are used for hardware flow control, its a way to say "hey I'm going to send a message". Or if the pixhawk supports it, you could use software flow control and only use TX and RX. Whaever you do, make sure both ends have the same baud rate, stop bits, partiy and hardware flow control settings.

enter image description here Source: https://www.mikroe.com/blog/uart-serial-communication

  • 2
    \$\begingroup\$ That picture is a bit disturbing. If a device has CTS out and it connects to CTS in of another device, I'm fine with that. But then the TX out should connect to TX in as well to keep the naming. Yet both devices cross the TX and RX, which is not what happens between DTE and DCE, TX goes to TX and RX goes to RX. In addition, they both have RX output and TX input.. \$\endgroup\$
    – Justme
    Commented Mar 18, 2021 at 16:13
  • \$\begingroup\$ Yeah it is, it really depends on the naming and if it needs to be crossed over or not. There are many different conventions, at the end of the day it really depends on if it's an input or output. I've got projects that use both conventions. \$\endgroup\$
    – Voltage Spike
    Commented Mar 18, 2021 at 16:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.