[GUIDE] Waveshare 11.9"/7.9" HDMI LCD Display Configuration for Volumio 4

Hey @matmatth95,

Next step, one change only. We take the Touch Display plugin out of the picture entirely so nothing starts the graphical interface, and we look at what the bare console does on the panel.

  1. In the WebUI, go to Plugins, then Installed Plugins, find Touch Display, and uninstall it. Uninstall, not just disable or stop. Stopping or disabling leaves it installed, and it will start again on the next boot, which would defeat this test. It has to be removed.

  2. Once it is uninstalled, do a full power cycle: shut down, remove power, restore power.

  3. Let it boot fully. With the plugin gone, no Volumio interface will load. That is expected and correct for this test. What should appear on the screen instead is the plain text console (tty1) showing the Volumio onboarding screen, with a QR code and the device local IP address.

  4. Two things to capture:

First, photograph the screen. If it shows that console QR and IP, take a photo of it. If the screen is black with no text at all, tell me that instead, because that is also a result.

Second, over SSH while it is running:

fbset

Paste the fbset output in triple backticks and attach the photo.

This shows whether the panel is being driven at the console level once the graphical layer is removed. Send the photo and the fbset output and we go from there.

Kind Regards,

While uninstalling touch display, the screen turned on and showed me the QR/IP.

When Power cycled, splash screen logo showed and then after showed the QR/IP again.

Attached is the QR/IP after power cycle.

fbset output:

volumio@matty-streamer-rpi-4:~$ fbset
open /dev/fb0: Permission denied

Thank you

Hey @matmatth95,

The fbset command needs root, that is all the permission error means. Run it again with sudo:

sudo fbset

Paste the full output in triple backticks. Nothing else needs changing - leave the system exactly as it is now, with Touch Display uninstalled.

Kind Regards,

Here’s the output for the sudo fbset:

[sudo] password for volumio:

mode "400x1280"
    geometry 400 1280 400 1280 16
    timings 0 0 0 0 0 0 0
    rgba 5/11,6/5,5/0,0/0
endmode

volumio@matty-streamer-rpi-4:~$

Hey @matmatth95,

That is exactly what I needed to see. The framebuffer is at 400x1280, the native portrait resolution of your panel, and it is stable. That confirms the display itself, the firmware, and the graphics driver are all working correctly at this stage. The base is good.

Now reinstall the Touch Display plugin from the plugin store in the WebUI: Plugins, find Touch Display, install it. Let it finish installing and starting.

Then report back what the screen does: whether the interface comes up and stays, or drops as before. Leave everything else as it is.

Kind Regards,

Installing it now, but looking at my hardware now, the screen is off. Not sure when it happened. Is that an issue?

Hey @matmatth95,

Let the Touch Display install finish completely first. Do not interrupt it.

Once it has finished, regardless of what the screen does, I need a fresh log. Submit one from http://volumio.local/dev (or http://192.168.254.107/dev), and paste the link it gives you here.

Then also tell me what the screen does:

  1. Stays off.
  2. The QR console screen returns.
  3. The Volumio interface appears and stays.
  4. The Volumio interface appears and then drops as before.

The log is needed either way, success or not. Send the log link and the screen result together.

Kind Regards,

Here’s the log:

http://logs.volumio.org/volumio/cd7MbU9.html

After enabling the touch display, the screen stays off.

I’m so sorry if this is taking a lot of your time and effort.

Hey @matmatth95,

No need to apologize. This is methodical work and we are close to isolating it.

The submitted log confirms the lower display stack is correct: the framebuffer comes up at native 400x1280, the vc4 driver binds, and the X server does launch. What the system log does not contain is the X server’s own log, which is the file that will show why the output goes dark once the kiosk starts. That file lives only on the running device and is lost on reboot, so we need to capture it live now, before any power cycle.

Over SSH, while the screen is still in its current off state, run these and paste the full output here:

cat /var/log/Xorg.0.log

Do not reboot before capturing these. /var/log is volatile and the X log is discarded on restart.

Kind Regards,

Thank you for your affirmation, @nerd. I really appreciate your help a lot.

Here’s the log, never power cycled after the install so this is the fresh one.

