This is a review of the Raspberry Pi LCD touch screen I recently bought. I opted to go for the 4” RPI LCD(A) by WaveShare and they call it their SpotPear model.
The screen came wrapped in a static proof bag (like most Raspberry Pi peripherals), a CD, and some mounting hardware (screws).
There are actually a couple of additional options when choosing which size screen you want. They range from 3.2” to 7” and are connected to the Raspberry Pi in a variety of ways.
After doing some research I found that the CD could be installed and an operating system image could be used to get the Raspberry Pi working with the touch screen. I didn’t like this option as I am more familiar with Noobs and didn’t know what the CD was going to boot up with.
So first things first was setting up the Raspberry Pi environment to accept the LCD screen.
I am fortunate to have a couple extra SD cards lying around. As SD cards get less and less expensive it makes sense to have a few extra on hand to tinker with when you want to start a mini project like this.
I will show you why I ended up using a fresh install of Noobs here in a minute.
This post is already getting long so I will give a quick overview of my thoughts on the WaveShare SpotPear.
The Good Things About The Screen
- First, it feels heavier than I thought (but in a good way). It feels like it is made well.
- Once I got it working the screen quality is awesome. I was really surprised with how clear and bright everything was.
- I don’t know much about GPIO outputs and wasn’t sure which ones to snap into but the board almost mirrors the Pi so it made sense where to put it (and I was right)
The Bad Things About The Screen
- I had to unplug my camera ribbon to install this (which isn’t a big deal.
- When the screen is plugged into the GPIO pins and you start removing cables or moving the Pi it can put pressure where the connection is because it is only on one side.
- All of the tutorials I found online have not worked yet. I keep get boot up errors.
Overall I Would Recommend This Screen Because…
I have not had a chance to try this screen out with a bunch of different Raspberry Pi features but for what it is intended to do I think it does a great job.
When I am able to get it working (more on that later), the screen is crisp and bright and makes using the Raspberry Pi enjoyable and easy to navigate around on. If you don’t have access to a monitor or want a Pi that is more mobile than this LCD screen is a great fit.
I didn’t want to give a negative review to a product that I can’t get to work because I don’t understand the necessary technology. But after doing some Google searches it sounds like a lot of people are having the same issues.
A Little More About My Struggles To Get It Working Properly
If you do some Google searches you will find that a popular tutorial keeps coming up and is being recommended by a lot of people. It can be found here.
I followed the tutorial without fully realizing what I was doing the first time. The reason I ended up using a fresh install of Noobs was that I would be overriding how the Pi boots. Instead of looking for HDMI it would look for the screen first, and I have learned whenever you are messing with low level options on the Pi it is easier to just have a fresh install and then you can always revert back to another project as you had it before. As I get better with the Raspberry Pi I am sure that could change.
But needless to say, when you follow this tutorial you will need to pay attention to the name of your LCD device. You will learn that the device is named based on the fbtft_device name. The tutorial uses a Waveshare 3.2” Touchscreen LCD and the fbtft_device name of the screen we are talking about in this tutorial is flexfb. For more information you can check out this github repo.
Following the first tutorial this will start to make more sense. But even with those edits I was still getting an error.
Because I was using SSH to change files on my Pi, I was having trouble seeing where the issue was coming from. Only after I plugged in my Pi to a monitor did I realize that whenever I booted the Pi it was coming up with an error message that read “Failed To Start Kernel Load Modules”
So looking back at the steps in our tutorial we will see in step 4 that we are editing the file in /etc/modules/
spi-bcm2708 fbtft_device name=waveshare32b gpios=dc:22,reset:27 speed=48000000 waveshare32b width=320 height=240 buswidth=8 init=-1,0xCB,0x39,0x2C,0x00,0x34,0x02,-1,0xCF,0x00,0XC1,0X30,-1,0xE8,0x85,0x00,0x78,-1,0xEA,0x00,0x00,-1,0xED,0x64,0x03,0X12,0X81,-1,0xF7,0x20,-1,0xC0,0x23,-1,0xC1,0x10,-1,0xC5,0x3e,0x28,-1,0xC7,0x86,-1,0x36,0x28,-1,0x3A,0x55,-1,0xB1,0x00,0x18,-1,0xB6,0x08,0x82,0x27,-1,0xF2,0x00,-1,0x26,0x01,-1,0xE0,0x0F,0x31,0x2B,0x0C,0x0E,0x08,0x4E,0xF1,0x37,0x07,0x10,0x03,0x0E,0x09,0x00,-1,0XE1,0x00,0x0E,0x14,0x03,0x11,0x07,0x31,0xC1,0x48,0x08,0x0F,0x0C,0x31,0x36,0x0F,-1,0x11,-2,120,-1,0x29,-1,0x2c,-3 ads7846_device model=7846 cs=1 gpio_pendown=17 speed=1000000 keep_vref_on=1 swap_xy=0 pressure_max=255 x_plate_ohms=60 x_min=200 x_max=3900 y_min=200 y_max=3900
Basically this is telling the Pi what to do when it boots up, and then passing some parameters (options) for it.
As this was not working I started looking for the correct code to put into the boot sequence for the Raspberry Pi to load the 4” Waveshare SpotPear Touchscreen LCD device.
I next found this StackExchange post which was having the same problem as me. I tried these suggestions and was unsuccessful as well.
I was beginning to get frustrated because up until now the only thing my screen was doing was glowing white.
I finally found a github issues thread that is from the tutorial above where there is a lot of discussion around this model and getting it to work properly.
As you can see there is a lot of talk about people having issues. The only small win I had was when I typed these two commands into my command line
sudo modprobe flexfb width=320 height=480 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
sudo modprobe fbtft_device debug=3 rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24
My screen lit up and was actually showing the Raspberry Pi command line. But after moving the commands into my /etc/modules file it still produces the “Failed To Start Kernel Load Modules”