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 instanceThis 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:
- Native DRM support enables true GUI rendering (not framebuffer mirroring).
- Hardware-accelerated composition via the GPU.
- Independent display management—your SPI screen acts as a real monitor.
- Better performance, especially for video playback.
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 -aYou should see something like:
Linux rpi5 6.1.68-v8+ #1708 SMP PREEMPT ...2. Identify Your Display Controller
Common chips include:
- ST7789(V) – Found in Waveshare 1.3" LCD
- ILI9341 – Popular in TFTs
- SSD1306 – OLED over I2C/SPI
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.binThis 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=18Ensure your wiring matches:
- DIN (MOSI) → GPIO 10
- CLK (SCLK) → GPIO 11
- CS → GPIO 8
- DC → GPIO 25
- RST → GPIO 27
- BLK (Backlight) → GPIO 18
- VCC/GND → 3.3V and Ground
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.mp4Ensure 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
- Display powers on but shows nothing? Verify SPI is enabled in
raspi-config. - Wrong colors or flickering? Check clock polarity (
cpha,cpol) indtparam. - VLC not working? Use
--vout=drmand ensure GUI session is active. - Using 32-bit OS? Switch to 64-bit for best compatibility with new drivers.
👉 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.