# Hi res framebuffer on NVIDIA

## karneevor

Hi there.

Is it possible to set up a framebuffer with 1920x1200 on an Nvidia based Dell D820?

My first attempt messed up my console. I used vesafb-tng with 1920x1200@60 and "video=vesafb:mtrr,ywrap,1920x1200-24@60" in my kernel parameter.

Anyone got a clue?

----------

## i92guboj

 *karneevor wrote:*   

> Hi there.
> 
> Is it possible to set up a framebuffer with 1920x1200 on an Nvidia based Dell D820?
> 
> My first attempt messed up my console. I used vesafb-tng with 1920x1200@60 and "video=vesafb:mtrr,ywrap,1920x1200-24@60" in my kernel parameter.
> ...

 

You can try with uvesafb, you will need to patch your kernel manually. I don't really know if it will support that mode or not. I have it working on 1600x1200, nvidia and amd64 (at last, an alternative to vesafb for amd64 users).

More about it on these links:

http://dev.gentoo.org/~spock/projects/uvesafb/

https://forums.gentoo.org/viewtopic-t-568721.html?sid=57fec1cbce62f3de80d8876809040beb

----------

## Diezel

Did you ever get the 1920x1200 working? I was kind of wondering the same. I'm not really using console that much but when I do I'd like it to be in native resolution.

----------

## bunder

how about the nvidia framebuffer?  (i forget whether or not its compatible with the nvidia driver or not)

----------

## i92guboj

 *bunder wrote:*   

> how about the nvidia framebuffer?  (i forget whether or not its compatible with the nvidia driver or not)

 

nvidiafb is not compatible with the nvidia propietary driver, if that's what you mean.

----------

## Helena

I have been experimenting with the nvidia framebuffer because of my new widescreen monitor. To my surprise the nvidiafb driver (which indeed does conflict with the nvidia X driver) produces very nice results. On my Samsung 225BW 1680*1050 DFP I get a very nice font and resolution, something like 216 characters * 60 lines (I have to look it up). On my 1280*800 laptop something similar happens.

Interestingly I do not choose this resolution; it is automatically selected by nvidiafb, even though I start the kernel with the old fashioned

```
video=vesafb...
```

and

```
vga=795
```

parameters. I've been googling for some helpful documentation but could not find it yet.

One thing I would like to see is how to switch between vesafb and nvidiafb on-the-fly so that I still might start X if I want. Obviously both vesafb and nvidiafb can be compiled as modules but how and when to load/unload them?

PS I have AMD64 architectures so I don't use vesafb-tng.

----------

## i92guboj

 *Helena wrote:*   

> Interestingly I do not choose this resolution; it is automatically selected by nvidiafb, even though I start the kernel with the old fashioned
> 
> ```
> video=vesafb...
> ```
> ...

 

There's no nvidiafb.txt amongst the kernel docs. There never was, so I suppose the only way to see how it works is to look at the sources.

 *Quote:*   

> One thing I would like to see is how to switch between vesafb and nvidiafb on-the-fly so that I still might start X if I want. Obviously both vesafb and nvidiafb can be compiled as modules but how and when to load/unload them?

 

To unload a module you use rmmod, the big problem is that you can't unload a module that is being used. So, I don't think that there's is a way to unload a video driver that is used on console. You can unload the binary nvidia driver without problems because it is only used when you are in X. If you force rmmod to unload a driver that is being used right now, then the kernel will segfault and you will be forced to a hard reboot.

 *Quote:*   

> 
> 
> PS I have AMD64 architectures so I don't use vesafb-tng.

 

Try uvesafb, which is the evolution of vesa-tng.

----------

## Helena

 *i92guboj wrote:*   

> Try uvesafb, which is the evolution of vesa-tng.

 Thanks for the suggestion but it looks to me that uvesafb is not stable enough yet. Besides when using nvidiafb it seems to give very good results. If uvesafb can fullfill all my wishes then I hope it'll stabilize soon.

----------

## gruven

I am on AMD64 with an Nvidia 8800GT, and I have the framebuffer running at 1680x1050 with splashutils working.

My kernel options are:

```
vga=0x0369 splash=silent,fadein,theme:livecd-2007.0 CONSOLE=/dev/tty1
```

