Software-based serial port module for Raspberry Pi.
This module creates a software-based serial port using a configurable pair of GPIO pins. The serial port will appear as
- Works exactly as a hardware-based serial port.
- Works with any application, e.g. cat, echo, minicom.
- Configurable baud rate.
- TX buffer of 256 bytes.
- RX buffer managed by the kernel.
Fetch the source:
git clone https://github.com/adrianomarto/soft_uart
Install the package
sudo apt-get install raspberrypi-kernel-headers
make install, as usual.
cd soft_uart make sudo make install
I haven't tried cross-compiling this module, but it should work as well.
- gpio_tx: int [default = 17]
- gpio_rx: int [default = 27]
Loading the module with default parameters:
sudo insmod soft_uart.ko
Loading module with custom parameters:
sudo insmod softuart.ko gpio_tx=10 gpio_rx=11
The device will appear as
/dev/ttySOFT0. Use it as any usual TTY device.
You must be included in the group
dialout. You can verify in what groups you are included by typing
groups. To add an user to the group
sudo usermod -aG dialout <username>
minicom -b 4800 -D /dev/ttySOFT0 cat /dev/ttySOFT0 echo "hello" > /dev/ttySOFT0
When choosing the baud rate, take into account that:
- The Raspberry Pi is not very fast.
- You will probably not be running a real-time operating system.
- There will be other processes competing for CPU time.
As a result, you can expect communication errors when using fast baud rates. So I would not try to go any faster than 4800 bps.