Waveshare display 3.5inch RPi LCD (C) not working on X

First of all, thanks for creating DietPi. All my Raspberry’s are running it. Right I’m having an issue when setting up a 3.5 LCD (C) Waveshare display. I could already set it up using Raspberry Pi OS. However, this is not the distribution I like.

I found in the forum some posts about the Waveshare LCD’s, but they were about version A. Besides that, I didn’t have problems installing the vendor driver. For instance, console messages are shown with no problems.

Thus, I decided to try to set DietPi up to use this display.

Required Information

  • DietPi version
G_DIETPI_VERSION_CORE=8
G_DIETPI_VERSION_SUB=13
G_DIETPI_VERSION_RC=2
G_GITBRANCH='master'
G_GITOWNER='MichaIng'
G_LIVE_PATCH_STATUS[0]='applied'
G_LIVE_PATCH_STATUS[1]='not applicable'
  • Distro version | bullseye 0
  • Kernel version | Linux deponija.salgadinho 5.15.84-v8+ #1613 SMP PREEMPT Thu Jan 5 12:03:08 GMT 2023 aarch64 GNU/Linux
  • SBC model | RPi 4 Model B (aarch64)
  • Power supply used | Original RPI power supply from Raspberry
  • SD card used | SanDisk ultra, 32GB, Class 10

Steps to reproduce

  1. Install DietPi using DietPi_RPi-ARMv8-Bullseye.img image.
  2. Install vendor waveshare35c driver
  3. Install all the required software (xinit, lxde, fbturbo driver, etc).
  4. Select Desktops > LightDM login mask or Desktops > Automatic login

Expected behaviour

  • LXDE should execute, and the login window should be prompted, or auto login

Actual behaviour

  • System boots, console messages are shown, but X doesn’t launch.

Additional information