It looks really nice, and I just selected "VESA VGA Graphics Support" and "Userspace VESA VGA Graphics Support" in the kernel options.  I then followed the wiki for splashutils, and it all just worked.  I just used different options until it worked.

Hope that can help some of you with the same resolution widescreen I have.  I have the Samsung SyncMaster 2220WM 22" WS Monitor.

----------

## Helena

gruven:

thx for your help but I could not reproduce that. I am also on an AMD64 with 2*GeForce 7600GT in SLI. I have several questions:Do you use the unstable arch (~amd64)? Could you please post the full grub.conf (because both the full kernel option line and the initrd settings are relevant)? How did you create the initrd? What other kernel config settings did you use? I refer in particular to the options under "Device drivers/Graphics support", but I also wonder what setting you use under "General setup" for initramfs/initrd.Also, are you sure about the vga= code? it is not accepted here (undefined mode number).

----------

## gruven

Yes, I do use ~amd64, and I only have one 8800GT if that matters.

grub.conf

```

title=Gentoo Linux

   root (hd1,0)

   kernel /boot/kernel-2.6.23-gentoo-r4 root=/dev/sdb3 quiet vga=0x0369 splash=silent,fadein,theme:livecd-2007.0 CONSOLE=/dev/tty1

   initrd (hd1,0)/boot/fbsplash-livecd-2007.0-1680x1050

```

I created the initrd by using the gensplash howto on gentoo-wiki.com, specifically this part to create the initrd: 

http://gentoo-wiki.com/HOWTO_gensplash#Loading_initramfs_at_boot_.28recommended.29

Kernel config (specific sections):

Device Driver/Graphics support, Frame buffer hardware drivers, console display support

```

#

# Graphics support

#

# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#

# Display device support

#

# CONFIG_DISPLAY_SUPPORT is not set

# CONFIG_VGASTATE is not set

# CONFIG_VIDEO_OUTPUT_CONTROL is not set

CONFIG_FB=y

# CONFIG_FIRMWARE_EDID is not set

# CONFIG_FB_DDC is not set

CONFIG_FB_CFB_FILLRECT=y

CONFIG_FB_CFB_COPYAREA=y

CONFIG_FB_CFB_IMAGEBLIT=y

# CONFIG_FB_SYS_FILLRECT is not set

# CONFIG_FB_SYS_COPYAREA is not set

# CONFIG_FB_SYS_IMAGEBLIT is not set

# CONFIG_FB_SYS_FOPS is not set

CONFIG_FB_DEFERRED_IO=y

# CONFIG_FB_SVGALIB is not set

# CONFIG_FB_MACMODES is not set

# CONFIG_FB_BACKLIGHT is not set

CONFIG_FB_MODE_HELPERS=y

# CONFIG_FB_TILEBLITTING is not set

#

# Frame buffer hardware drivers

#

# CONFIG_FB_CIRRUS is not set

# CONFIG_FB_PM2 is not set

# CONFIG_FB_CYBER2000 is not set

# CONFIG_FB_ARC is not set

# CONFIG_FB_ASILIANT is not set

# CONFIG_FB_IMSTT is not set

# CONFIG_FB_VGA16 is not set

CONFIG_FB_UVESA=y

CONFIG_FB_VESA=y

# CONFIG_FB_HECUBA is not set

# CONFIG_FB_HGA is not set

# CONFIG_FB_S1D13XXX is not set

# CONFIG_FB_NVIDIA is not set

# CONFIG_FB_RIVA is not set

# CONFIG_FB_LE80578 is not set

# CONFIG_FB_INTEL is not set

# CONFIG_FB_MATROX is not set

# CONFIG_FB_RADEON is not set

# CONFIG_FB_ATY128 is not set

# CONFIG_FB_ATY is not set

# CONFIG_FB_S3 is not set

# CONFIG_FB_SAVAGE is not set

# CONFIG_FB_SIS is not set

# CONFIG_FB_NEOMAGIC is not set

# CONFIG_FB_KYRO is not set

# CONFIG_FB_3DFX is not set

# CONFIG_FB_VOODOO1 is not set

# CONFIG_FB_VT8623 is not set

# CONFIG_FB_TRIDENT is not set

# CONFIG_FB_ARK is not set

# CONFIG_FB_PM3 is not set

# CONFIG_FB_GEODE is not set

# CONFIG_FB_VIRTUAL is not set

#

# Console display driver support

#

CONFIG_VGA_CONSOLE=y

CONFIG_VGACON_SOFT_SCROLLBACK=y

CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=256

CONFIG_VIDEO_SELECT=y

CONFIG_DUMMY_CONSOLE=y

CONFIG_FRAMEBUFFER_CONSOLE=y

# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set

# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set

CONFIG_FB_CON_DECOR=y

# CONFIG_FONTS is not set

CONFIG_FONT_8x8=y

CONFIG_FONT_8x16=y

# CONFIG_LOGO is not set

```

