Booting Issues into GUI on Raspberry Pi 5 Across Desktop Environments

Hello Manjaro ARM Community,

I’m experiencing consistent issues attempting to boot into the graphical user interface on my Raspberry Pi 5 using Manjaro ARM. This problem occurs across various desktop environments, including KDE, Gnome, Mate, and XFCE. After the Manjaro logo appears, the system fails to load the desktop environment, leaving me with a blinking cursor or a black screen.

System Information

  • Device: Raspberry Pi 5 8GB
  • Kernel Version: 6.6.21-1-MANJARO-RPI5
  • Attempted Desktop Environments: KDE, Gnome, Mate, XFCE (Usually I use KDE)

What I’ve Tried

  • Downloading Latest Images: I’ve downloaded the latest images from the official Manjaro ARM GitHub repository for all mentioned desktop environments, which resulted in the same booting issue.
  • Manjaro ARM Tools: Additionally, I utilized the Manjaro ARM Tools from GitLab. After installing the tools via sudo pacman -S manjaro-arm-tools, I executed sudo buildarmimg -d rpi4 -e kde-plasma -v 24.03 -b stable -m to create a custom image on “stable” branch, but I did try with “testing” and “unstable” too. Unfortunately, booting from this newly prepared microSD card yielded the same problem.

Additional Troubleshooting Steps Taken:

I’ve identified a workaround for the GUI issue: accessing a TTY via Ctrl+Alt+F2 and manually launching KDE with startplasma-wayland successfully initiates the desktop environment. This suggests a hiccup in the automated startup sequence.

Info

  • glxinfo -B:
[root@manjaro-arm ~]# glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Broadcom (0x14e4)
    Device: V3D 7.1.7 (0xffffffff)
    Version: 24.0.2
    Accelerated: yes
    Video memory: 8046MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 3.1
    Max compat profile version: 3.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Broadcom
OpenGL renderer string: V3D 7.1.7
OpenGL core profile version string: 3.1 Mesa 24.0.2-arch.1
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)

OpenGL version string: 3.1 Mesa 24.0.2-arch.1
OpenGL shading language version string: 1.40
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 24.0.2-arch.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
  • inxi -G:
[root@manjaro-arm ~]# inxi -G
Graphics:
  Device-1: bcm2712-hdmi0 driver: vc4_hdmi v: N/A
  Device-2: bcm2712-hdmi1 driver: vc4_hdmi v: N/A
  Display: wayland server: X.org v: 1.21.1.11 with: Xwayland v: 23.2.4
    compositor: kwin_wayland driver: X: loaded: modesetting
    gpu: vc4_hdmi,vc4_hdmi resolution: 3840x1080
  API: EGL v: 1.4,1.5 drivers: swrast,v3d
    platforms: gbm,wayland,x11,surfaceless,device
  API: OpenGL v: 4.5 compat-v: 3.1 vendor: broadcom mesa v: 24.0.2-arch.1
    renderer: V3D 7.1.7
  API: Vulkan Message: No Vulkan data available.

Logs

  • config.txt File:
[root@manjaro-arm ~]# cat /boot/config.txt 
# See /boot/overlays/README for all available options

# Uncomment some or all of these to enable optional Hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Run in 64bit mode
arm_64bit=1

# Auto load correct initramfs files if found
auto_initramfs=1

# Run as fast as the firmware/board allows
arm_boost=1

# Disable compensation for displays with overscan
disable_overscan=1

# Enable sound
dtparam=audio=on
# Uncomment if no sound thru hdmi
#hdmi_drive=2

# Auto load overlays for detected cameras
camera_auto_detect=1
# Auto load overlays for detected DSI displays
display_auto_detect=1

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
# For pi4's and above boards uncomment next line & Comment out above line
#dtoverlay=vc4-kms-v3d,cma-512
max_framebuffers=2

# Don't have the firmware create an initial video= setting in cmdline.txt
# Use the kernel default instead
disable_fw_kms_setup=1

# Disable rainbow screen at boot
disable_splash=1

# RPi 5B/4B/400 ONLY
# For 4k content @ 60 Hz refresh rate, uncomment hdmi_enable_4kp60=1
#hdmi_enable_4kp60=1
# If video breaks with hdmi_enable_4kp60=1 uncomment
#force_turbo=1


[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller
# This line should be remoed if the legacy DWC2 controller is required
otg_mode=1


[all]
  • Xorg.0.log Errors:
[root@manjaro-arm ~]# cat /var/log/Xorg.0.log | grep EE
[    11.513] Current Operating System: Linux manjaro-arm 6.6.21-1-MANJARO-RPI5 #1 SMP PREEMPT Sat Mar  9 14:56:06 UTC 2024 aarch64
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    11.518] (EE) Failed to load module "fbdev" (module does not exist, 0)
[    11.523] (EE) No devices detected.
[    11.523] (EE) 
[    11.523] (EE) no screens found(EE) 
[    11.524] (EE) 
[    11.524] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[    11.524] (EE) 
[    11.550] (EE) Server terminated with error (1). Closing log file.
  • Journalctl Errors:
