Setting resolution of the framebuffer console

Slackpup 0.3 testers have reported a problem with the console having too many rows and columns, resulting in very small text. We have this situation for i915, radeon and nouveau video hardware, when the kernel module loads with Kernel Mode Setting turned on (see /etc/modprobe.d). With this hardware, when switching out of X to a console, including a complete exit from X, there is not a return to our old and familiar VGA text mode, instead it stays in framebuffer console mode, which has the small text.

On my laptop with Intel video hardware, it seems that the i915 kernel module has inbuilt console driver, whereas the nouveau kernel module doesn't and needs the 'fbcon' kernel module to be loaded.

It was jamesbond who brought to my attention that the 'fbcon' kernel module has to be loaded, otherwise when you exit from X you get a black screen.

There are various interesting links on this topic:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/483301
http://nouveau.freedesktop.org/wiki/KernelModeSetting

That second link has this statement:
The framebuffer console reserves nouveaufb and therefore you cannot directly unload the Nouveau kernel module. You have to unbind nouveaufb first. When you unbind nouveaufb, the earlier fb driver or the VGA console driver will take over. Your kernel configuration needs to have CONFIG_VT_HW_CONSOLE_BINDING enabled.

...however, I configured the 2.6.34.1 kernel with:
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set


Anyway, there is a solution for getting the framebuffer console to have 80 columns by 25 rows, same as the text-mode console. Just have this kernel boot parameter:

video=640x480

However, I am not at all happy about this. Is there any way that I can set this after bootup, and before the video modules get loaded? It would be sensible if there were some way to do this. I played around with 'fbset' but that doesn't seem to do it.


Posted on 8 Jul 2010, 17:36


Comments:

Posted on 8 Jul 2010, 18:42 by aragon2
fbset
maybe try fbset

http://packages.debian.org/search?keywords=fbset

aragon


Posted on 8 Jul 2010, 19:38 by ICPUG
fbset
I really know nothing about this but did a quick Google and came up with this site:

http://www.linux-tutorial.info/modules.php?name=ManPage&sec=8&manpage=fbset

It says as an example:

To set the used video mode for X insert the
following in rc.local:

fbset -fb /dev/fb0 vga

and make the used frame buffer device known to X:

export FRAMEBUFFER=/dev/fb0


Sorry if I am stating something obvious but it is worth making sure all bases are covered.


Posted on 8 Jul 2010, 19:53 by ICPUG
fbset (contd)
Further to the above:
I think vga has to be defined in the file:
/etc/fb.modes

And I think I am probably teaching grandmother to suck eggs! Sorry.


Posted on 8 Jul 2010, 22:00 by BarryK
Re fbset
Most of what you read about the framebuffer, in relation to kernel boot parameters, fbset, etc., is not very relevant for the KMS-enabled kernel.

It seems that fbset is basically useless.

The "video=640x480" (for example) kernel boot parameter has been especially patched to work with the KMS-enabled kernel.

Other kernel framebuffer boot parameters, such as "vga=771" (for example) are no longer used.



Posted on 9 Jul 2010, 2:40 by kirk
Fatdog64
Barry,

James and my self finally kicked fatdog64-500 out the door.

http://www.murga-linux.com/puppy/viewtopic.php?t=57389


Posted on 9 Jul 2010, 12:38 by jemimah
maybe patch the kernel
It might be possible to make this the default behavior. I ended up patching the Puppeee kernel so that users don't need to boot with acpi_osi=linux.


Posted on 9 Jul 2010, 18:39 by BarryK
Re video boot param
I'm not sure, but I think that I read, if you have something like "video=640x480" boot parameter, if you start X without any xorg.conf then it forces KMS not to do any automatic probing and instead use 640x480 for X ...which is not good. I might be wrong, that was my understanding from reading bits of info here and there.