Display for Orange Pi Zero

After figuring out the GPIO pin names of the Orange Pi Zero expansion port it is relatively easy to configure any TFT display as a FBTFT device attached over the SPI bus, as long as you know the name of the chip used to drive the LCD screen. Here is a list of all the chips supported by the Linux kernel out of the box.

The display I have is very similar to this 3.2″ Waveshare touch-screen display that uses the ILI9340 LCD driver (PDF) chip. It was only a matter of specifying the two GPIO pins used for DC (Data or Command) and RST (Reset) in addition to the SPI port.

  • H2+ port PA00 maps to GPIO 0, connected to RST
  • H2+ port PA03 maps to GPIO 3, connected to DC
  • H2+ SPI bus 1 is connected to the display module SPI pins.

The following command can be used to load the FBTFT device with the required configuration:

$ sudo modprobe fbtft_device custom name=fb_ili9340 gpios=dc:3,reset:0 speed=16000000 busnum=1 rotate=90

And then map the console output to the newly created framebuffer device:

$ con2fbmap 1 8

where 8 stands for /dev/fb8.

Here is the display running htop:

3.2″ TFT LCD Display for Orange Pi Zero Over SPI

Permanent Setup

Create a new file /etc/modules-load.d/fbtft.conf with the following content:

fbtft_device

Create another file /etc/modprobe.d/fbtft.conf with the configuration for the fbtft_device device:

options fbtft_device custom name=fb_ili9340 gpios=dc:3,reset:0 speed=16000000 busnum=1 rotate=90

Finally, edit /boot/armbianEnv.txt to map the console output to the framebuffer device during the boot, by appending the following:

extraargs="fbcon=map:8"

Never lose a single business lead or enquiry again! Get my latest plugin Storage for Contact Form 7 now!

Buy now for only $19 →

28 Comments

  1. Mark Birss says:

    Does your lcd screen output the kernel messages during boot up or just show login prompt ?

    Have you been able to set led screen brightness using pwm ?

    im using other small screen the adafruit22a

  2. Jiří Šmejkal says:

    Does this work or all models of Orange pi, or just with this one ? : )

    • Kaspars says:

      It should work with almost all single board computers since they all have SPI ports. You only need to know the pin mapping in the Linux kernel.

  3. Denis says:

    Hello!
    Is it possible to run Android OS on Orange Pi Zero and use this display?

  4. Jake says:

    Quiet simplified presentation.
    I was wondering if the same method can be applied for the 3.5 inch touch screen LCD module here.

  5. Serg_io says:

    Have you measured refresh rate?

  6. Agge says:

    Thanks a lot for the instructions.

    I managed to get a waveshare 3.5 A clone work by doing it like this:

    modprobe fbtft_device custom name=fb_ili9486 gpios=dc:18,reset:2 speed=16000000 busnum=1 rotate=90

    But with the “Armbian_5.25_Orangepizero_Ubuntu_xenial_default_3.4.113” image the boot halts just after starting to load kernel when I point the vt to fb8

    "extraargs="fbcon=map:8"

    "con2fbmap 1 8" works ! strange

    • Kaspars says:

      Thanks for sharing that Agge! Are you saying that supplying the extraargs argument it doesn’t work while using con2fbmap it does? Are you able to see any errors messages during the boot over UART? Did you add a space before the extraargs parameter in /boot/armbianEnv.txt?

      • Agge says:

        Should there be a space before extraargs ?
        Have to look into that tonight.

        The uart halts just when kernel starts booting well halts. So no output from it

        • Kaspars says:

          Yes, there should be a space before extraargs. It probably halts at that line because of a formatting error.

    • Miguel says:

      Hey. I’m having exactly the same issue. The screen image in my tft seems to be very unstable. It gets stuck very often, did you sorted the problem out at the end ?

  7. PeMi says:

    have ili9340 2,4″ display at home, and pi zero with ext board on the way, looking to build a “internet radio” and “spotify connect” player by connecting external speakers – anyone has experience with this? any good tips on what software to use? Ideal internet radios as playlist of strem-urls, so just need some nice simple ui maybe? to control vlc? or any tips?

    and how to provide the spotify connect functionality (to show “play on xy”)? maybe even provide controls for this too?

  8. MrShark says:

    hi, do you think can be used with this module?

    can’t find the chipset on that page, but it seems to work with standard raspbian.

  9. Karthik says:

    Hey, your guide is very helpful for LCD display with Armbian OS. I am trying to do the same with Lubuntu Image available on Orange pi zero website.
    What would be the procedure to configure the same for 3.2 TFT LCD

    • Kaspars says:

      It should be exactly the same as long as you know the TFT chip name, I think. Did you try it already?

      • Karthik says:

        where to add the following line:

        extraargs="fbcon=map:8"

        I don’t see any config.txt or env.txt at /boot/ location

        • Kaspars says:

          Does it work when you manually run the con2fbmap 1 8 command after doing sudo modprobe fbtft_device ...? It should be working before you add it permanently to the boot file.

  10. Tobi says:

    Hi, I’ve managed to get the kumantech 3.5 inch screen kinda working. But unfortunately it stops working a few seconds after booting. It hangs and doesn’t update the screen anymore.

    I’m testing it with a waveshare 3.2 inch display right now and this display hangs after a while, too. But this time it took several minutes before it stopped working.

    Do you have any idea what’s going wrong here?

    I’m on the latest Armbian Ubuntu xenial image.

Leave a Reply