General Setup initramfs section:

```

CONFIG_BLK_DEV_INITRD=y

CONFIG_INITRAMFS_SOURCE=""

```

I am sure that the video code is correct, I searched google for it, and just tried different ones until one worked.  This link is not for my monitor, but the same resolution.  Link is here: http://gentoo-wiki.com/HARDWARE_Dell_Inspiron_1520#grub.conf

I have fbcondecor loading at boot time.  I just followed the wiki after I got the framebuffer set to the correct size.

If you need any other info, just ask, I will be happy to post it up.

----------

## Helena

OK I'll give it another shot. *gruven wrote:*   

> 
> 
> ```
> 
> title=Gentoo Linux
> ...

 

I concluded from the documentation that we would have to use the

```
video=uvesafb:1680x1050-32,ywrap,mtrr:4
```

syntax... but apparently that was wrong.

 *gruven wrote:*   

> Yes, I do use ~amd64, and I only have one 8800GT if that matters.

 On second thought it shouldn't matter. SLI is only finally enabled through the driver AFAIK, and framebuffer drivers probably don't bother...

----------

## Helena

gruven:

Still no luck, the vga= parameter is not accepted. Upon looking throgh dmesg I found that uvesfab cannot load v86d, which I did of course compile. The relevant lines are:

```
[   26.772588] uvesafb: failed to execute /sbin/v86d

[   26.772617] uvesafb: make sure that the v86d helper is installed and executable

[   26.772645] uvesafb: Getting VBE info block failed (eax=0x4f00, err=-2)

[   26.772673] uvesafb: vbe_init() failed with -22

[   26.772701] uvesafb: probe of uvesafb.0 failed with error -22
```

The uvesafb ebuild suggests setting the initramfs file name in the kernel config but you made sure you don't do that. That's why I asked that question before, BTW.

I can now only think of exotic reasons it doesn't work like kernel version (i use r3 and you r4) or a 7600 not being able to produce this while a 8800 can...

Perhaps i should contact spock or file a bug?

----------

## gruven

Not sure what it is, but my dmesg also says it can't load uvesafb, so it uses vesafb

dmesg | grep vesa

```

uvesafb: failed to execute /sbin/v86d

uvesafb: make sure that the v86d helper is installed and executable

uvesafb: Getting VBE info block failed (eax=0x4f00, err=-2)

uvesafb: vbe_init() failed with -22

uvesafb: probe of uvesafb.0 failed with error -22

vesafb: framebuffer at 0xf9000000, mapped to 0xffffc20010680000, using 13781k, total 14336k

vesafb: mode is 1680x1050x32, linelength=6720, pages=1

vesafb: scrolling: redraw

vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0

```

I did try to load the initramfs into the kernel, but it didn't work so I took it out and reverted back to vesafb instead of uvesafb.  

This has worked on kernel 2.6.23-gentoo-r3, r4, and r5.  Those are the only ones I have tried.

One more thing that I didn't mention earlier about the vga= parameter that I use.  It worked before I tried splashutils, just specifying the vga= parameter on a fresh install using gentoo sources with the config I posted earlier.

Example kernel line:

```

kernel /boot/kernel-2.6.23-gentoo-r5 root=/dev/sdb3 quiet vga=0x0369

```

I don't know why it doesn't work with your card though.

----------

## Helena

I even tried the advice given in https://forums.gentoo.org/viewtopic-t-568721-highlight-uvesafb.html including removing vesafb but it still doesn't work.

Anyway, this is developing more into an uvesafb how-to, whereas I just want a nvidia framebuffer how-to.

----------

