FlipperZero - UART Bridge RPi4 to Flipper

This is a simple tutorial for UART bridge function on the Flipper Zero. I’m using RaspberryPi4, FlipperZero and a Macbook laptop for this tutorial.


Schema

The bridge is pretty simple, we connect UART pin from Raspberry Pi4 to Flipper Zero and get a shell using flipper tty from the laptop.

UART Concept

UART is a serial protocol, which means it transfers data between components one bit at a time.

To synchornize communications, the UART transmitter and receiver must agree on a specific baud rate ( the rate of bits transmitted per second)

Important concept :

  • RX : Receive, will get the data
  • TX : Transmit, will transfer the data
  • GND : Ground
  • VCC : Voltage, not used here since powered by USB cable

The RX(10) pin from Rapsberry Pi must be connected to the TX(13) from FlipperZero.
The TX(8) pin from Raspberry Pi must be connected to the RX(14) from FlipperZero.

It can be confused at the first place put it make sense since the Transmiter must send the bits to the receiver.

Identify GND

  • Power Off the device you want to test
  • Turn your multimeter dial to continuity Test mode (sound wave icon)
  • Place Black lead to any metalic part of the circuit/PCB (Direct conductive path to earth)
  • Place Red lead on each of the UART port and wait for buzzer sound, if sound then its the GND pin from UART

Identify VCC

  • Power the device you are testing
  • Turn Multimeter dial to DC voltage mode and set it to 20V
  • Place Black lead to any metalic part of the PCB
  • Place Red on suspected UART pin until the voltage indicates 3.3V or 5V, this is the Vcc pin.

Identify TX

  • Turn off the device
  • Keep Multimeter on DC voltage of 20V
  • Place Black lead on any metalic part of the PCB, like the GND testing part
  • Place Red lead on supected Pin
  • Power up the device and check the voltage value : If the voltage fluctuates for a few seconds and then stabilizes at the Vcc value (3.3V or 5V) then it means this is TX pin.

💡 The variations appears because the device is Booting and send data to TX for debuging.

Identify RX

Well, this is most likely the last one.

  • Like TX test
  • You can identify it because it has the lowest voltage variation and lowest overall value of all the UART pins

Setup

Here is my setup in a single picture. Like in the schema, Raspberry RX,TX to Flipper TX,RX and Flipper connected with USB port on my laptop.

The Raspberry is also powered on the laptop just for the power.

Minicom

First you need to install minicom

# MacOs
brew install minicom
# Linux
apt install minicom

Once installed, change the default serial port `/dev/modem/ to your flipper.

minicom -s

Go to Serial Port Setup and then enter A.

Here I’m using the /dev/tty.usbmodemflip_Il4l0w1 port of my Flipper.

Now you can start minicom

minicom

Once minicom is started, you just need to plug the UART pin to your Flipper then use the UART Bridge fonction on GPIO menu.

You can leave the default configuration, if the Baud is not set, just change it to 115200.
TO find the right Baud, you need to check the documentation or use the most common baud rates like 9600384001920057600 and 115200.

Shell !

Once the UART Brige Application selected, you should see the login prompt from the raspberry pi.

You can now login to the Raspberry Pi and enjoy your shell !

This article was updated on 24 March 2024

AlrikRr

Formerly a firefighter in France 🇫🇷 🚒, I decided to pursue my passion for IT and especially offensive cybersecurity. Now a Pentester in Montreal 🇨🇦 for almost 3 years and an active member of HackersWithoutBorders North America, I am gradually specializing in internal and network intrusion testing.

Sharing our passion for this field, whether for awareness or education, is an important mission for me!

Feel free to contact me to discuss cyber or anything else over a beer :D 🍻