[  3794.338]
X.Org X Server 1.21.1.7
X Protocol Version 11, Revision 0
[  3794.338] Current Operating System: Linux matty-streamer-rpi-4 6.12.74-v7l+ #1948 SMP Mon Mar  2 11:27:49 GMT 2026 armv7l
[  3794.338] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave nvme.max_host_mem_size_mb=0 snd_bcm2835.enable_hdmi=0 snd_bcm2835.enable_hdmi=0 video=HDMI-A-1:400x1280M@60 numa=fake=2 system_heap.max_order=0 iommu_dma_numa_policy=interleave smsc95xx.macaddr=E4:5F:01:84:6C:AA vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  splash plymouth.ignore-serial-consoles dwc_otg.fiq_enable=1 dwc_otg.fiq_fsm_enable=1 dwc_otg.fiq_fsm_mask=0xF dwc_otg.nak_holdoff=1 quiet console=ttyS0,115200 console=tty1 imgpart=UUID=9caf6474-168f-4972-add4-ace36a467bc2 imgfile=/volumio_current.sqsh bootpart=UUID=807D-2966 datapart=UUID=bea3e05c-62cf-4b22-a58d-66213927f56a uuidconfig=cmdline.txt rootwait bootdelay=7 logo.nologo vt.global_cursor_default=0 net.ifnames=0 snd_bcm2835.enable_hdmi=1 snd_bcm2835.enable_headphones=1 loglevel=0 nodebug use_kmsg=no video=HDMI-A-1:400x1280M@60,rotate=90 plymouth=90
[  3794.338] xorg-server 2:21.1.7-3+rpt3+deb12u12 (https://www.debian.org/support)
[  3794.338] Current version of pixman: 0.44.0
[  3794.338]    Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
[  3794.338] Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[  3794.338] (==) Log file: "/var/log/Xorg.0.log", Time: Tue Jun 30 23:54:35 2026
[  3794.359] (==) Using config directory: "/etc/X11/xorg.conf.d"
[  3794.359] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[  3794.366] (==) No Layout section.  Using the first Screen section.
[  3794.366] (==) No screen section available. Using defaults.
[  3794.366] (**) |-->Screen "Default Screen Section" (0)
[  3794.366] (**) |   |-->Monitor "<default monitor>"
[  3794.367] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[  3794.367] (**) Option "Debug" "dmabuf_capable"
[  3794.367] (==) Automatically adding devices
[  3794.367] (==) Automatically enabling devices
[  3794.367] (==) Automatically adding GPU devices
[  3794.367] (==) Automatically binding GPU devices
[  3794.371] (==) Max clients allowed: 256, resource mask: 0x1fffff
[  3794.372] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[  3794.372]    Entry deleted from font path.
[  3794.376] (==) FontPath set to:
        /usr/share/fonts/X11/misc,
        /usr/share/fonts/X11/100dpi/:unscaled,
        /usr/share/fonts/X11/75dpi/:unscaled,
        /usr/share/fonts/X11/Type1,
        /usr/share/fonts/X11/100dpi,
        /usr/share/fonts/X11/75dpi,
        built-ins
[  3794.376] (==) ModulePath set to "/usr/lib/xorg/modules"
[  3794.376] (II) The server relies on udev to provide the list of input devices.
        If no devices become available, reconfigure udev or disable AutoAddDevices.
[  3794.376] (II) Loader magic: 0x216080
[  3794.376] (II) Module ABI versions:
[  3794.376]    X.Org ANSI C Emulation: 0.4
[  3794.376]    X.Org Video Driver: 25.2
[  3794.376]    X.Org XInput driver : 24.4
[  3794.376]    X.Org Server Extension : 10.0
[  3804.645] (--) using VT number 2

[  3804.645] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[  3804.654] (II) xfree86: Adding drm device (/dev/dri/card1)
[  3804.654] (II) Platform probe for /sys/devices/platform/gpu/drm/card1
[  3855.844] (II) xfree86: Adding drm device (/dev/dri/card0)
[  3855.844] (II) Platform probe for /sys/devices/platform/v3dbus/fec00000.v3d/drm/card0
[  3855.845] (**) OutputClass "vc4" setting /dev/dri/card1 as PrimaryGPU
[  3855.846] (II) LoadModule: "glx"
[  3855.855] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[  3855.895] (II) Module glx: vendor="X.Org Foundation"
[  3855.895]    compiled for 1.21.1.7, module version = 1.0.0
[  3855.895]    ABI class: X.Org Server Extension, version 10.0
[  3855.895] (II) Applying OutputClass "vc4" to /dev/dri/card1
[  3855.895]    loading driver: modesetting
[  3855.895] (II) Applying OutputClass "vc4" to /dev/dri/card1
[  3855.895]    loading driver: modesetting
[  3855.895] (==) Matched modesetting as autoconfigured driver 0
[  3855.895] (==) Matched fbdev as autoconfigured driver 1
[  3855.895] (==) Assigned the driver to the xf86ConfigLayout
[  3855.895] (II) LoadModule: "modesetting"
[  3855.895] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[  3857.342] (II) Module modesetting: vendor="X.Org Foundation"
[  3857.342]    compiled for 1.21.1.7, module version = 1.21.1
[  3857.342]    Module class: X.Org Video Driver
[  3857.342]    ABI class: X.Org Video Driver, version 25.2
[  3857.342] (II) LoadModule: "fbdev"
[  3857.343] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[  3857.344] (II) Module fbdev: vendor="X.Org Foundation"
[  3857.344]    compiled for 1.21.1.3, module version = 0.5.0
[  3857.344]    Module class: X.Org Video Driver
[  3857.344]    ABI class: X.Org Video Driver, version 25.2
[  3857.344] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[  3857.344] (II) FBDEV: driver for framebuffer: fbdev
[  3959.522] (II) modeset(0): using drv /dev/dri/card1
[  3959.522] (WW) Falling back to old probe method for fbdev
[  3959.522] (II) Loading sub module "fbdevhw"
[  3959.522] (II) LoadModule: "fbdevhw"
[  3959.523] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[  3959.527] (II) Module fbdevhw: vendor="X.Org Foundation"
[  3959.528]    compiled for 1.21.1.7, module version = 0.0.2
[  3959.528]    ABI class: X.Org Video Driver, version 25.2
[  3959.529] (II) modeset(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[  3959.529] (==) modeset(0): Depth 24, (==) framebuffer bpp 32
[  3959.529] (II) Applying OutputClass "vc4" options to /dev/dri/card1
[  3959.529] (II) Applying OutputClass "vc4" options to /dev/dri/card1
[  3959.529] (==) modeset(0): RGB weight 888
[  3959.529] (==) modeset(0): Default visual is TrueColor
[  3959.529] (II) Loading sub module "glamoregl"
[  3959.529] (II) LoadModule: "glamoregl"
[  3959.529] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[  3959.576] (II) Module glamoregl: vendor="X.Org Foundation"
[  3959.576]    compiled for 1.21.1.7, module version = 1.0.1
[  3959.576]    ABI class: X.Org ANSI C Emulation, version 0.4
[  3959.857] (II) modeset(0): glamor X acceleration enabled on V3D 4.2.14.0
[  3959.857] (II) modeset(0): glamor initialized
[  3959.857] (==) modeset(0): VariableRefresh: disabled
[  3959.857] (==) modeset(0): AsyncFlipSecondaries: disabled
[  3959.908] (II) modeset(0): Output HDMI-1 has no monitor section
[  3959.908] (II) modeset(0): Output HDMI-2 has no monitor section
[  3970.510] (II) modeset(0): EDID for output HDMI-1
[  3970.510] (II) modeset(0): Manufacturer: HOT  Model: 3433  Serial#: 1
[  3970.510] (II) modeset(0): Year: 2020  Week: 20
[  3970.510] (II) modeset(0): EDID Version: 1.3
[  3970.510] (II) modeset(0): Digital Display Input
[  3970.510] (II) modeset(0): Indeterminate output size
[  3970.510] (II) modeset(0): Gamma: 2.20
[  3970.510] (II) modeset(0): No DPMS capabilities specified
[  3970.510] (II) modeset(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4
[  3970.510] (II) modeset(0): First detailed timing is preferred mode
[  3970.510] (II) modeset(0): redX: 0.625 redY: 0.340   greenX: 0.280 greenY: 0.595
[  3970.510] (II) modeset(0): blueX: 0.155 blueY: 0.070   whiteX: 0.283 whiteY: 0.298
[  3970.510] (II) modeset(0): Manufacturer's mask: 0
[  3970.510] (II) modeset(0): Supported detailed timing:
[  3970.511] (II) modeset(0): clock: 43.0 MHz   Image Size:  60 x 191 mm
[  3970.511] (II) modeset(0): h_active: 400  h_sync: 470  h_sync_end 480 h_blank_end 540 h_border: 0
[  3970.511] (II) modeset(0): v_active: 1280  v_sync: 1300  v_sync_end 1310 v_blanking: 1322 v_border: 0
[  3970.511] (II) modeset(0): Supported detailed timing:
[  3970.511] (II) modeset(0): clock: 48.0 MHz   Image Size:  320 x 1480 mm
[  3970.511] (II) modeset(0): h_active: 320  h_sync: 420  h_sync_end 430 h_blank_end 520 h_border: 0
[  3970.511] (II) modeset(0): v_active: 1480  v_sync: 1540  v_sync_end 1550 v_blanking: 1556 v_border: 0
[  3970.511] (II) modeset(0): Monitor name: WaveShsare
[  3970.511] (II) modeset(0): Ranges: V min: 20 V max: 120 Hz, H min: 1 H max: 255 kHz, PixClock max 295 MHz
[  3970.511] (II) modeset(0): Supported detailed timing:
[  3970.511] (II) modeset(0): clock: 48.0 MHz   Image Size:  320 x 1480 mm
[  3970.511] (II) modeset(0): h_active: 320  h_sync: 420  h_sync_end 430 h_blank_end 520 h_border: 0
[  3970.511] (II) modeset(0): v_active: 1480  v_sync: 1540  v_sync_end 1550 v_blanking: 1556 v_border: 0
[  3970.511] (II) modeset(0): Supported detailed timing:
[  3970.511] (II) modeset(0): clock: 48.0 MHz   Image Size:  320 x 1480 mm
[  3970.511] (II) modeset(0): h_active: 320  h_sync: 420  h_sync_end 430 h_blank_end 520 h_border: 0
[  3970.511] (II) modeset(0): v_active: 1480  v_sync: 1540  v_sync_end 1550 v_blanking: 1556 v_border: 0
[  3970.511] (II) modeset(0): Supported detailed timing:
[  3970.511] (II) modeset(0): clock: 48.0 MHz   Image Size:  320 x 1480 mm
[  3970.511] (II) modeset(0): h_active: 320  h_sync: 420  h_sync_end 430 h_blank_end 520 h_border: 0
[  3970.511] (II) modeset(0): v_active: 1480  v_sync: 1540  v_sync_end 1550 v_blanking: 1556 v_border: 0
[  3970.511] (II) modeset(0): Supported detailed timing:
[  3970.511] (II) modeset(0): clock: 48.0 MHz   Image Size:  320 x 1480 mm
[  3970.511] (II) modeset(0): h_active: 320  h_sync: 420  h_sync_end 430 h_blank_end 520 h_border: 0
[  3970.511] (II) modeset(0): v_active: 1480  v_sync: 1540  v_sync_end 1550 v_blanking: 1556 v_border: 0
[  3970.511] (II) modeset(0): Number of EDID sections to follow: 1
[  3970.511] (II) modeset(0): EDID (in hex):
[  3970.511] (II) modeset(0):   00ffffffffffff0021f4333401000000
[  3970.511] (II) modeset(0):   141e0103800000780a0dc9a057479827
[  3970.511] (II) modeset(0):   12484c00000001010101010101010101
[  3970.511] (II) modeset(0):   010101010101cc10908c10002a50460a
[  3970.511] (II) modeset(0):   4a043cbf00000018c01240c810c84c50
[  3970.511] (II) modeset(0):   640aca0c40c815000018000000fc0057
[  3970.511] (II) modeset(0):   6176655368736172650a2020000000fd
[  3970.511] (II) modeset(0):   00147801ff1d000a202020202020011e
[  3970.511] (II) modeset(0):   02031a7147c646464646464623090701
[  3970.511] (II) modeset(0):   8301000065030c001000c01240c810c8
[  3970.511] (II) modeset(0):   4c50640aca0c40c815000018c01240c8
[  3970.511] (II) modeset(0):   10c84c50640aca0c40c815000018c012
[  3970.511] (II) modeset(0):   40c810c84c50640aca0c40c815000018
[  3970.511] (II) modeset(0):   c01240c810c84c50640aca0c40c81500
[  3970.511] (II) modeset(0):   00180000000000000000000000000000
[  3970.511] (II) modeset(0):   00000000000000000000000000000067
[  3970.511] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (60/191), consider adding a quirk
[  3970.511] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  3970.511] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  3970.511] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  3970.511] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  3970.511] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  3970.511] (II) modeset(0): Printing probed modes for output HDMI-1
[  3970.511] (II) modeset(0): Modeline "400x1280"x60.2   43.00  400 470 480 540  1280 1300 1310 1322 -hsync -vsync (79.6 kHz eP)
[  3970.511] (II) modeset(0): Modeline "1280x720"x100.0  148.50  1280 1720 1760 1980  720 725 730 750 +hsync +vsync (75.0 kHz e)
[  3970.511] (II) modeset(0): Modeline "320x1480"x59.3   48.00  320 420 430 520  1480 1540 1550 1556 -hsync -vsync (92.3 kHz e)
[  3970.511] (II) modeset(0): EDID for output HDMI-2
[  3970.511] (II) modeset(0): Output HDMI-1 connected
[  3970.511] (II) modeset(0): Output HDMI-2 disconnected
[  3970.512] (II) modeset(0): Using exact sizes for initial modes
[  3970.512] (II) modeset(0): Output HDMI-1 using initial mode 400x1280 +0+0
[  3970.512] (==) modeset(0): Using gamma correction (1.0, 1.0, 1.0)
[  3970.512] (==) modeset(0): DPI set to (96, 96)
[  3970.512] (II) Loading sub module "fb"
[  3970.512] (II) LoadModule: "fb"
[  3970.512] (II) Module "fb" already built-in
[  3970.512] (II) UnloadModule: "fbdev"
[  3970.512] (II) Unloading fbdev
[  3970.512] (II) UnloadSubModule: "fbdevhw"
[  3970.512] (II) Unloading fbdevhw
[  3970.691] (==) modeset(0): Backing store enabled
[  3970.691] (==) modeset(0): Silken mouse enabled
[  4339.732] (II) modeset(0): Initializing kms color map for depth 24, 8 bpc.
[  4339.733] (==) modeset(0): DPMS enabled
[  4339.733] (WW) modeset(0): Option "PrimaryGPU" is not used
[  4339.733] (II) modeset(0): [DRI2] Setup complete
[  4339.733] (II) modeset(0): [DRI2]   DRI driver: vc4
[  4339.733] (II) modeset(0): [DRI2]   VDPAU driver: vc4
[  4339.733] (II) Initializing extension Generic Event Extension
[  4339.735] (II) Initializing extension SHAPE
[  4339.736] (II) Initializing extension MIT-SHM
[  4339.737] (II) Initializing extension XInputExtension
[  4339.744] (II) Initializing extension XTEST
[  4339.745] (II) Initializing extension BIG-REQUESTS
[  4339.746] (II) Initializing extension SYNC
[  4339.747] (II) Initializing extension XKEYBOARD
[  4339.749] (II) Initializing extension XC-MISC
[  4339.750] (II) Initializing extension SECURITY
[  4339.751] (II) Initializing extension XFIXES
[  4339.752] (II) Initializing extension RENDER
[  4339.753] (II) Initializing extension RANDR
[  4339.755] (II) Initializing extension COMPOSITE
[  4339.756] (II) Initializing extension DAMAGE
[  4339.757] (II) Initializing extension MIT-SCREEN-SAVER
[  4339.757] (II) Initializing extension DOUBLE-BUFFER
[  4339.758] (II) Initializing extension RECORD
[  4339.759] (II) Initializing extension DPMS
[  4339.759] (II) Initializing extension Present
[  4339.760] (II) Initializing extension DRI3
[  4339.760] (II) Initializing extension X-Resource
[  4339.761] (II) Initializing extension XVideo
[  4339.762] (II) Initializing extension XVideo-MotionCompensation
[  4339.762] (II) Initializing extension SELinux
[  4339.762] (II) SELinux: Disabled on system
[  4339.762] (II) Initializing extension GLX
[  4339.802] (II) AIGLX: Loaded and initialized vc4
[  4339.802] (II) GLX: Initialized DRI2 GL provider for screen 0
[  4339.802] (II) Initializing extension XFree86-VidModeExtension
[  4339.803] (II) Initializing extension XFree86-DGA
[  4339.803] (II) Initializing extension XFree86-DRI
[  4339.803] (II) Initializing extension DRI2
[  4339.806] (II) modeset(0): Damage tracking initialized
[  4339.806] (II) modeset(0): Setting screen physical size to 105 x 338
[  4340.031] (II) config/udev: Adding input device WaveShare WaveShare (/dev/input/event4)
[  4340.031] (**) WaveShare WaveShare: Applying InputClass "libinput touchscreen catchall"
[  4340.031] (**) WaveShare WaveShare: Applying InputClass "Touch rotation"
[  4340.031] (II) LoadModule: "libinput"
[  4340.035] (II) Loading /usr/lib/xorg/modules/input/libinput_drv.so
[  4340.050] (II) Module libinput: vendor="X.Org Foundation"
[  4340.050]    compiled for 1.20.14, module version = 1.2.1
[  4340.050]    Module class: X.Org XInput Driver
[  4340.050]    ABI class: X.Org XInput driver, version 24.1
[  4340.050] (II) Using input driver 'libinput' for 'WaveShare WaveShare'
[  4340.050] (**) WaveShare WaveShare: always reports core events
[  4340.050] (**) Option "Device" "/dev/input/event4"
[  4340.088] (II) event4  - WaveShare WaveShare: is tagged by udev as: Touchscreen
[  4340.089] (II) event4  - WaveShare WaveShare: device is a touch device
[  4340.090] (II) event4  - WaveShare WaveShare: device removed
[  4340.160] (**) Option "config_info" "udev:/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:0712:000A.0001/input/input6/event4"
[  4340.160] (II) XINPUT: Adding extended input device "WaveShare WaveShare" (type: TOUCHSCREEN, id 6)
[  4340.161] (**) Option "AccelerationScheme" "none"
[  4340.161] (**) WaveShare WaveShare: (accel) selected scheme none/0
[  4340.161] (**) WaveShare WaveShare: (accel) acceleration factor: 2.000
[  4340.161] (**) WaveShare WaveShare: (accel) acceleration threshold: 4
[  4340.175] (II) event4  - WaveShare WaveShare: is tagged by udev as: Touchscreen
[  4340.175] (II) event4  - WaveShare WaveShare: device is a touch device
[  4340.183] (II) config/udev: Adding input device WaveShare WaveShare (/dev/input/mouse0)
[  4340.184] (II) No input driver specified, ignoring this device.
[  4340.184] (II) This device may have been added with another device file.
[  4340.186] (II) config/udev: Adding input device vc4-hdmi-0 (/dev/input/event0)
[  4340.186] (**) vc4-hdmi-0: Applying InputClass "libinput keyboard catchall"
[  4340.186] (II) Using input driver 'libinput' for 'vc4-hdmi-0'
[  4340.186] (**) vc4-hdmi-0: always reports core events
[  4340.186] (**) Option "Device" "/dev/input/event0"
[  4340.188] (II) event0  - vc4-hdmi-0: is tagged by udev as: Keyboard Pointingstick
[  4340.189] (II) event0  - vc4-hdmi-0: device is a pointer
[  4340.189] (II) event0  - vc4-hdmi-0: device is a keyboard
[  4340.189] (II) event0  - vc4-hdmi-0: device removed
[  4340.230] (II) libinput: vc4-hdmi-0: needs a virtual subdevice
[  4340.230] (**) Option "config_info" "udev:/sys/devices/platform/soc/fef00700.hdmi/rc/rc0/input0/event0"
[  4340.230] (II) XINPUT: Adding extended input device "vc4-hdmi-0" (type: MOUSE, id 7)
[  4340.231] (**) Option "AccelerationScheme" "none"
[  4340.231] (**) vc4-hdmi-0: (accel) selected scheme none/0
[  4340.231] (**) vc4-hdmi-0: (accel) acceleration factor: 2.000
[  4340.231] (**) vc4-hdmi-0: (accel) acceleration threshold: 4
[  4340.236] (II) event0  - vc4-hdmi-0: is tagged by udev as: Keyboard Pointingstick
[  4340.238] (II) event0  - vc4-hdmi-0: device is a pointer
[  4340.238] (II) event0  - vc4-hdmi-0: device is a keyboard
[  4340.242] (II) config/udev: Adding input device vc4-hdmi-0 HDMI Jack (/dev/input/event1)
[  4340.242] (II) No input driver specified, ignoring this device.
[  4340.242] (II) This device may have been added with another device file.
[  4340.245] (II) config/udev: Adding input device vc4-hdmi-1 (/dev/input/event2)
[  4340.245] (**) vc4-hdmi-1: Applying InputClass "libinput keyboard catchall"
[  4340.245] (II) Using input driver 'libinput' for 'vc4-hdmi-1'
[  4340.245] (**) vc4-hdmi-1: always reports core events
[  4340.245] (**) Option "Device" "/dev/input/event2"
[  4340.249] (II) event2  - vc4-hdmi-1: is tagged by udev as: Keyboard Pointingstick
[  4340.249] (II) event2  - vc4-hdmi-1: device is a pointer
[  4340.249] (II) event2  - vc4-hdmi-1: device is a keyboard
[  4340.250] (II) event2  - vc4-hdmi-1: device removed
[  4340.300] (II) libinput: vc4-hdmi-1: needs a virtual subdevice
[  4340.300] (**) Option "config_info" "udev:/sys/devices/platform/soc/fef05700.hdmi/rc/rc1/input2/event2"
[  4340.300] (II) XINPUT: Adding extended input device "vc4-hdmi-1" (type: MOUSE, id 8)
[  4340.300] (**) Option "AccelerationScheme" "none"
[  4340.301] (**) vc4-hdmi-1: (accel) selected scheme none/0
[  4340.301] (**) vc4-hdmi-1: (accel) acceleration factor: 2.000
[  4340.301] (**) vc4-hdmi-1: (accel) acceleration threshold: 4
[  4340.306] (II) event2  - vc4-hdmi-1: is tagged by udev as: Keyboard Pointingstick
[  4340.307] (II) event2  - vc4-hdmi-1: device is a pointer
[  4340.307] (II) event2  - vc4-hdmi-1: device is a keyboard
[  4340.311] (II) config/udev: Adding input device vc4-hdmi-1 HDMI Jack (/dev/input/event3)
[  4340.311] (II) No input driver specified, ignoring this device.
[  4340.311] (II) This device may have been added with another device file.
[  4340.328] (**) vc4-hdmi-0: Applying InputClass "libinput keyboard catchall"
[  4340.328] (II) Using input driver 'libinput' for 'vc4-hdmi-0'
[  4340.329] (**) vc4-hdmi-0: always reports core events
[  4340.329] (**) Option "Device" "/dev/input/event0"
[  4340.329] (II) libinput: vc4-hdmi-0: is a virtual subdevice
[  4340.329] (**) Option "config_info" "udev:/sys/devices/platform/soc/fef00700.hdmi/rc/rc0/input0/event0"
[  4340.329] (II) XINPUT: Adding extended input device "vc4-hdmi-0" (type: KEYBOARD, id 9)
[  4340.329] (**) Option "xkb_model" "pc105"
[  4340.329] (**) Option "xkb_layout" "us"
[  4340.329] (**) vc4-hdmi-1: Applying InputClass "libinput keyboard catchall"
[  4340.329] (II) Using input driver 'libinput' for 'vc4-hdmi-1'
[  4340.329] (**) vc4-hdmi-1: always reports core events
[  4340.329] (**) Option "Device" "/dev/input/event2"
[  4340.329] (II) libinput: vc4-hdmi-1: is a virtual subdevice
[  4340.329] (**) Option "config_info" "udev:/sys/devices/platform/soc/fef05700.hdmi/rc/rc1/input2/event2"
[  4340.329] (II) XINPUT: Adding extended input device "vc4-hdmi-1" (type: KEYBOARD, id 10)
[  4340.329] (**) Option "xkb_model" "pc105"
[  4340.329] (**) Option "xkb_layout" "us"
[  4391.589] (II) modeset(0): EDID vendor "HOT", prod id 13363
[  4391.589] (II) modeset(0): Using EDID range info for horizontal sync
[  4391.589] (II) modeset(0): Using EDID range info for vertical refresh
[  4391.589] (II) modeset(0): Printing DDC gathered Modelines:
[  4391.589] (II) modeset(0): Modeline "400x1280"x0.0   43.00  400 470 480 540  1280 1300 1310 1322 -hsync -vsync (79.6 kHz eP)
[  4391.589] (II) modeset(0): Modeline "320x1480"x0.0   48.00  320 420 430 520  1480 1540 1550 1556 -hsync -vsync (92.3 kHz e)
[  4391.590] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (60/191), consider adding a quirk
[  4391.590] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  4391.590] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  4391.590] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  4391.590] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  4391.590] (WW) modeset(0): Output HDMI-1: Strange aspect ratio (320/1480), consider adding a quirk
[  4391.689] (II) event4  - WaveShare WaveShare: device removed
[  4391.771] (II) event0  - vc4-hdmi-0: device removed
[  4391.820] (II) event2  - vc4-hdmi-1: device removed
[  4391.883] (II) UnloadModule: "libinput"
[  4391.884] (II) UnloadModule: "libinput"
[  4391.884] (II) UnloadModule: "libinput"
[  4391.884] (II) UnloadModule: "libinput"
[  4391.886] (II) UnloadModule: "libinput"
volumio@matty-streamer-rpi-4:~$

