I made the mistake of buying a cheap 3.5in 480x320 TFT display from a Chinese retailer. its unbranded, customer service is awful, no software was sent with it. I was sent a file in Chinese that was supposedly the driver. it never could fully download. the connection always timed out it took so long. ive looked into the Waveshare driver but unsure if it would work or not. any ideas? image is attached. rpi generic touchscreen

  • 2
    Have you tried googling xpt2046 ? Does this help raspberrypi.org/forums/viewtopic.php?t=143581
    – CoderMike
    Jan 26 '18 at 21:31
  • I figured it out. I ended up randomly stumbling on a universal driver. its made by "Elecrow". cloned from GitHub right from the pi. beautiful. thanks though Jan 28 '18 at 5:55
  • 1
    @user5932019 seeing as you found a solution to your question could you please post an answer explaining what you did.
    – Darth Vader
    Jan 29 '18 at 10:07

I've bought the same display. Here are my successful attempts to make it work on a RaspberryPi 3 B+ running Raspbian Stretch.

1. First attempt, involving specific device tree specification and configuration overwriting

From XPT2046 Touch Screen instructions for Raspbery Pi 3 thread, I found a GitHub repository with working configurations for several screens and useful instructions: goodtft/LCD-show.


  1. Clone the repo onto the RaspberryPi:

    git clone https://github.com/goodtft/LCD-show.git
  2. Run config file specific to that screen:

    cd LCD-show
    chmod +x LCD35-show
    sudo ./LCD35-show
  3. Let the RaspberryPi automatically reboot.

2. Second attempt, with out-of-the-box device tree spec and manual configuration editing

From How to configure a 3.5 inch 320x480 pixel touchscreen for Raspberry Pi PDF document and PiScreen Driver Install Instructions from ozzmaker.com, I got the screen working without installing anything:

  1. At the end of /boot/config.txt, add the following line:

  2. At the end of the line in /boot/cmdline.txt, add the following characters (ellipsis marks the line and shall not be inserted, but the comma shall):

  3. In /usr/share/X11/xorg.conf.d/99-fbturbo.conf, change /dev/fb0 to /dev/fb1:

        Option "fbdev" "/dev/fb1"
  4. In /usr/share/X11/xorg.conf.d create a new file 99-calibration.conf containing:

    Section "InputClass"
        Identifier "calibration"
        MatchProduct "ADS7846 Touchscreen"
        Option "TransformationMatrix" "1 0 0 0 -1 1 0 0 1"
  5. If you are editing from your Pi, reboot.


I only wanted it for showing my terminal, so I found a great article that also happens to do this, without installing any new drivers.

Key information: This device's controller is an ILI9486, which is compatible with ILI9481. The driver for ILI9481 was already in my Raspberry Pi. Here's what I did to make it work:

sudo modprobe --first-time fbtft_device name=ili9481 debug=1 rotate=270 bgr=1
con2fbmap 1 1

The first command loads the ILI9481 driver as an Frame Buffer for Small LCD TFT device (fbtft) and rotates it 270 degrees.

The second command sets the console (tty1) to map its output to the framebuffer (buffer 1). That's why the parameters are 1 1. You can map any tty to the LCD.

I don't care about the touch-screen, so I didn't set it up. All I need this is to show me the IP address of the Raspberry Pi so I can connect through SSH. (This is an issue you may encounter only if you find your RPi connecting to WiFi where you cannot control the IP address assignments and with ridiculously short lease times.)


If you have a Dispaly as on the Image above, then:

git clone https://github.com/Elecrow-keen/Elecrow-LCD35.git
cd Elecrow-LCD35
sudo ./Elecrow-LCD35

This is tested on a RaspberryPi Zero with Raspian stretch. Remember that after a kernel update you have to rerun the installer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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