In contrast with other framebuffer drivers, uvesafb needs a userspace virtualizing daemon, called v86d. It may seem foolish to emulate x86 code on a x86, but this is important if one wants to use the framebuffer code on other architectures (notably non-x86 ones). It was added in kernel 2.6.24 and has many more features than the standard vesafb, including:
- Proper blanking and hardware suspension after delay
- Support for custom resolutions as in the system BIOS.
It should support as much hardware as vesafb.
Install the AUR package.
Remove any framebuffer-related kernel boot parameter from the bootloader configuration to disable the old vesafb framebuffer from loading.
$ grep vga /proc/cmdline $ grep -ir vga /etc/modprobe.d/
Should return no results. If you do have a
vga= option somewhere, you will need to remove it.
/etc/default/grub Comment the
GRUB_GFXPAYLOAD_LINUX=keep line in
/etc/default/grub, and GRUB#Generate the main configuration file.
Remove all references to
vga=xxx from kernel lines in
/boot/grub/menu.lst to allow correct operation of uvesafb.
Add the v86d hook to HOOKS in
/etc/mkinitcpio.conf. This allows uvesafb to take over at boot time.
HOOKS="base udev v86d ..."
Define a resolution
The settings for uvesafb are defined in
mode_option can be found at .
To prevent your customizations being overwritten when the package is updated, copy this file to
# cp /usr/lib/modprobe.d/uvesafb.conf /etc/modprobe.d/uvesafb.conf
and then add an entry in the FILES section of
/etc/mkinitcpio.conf pointing to your configuration file, like so:
To make changes take effect you need to regenerate the initramfs images of the kernel.
# mkinitcpio -p linux
Reboot the system to see the changes take effect.
A list of possible resolutions can be generated via the following command:
$ cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
Users can then modify
/usr/lib/modprobe.d/uvesafb.conf with any entry returned above.
Checking Current Resolution
Either of following commands can be used to show the current framebuffer resolution as a sanity check to see that settings are honored:
$ cat /sys/devices/virtual/graphics/fbcon/subsystem/fb0/virtual_size
$ cat /sys/class/graphics/fb0/virtual_size
kernel module parameters
If you compile your own kernel, then you can also compile uvesafb into the kernel and run v86d later, e.g. from
/etc/rc.local. In this case, the options can be passed as kernel parameters in the format video=uvesafb:<options>.
Uvesafb cannot reserve memory
Check if you forgot to remove any
vga=xxx kernel parameter -- this overrides the UVESA framebuffer with a standard VESA one.
Or try to add "video=vesa:off vga=normal" to kernel cmdline.
Error: "pci_root PNP0A08:00 address space collision + Uvesafb cannot reserve memory"
This occurs on the Acer Aspire One 751h with the 2.6.34-ARCH kernel; whether it also occurs on other systems is unknown. Even without another framebuffer interfering with the uvesafb setup, uvesafb cannot reserve the necessary memory region.
You can fix this issue by adding the following to the kernel parameters in your bootloader's configuration.