RPI4 issues with fbdev driver and newer Kernel

Updated on Raspberry Pi4 and X failed complaining about fbdev

Failed to load /usr/lib/xorg/modules/drivers/fbdev_drv.so: /usr/lib/xorg/modules/drivers/fbdev_drv.so: undefined symbol: fbdevHWSave

so no gui.

@NotEinstein which exact version of xf86-video-fbdev you have installed? 21.1.4: startx fails on start with undefined symbol in modesetting_drv.so and fbdev_drv.so (#1378) · Issues · xorg / xserver · GitLab

Looking in /var/cache/pacman/pkg: xf86-video-fbdev-0.5.0-4-aarch64.pkg.tar.xz

I cannot boot at the moment as I tried to regress linux-rpi4, linux-rpi4-headers, linux-firmware and linux-firmware-whence and the boot partition got screwed.

Maybe @Darksky knows some about rpi4. There should be daily images you can test.

RPi considers using dtoverlay=vc4-fkms-v3d (which requires xf86-video-fbdev to be installed) as being depreciated. Use dtoverlay=vc4-kms-v3d instead.

I do not have xf86-video-fbdev installed here. In the past it did not make any diff if it was installed if you used dtoverlay=vc4-kms-v3d; it just would not load it but it would first try it and give the Warning:

[    11.317] (II) LoadModule: "fbdev"
[    11.317] (WW) Warning, couldn't open module fbdev

How ever with it giving you the error undefined symbol you may have to uninstall xf86-video-fbdev This indicates that the module is depreciated or needs a rebuild with current libs so I am not sure how it will will react with it installed. Beginning with kernel 6.6 RPi swithed over from using their API to using upstream kernel’s API.

I have dtoverlay=vc4-kms-v3d,cma-512 in config.txt

I will remove xf86-video-fbdev and try the update on the backup I am currently running.

Also I need your config.txt because changes were made and depending on your current kernel/overlays it may need to be changed.

auto_initramfs=1
arm_64bit=1
disable_overscan=1

#enable sound
dtparam=audio=on
#hdmi_force_hotplug=1
hdmi_drive=2
#framebuffer_width=1920
#framebuffer_height=1080

#dtparam=krnbt=on
dtparam=krnbt=off

#enable vc4
dtoverlay=vc4-kms-v3d,cma-512
max_framebuffers=2

Run as fast as firmware / board allows

#arm_boost=1
over_voltage=6
arm_freq=2100
gpu_freq=650

For now add:

kernel=kernel8.img

and change auto_initramfs=1 to:

#auto_initramfs=1

You have the right config’s for the new kernel but do not know what kernel you have at present.

I may need to see your cmdline.tx if you have any custom video settings.

root=/dev/sda2 rw rootwait console=serial0,115200 console=tty1 selinux=0 splash plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=serial0,115200 usbhid.mousepoll=8 audit=0

See if you can get it to boot with the changes.

Removed xf86-video-fbdev and made the other suggested changes on my old backup version - x complained of no fbdev, so re-installed xf86-video-fbdev and working again.

I can’t attempt on the updated system as the root partition is corrupt.

It will be normal for it to complain. It will try it first and move on. My logs:

[ray@jellyfin ~]$ cat /var/log/Xorg.0.log | grep fbdev
[    11.306] (==) Matched fbdev as autoconfigured driver 1
[    11.317] (II) LoadModule: "fbdev"
[    11.317] (WW) Warning, couldn't open module fbdev
[    11.317] (EE) Failed to load module "fbdev" (module does not exist, 0)

It not only complained, but didn’t start the gui - same issue as the new update. I re-installed it and the log says:

19.278] (**) OutputClass "vc4" setting /dev/dri/card1 as PrimaryGPU
[    19.278] (II) LoadModule: "glx"
[    19.292] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    19.326] (II) Module glx: vendor="X.Org Foundation"
[    19.326] 	compiled for 1.21.1.11, module version = 1.0.0
[    19.326] 	ABI class: X.Org Server Extension, version 10.0
[    19.326] (II) LoadModule: "fbdev"
[    19.326] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[    19.328] (II) Module fbdev: vendor="X.Org Foundation"
[    19.328] 	compiled for 1.21.1.1, module version = 0.5.0
[    19.328] 	Module class: X.Org Video Driver
[    19.328] 	ABI class: X.Org Video Driver, version 25.2
[    19.328] (II) FBDEV: driver for framebuffer: fbdev
[    19.348] (WW) Falling back to old probe method for fbdev
[    19.348] (II) Loading sub module "fbdevhw"
[    19.348] (II) LoadModule: "fbdevhw"
[    19.348] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[    19.353] (II) Module fbdevhw: vendor="X.Org Foundation"
[    19.353] 	compiled for 1.21.1.11, module version = 0.0.2
[    19.353] 	ABI class: X.Org Video Driver, version 25.2
[    19.354] (II) FBDEV(0): using default device
[    19.354] (II) FBDEV(0): Creating default Display subsection in Screen section
	"Default Screen Section" for depth/fbbpp 16/16