Hey @matmatth95,

The Xorg log settles the lower half. The X server starts, reads the panel EDID, sees HDMI-1 connected, and sets the correct native mode 400x1280. No fatal error. So X is configuring the panel correctly.

What we have not yet seen is the set of Xorg configuration files actually present on your system. The plugin generates and rewrites these at runtime against your hardware, so they have to come from the device, not from the source. Please run these over SSH in the current state, without rebooting, and paste the output:

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

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

ls -la /etc/X11/xorg.conf.d/

cat /data/configuration/user_interface/touch_display/config.json

The first two are the InputClass and OutputClass the plugin writes. The third lists anything else the X server reads at startup. The last is the persisted plugin configuration, including rotation and screensaver values carried across the reinstall.

Kind Regards,

Here are the outputs

# 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 "HDMI-1"
        Option "Rotate" "normal"
EndSection

Section "Monitor"
        Identifier "HDMI-2"
        Option "Rotate" "normal"
EndSection
volumio@matty-streamer-rpi-4:~$

volumio@matty-streamer-rpi-4:~$ cat /etc/X11/xorg.conf.d/99-vc4.conf
Section "OutputClass"
    Identifier "vc4"
    MatchDriver "vc4"
    Driver "modesetting"
    Option "PrimaryGPU" "true"
