Skip to content

Porting to another panel

Wells Riley edited this page Sep 27, 2026 · 6 revisions

Each frame reports its screen's size, color format, and supported rotations when it checks in. The server renders for whatever the frame reports, so porting to a new screen needs firmware changes only.

Requirements

  • The screen must support 16 shades of gray, or Spectra 6 colors with -DFF_GENERIC_INKS.
  • A screen that isn't 3:4 shows the same picture, centered, with extra paper around it.

Port the firmware

  1. In firmware/platformio.ini, copy the generic_bench environment.
  2. In your copy, set these build flags for your screen. They're described under Panel in firmware/include/ff_config.h.
    • PANEL_W and PANEL_H: the size in the orientation it hangs.
    • FF_PANEL_ID and FF_BOARD_ID
    • FF_PANEL_ROTATIONS and FF_BAKED_ROTATION
  3. Set custom_bake to --size WxH --format gray16 --rotation N --name <name> --out src/<name>.h (--format spectra6 for a color screen), and FF_SCREENS_HEADER to <name>.h. The build then renders the startup, setup, and error screens at your screen's size. It uses the server's Python: run make venv first, or set FF_BAKE_PYTHON.
  4. In firmware/lib/driver/driver.h, choose your screen's Seeed_GFX setup. If you use a different driver library, replace fullPaint() in firmware/src/main.cpp.

Note

On a ported screen, every change refreshes the whole screen, as on the EE02 kit.

To preview what the server will send, before you have the hardware:

cd server
./.venv/bin/python -m featherframe.preview --panel custom:800x480:gray16:90,270

Clone this wiki locally