Communicating with Raspberry Pi 3b+


I am now trying to connect my drone with ROS on pi 3b+. Ubuntu Mate 16.04 has been installed on the my Raspberry Pi 3B+.

The connection is fine when I connect them via a USB cable. However, I cannot receive anything from the cube when I connect them via TX/RX(GPIO) on pi and Telem2 on cube. I have checked my wiring is correct.

I have followed the instructions from

which I have added
to /boot/config.txt

on Mission Planner, I have set
(I have also tried 57600)

in raspi-config, I disabled serial interfaces

When I type
roslaunch mavros apm.launch fcu_url:=/dev/ttyAMA0:921600
in the terminal, the plugins are loaded and initialized and MAVROS is started but got no heartbeat.

Hence I can’t receive a single echo from rostopic. It indicated there is no connection. I tried to screen ttyAMA0, ttyS0, and ttyprintk but nothing is transmitting. I wonder if the problem is on me or something is still not supported on pi 3b+?

I was thinking if I have forgot to install something but it doesn’t make sense since I can connect them perfectly on USB. My guessing is that maybe I missed some hardware settings in the pi.

PS: I have swapped the TX and RX for many times, almost once after every changes I have made.

Thank you for anyone who read my topic.

Have you tried /dev/serial0?


I had the same problem. If I remember well, the port /ttyAMA0 is used by default for the Bluetooth. You need to disable it, to allow Serial COM.

Look at the second answer :

You have to change the following file :


PS. The answer is for Jessie, but it works too for Ubuntu Mate. Just forget the first step with raspi-config
PS2 : Save your SD card on your computer before doing it, because a wrong setting case break the boot of the Raspberry Pi. If it’s the case, just reload the SD card with your backup.

Thank you for your replies.

To Echo:
I did not see any /dev/serial0 in my tty list. I guess S0 is equivalent.

To KiloNovemberDelta:
I tried your solution.
The file system has been expanded and I disabled serial login shell and enabled serial interface.
I also removed
from cmdline.txt
but still not working

In the cmdline.txt, you have to remove and then add (or check that parameters are set) :

dwc_otg.lpm_enable=0 console=tty1 console=serial0(or ttyAMA0),115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Besides, I don’t know if it changes something, but in my bash I use this command :
roslaunch mavros apm.launch fcu_url:=serial:///dev/ttyAMA0:115200

I tried to modify the line as you mentioned. However, the error became “serial0 : receive : End of file” which made it even worse. I think setting the console at ttyAMA0 occupied the port.

I also discovered that after I run several trials, the telem port on the cube will become malfunctioned. I reset the parameters on the cube but it stop functioning soon after I launch mavros for a few times.

According to this:

I am not sure if the issue is related to the OS itself.

Because I did this fix a year ago, I checked again in my Pi (with Ubuntu Mate), and I have this config :

in /boot/config.txt, I add at the end of the file :


And in /boot/cmdline.txt

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait quiet splash plymouth.ignore-serial-consoles

If it is still not working, I don’t know where it can comes from, sorry :confused:

1 Like

I finally figured it out.

In /boot/config.txt,
dtoverlay=pi-disable-bt should be used instead of

This seems make sense as I have seen some unofficial 3B+ adaption image/software tell you to replace the pi3 files with plain pi files. So looks like 3/3B files may not work 100% on 3B+.

After changing this, my ROS works fine with my Ubuntu Mate on pi
Thank you very much KiloNovemberDelta :slight_smile:


Hello!. I am communicating with Raspberry Pi 3B+ and I have read the instructions(the same with you). I can receive the tlogs, image.I am wondering can you get the dataflash?
the picture is captured in the Mission planner.
In windows OS, the SD card logs are like this

I think you will need to download it with some commands