Question: Ok, I have one uart interface (TXD GPIO 14, RXD GPIO 15). I want at least one more uart interface.

Possible solutions:

* Bit banging:
Use two unrelated spare GPIOs. I understand that timing is a problem on a standard linux. Would it be reliable with very low baudrate?
* Switching:
RPI decides when to talk to which device. Using e.g. [CD4066BC](http://www.fairchildsemi.com/ds/CD/CD4066BC.pdf).
* spi to 2 x uart bridge:
Didn't find a suitable part (availability, price, dil package)
* usb to uart:
Expensive

Are there other options? I'm inclined to switching, if it can be done. What would you advise?

Answer: 
A USB UART, such as FTDI, isn't really expensive. All your other options sound like they will cost you more in parts and time than the ~$13 it might cost you, and be unreliable or slow. Just go for the fast and trouble-free option, such as:

<http://www.dfrobot.com/index.php?route=product/product&product_id=147#.UOamLG-sh8E>

Sparkfun sells one too. In fact, maybe you can just pull one out of some old USB device or buy one from a junk store that doesn't know what it does. 

I messed with an SPI to UART adapter for an Arduino project, there was no existing library so I wrote my own. In the end it worked ok, but if I could have just dropped in a $15 part I would have. In fact given the time it cost me I should have just got a mega with 4 serial ports. 

Alternatively if you want lots of serial ports you could look at RS485 serial, which is similar to 232 (though not compatible), which supports multi-drop, ie several interfaces over the one line.
For any projects in which USB UART is not an option, additional UARTs must be implemented through the GPIO pins, and using a lower-powered Raspberry Pi (e.g., Pi Zero) other than the version 4, which is now equipped with 4 serials, adding extra serial interfaces could be done by using [soft\_uart](https://github.com/adrianomarto/soft_uart). The module can convert any two of the digital pins into a soft serial interface (e.g., /dev/ttySOFT0).

Because UART is software-based, the communication needs to be undertaken in a low baud rate. Although the README suggests it to be 4800. I found a value lower and equal to 2400 is relatively stable.

Installing this requires compiling the module from source, it is suggested that user update Raspbian up to date and install kernel headers by

```
apt-get install raspberrypi-kernel-headers

```

to ensure the kernel version matches with the header version.