-
Notifications
You must be signed in to change notification settings - Fork 62
Getting Started
This comprehensive guide covers the end-to-end process of setting up, flashing, and validating your FlatSat environment. Whether you want to quickly flash a pre-compiled release or compile everything from source across different operating systems, follow the steps below.
If you do not need to modify the source code and want to get your FlatSat board running immediately, you can flash the pre-compiled production binary.
Download the latest .uf2 file from our repository releases page:
-
Production Firmware URL:
https://github.com/Pwnsat/FlatSat_Firmware/releases(Locate and downloadflatsat_firmware.uf2)
The FlatSat board features an on-board USB Mass Storage bootloader hardcoded into the RP2040 chip. You do not need external hardware debuggers to write the firmware.
Follow this exact tactile switch sequence:
-
Download the
firmware.ino.uf2file from the release page. - Put the board into bootloader mode: Unplug the device.
- Press and hold the BOOT button.
- While holding the button, plug the device back in to your computer.
- Release the BOOT button.
-
Drag and drop the
firmware.ino.uf2file onto the removable device labeled RPI-RP2.
[STEP 2 & 3] [STEP 4 & 5]
+-----------------+ +--------------------+
| BOOT BUTTON | | USB TYPE-C CABLE |
+-----------------+ +--------------------+
| |
v v
Keep Pressed --------------------------------> Plug Device Back In
|
[STEP 5: RELEASE] v
Release BOOT Button Board Mounts As
'RPI-RP2' Drive!

- Full Changelog: https://github.com/Pwnsat/FlatSat_Firmware/commits/v1.0.0
- Your operating system will instantly detect the device as a standard USB thumb drive volume named RPI-RP2.
- Drag and drop or copy the downloaded flatsat_firmware.uf2 file directly into the root directory of the mounted RPI-RP2 drive.
- As soon as the transfer completes, the FlatSat hardware will automatically unmount, flash its internal memory, reset, and immediately begin running the satellite flight software.
If you want to modify, compile, and upload the source code manually, follow these standard Arduino IDE instructions tailored for Windows, macOS, and Linux.
- Download and install the latest Arduino IDE (v2.x or higher).
- Open Arduino IDE and navigate to File -> Preferences (or Arduino IDE -> Settings on macOS).
- Click OK.
- Go to the left sidebar, click on the Boards Manager icon, search for Raspberry Pi Pico/RP2040, and click Install.
- Open your terminal or command prompt and clone the workspace recursively to include all underlying aerospace submodules:
git clone --recursive https://github.com/Pwnsat/FlatSat_Firmware.gitWindows: Port Detection: Ensure you have the official Raspberry Pi drivers installed (automatically bundled with the Arduino Pico core).
Target Configurations: In Arduino IDE, go to Tools -> Board -> Raspberry Pi Pico/RP2040 and select Raspberry Pi Pico.MacOS Permissions: macOS might require security authorization for compilation toolchains. If prompted with a developer verification block under System Settings -> Privacy & Security, click Allow Anyway.
Target Configurations: Select Raspberry Pi Pico under the RP2040 boards menu.Linux (Debian / Ubuntu / Kali) Dialout Permissions: To read and write to USB serial ports without root permissions, add your user to the dialout group:
sudo usermod -aG dialout $USER
(Log out and log back in for changes to take effect).- In Arduino IDE, open the primary sketch file: FlatSat_Firmware.ino.
- Connect your FlatSat hardware using the Physical Button Method described in Part 1 to ensure it's in bootloader mode (RPI-RP2 visible).
- Select your board configuration from Tools -> Board -> Raspberry Pi Pico.
- Click the Upload button (the arrow icon in the top left corner).
- Arduino IDE will compile the code from source, automatically target the dual-core memory mapping, and flash the hardware over the virtual serial port.
Before conducting radio over-the-air tests, confirm that the system is booting successfully by monitoring the isolated debug data stream managed entirely by Core 1 over the USB interface.
- Open your terminal and connect to the emulated USB Serial Line interface at a baud rate configuration of 115200:
From a macOS Terminal:
screen /dev/tty.usbmodem* 115200
(To exit the screen session in Mac, press Ctrl + A followed immediately by Ctrl + \).From a Linux Terminal:
minicom -D /dev/ttyACM0 -b 115200- Expected Output Logs: Upon connection, you should witness automated diagnostic outputs tracking system execution tasks:
[INFO] USB Device configured successfully
[INFO] ACC OK
[INFO] BME OK
[INFO] Radio 0 Configured Successfully!
[INFO] Radio 1 Configured Successfully!
[TM - SPP] APID=0x008 SEQ=1 LEN=20 FLAGS=3 SEC_HDR=NO
[TM - SPP] APID=0x001 SEQ=2 LEN=8 FLAGS=3 SEC_HDR=NO
[TM - SPP] APID=0x3FF SEQ=0 LEN=14 FLAGS=3 SEC_HDR=NOIf you see these telemetry outputs updating regularly, your processing hardware, primary sensor buses, and operating software runtime are completely functional.
FlatSat acts as a live, functional satellite simulator broadcasting true CCSDS packets into local airspace using sub-GHz radio modulations. You can physically confirm over-the-air operations using passive and analytical Software Defined Radios (SDR).
Local Hardware Sanity Check
Before performing radio tests, ensure the board is running properly by opening the Serial Monitor in Arduino IDE (configured to 115200 baud). You should see automated diagnostic outputs tracking system execution tasks:
FlatSat Ecosystem v1.0.0 — Maintained by Pwnsat and Electronic Cats. For authorized educational and security research purposes only.