Extra uarts to Rpi4b 8Gb do not work
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 03 Apr 2022 12:39:18 UTC
Hi,
I tried adding extra serial ports on my Raspberry pi 4b 8Gb rev 1.4 for
a gpio GPS module - the GPS module connected to uart0 (as well as uart1)
is preventing the Raspberry from booting up. I even see dev/ttyu* files
for added uarts after reboot, but uarts don't work for me.
My os-version:
FreeBSD 13.1-STABLE #3 stable/13-n250037-7d59a9451d3b: Sun Mar 20
00:51:26 +04 2022 arm64
I copied uart4.dtbo and uart5.dtbo from rpi-firmware package to
/boot/dtb/overlays directory (and to /boot/msdos/overlays. Don't know
for sure which folder is being used) and added to /boot/msdos/config.txt
to [All] section:
---
dtoverlay=uart4
gpio=8,9=a4
dtoverlay=uart5
gpio=12,13=a4
---
I then rebooted my system, checked that the /dev/ttyu(0,1,2) files are
exist (uart0 is worked correctly) and checked pins configuration:
---
# gpioctl -l | egrep "pin (08|09|12|13|14|15)"
pin 08: 1 pin 8<>
pin 09: 1 pin 9<>
pin 12: 1 pin 12<>
pin 13: 1 pin 13<>
pin 14: 1 pin 14<>
pin 15: 1 pin 15<>
---
Then I connecteded the loops to the following pairs of pins: 8,10 (gpio
14,15), 21,24 (gpio 9,8) and 32,33 (gpio 12,13) and ran a script I found
somewhere on the Internet when I was looking for a solution to my issue:
---
import serial
import time
test_string = "[serial port test]".encode('utf-8')
port_list = ["/dev/ttyu0", "/dev/ttyu1", "/dev/ttyu2" ]
for port in port_list:
ok = False
try:
buff = bytearray(len(test_string))
serialPort = serial.Serial(port, 115200, timeout = 2, writeTimeout =
2)
bytes_sent = serialPort.write(test_string)
time.sleep(1)
bytes_read = serialPort.readinto(buff)
ok = bytes_read == bytes_sent
serialPort.close()
except IOError:
pass
print("port %s is %s" % (port, "OK" if ok else "NOT OK"))
---
I get the result:
---
port /dev/ttyu0 is OK
port /dev/ttyu1 is NOT OK
port /dev/ttyu2 is NOT OK
---
Did I make a mistake in my actions? Is it possible to add extra uarts to
rpi4b at all?
Thanks