Skip to content

Howto setup Raspbian for serial read

This howto will cover the steps to setup a Rasperrypi for reading serial stream from RPICT series board.

Hardware and OS

This applies to all Raspberrypi. If using the image from Emoncms (emonpi) then this setup is not needed.

Latest tested OS for this guide:
Raspberrypi OS Released: 2022-09-22
Both for Lite and Desktop variants.

Steps

-1-

The Raspberry pi OS must be installed and running.

To get a Raspberry Pi Os image you can either

Download the image from the raspberrypi website.

https://www.raspberrypi.org/software/operating-systems/

or

Make an image yourself using the Imager.

https://www.raspberrypi.com/software/

If you are running headless with the 'Raspberry Pi OS Lite' you will have to connect a keyboard and monitor for the very first time the raspberry is run. This is to allow access to the first time boot wizard. Also creating an empty 'ssh' file inside the /boot directory will be useful for connecting via ssh. Alternatively you can just use the imager software from above to setup username and ssh before flashing.

-2-

For what follow you must open a terminal window.

On the desktop version of Raspberry Pi OS just open a terminal.

On the headless version connect to the raspberry via ssh with the user/password you created.

-3-

Run the raspi-config tool

sudo raspi-config

Then disable the login uart

3 Interface Options

I5 Serial Port     <<-- might also be found as I6 Serial Port

Would you like a login shell to be accessible over serial? Select No to the login shell question.

raspi-config login shell accessible over serial.

Would you like the serial port hardware to be enabled? Select Yes to the serial port hardware to be enabled question. raspi-config serial port hardware to be enabled.

Select Ok at the summary.

raspi-config serial port summary

Back at the menu select finish.

Would you like to reboot now? Select No to the reboot question (we will do that later).

-4-

Edit the /boot/firmware/config.txt file

sudo nano /boot/firmware/config.txt

At the end of the file add the following line:

dtoverlay=disable-bt

** A one line command to include the above line in the config file without using nano would be
sudo bash -c 'echo "dtoverlay=disable-bt" >> /boot/firmware/config.txt'

** This is for OS version_id 12 first released in March 2024. For older OS version use /boot/config.txt instead of /boot/firmware/config.txt.

Enter the line exactly as it is show above without adding whitespaces.

Save and Exit file.

** Note the above will disable bluetooth - if bluetooth is needed do not execute this step and use ttyS0 instead of ttyAMA0 for what follows.

For Raspberrypi 5 only also add the line below

dtoverlay=uart0

-5-

[OPTIONAL] Disable hciuart

sudo systemctl disable hciuart

-6-

Reboot

sudo reboot & exit

return to the ssh session again once the raspberrypi is up and running again.

-7-

It might be useful to get the board with all utilities ready at this point. Just issue the commands below to install them:

Install python3-serial

sudo apt-get install python3-serial

Get the rpict package:

wget lechacal.com/RPICT/tools/lcl-rpict-package_latest.deb

Install it with

sudo dpkg -i lcl-rpict-package_latest.deb

-8-

Last step is testing the serial port.

/!\ DO NOT SKIP THIS TEST /!\ This is the most basic test to confirm you are able to read from the serial port. If it fails do not continue your setup. Instead carefully review the configuration setup described above. If you encounter issues with your own application or some custom configuration then do run this test again to make sure the serial port is still operational.

Insert the RPICT board on the RPI. Configure and read from serial port

stty -echo -F /dev/ttyAMA0 raw speed 38400
cat /dev/ttyAMA0

Note these two command above can be run directly using

lcl-run

At this point the data will be shown on the terminal. This is an example using the RPICT3T1 below.

Linux terminal showing data from Raspberry Pi smart meter.

Please refer to the dedicated page of the board for the details of each field.