EndSection
volumio@matty-streamer-rpi-4:~$

total 6
drwxr-xr-x 1 root root 1024 Jun 30 23:26 .
drwxr-xr-x 1 root root 1024 Jun 30 23:27 ..
-rw-rw-rw- 1 root root  482 Jul  1 00:04 95-touch_display-plugin.conf
-rw-r--r-- 1 root root  124 Jun 30 23:24 99-v3d.conf
-rw-rw-rw- 1 root root  132 Jun 30 23:26 99-vc4.conf
volumio@matty-streamer-rpi-4:~$

{"timeout":{"type":"number","value":120},"afterPlay":{"type":"boolean","value":false},"autoMode":{"type":"boolean","value":false},"minBr":{"type":"number","value":15},"maxBr":{"type":"number","value":255},"brightnessCurve":{"type":"boolean","value":false},"midBr":{"type":"number","value":255},"manualBr":{"type":"number","value":255},"br1StartTime":{"type":"string","value":"00:00"},"manualBr2":{"type":"number","value":255},"br2StartTime":{"type":"string","value":"00:00"},"minAls":{"type":"number","value":0},"maxAls":{"type":"number","value":0},"angle":{"type":"string","value":"0"},"controlGpuMem":{"type":"boolean","value":false},"gpuMem":{"type":"number","value":32},"showPointer":{"type":"boolean","value":false},"scale":{"type":"number","value":100},"virtualKeyboard":{"type":"boolean","value":false},"hdmiAudioEnabled":{"type":"boolean","value":false},"hdmiAudioPort":{"type":"string","value":"none"},"pluginVersion":{"type":"string","value":"3.6.0"},"videoOuts":{"type":"string","value":"HDMI-1 HDMI-2"}}
volumio@matty-streamer-rpi-4:~$