[root@manjaro-arm ~]# journalctl -b -p err
Mar 28 01:11:52 manjaro-arm sddm[550]: Failed to read display number from pipe
Mar 28 01:11:54 manjaro-arm sddm[550]: Failed to read display number from pipe
Mar 28 01:11:56 manjaro-arm sddm[550]: Failed to read display number from pipe
Mar 28 01:11:56 manjaro-arm sddm[550]: Could not start Display server on vt 2
Mar 28 01:12:15 manjaro-arm libddcutil[1021]: busno=11, sleep-multiplier =  1.00. Testing for supported featu>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: Not able to map channels to spe>
Mar 28 01:12:49 manjaro-arm kernel: hdmi-audio-codec hdmi-audio-codec.1.auto: ASoC: error at snd_soc_pcm_dai_>
  • SDDM Status: Active but showing repeated failures to start the Display server on vt 2.
[root@manjaro-arm ~]# systemctl status sddm
* sddm.service - Simple Desktop Display Manager
     Loaded: loaded (/usr/lib/systemd/system/sddm.service; enabled; preset: disabled)
     Active: active (running) since Thu 2024-03-28 01:11:51 UTC; 32min ago
       Docs: man:sddm(1)
             man:sddm.conf(5)
   Main PID: 550 (sddm)
      Tasks: 2 (limit: 9254)
        CPU: 95ms
     CGroup: /system.slice/sddm.service
             `-550 /usr/bin/sddm

Mar 28 01:11:54 manjaro-arm sddm[550]: Failed to read display number from pipe
Mar 28 01:11:54 manjaro-arm sddm[550]: Display server stopping...
Mar 28 01:11:54 manjaro-arm sddm[550]: Attempt 2 starting the Display server on vt 2 failed
Mar 28 01:11:56 manjaro-arm sddm[550]: Display server starting...
Mar 28 01:11:56 manjaro-arm sddm[550]: Writing cookie to "/run/sddm/xauth_uTqnzb"
Mar 28 01:11:56 manjaro-arm sddm[550]: Running: /usr/bin/X -nolisten tcp -background none -seat seat0 vt2 -au>
Mar 28 01:11:56 manjaro-arm sddm[550]: Failed to read display number from pipe
Mar 28 01:11:56 manjaro-arm sddm[550]: Display server stopping...
Mar 28 01:11:56 manjaro-arm sddm[550]: Attempt 3 starting the Display server on vt 2 failed
Mar 28 01:11:56 manjaro-arm sddm[550]: Could not start Display server on vt 2
  • dmesg Errors:
[root@manjaro-arm ~]# dmesg | grep -iE 'vc4|drm|video'
[    1.122189] vc4-drm axi:gpu: bcm2712_iommu_of_xlate: MMU 1000005200.iommu
[    1.124920] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    1.214842] [drm] Initialized v3d 1.0.0 20180419 for 1002000000.v3d on minor 0
[    1.218515] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    1.220893] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    1.225596] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    1.368749] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    1.436400] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    1.439708] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    2.580080] systemd[1]: Starting Load Kernel Module drm...
[    2.636182] systemd[1]: modprobe@drm.service: Deactivated successfully.
[    2.636577] systemd[1]: Finished Load Kernel Module drm.
[    3.524211] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    3.537878] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    3.545212] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    3.547661] vc4-drm axi:gpu: bound 107c580000.hvs (ops vc4_hvs_ops [vc4])
[    3.549026] rc rc0: vc4-hdmi-0 as /devices/platform/soc/107c701400.hdmi/rc/rc0
[    3.549060] input: vc4-hdmi-0 as /devices/platform/soc/107c701400.hdmi/rc/rc0/input5
[    3.557799] input: vc4-hdmi-0 HDMI Jack as /devices/platform/soc/107c701400.hdmi/sound/card0/input6
[    3.557884] vc4-drm axi:gpu: bound 107c701400.hdmi (ops vc4_hdmi_ops [vc4])
[    3.559267] rc rc1: vc4-hdmi-1 as /devices/platform/soc/107c706400.hdmi/rc/rc1
[    3.559305] input: vc4-hdmi-1 as /devices/platform/soc/107c706400.hdmi/rc/rc1/input7
[    3.563358] input: vc4-hdmi-1 HDMI Jack as /devices/platform/soc/107c706400.hdmi/sound/card1/input8
[    3.563427] vc4-drm axi:gpu: bound 107c706400.hdmi (ops vc4_hdmi_ops [vc4])
[    3.563543] vc4-drm axi:gpu: bound 107c500000.mop (ops vc4_txp_ops [vc4])
[    3.563601] vc4-drm axi:gpu: bound 107c501000.moplet (ops vc4_txp_ops [vc4])
[    3.564466] vc4-drm axi:gpu: bound 107c410000.pixelvalve (ops vc4_crtc_ops [vc4])
[    3.564729] vc4-drm axi:gpu: bound 107c411000.pixelvalve (ops vc4_crtc_ops [vc4])
[    3.614842] [drm] Initialized vc4 0.0.0 20140616 for axi:gpu on minor 1
[    3.633890] videodev: Linux video capture interface: v2.00
[    3.720885] pispbe 1000880000.pisp_be: input device node registered as /dev/video20
[    3.720956] pispbe 1000880000.pisp_be: tdn_input device node registered as /dev/video21
[    3.720988] pispbe 1000880000.pisp_be: stitch_input device node registered as /dev/video22
[    3.721037] pispbe 1000880000.pisp_be: hog_output device node registered as /dev/video23
[    3.721075] pispbe 1000880000.pisp_be: output0 device node registered as /dev/video24
[    3.721103] pispbe 1000880000.pisp_be: output1 device node registered as /dev/video25
[    3.721130] pispbe 1000880000.pisp_be: tdn_output device node registered as /dev/video26
[    3.721163] pispbe 1000880000.pisp_be: stitch_output device node registered as /dev/video27
[    3.721192] pispbe 1000880000.pisp_be: config device node registered as /dev/video28
[    3.721429] pispbe 1000880000.pisp_be: input device node registered as /dev/video29
[    3.721455] pispbe 1000880000.pisp_be: tdn_input device node registered as /dev/video30
[    3.721482] pispbe 1000880000.pisp_be: stitch_input device node registered as /dev/video31
[    3.721508] pispbe 1000880000.pisp_be: hog_output device node registered as /dev/video32
[    3.721534] pispbe 1000880000.pisp_be: output0 device node registered as /dev/video33
[    3.721565] pispbe 1000880000.pisp_be: output1 device node registered as /dev/video34
[    3.721595] pispbe 1000880000.pisp_be: tdn_output device node registered as /dev/video35
[    3.721697] pispbe 1000880000.pisp_be: stitch_output device node registered as /dev/video36
[    3.722454] pispbe 1000880000.pisp_be: config device node registered as /dev/video37
[    3.746409] rpivid 1000800000.codec: Device registered as /dev/video19
[    3.753551] vc4-drm axi:gpu: [drm] fb0: vc4drmfb frame buffer device

Further Observations and Comparisons:

Additionally, I’ve noticed a graphical glitch around the cursor on Manjaro ARM, characterized by constant flickering or brief appearances of black squares/rectangles (Cursor flickering video demo here). Initially, I attributed this to KDE Plasma, but after testing both Arch Linux (following the installation guide for Raspberry Pi 5 here) and EndeavourOS (with KDE 6), this specific glitch was absent. The Arch Linux setup, particularly with the ‘linux-rpi-16k 6.6.22-1’ kernel, displayed remarkable performance speed, possibly due to the 16k kernel optimizations.

For those interested in exploring further, I found Ubuntu 24.04 (Noble Numbat) daily build with Kernel 6.8 to be exceptionally smooth in terms of browser experience, content display speed, video playback, and desktop environment effects, outperforming any other distro I’ve tested so far on my Raspberry Pi 5 8GB.

This variance in graphical performance and the absence of the cursor glitch in distributions other than Manjaro ARM lead me to wonder about the underlying cause. It’s worth noting that I have yet to test Manjaro XFCE or Mate, which is part of my ongoing effort to find the most suitable setup for my needs.

I appreciate any guidance or insights the community can provide to help resolve these startup issues with the graphical interface on Manjaro ARM.

Thank you!

Edit1: Adding inxi and glxinfo

build profile/devices not included Pi5, different kernel, guess?

Good point about the build profiles! However, I noticed something interesting that might shed some light on this issue. Here’s what I’ve got installed, which includes kernels for both RPi4 and RPi5:

[root@manjaro-arm ~]# pacman -Q | grep linux-rpi
linux-rpi4 6.6.21-1
linux-rpi4-headers 6.6.21-1
linux-rpi5 6.6.21-1
linux-rpi5-headers 6.6.21-1

This suggests that, at least on a package level, there’s support for a broad range of Raspberry Pi models, including the 5. Interestingly, a forum post I came across elaborates on this, mentioning that the official Pi OS 64bit image can boot on a wide variety of boards from 3B up to the 5, selecting the appropriate .dtb, kernel, and initramfs at boot.

As Darksky pointed out, the system should automatically load the correct kernel and .dtb for each board, which aligns with the multiple kernels I have installed:

It has 2 kernels kernel8.img and kernel_2712.img (pi5) and all of the .dtb,s for each board in the fat32 boot partition. Each device’s firmware at boot time should pick the correct .dtb, kernel and initramfs to boot with.

This insight suggests that there might be more flexibility in the image compatibility than initially thought.

update from Pi4 to Pi5 should be fine.
but, build tools is old, may be can not take care of this, guess?

edit,
one thought, boot from Pi4 after update(arm-unstable), then switch to Pi5 :innocent: