This is for development purposes only - Serenity doesn't currently boot on Raspberry Pi! Use this guide if you want to set up a development environment.
### Step 0: Download and run Raspberry Pi OS from an SD Card
This step is needed because the original firmware files need to be present on the SD Card when booting Serenity. It will also help with the UART setup.
### Step 1: Connect your Raspberry Pi to your PC using a UART cable
Please follow one of the existing guides (for example [here](https://scribles.net/setting-up-serial-communication-between-raspberry-pi-and-pc)) and make sure UART is working on Raspberry Pi OS before proceeding.
If you're using a Raspberry Pi 4B and want to test if the UART is working correctly, you need to do a few extra steps.
UART0 (the one that SerenityOS uses) is used for bluetooth on these models, so for the OS to use it instead, ensure that you disable Bluetooth inside the `config.txt`:
`kernel8.img` can be found in `Build/aarch64/Kernel/`. Copy it to the main directory on the `Boot/` partition, next to `config.txt`. You can either replace the original file or use another name (see above).
### Step 4: Put the SD Card in the Raspberry Pi and power on
You should start seeing some messages in your UART terminal window.
## Running on real hardware using network (Raspberry Pi 3)
### Prerequisites
There are multiple ways to set up your network. The easiest way is a direct connection between the Raspberry Pi and your PC. To achieve this your PC has to have an Ethernet port.
Here's the [Raspberry Pi Documentation](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#debugging-network-boot-mode) on booting from the network.
This is enabled by default on Raspberry Pi 3+. For the previous boards please see the section [Debugging Network Boot Mode](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#debugging-network-boot-mode) of the Raspberry Pi documentation.
### Step 2: Copy all files from the original SD Card to your PC
This directory will serve as a TFTP server, sending files to the Raspberry Pi when requested.