[dietpi@deponija ~]$ dmesg | grep -E "fb|graphics|display|touch|ads"
[    0.000000]   DMA32    [mem 0x0000000040000000-0x00000000fbffffff]
[    0.000000]   node   0: [mem 0x0000000040000000-0x00000000fbffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x00000000fbffffff]
[    0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=480 bcm2708_fb.fbheight=320 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:BB:D2:7C vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash fbcon=map:10 fbcon=font:ProFont6x11
[    0.104287] raspberrypi-firmware soc:firmware: Firmware hash is 8ba17717fbcedd4c3b6d4bce7e50c7af4155cba9
[    1.225959] bcm2708_fb soc:fb: FB found 1 display(s)
[    1.233497] bcm2708_fb soc:fb: Registered framebuffer for display 0, size 480x320
[    4.781805] fbtft: module is from the staging directory, the quality is unknown, you have been warned.
[    4.786973] fb_ili9486: module is from the staging directory, the quality is unknown, you have been warned.
[    4.787554] SPI driver fb_ili9486 has no spi_device_id for ilitek,ili9486
[    4.787838] fb_ili9486 spi0.0: fbtft_property_value: regwidth = 16
[    4.787863] fb_ili9486 spi0.0: fbtft_property_value: buswidth = 8
[    4.787887] fb_ili9486 spi0.0: fbtft_property_value: debug = 0
[    4.787905] fb_ili9486 spi0.0: fbtft_property_value: rotate = 90
[    4.787925] fb_ili9486 spi0.0: fbtft_property_value: fps = 30
[    4.787941] fb_ili9486 spi0.0: fbtft_property_value: txbuflen = 32768
[    4.806333] SPI driver ads7846 has no spi_device_id for ti,tsc2046
[    4.806365] SPI driver ads7846 has no spi_device_id for ti,ads7843
[    4.806377] SPI driver ads7846 has no spi_device_id for ti,ads7845
[    4.806388] SPI driver ads7846 has no spi_device_id for ti,ads7873
[    4.807501] ads7846 spi0.1: supply vcc not found, using dummy regulator
[    4.809722] ads7846 spi0.1: touchscreen, irq 47
[    5.292046] graphics fb1: fb_ili9486 frame buffer, 480x320, 300 KiB video memory, 32 KiB buffer memory, fps=31, spi0.0 at 115 MHz

Checking LightDM logs, it seems that the X server keeps restarting:

[+2146.15s] DEBUG: XServer 0: Logging to /var/log/lightdm/x-0.log
[+2146.15s] DEBUG: XServer 0: Writing X server authority to /var/run/lightdm/root/:0
[+2146.15s] DEBUG: XServer 0: Launching X Server
[+2146.15s] DEBUG: Launching process 211363: /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
[+2146.15s] DEBUG: XServer 0: Waiting for ready signal from X server :0
[+2146.29s] DEBUG: Process 211363 exited with return value 127

Checking the file /var/log/lightdm/x-0.log, I found the following:

X.Org X Server 1.20.11
X Protocol Version 11, Revision 0
Build Operating System: linux Debian
Current Operating System: Linux deponija.salgadinho 5.15.84-v8+ #1613 SMP PREEMPT Thu Jan 5 12:03:08 GMT 2023 aarch64
Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=480 bcm2708_fb.fbheight=320 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:BB:D2:7C vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash fbcon=map:10 fbcon=font:ProFont6x11
Build Date: 20 December 2022  11:29:25PM
xorg-server 2:1.20.11-1+rpt1+deb11u4 (https://www.debian.org/support)
Current version of pixman: 0.40.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat Jan 28 11:30:36 2023
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
modprobe: FATAL: Module g2d_23 not found in directory /lib/modules/5.15.84-v8+
/usr/lib/xorg/Xorg: symbol lookup error: /usr/lib/xorg/modules/drivers/fbturbo_drv.so: undefined symbol: shadowUpdatePackedWeak

According /var/log/Xorg.0.log FBTurbo driver seems to load, and the hardware is well recognized:

[   344.903] (II) LoadModule: "fbturbo"
[   344.903] (II) Loading /usr/lib/xorg/modules/drivers/fbturbo_drv.so
[   344.904] (II) Module fbturbo: vendor="X.Org Foundation"
[   344.904]    compiled for 1.20.11, module version = 0.5.1
[   344.904]    Module class: X.Org Video Driver
[   344.904]    ABI class: X.Org Video Driver, version 24.1
[   344.904] (II) FBTURBO: driver for framebuffer: fbturbo
[   344.904] (WW) Falling back to old probe method for fbturbo
[   344.904] (II) Loading sub module "fbdevhw"
[   344.904] (II) LoadModule: "fbdevhw"
[   344.905] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[   344.905] (II) Module fbdevhw: vendor="X.Org Foundation"
[   344.905]    compiled for 1.20.11, module version = 0.0.2
[   344.905]    ABI class: X.Org Video Driver, version 24.1
[   344.905] (II) FBTURBO(0): using /dev/fb0
[   344.905] (II) FBTURBO(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[   344.905] (==) FBTURBO(0): Depth 24, (==) framebuffer bpp 32
[   344.905] (==) FBTURBO(0): RGB weight 888
[   344.905] (==) FBTURBO(0): Default visual is TrueColor
[   344.905] (==) FBTURBO(0): Using gamma correction (1.0, 1.0, 1.0)
[   344.905] (II) FBTURBO(0): hardware: BCM2708 FB (video memory: 600kB)
[   344.906] (DB) xf86MergeOutputClassOptions unsupported bus type 0
[   344.906] (**) FBTURBO(0): Option "fbdev" "/dev/fb0"
[   344.906] (**) FBTURBO(0): Option "SwapbuffersWait" "true"
[   344.906] (II) FBTURBO(0): processor: Unknown
[   344.906] (II) FBTURBO(0): checking modes against framebuffer device...
[   344.906] (II) FBTURBO(0): checking modes against monitor...
[   344.906] (II) FBTURBO(0): Virtual size is 480x320 (pitch 480)
[   344.906] (**) FBTURBO(0):  Built-in mode "current"
[   344.906] (==) FBTURBO(0): DPI set to (96, 96)

So, it seems that the FBTurbo driver is not working as expected. Any suggestion?

I’d like to add some notes. I’ve been reading some a little bit more and found the following suggestion on the Net:

To add these lines in /var/config.txt:

[all]
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
arm_64bit=1

Actually, it didn’t help, but the behavior is a little bit different. For instance, the line:

/usr/lib/xorg/Xorg: symbol lookup error: /usr/lib/xorg/modules/drivers/fbturbo_drv.so: undefined symbol: shadowUpdatePackedWeak

Doesn’t exist anymore in the file /var/log/lightdm/x-0.log, and FBTurbo driver doesn’t load as expected:

[ 225.006] (EE) FBTURBO(0): FBIOPUTCMAP: Invalid argument

Best regards