Uvesafb - ArchWiki

Jump to content
From ArchWiki

Related articles

- Kernel modules
- Kernel parameters
- sysctl

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Many Help:Style issues (Discuss in Talk:Uvesafb)

This article or section needs expansion.

Reason: Since this is the redirect for framebuffer, it should mention what a framebuffer is, what it does, why we care, etc. (Discuss in Talk:Uvesafb)

In contrast with other framebuffer drivers, uvesafb needs a userspace virtualizing daemon, called v86dAUR. 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:

1. Proper blanking and hardware suspension after delay
2. Support for custom resolutions as in the system BIOS.

It should support as much hardware as vesafb.

## Installation

Install the uvesafb-dkmsAUR package.

## Configuration

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.

### Boot manager

#### GRUB

First edit `/etc/default/grub` Comment the `GRUB_GFXPAYLOAD_LINUX=keep` line in `/etc/default/grub`, and re-generate its main configuration file.

#### GRUB legacy

Remove all references to `vga=xxx` from kernel lines in `/boot/grub/menu.lst` to allow correct operation of uvesafb.

### mkinitcpio hook

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 `/usr/lib/modprobe.d/uvesafb.conf`.

Documentation for `mode_option` can be found at [1].

To prevent your customizations being overwritten when the package is updated, copy this file to `/etc/modprobe.d/uvesafb.conf`:

    # 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:

    FILES="/etc/modprobe.d/uvesafb.conf"

To make changes take effect, regenerate the initramfs and reboot the system.

### Optimizing Resolution

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. In this case, the options can be passed as kernel parameters in the format `video=uvesafb:options`.

## Troubleshooting

### Uvesafb cannot reserve memory

Check if you forgot to remove any `vga=` kernel parameter − this overrides the UVESA framebuffer with a standard VESA one.

Try to add `video=vesa:off vga=normal` to the kernel command line.

## See also

- Uvesafb Kernel Page
- Gentoos uvesafb Page
- VESA mode numbers

Categories:

- Graphics
- Eye candy

Hidden categories:

- Pages or sections flagged with Template:Style
- Pages or sections flagged with Template:Expansion