[    19.354] (==) FBDEV(0): Depth 16, (==) framebuffer bpp 16
[    19.354] (==) FBDEV(0): RGB weight 565
[    19.354] (==) FBDEV(0): Default visual is TrueColor
[    19.354] (==) FBDEV(0): Using gamma correction (1.0, 1.0, 1.0)
[    19.354] (II) FBDEV(0): hardware: vc4drmfb (video memory: 4050kB)
[    19.354] (DB) xf86MergeOutputClassOptions unsupported bus type 0
[    19.354] (II) FBDEV(0): checking modes against framebuffer device...
[    19.354] (II) FBDEV(0): checking modes against monitor...
[    19.354] (II) FBDEV(0): Virtual size is 1920x1080 (pitch 1920)
[    19.354] (**) FBDEV(0):  Built-in mode "current"
[    19.354] (==) FBDEV(0): DPI set to (96, 96)

You should not have any fbdev loading up:

[    11.317] (WW) Warning, couldn't open module fbdev
[    11.317] (EE) Failed to load module "fbdev" (module does not exist, 0)
[    11.317] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    11.346] (II) modeset(0): using drv /dev/dri/card1
[    11.346] (II) modeset(0): Creating default Display subsection in Screen section
	"Default Screen Section" for depth/fbbpp 24/32
[    11.346] (==) modeset(0): Depth 24, (==) framebuffer bpp 32
[    11.346] (II) Applying OutputClass "vc4" options to /dev/dri/card1
[    11.346] (==) modeset(0): RGB weight 888
[    11.346] (==) modeset(0): Default visual is TrueColor
[    11.346] (II) Loading sub module "glamoregl"
[    11.346] (II) LoadModule: "glamoregl"
[    11.346] (II) Loading /usr/lib/xorg/modules/libglamoregl.so
[    11.367] (II) Module glamoregl: vendor="X.Org Foundation"
[    11.367] 	compiled for 1.21.1.12, module version = 1.0.1
[    11.367] 	ABI class: X.Org ANSI C Emulation, version 0.4
[    12.261] (II) modeset(0): glamor X acceleration enabled on V3D 7.1.7
[    12.261] (II) modeset(0): glamor initialized

So what do I need to install in place of fbdev - because when fbdev is not present, x stops.

21.774] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[    21.777] (II) xfree86: Adding drm device (/dev/dri/card1)
[    21.777] (II) Platform probe for /sys/devices/platform/gpu/drm/card1
[    21.786] (II) xfree86: Adding drm device (/dev/dri/card0)
[    21.786] (II) Platform probe for /sys/devices/platform/v3dbus/fec00000.v3d/drm/card0
[    21.787] (**) OutputClass "vc4" setting /dev/dri/card1 as PrimaryGPU
[    21.787] (II) LoadModule: "glx"
[    21.787] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[    21.792] (II) Module glx: vendor="X.Org Foundation"
[    21.792] 	compiled for 1.21.1.11, module version = 1.0.0
[    21.792] 	ABI class: X.Org Server Extension, version 10.0
[    21.792] (II) LoadModule: "fbdev"
[    21.793] (WW) Warning, couldn't open module fbdev
[    21.793] (EE) Failed to load module "fbdev" (module does not exist, 0)
[    21.793] (EE) No drivers available.
[    21.793] (EE) 
Fatal server error:
[    21.793] (EE) no screens found(EE) 
[    21.793] (EE) 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 
[    21.793] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[    21.793] (EE) 
[    21.793] (EE) Server terminated with error (1). Closing log file.

Nothing. There was a change in the kernel where I could not put a custom config for my tv in cmdline.txt and had to eliminate it. Do you have another monitor you can test with.

fkms used the old rpi’s firmware where kms uses the kernel’s (modesetting).

It’s a reasonably new Samsung 24". It did develop a problem with it causing USB issues until I put a ground cable on it last year. I will get hold of another monitor and try tomorrow.

Thanks for your help.

Connected to my TV - x went to default display (480) loading fbdev.

Looking at X - /etc/X11/xorg.conf.d/xorg.conf has

Section “Device”
Identifier “card0”
Driver “fbdev”
VendorName “All”
BoardName “All”
EndSection

Is this forcing the use of fbdev? If so, what should it contain instead?

I would say yes. You must have added that. The default image does not come with /etc/X11/xorg.conf.d/xorg.conf file.

Deleted and no longer using fbdev.
I remember a while back needing to charge a setting from fbturbo to fbdev - this xorg.conf file must have come from that adventure…

Thanks Darksky