RP5 & WaveShare 4.3 inch DSI LCD didn’t work

Please check if using

dtoverlay=vc4-kms-v3d,nohdmi
dtoverlay=vc4-kms-dsi-7inch

in “/boot/userconfig.txt” helps.

Unfortunately adding to userconfig.txt did not help
dtoverlay=vc4-kms-v3d,nohdmi
dtoverlay=vc4-kms-dsi-7inch

  • restart

… and what about

dtoverlay=vc4-kms-v3d-pi5,nohdmi
dtoverlay=vc4-kms-dsi-7inch

?

I tested it by adding it to userconfig.txt

dtoverlay=vc4-kms-v3d-pi5,nohdmi
dtoverlay=vc4-kms-dsi-7inch

Unfortunately, the LCD still doesn’t work

Photo showing the LCD connection to the RP5.
As you can see, it works with RoPieee, but after changing the card to Volumio, the LCD is black, even the screen backlight does not turn on.

Being a bit suspicious of the problem - documented steps.

Hardware

  1. Waveshare 4.3 inch DSI LCD:

  2. Raspberry Pi 5 4GB:
    Since I am planning to use this build for variety of tasks - added RTC battery.

  3. NVMe HAT PoE
    This particular HAT has Power Over Ethernet and M.2 PCIe port.
    GEN3 NVMe

Assembly

  1. Heatsink attached with clips to the Raspberry Pi 5, DSI port 1 connected to the screen

  2. NVMe PoE HAT mounted and PCIe ribbon connected

Setup

Boot from MicroSD and NVMe requires the same steps and produces identical result

  1. After initial setup with a browser using ssh client as volumio user and password
    Without any changes to any files only edit
    nano /boot/userconfig.txt
    and add
    dtoverlay=vc4-kms-dsi-7inch

  2. Reboot
    After reboot the standard linux prompt is visible on the screen

  3. Install Touch Display plugin


    Wait until plugin’s installation completes, then activate and reboot

Result

  1. After reboot Volumio screen is available

  2. Touch navigation also works as expected

Kind Regards,

yeah seems your rev2.2 is supported, the lower revs are failing:
image

According to Waveshare,

If you purchased the product earlier, such as the Rev2.1 version (or older), due to the power detection mechanism of Pi5, it may misidentify the capacitors on the DSI LCD as a false short-circuit state, preventing the system from booting. In this situation, you can manually remove the large capacitors at the four positions marked in red circles in the image below.

image

Comparing images with revision 2.2 board it seems to be the case.

Kind Regards,

I have recorded Raspberry Pi OS 64 bit on another card.
The display works fine, the touch works fine too.


Hey @Piteros ,

Can you kindly post the picture of the back of your DSI screen please?

Kind Regards,

My display is rev. 2.1 with capacitors removed. Without removing these 5 pcs. capacitors RP5 does not start. I did it according to WaveShare recommendations.



Thank you @Piteros,

Can you post result from uname -a on Raspberry Pi OS 64 bit please?

Kind Regards,

Linux raspberrypi 6.6.47+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.47-1+rpt1 (2024-09-02) aarch64 GNU/Linux

Kind Regards

Hey @Piteros,

This is interesting. Seems that RPi5 64bit 16k page size kernel makes a play here.

Let’s take this to the next level.

On Raspberry Pi OS 64 at the beginning of the /boot/firmware/config.txt please force different page size kernel:

kernel=kernel8.img

Does the screen still work after reboot?

Kind Regards,

Feels like I am being stupid or fooled…
image

Seems an identical screen:

Just dead, but working on the official rpi OS…

rPi OS:

 sudo dmesg | grep -i dsi
