I've bought a 4 inch Waveshare Spotpear LCD screen (This one) and with the help from How to install Waveshare SpotPear 4 inch LCD in RaspberryPI 2? I've managed to get it mostly working.

The problem I'm having now is that I was hoping to use the screen for a handheld console project using RetroPi (ala Adafruit's PiGRRL).

I'm using the framebuffer copy workaround to allow Emulationstation/RetroPie to display on the screen (since it works over GPIO and not HDMI) but I can't seem to get the performance/stability right.

With the default fbtft_device speed of 16000000 in /etc/modules it runs terribly slow. However raising this value to >24000000 results in a pretty smooth framerate but terribly unstable visuals (screen spots, crazy colours all the usual things you might see if it was a PC GPU overheating). Is it maybe a power issue?

Has anyone managed to get this display to work with RetroPi? It looks like its 3.5 inch smaller brother would probably manage better with higher default device speeds? If I went with a larger 5 inch screen and HDMI would I have a better time of it (by not needing to copy the frame buffer?)

Does anyone have any advice on increasing fbcp's performance or increasing stability at higher display device speeds? (what does that speed value actually represent?)


1 Answer 1


The 16000000 figure will be the SPI bits per second (so 16 million bits per second). That is the transfer speed between the Pi and the screen.

Presumably 24 million bits per second (Mbps) is leading to corrupt data on the link. It is close to the "safe" toggle rate for the GPIO.

The SPI hardware supports the following baud rates 15.63, 17.86, 20.83, and 25.00 Mbps in the region of interest.

It is not obvious how the SPI driver chooses the baud rate. I suggest you try baud rates from 16 million upwards in 1 million steps until you find the highest stable setting.

  • Thanks for the response - that makes a lot of sense for the value with what I'm seeing but it would be interesting to know how other screens (such as the 3.5inch waveshare) has this value set significantly higher? i.e 48Mbps in this example Anything above 16Mbps starts to give an imperfect image. But the refresh rate is just terrible. It's funny though that I can set it to 48Mbps and be able to play Q3 quick well but the image is oddly coloured with a lot of screen spots :P
    – Hobsie
    Feb 2, 2016 at 15:28
  • It's an old post (8 months is a long time on the Pi). I doubt 48 Mbps was being used. The spi-bcm2708 driver would have selected 31.25 Mbps if 48 Mbps was asked for (the driver only used rates of 125, 62.5, 31.25, 15.625, ...). The very recent spi-bcm2783 driver supports more Mbps as indicated in my answer. Everything I've seen suggests speeds over 25 Mbps are marginal.
    – joan
    Feb 2, 2016 at 16:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.