Hope this tells us what’s going on. Am I the only one having this deep of problem?

Hey @matmatth95,

I want to look at the physical board next.

There is a concrete reason. Your panel’s EDID, read by the X server directly from the display, carries a monitor name spelled WaveShsare, and a second descriptor spelled Wavesharel. The EDID also advertises a 320x1480 timing block and several aspect ratios that the X server flagged as strange, alongside the correct 400x1280. A genuine Waveshare panel’s EDID would not carry a misspelled vendor name.

To rule the panel in or out, I want to compare your board against a known genuine Waveshare unit. Please post clear, well-lit photos of the display’s PCB:

  1. The full back of the board, in focus.
  2. Close-ups of any chip markings, silkscreen text, model number, and version or revision markings.
  3. The HDMI and USB connector area.

Both sides if the board is accessible from the front as well. The sharper the markings, the better the comparison.

Kind Regards,

Hi @nerd

Here are some photos of the back of the PCB screen. I also included the SKU from the box.




IMG20260701061657_BURST000_COVER|281x500

Hey @matmatth95,

I have now put a significant amount of work into this, including sourcing the same display, a 7.9 inch Waveshare HDMI LCD, and setting it up on a second Raspberry Pi 4B of the same board revision, running the same Volumio version, with the same userconfig.txt. The goal was to reproduce your setup exactly and compare against known-good hardware. Here is where that leaves us.

