# soft_uart **Repository Path**: lygz5016/soft_uart ## Basic Information - **Project Name**: soft_uart - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-09-11 - **Last Updated**: 2023-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # soft_uart 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 `/dev/ttySOFT0`. ## Features * 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. ## Compiling Fetch the source: ``` git clone https://github.com/adrianomarto/soft_uart ``` Install the package `raspberrypi-kernel-headers`: ``` sudo apt-get install raspberrypi-kernel-headers ``` Run `make` and `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. ## Loading Module parameters: * 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 soft_uart.ko gpio_tx=10 gpio_rx=11 ``` ## Usage 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 `dialout`, type: ``` sudo usermod -aG dialout ``` Usage examples: ``` minicom -b 4800 -D /dev/ttySOFT0 cat /dev/ttySOFT0 echo "hello" > /dev/ttySOFT0 ``` ## Baud rate 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.