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: 
I found what you are looking for: an I2C/SPI slave to UART/IrDA/GPIO bridge.

They come in single and dual version (so 1 or 2 extra UARTs). They (NXP) also (for the other side in case needed) have I2C/SPI master to UART/IrDA/GPIO bridges.

More information can be found about these chips [here](http://ics.nxp.com/products/bridges/i2c.spi.slave.uart.irda.gpio/) and the [master](http://ics.nxp.com/products/bridges/uart.i2c.master.gpio/) counterpart.

Maxim also has [chips](http://www.maximintegrated.com/datasheet/index.mvp/id/6463?utm_expid=50713806-2&utm_referrer=https://www.google.cl/) that do the exact same thing.
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.