[    1.094466] platform 1f00130000.dsi: Fixed dependency cycle(s) with /axi/pcie                                                                                                                                   @120000/rp1/dsi@128000/bridge@0/ports/port@0/endpoint
[    1.098519] platform 1f00130000.dsi: bcm2712_iommu_probe_device: MMU 10000052                                                                                                                                   80.iommu
[    1.098522] platform 1f00130000.dsi: bcm2712_iommu_device_group: MMU 10000052                                                                                                                                   80.iommu
[    1.098527] platform 1f00130000.dsi: Adding to iommu group 2
[    1.098534] platform 1f00130000.dsi: bcm2712_iommu_attach_dev: MMU 1000005280                                                                                                                                   .iommu
[    1.575684] drm-rp1-dsi 1f00130000.dsi: bcm2712_iommu_of_xlate: MMU 100000528                                                                                                                                   0.iommu
[    1.575945] mipi-dsi 1f00130000.dsi.0: Fixed dependency cycle(s) with /panel_                                                                                                                                   disp@1/port/endpoint
[   11.741203] mipi-dsi 1f00130000.dsi.0: deferred probe pending
[   16.157266] drm-rp1-dsi 1f00130000.dsi: rp1dsi_host_attach: Attach DSI device                                                                                                                                    name=tc358762 channel=0 lanes=1 format=0 flags=0x815 hs_rate=0 lp_rate=0
[   16.157973] [drm] Initialized drm-rp1-dsi 1.0.0 0 for 1f00130000.dsi on minor                                                                                                                                    0
[   30.581091] drm-rp1-dsi 1f00130000.dsi: [drm] rp1dsi: Nominal byte clock 7200                                                                                                                                   0000; scale by 4/12
[   49.147672] drm-rp1-dsi 1f00130000.dsi: [drm] fb0: drm-rp1-dsidrmf frame buff                                                                                                                                   er device
[   49.166127] drm-rp1-dsi 1f00130000.dsi: rp1dsi_bind succeeded
volumio@rpi5:~$
volumio@rpi5:~$ dmesg | grep -i dsi
[    1.098472] platform 1f00130000.dsi: Fixed dependency cycle(s) with /axi/pcie@120000/rp1/dsi@128000/bridge@0/ports/port@0/endpoint
[    1.102674] platform 1f00130000.dsi: bcm2712_iommu_probe_device: MMU 1000005280.iommu
[    1.102677] platform 1f00130000.dsi: bcm2712_iommu_device_group: MMU 1000005280.iommu
[    1.102683] platform 1f00130000.dsi: Adding to iommu group 2
[    1.102691] platform 1f00130000.dsi: bcm2712_iommu_attach_dev: MMU 1000005280.iommu
[    1.587934] drm-rp1-dsi 1f00130000.dsi: bcm2712_iommu_of_xlate: MMU 1000005280.iommu
[    1.588189] mipi-dsi 1f00130000.dsi.0: Fixed dependency cycle(s) with /panel_disp@1/port/endpoint
[   11.741249] mipi-dsi 1f00130000.dsi.0: deferred probe pending
[   21.301241] drm-rp1-dsi 1f00130000.dsi: rp1dsi_host_attach: Attach DSI device name=tc358762 channel=0 lanes=1 format=0 flags=0x815 hs_rate=0 lp_rate=0
[   21.301860] [drm] Initialized drm-rp1-dsi 1.0.0 0 for 1f00130000.dsi on minor 0
[   21.303531] drm-rp1-dsi 1f00130000.dsi: [drm] rp1dsi: Nominal byte clock 72000000; scale by 4/12
[   50.107650] drm-rp1-dsi 1f00130000.dsi: [drm] fb0: drm-rp1-dsidrmf frame buffer device
[   50.129001] drm-rp1-dsi 1f00130000.dsi: rp1dsi_bind succeeded

Complete configuration on my working setup

/boot/config.txt

### DO NOT EDIT THIS FILE ###
### APPLY CUSTOM PARAMETERS TO userconfig.txt ###
initramfs volumio.initrd
gpu_mem=128
gpu_mem_256=32
gpu_mem_512=32
gpu_mem_1024=128
max_usb_current=1
[pi5]
usb_max_current_enable=1
[all]
include volumioconfig.txt
include userconfig.txt

/boot/volumioconfig.txt

### DO NOT EDIT THIS FILE ###
### APPLY CUSTOM PARAMETERS TO userconfig.txt ###
[cm4]
dtoverlay=dwc2,dr_mode=host
otg_mode=1
[pi5]
dtoverlay=vc4-kms-v3d-pi5
# dtparam=uart0_console # Disabled by default
dtparam=nvme
dtparam=pciex1_gen=2
[all]
arm_64bit=0
dtparam=audio=on
audio_pwm_mode=2
dtparam=i2c_arm=on
disable_splash=1
hdmi_force_hotplug=1
force_eeprom_read=0

/boot/userconfig.txt

# Add your custom config.txt options to this file, which will be preserved during updates
dtoverlay=vc4-kms-dsi-7inch

/etc/X11/xorg.conf.d/99-vc4.conf

Section “OutputClass”
        Identifier “rp1”
        MatchDriver “rp1-vec|rp1-dsi|rp1-dpi”
        Driver “modesetting”
        Option “PrimaryGPU” “true”
EndSection

/etc/X11/xorg.conf.d/95-touch_display-plugin.conf

# This file is managed by the Touch Display plugin: Do not alter!
# It will be deleted when the Touch Display plugin gets uninstalled.
Section “InputClass”
        Identifier “Touch rotation”
        MatchIsTouchscreen “on”
        MatchDevicePath “/dev/input/event*”
        MatchDriver “libinput|evdev”
EndSection

Section “Monitor”
        Identifier “DSI-2”
        Option “Rotate” “normal”
EndSection

Please compare.

Copied over the files, which where already identical.
Left out the touch-display part as the prompt is not even showing.

/boot/userconfig.txt
/boot/volumioconfig.txt
/boot/config.txt

The wiki of Waveshare mention you need Bookworm on a rPi5, but since your running the same screen with Volumio V3.742…

Lets see the drm handling:

dmesg | grep -iE ‘dsi|drm|fb0|mipi|rp1|vc4’

Kind Regards,