How Does the Raspberry Pi 5B Work with an SPI Display to Show a GUI?

·

The Raspberry Pi 5B introduces significant changes in how it handles display output, especially for secondary screens like SPI-based displays. If you're trying to get a graphical user interface (GUI) running on an SPI display with your Pi 5B—only to find that previous methods no longer work—you're not alone. The legacy tools like fbcp that once mirrored the framebuffer to SPI displays are now obsolete. This article explains why and guides you through the modern, supported approach using TinyDRM, panel-mipi-dbi, and proper device tree overlays.


Why fbcp No Longer Works on Raspberry Pi 5B

One of the most common frustrations among Raspberry Pi enthusiasts is discovering that fbcp (framebuffer copy) fails on the Pi 5B with an error like:

* failed to open vchiq instance

This happens because fbcp relies on the legacy graphics stack, which was deprecated after Raspberry Pi OS Bullseye and is completely removed in Pi 5. The Pi 5 uses a modern Kernel Mode Setting (KMS) and Direct Rendering Manager (DRM) architecture, making old tools incompatible.

As confirmed by Raspberry Pi engineer 6by9, the legacy display stack is “dead as a dodo” on Pi 5.

👉 Discover how modern DRM drivers unlock full GUI support on small displays.


The New Way: TinyDRM and panel-mipi-dbi Drivers

The future of SPI display support lies in TinyDRM and the panel-mipi-dbi driver. These are part of the mainline Linux kernel and designed specifically for small, embedded displays connected via SPI.

Key Advantages:

While older solutions like fbtft are now in staging and deprecated, panel-mipi-dbi offers a sustainable path forward.


Step-by-Step Setup for SPI Displays on Pi 5B

Follow these steps to get your SPI display working with a full GUI on Raspberry Pi 5B.

1. Use the Latest Raspberry Pi OS

Ensure you're running the latest 64-bit Raspberry Pi OS (as of December 2023 or later). Avoid using rpi-update unless necessary, as it may introduce instability.

Check your kernel version:

uname -a

You should see something like:

Linux rpi5 6.1.68-v8+ #1708 SMP PREEMPT ...

2. Identify Your Display Controller

Common chips include:

Knowing your chip is essential for selecting the right firmware.

3. Install Required Firmware File

For Waveshare 1.3" LCD (SKU19650) or similar ST7789-based displays, download the firmware:

sudo wget https://forums.raspberrypi.com/download/file.php?id=63123 -O /lib/firmware/wavesku19650.bin

This binary configures the display timing and initialization sequence.

4. Configure config.txt

Add these lines to /boot/config.txt:

# Enable MIPI-DBI-SPI driver for ST7789
dtoverlay=mipi-dbi-spi,speed=32000000
dtparam=compatible=wavesku19650\0panel-mipi-dbi-spi
dtparam=write-only,cpha,cpol
dtparam=width=240,height=240,width-mm=23,height-mm=23
dtparam=reset-gpio=27,dc-gpio=25,backlight-gpio=18

Ensure your wiring matches:

5. Reboot and Test

After rebooting, the display should light up and show the desktop environment alongside or instead of HDMI.


Frequently Asked Questions (FAQ)

❓ Can I still use fbcp on Raspberry Pi 5B?

No. fbcp depends on the legacy graphics stack, which is not available on Pi 5. Use DRM-based drivers instead.

❓ Which SPI displays are supported?

Displays using ST7789, ILI9341, and similar controllers work with panel-mipi-dbi. Support depends on firmware files and proper overlays.

❓ How do I rotate the screen?

Avoid rotating via firmware. Instead, use the Screen Configuration tool in Raspberry Pi OS after setup.

❓ Why doesn’t VLC show video on my SPI display?

If using SSH, set the display environment:

export DISPLAY=:0
cvlc --vout=drm --fullscreen /path/to/video.mp4

Ensure you’re using a desktop version of Raspberry Pi OS, not Lite.

❓ Is video playback smooth on SPI displays?

Yes! With Wayfire compositor and DRM, playback of 1080p videos on ILI9341 screens is smooth thanks to GPU acceleration.

❓ What about I2C OLEDs like SSD1306?

SSD1306 is already supported via DRM overlays. Use dtoverlay=ssd1306 in config.txt.


Troubleshooting Tips

👉 See how embedded display drivers are evolving for better performance and control.


Final Thoughts

The shift from fbcp to TinyDRM and panel-mipi-dbi marks a major step forward in stability and performance for SPI displays on Raspberry Pi. While the setup is more complex initially, the result is a fully integrated GUI experience with hardware acceleration, multi-display support, and long-term sustainability.

Community and Raspberry Pi engineers are actively expanding support for more panels. If you own a less common display, consider contributing firmware samples or testing new overlays.

With the right configuration, your Raspberry Pi 5B can drive small SPI screens just as effectively as HDMI monitors—ushering in new possibilities for compact, low-power computing projects.

👉 Unlock advanced display capabilities with modern Linux graphics drivers.