Skip to content

Linux Framebuffer set resolution correctly

I have a RaspberryPi and want to display an image fullscreen without xserver – so write it directly to the framebuffer. No problem here.

But setting it fullscreen doesn’t work.

cat /sys/class/graphics/fb0/modes



So I use

fbset -xres 1920 -yres 1200 -match

resulting in

mode "1920x1200"
geometry 1920 1200 1920 1200 16
timings 0 0 0 0 0 0 0
rgba 5/11,6/5,5/0,0/16

If I now use fbi to display an image, or just fill the framebuffer /dev/urandom >> /dev/fb0, just part of the screen is filled. The aspect etc. of the displayed part is correct, there is just a big black boundary around.

If I use other resolutions, everything works as expected, for example the stats-line in fbi gets bigger etc.

What do I do wrong?



Try this format for fbset:

fbset -fb /dev/fb0 -g 1920 1200 1920 1200 16 

And check you’re really looking at fb0 and not fb1:

fbset -fb /dev/fb0

Double check what was actually set:

cat /sys/class/graphics/fb0/mode

Also try to run fbi with (again, to make sure you’re using fb0):

fbi -d /dev/fb0 image.png

You could also force your settings into the fb0 by doing:

echo U:1920x1200p-0 > /sys/class/graphics/fb0/mode

Technically, that is what fbset is doing anyway. Just making sure fb1 isn’t screwing things up.

Last, make sure your console is using fb0. I’m sure it is.

con2fbmap 1

You may also want to reboot, so check what your setting is:

cat /proc/cmdline

If its not 1920×1200, update to 1920×200. I think it located in /boot/cmdline.txt for raspberry pi. For me its /boot/uEnv.txt.

User contributions licensed under: CC BY-SA
8 People found this is helpful