What is the current method to set VESA mode for fbconsole?

Using Fedora 35 how to select a VESA mode for the fbconsole?
I did many google searches and found several answers, none of which work.

I tried the combination (in grub2)
set gfxmode=1024x768
set gfxpayload=keep
I tried other resolutions (all pre-verified by hwinfo --framebuffer)
I tried the old vga= kernel parameter. it has no effect and dmesg says that isn’t recognized
I tried video= there instead. It has no effect, but dmesg doesn’t say it isn’t recognized.

All this was done with nosplash and was done with and without nomodeset
(I’m using an nvidia driver for the gui mode. In the past nomodeset was needed in order to stop the nouveau driver from stopping the nvidia driver from getting control. Now the nvidia driver works regardless of whether nomodeset is used.)

I would also like to be able to set the mode for use during grub2, which the grub2 documentation kind of implies is possible. But that is less important than setting it for the Linux fbconsole.

I’m using fbcon=rotate:3 and that is working right.
I’d like to have the grub menu similarly rotated, but nothing I found online or in documentation implies that is possible. Again, that is less important than getting the resolution right for fbconsole.

:thinking: most of the time by adding kernel parameter video=1024x786 will works. Maybe you want to check your current kernel parameter if there video=vesa:off or similiar, if it present remove it.

From RPMfusion about Nvidia on part Graphic console, there also a guide for legacy bios to enhance the visual by using video=vesafb:mtrr:3.

1024x768 was a bad example on my part, because that is the mode grub2 was using (and/or getting from the bios) anyway and letting Linux (fbvga) inherit. I actually want some higher res (I have a BIG display) and my card has many higher res VESA modes.

I never had anything like video=vesa:off (what you told me to check for and remove)

video=1280x1024 does not work, nor do the other VESA supported resolutions.

My motherboard and bios are new (EFI) and all the various instructions for older bios (what you suggested, what I found online, what I was using for an old Centos system before I changed motherboards, etc.) don’t work. My graphics card is ancient. Everything else is new.

I don’t know what might be done to get any other framebuffer. Only the vga one is getting loaded and IIUC, the vga framebuffer used with a non legacy bios lets you only inherit the graphics mode used by grub, not change to a different mode.

IIUC, the nouveax framebuffer no longer blocks the nvidia driver from taking control (the way it did the old Centos systems I’m used to). So if I could get the nouveau framebuffer to start that might give me back the ability to change framebuffer mode. But I have no idea how to try that. The nouveau driver crashes with this obsolete card (for me, it always did and still does) so I can’t switch back to using nouveau for the main GUI. If I knew more, maybe I could use nouveau just for framebuffer.

This morning (my local time) my Nvidia driver 340.xx have troubled with kernel 5.16.2 and then I end up disabling Nvidia driver. Since I can’t get my GUI, from tty I just load nouveau driver with sudo modprobe nouveau and it’s works. But still can’t get to graphic mode until I remove completely Nividia driver and reinstall the Nouveau. Now I’m back with Nouveau for my old laptop.

Maybe you want to try to disable Nvidia driver from kernel parameter (directly by edit boot list by pressing e, edit, and continue with ctr + x) and then load nouveau from tty to get higher resolution on console (and if want to get the graphics session again, just reboot it since the edit from boot list only temporary and not saved).

  1. Thanks for the warning:

my Nvidia driver 340.xx have troubled with kernel 5.16.2

I really depend on that 340 driver. I’m using the 5.15.15 kernel at the moment. So it sounds like I should wait before any kernel update either until I have time to investigate that, or until whatever that problem is, gets resolved.

  1. But regarding your answer to my question, I’m not looking for a temporary high res console when booting in non graphics mode. I’m looking for a long term high res console, so I will have more characters across (portrait mode) in the console when glitches occur during startup or when I unexpectedly need to ctrl-alt-F3 to diagnose something going badly wrong in GUI.

I’m a bit surprised the nouveau driver works for you for a card that otherwise uses the 340 driver. During previous employment, I tried nouveau for many such cards and it didn’t work right for any of them. It certainly doesn’t work right for the card I have now at home. I was assuming nouveau only works OK for newer cards (than the ones that need the 340 driver).

I just want to double check if you already try withvga=ask to kernel parameter. It will give us a list of available video modes as bellow:

In my case, I uses 34D then convert it to decimal number 845, then add it to kernel parameter vga=845 to get 1360x768 32 bit VESA.

Update:

Ah, I missed it. Above vga=ask most likely will not work with EFI. My bad.

But it’s interest me and make me curious to find out the solution.

Update:

I have machine with UEFI system, but the problem is it use amdgpu. Not sure if it will work with your case.

From kernel parameter add video=efifb:list, it will give us a list of available resolutions as below.

Then add video=efifb:mode=0 or just video=1366x768. If it’s still not work, in my case we can add nomodeset after it. The problem is with nomodeset, (at least in my case) in my user session it not load amdgpu module.

Or if in BIOS there available to choose legacy mode compatibility, may be you want to select it if the console mode are important for your workflow and then try with vga=ask above.

Doc source

1 Like

Wow, THANKS

With my many google searches, I never found even a hint of that.

video=efifb:list gave me a list, which on my second try I managed to read sideways (ten second time limit was a bit fast for me, with my longer list and sideways).

video=efifb:mode=4 on this computer is 1600x1200, which on my big monitor gives a very comfortable font size. Very few of the lines of boot-up messages wrap at 1200 pixels wide, which was a big part of my goal.

For GUI use, I just now switched from the 2560x1440 that I had been using to 2880x1620 which is the max the displays handle. Using an ancient Centos version and an ancient motherboard until recently, I recall I tried 2880x1620 when I bought the two bigger displays I have now. I can’t recall why I then rejected that and switched to 2560x1440. I’ll either rediscover why, or stick with 2280x1620 ( x 2 displays, so 3240x2280 desktop).

But 1200x1600 (rotated from 1600x1200 and appearing on just one of the two displays) is still the right size for fbconsole. VESA had some higher resolutions that video:efifb:list did not include, but I don’t think I would want them for a console and I suspect telling the BIOS that this OS doesn’t support EFI would break the way I’ve installed grub2, which would be a pretty big mess to clean up just to get an even higher resolution, though I appreciate that suggestion and might even have tried it if the highest from efifb had been lower than 1600x1200

Thanks again for all the research you apparently did to solve this for me.