Your board is genuine Waveshare. The PCB photos show the Waveshare and Spotpear silkscreen, the authenticity hologram, the Toshiba TC358779XBG HDMI to DSI bridge, the EDID EEPROM, and the box SKU 17916. There is no sign of counterfeit hardware. I want to be clear on that up front.

The problem is in the data your panel reports about itself, its EDID. Every display sends an EDID block to identify itself and declare its supported timings. I read yours directly from your own X server log, and I compared it to the EDID from the genuine reference unit. The difference is concrete:

  • Manufacturer code: yours reports HOT. The genuine unit reports WSH, which is the registered Waveshare code.
  • Product name: yours reports WaveShsare, misspelled, plus a second entry reading Wavesharel. The genuine unit reports Waveshare-079, spelled correctly.
  • Timing data: yours advertises an extra 320x1480 timing block that does not match the panel and that the driver flags as a strange aspect ratio. The genuine unit advertises only the correct 400x1280.
  • Manufacture year: yours reports 2020. The genuine unit reports 2023.

I validated the genuine unit’s EDID byte for byte with edid-decode. It is clean, both checksums correct, no structural errors. Yours is not clean.

Everything outside the panel is identical between the two systems, and the reference unit works: the display comes up, orientation applies, touch works, and it stays on. The one variable that differs is the EDID your panel is programmed with.

