What’s wrong with the serial port on the Raspberry Pi 3?

The Raspberry Pi 3 added all sorts of features to the Pi, including a much faster speed adjustable CPU, built-in WiFi, and Bluetooth interfaces.

Some of the hardware interfaces on the Pi continue to have limited functionality.  Such is the situation with the RPi 3’s serial port.  The primary serial port, which has a fully adjustable and stable baud rate generator, was dedicated to the Bluetooth interface.  That meant that the “User” serial I/O port was assigned to the secondary serial port.  This is a major issue as that serial port lacks an independent baud rate generator, but uses the system clock instead.  The problem with that is the system clock is dynamically changing all the time based on CPU load (to provide bursts of higher speed clock rates without causing the system to overheat or draw too much power on a long-term basis).

Because of the variable system clock rate, the user serial I/O port is almost useless.  For example, you can’t hook it up to a GPS Hat and expect it to work since the baud rate changes unpredictably.

There are two workarounds:

  1. Run at the slowest clock rate all the time, crippling the RPi3
  2. Disable the Bluetooth interface and assign it to the user serial port

More details here:  https://forums.adafruit.com/viewtopic.php?f=50&t=94677

And here:  https://openenergymonitor.org/forum-archive/node/12311.html

And here:  http://raspberrypi.stackexchange.com/questions/45570/how-do-i-make-serial-work-on-the-raspberry-pi3

https://github.com/raspberrypi/firmware/issues/553

https://github.com/RPi-Distro/repo/issues/22

This entry was posted in Raspberry Pi. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *