Format the SSD
The OnLogic FR201 ships in two flavors: with or without onboard eMMC. Devices with eMMC keep the boot partition on the eMMC and the OS on the M.2 SATA SSD. Devices without eMMC put both on the SSD. Either way, when you want to wipe and reimage the device, the SSD is what you’re targeting.
OnLogic publishes a storage wipe guide for in-place reimaging. This guide covers the alternative I find easier: pull the SSD out, image it externally, and put it back.
What you’ll need
Section titled “What you’ll need”- A small Phillips screwdriver to open the FR201.
- An M.2 SATA SSD-to-USB adapter. Any cheap one from Amazon works — once the SSD is in the adapter, your computer treats it like a USB thumb drive.
- The Raspberry Pi Imager installed on your workstation.
- A monitor, keyboard, and Ethernet cable for the FR201’s first boot.
Image the SSD
Section titled “Image the SSD”-
Power down the FR201, open the chassis, and remove the M.2 SATA SSD.
-
Plug the SSD into your USB adapter and connect it to your workstation.
-
Open Raspberry Pi Imager. Under Operating System, click Choose OS → Raspberry Pi OS (other) → Raspberry Pi OS Lite (32-bit).
The 32-bit Lite image is what OnLogic tests against and what the device tree overlays below assume. You can use 64-bit Lite if you have a reason to, but stick with 32-bit unless you do.
-
Under Storage, click Choose Storage and pick the USB-attached SSD. Verify the size matches the SSD you removed — picking the wrong drive here will erase whatever you select.
-
Click Next. When the Use OS customization? dialog appears, click Edit Settings and configure:
- Set hostname: pick something meaningful (
fr201-lab-01, etc.). - Set username and password: create the user the OS will boot with.
- Wireless LAN: skip — you’ll wire the FR201 to Ethernet for first boot.
- Set locale settings: pick your time zone and keyboard layout.
Save the settings, click Yes to apply, confirm the data-loss warning, and click Next to start writing.
- Set hostname: pick something meaningful (
-
When the write completes, unplug the USB adapter and plug it back in. Two volumes will mount; open the one named
bootfs. -
Replace the contents of
config.txtonbootfswith the configuration below. These overlays enable the SPI, I²C, TPM, and external-antenna hardware on the FR201’s carrier board:config.txt # For more options and information see# http://rptl.io/configtxt# Some settings may impact device functionality. See link above for details.# Enable the serial pins.enable_uart=1# OnLogic FR201 carrier board: SPI, I2C, and ADC overlays.dtoverlay=spi4-1csdtoverlay=spi3-1cs,cs0_pin=24dtoverlay=i2c5,pins_12_13=on,baudrate=40000# User-configurable settings.include usercfg.txt# Enable audio (loads snd_bcm2835).dtparam=audio=on# Additional overlays and parameters are documented in# /boot/firmware/overlays/README.# Auto-load overlays for detected cameras.camera_auto_detect=1# Auto-load overlays for detected DSI displays.display_auto_detect=1# Auto-load initramfs files, if found.auto_initramfs=1# Enable DRM VC4 V3D driver.dtoverlay=vc4-kms-v3dmax_framebuffers=2# Don't have the firmware create an initial video= setting in cmdline.txt.# Use the kernel's default instead.disable_fw_kms_setup=1# Disable compensation for displays with overscan.disable_overscan=1# Run as fast as firmware / board allows.arm_boost=1# Enable TPM over SPI (FR201 carrier board).dtoverlay=spi6-1cs,cs0_spidev=offdtoverlay=tpm-nuvoton# Enable external antenna.dtparam=ant2[cm4]# Enable host mode on the 2711 built-in XHCI USB controller.# Remove this line if the legacy DWC2 controller is required# (e.g. for USB device mode) or if USB support is not required.otg_mode=1[cm5]dtoverlay=dwc2,dr_mode=host -
Create a second file on
bootfsnamedusercfg.txtwith the contents below. The Imager-set values for the OS go inconfig.txt; this file is where you put settings you want to keep acrossconfig.txtupdates:usercfg.txt # For more options and information see# http://rpf.io/configtxt# Some settings may impact device functionality. See link above for details.# Uncomment if you get no picture on HDMI for a default "safe" mode.#hdmi_safe=1# Adjust overscan. Positive numbers shrink the image, negative grow it.#overscan_left=16#overscan_right=16#overscan_top=16#overscan_bottom=16# Force a console size. By default it will be the display's size minus overscan.#framebuffer_width=1280#framebuffer_height=720# Uncomment if HDMI display is not detected and composite is being output.#hdmi_force_hotplug=1# Force a specific HDMI mode (this will force VGA).#hdmi_group=1#hdmi_mode=1# Force HDMI rather than DVI. Makes audio work in DMT (computer monitor) modes.#hdmi_drive=2# Increase signal to HDMI if you have interference, blanking, or no display.#config_hdmi_boost=4# Composite PAL.#sdtv_mode=2# Overclock the ARM. 700 MHz is the default.#arm_freq=800# Optional hardware interfaces.dtparam=i2c_arm=on#dtparam=i2s=on#dtparam=spi=on# Infrared communication.#dtoverlay=gpio-ir,gpio_pin=17#dtoverlay=gpio-ir-tx,gpio_pin=18# Power and Ethernet activity LEDs.dtparam=pwr_led_trigger=backlightdtparam=pwr_led_activelow=ondtparam=eth_led0=0dtparam=eth_led1=1[all]dtoverlay=i2c1,pins_44_45=ondtoverlay=i2c-rtc,pcf85063a=on -
Eject the USB adapter, remove the SSD, and reinstall it in the FR201.
-
Plug in a monitor, keyboard, and Ethernet cable. If you’re using PoE, you don’t need a separate power supply — the device will boot off PoE alone.
-
Power on. The FR201 will reboot once or twice as it expands the filesystem and applies the customization, then drop you at a login prompt with the username and password you set in step 5.
-
Log in and continue with whatever configuration the device needs — typically setting a static IP and installing your services.
What the overlays do
Section titled “What the overlays do”The carrier-board overlays in config.txt aren’t optional decoration — they’re what makes the FR201’s SPI, I²C, TPM, and antenna hardware visible to Linux:
| Overlay | What it enables |
|---|---|
spi4-1cs, spi3-1cs,cs0_pin=24 | SPI buses used by the carrier board’s I/O. |
i2c5,pins_12_13=on,baudrate=40000 | Carrier-board I²C bus. |
spi6-1cs,cs0_spidev=off + tpm-nuvoton | Onboard Nuvoton TPM 2.0 over SPI. |
dtparam=ant2 | Switches Wi-Fi/Bluetooth to the external antenna connector. |
i2c-rtc,pcf85063a=on | Onboard PCF85063A real-time clock. |
If you skip this config.txt and just write a stock Raspberry Pi OS image, the device boots — but you lose the TPM, the RTC keeps time only while powered, and any peripheral on the carrier-board SPI/I²C buses is invisible.