Current theory, and I am labelling it as a theory, not a proven cause: your panel’s malformed EDID is what leads the graphical session to fail after X starts. I want to be honest that this is not yet proven. The reference unit also produces some EDID aspect-ratio warnings and still works, so a malformed EDID is not automatically fatal, and I have not demonstrated the exact chain from your specific EDID defect to the session dropping. What is established is that your panel reports defective identification data, that a genuine correctly-programmed unit of the same model does not, and that the genuine unit runs correctly on an otherwise identical system.

This is worth calling out plainly: the panel you received is genuine Waveshare hardware carrying a defective EDID image, most likely from an earlier or mis-programmed production batch given the 2020 date and the misspelled vendor string. That is a hardware data defect, not something wrong with your Volumio setup or your configuration.

I am continuing to work the question of whether the EDID can be overridden cleanly on Volumio, and I will come back to you on that. In the meantime, if the unit is within return or warranty terms with the seller, a replacement panel with a correct EDID is worth pursuing in parallel, and you can point them to the misspelled manufacturer name and vendor code as concrete evidence the EDID is defective.

Kind Regards,

Hi @nerd

I really appreciate this write up and info. I learned a lot from this experience, tho not fully (software, coding and everything is not my strongest suite).

Would it be possible to ask where I can find the misspelled names/EDID so I can point it out when returning the item.

Edit: Found it!

Thank you!

Hey @matmatth95,

I have a test for you. This is a test, not an official fix. It is an unsupported manual edit to a system-managed file, and a Volumio update or factory reset can overwrite it. It will not harm the device, and it is fully reversible.

Attached to this post is waveshare-079.zip. It contains waveshare-079.edid, a known-good EDID I captured and validated from a genuine 7.9 inch Waveshare unit. The test feeds this good EDID to your Pi so the panel’s own defective EDID is bypassed. If the display then holds with the Touch Display plugin running, that confirms the EDID is the cause.

waveshare-079.zip (330 Bytes)

You need SSH access. Do not power cycle until the last step.

Step 1 - Download the attached waveshare-079.zip from this post and unzip it. Inside is waveshare-079.edid. Copy that file to the Pi. From your computer copy the file to (research methods based on the OS you are using, there will be multiple established ways):

/home/volumio/

Step 2 - On the Pi over SSH, create the target directory and move the file into it:

sudo mkdir -p /lib/firmware/edid
sudo mv /home/volumio/waveshare-079.edid /lib/firmware/edid/

Step 3 - Verify the file:

sudo apt-get install -y edid-decode
edid-decode /lib/firmware/edid/waveshare-079.edid

You should see Manufacturer WSH, Display Product Name Waveshare-079, and a 400x1280 timing. If edid-decode reports errors, stop and tell me.

Step 4 - Back up cmdline.txt:

sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak

Step 5 - Edit /boot/cmdline.txt with a text editor:

sudo nano /boot/cmdline.txt

This file is ONE single line. Do not add a new line. Move to the very end of the existing line and append a single space followed by this parameter:

drm.edid_firmware=HDMI-A-1:edid/waveshare-079.edid

Save and exit.

Step 6 - Confirm it is still one line and ends with the new parameter:

cat /boot/cmdline.txt

If anything looks wrong, restore the backup:

sudo cp /boot/cmdline.txt.bak /boot/cmdline.txt

Step 7 - Reboot:

sudo reboot

Step 8 - After boot, with the Touch Display plugin active, tell me exactly what the screen does:

  1. Interface appears and stays.
  2. Interface appears and then drops.
  3. Screen stays off.

Then submit a fresh log from http://volumio.local/dev and paste the link here, regardless of outcome.

To undo the test at any time:

sudo cp /boot/cmdline.txt.bak /boot/cmdline.txt
sudo reboot

Kind Regards,

Hi! Thank you so much for putting in so much effort into this.

When I rebooted, I think the Pi is stock on loading the OS, yellow inidicator light is stuck on “ON” and not blinking.

May I power cycle?
image

Hey @matmatth95,

I am not completely clear why your build is struggling here. With bold honesty - without direct access to your hardware (physical) - I am at the wits end. There are methods documented across various forums how to manage or even re-flash display firmware, however I am not endorsing such actions if your screen is under a warranty.

Kind Regards,

Hi @nerd. Thank you so much putting in so much effort with this.

I’m actually booking a pickup for the screen for return to the seller.

If I may ask, do you mind sending me a link where I can buy good 7.9in screen? Would amazon be okay?

I bought mine through an asian shopping app called lazada but I’m not confident with buying from their store again since this was the 2nd screen already. Tells me that the first one also has a bad firmware.

Thank you,

matt