# vesafb not workging with NVIDIA GeForce 210 (GT218)

## xaviermiller

Hi!

I have a NVIDIA GeForce 210 (GT218) running nvidia-drivers under X, becase Kodi crashes using nouveau.

I would like to have a graphical framebuffer, and could run v86d and uvesafb, but since the removal of v86d, I tried vesafb without success.

I entered "vga=791 video=vesafb:mtrr:3,y" in the kernel boot parameters, but I don't see any information about vesafb in dmesg, nor any pinguin.

How can I check my video card is compatible with vesafb?

How can I check if vesafb is loaded (it cannot be loaded as a module)?

What is wrong with my config?

```
CONFIG_DRM_KMS_FB_HELPER=y

CONFIG_DRM_FBDEV_EMULATION=y

CONFIG_DRM_FBDEV_OVERALLOC=100

CONFIG_FB=y

CONFIG_FB_CMDLINE=y

CONFIG_FB_NOTIFY=y

CONFIG_FB_BOOT_VESA_SUPPORT=y

CONFIG_FB_CFB_FILLRECT=y

CONFIG_FB_CFB_COPYAREA=y

CONFIG_FB_CFB_IMAGEBLIT=y

CONFIG_FB_SYS_FILLRECT=y

CONFIG_FB_SYS_COPYAREA=y

CONFIG_FB_SYS_IMAGEBLIT=y

CONFIG_FB_SYS_FOPS=y

CONFIG_FB_DEFERRED_IO=y

CONFIG_FB_MODE_HELPERS=y

CONFIG_FB_TILEBLITTING=y

CONFIG_FB_VESA=y

```

----------

## NeddySeagoon

xaviermiller,

Are you using BIOS or UEFI mode?

----------

## xaviermiller

Hi NeddySeagoon,

It's a >10 years old BIOS machine, started with SYSLINUX.

----------

## NeddySeagoon

xaviermiller,

Good answer.

Care to share your dmesg and kernel .config.

Check your 

```
uname -a
```

 kernel build date.  Is in what you expect or did you forget to mount /boot for your kernel install?

If /boot and / (root) use the same filesystem type, you can make grub load the kernel from the build location.

That's only useful if you don't use an initrd though.

----------

## xaviermiller

Hi,

I manage very well the kernel updates, and dmesg doesn't show anything when vesafb is compiled and activated with the VGA= VIDEO= boot parameters.

If I run uvsafb or vga16fb, I see the framebuffer loading messages in dmesg.

So: nothing is displayed in dmesg, no framebuffer seems active when vesafb is compiled.

----------

## NeddySeagoon

xaviermiller,

Heres what I have

```
$ dmesg | grep vesa

[    0.000000] Command line: root=UUID=cf559dbe-81bb-45b7-bbdd-0bcdc81e066b vga=0x317 video=vesafb:mtrr:3,ywrap

[    0.000000] Kernel command line: root=UUID=cf559dbe-81bb-45b7-bbdd-0bcdc81e066b vga=0x317 video=vesafb:mtrr:3,ywrap

[    1.974384] vesafb: mode is 1024x768x16, linelength=2048, pages=1

[    1.974387] vesafb: scrolling: redraw

[    1.974391] vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0

[    1.974401] vesafb: framebuffer at 0xf9000000, mapped to 0xffffc90000800000, using 3072k, total 14336k
```

I wasn't doubting your kernel update skills.  Its just that its easy to overlook a detail and not get the result you expected.

Like measure twice, cut once.

----------

## xaviermiller

NeddySeagoon,

Here what I have:

```
# uname -a

Linux microwave 4.13.2-gentoo #2 SMP PREEMPT Sat Sep 23 23:00:07 CEST 2017 x86_64 AMD Athlon(tm)64 X2 Dual Core Processor 4400+ AuthenticAMD GNU/Linux

# zgrep -i vesa /proc/config.gz 

CONFIG_CMDLINE="root=/dev/vg0/gentoo sata_nv.swncq=0 vga=0x317 video=vesafb:mtrr:3,ywrap"

CONFIG_FB_BOOT_VESA_SUPPORT=y

# CONFIG_FB_UVESA is not set

CONFIG_FB_VESA=y

# dmesg | grep -i vesa

[    0.000000] Kernel command line: root=/dev/vg0/gentoo sata_nv.swncq=0 vga=0x317 video=vesafb:mtrr:3,ywrap BOOT_IMAGE=/boot/kernels/vmlinuz-gentoo
```

As you see, vesafb is not loaded... as if the GPU is not compatible with VESA 2.0

----------

## NeddySeagoon

xaviermiller,

That all looks good ... but it doesn't work.  I'll think about it some more.

----------

## xaviermiller

As I said, if I replace vesafb by vga16fb, it works, until the framebuffer is scrambled by nVidia driver.

and uvesafb did work, but v86d is no more available (and klibc doesn't compile with gcc >= 6, PIE/PIC)

If vesafb still doesn't work, I will get a woking v86d (from tinderbox, or compiled in a GCC5 chroot) and use uvesafb

... or get a Radeon GPU

----------

## NeddySeagoon

xaviermiller,

The scrambling by the nvidia-driver happens because the framebuffer driver and nvidia-driver want to set the video card up in different but conflicting ways.

Normally, nvidia-drivers spots that the video card is already claimed by another driver and refuses to load.

That means you need to choose a framebuffer driver that does not upset nvidia-drivers.

With the demise of uvesafb, there are only two, vesafb and simplefb.

Simple framebuffer only draws in the framebuffer left behind by something else. Grub perhaps?

With legacy grub, that would only be 640x480 but I think grub2 can use higher resolutions.

Is simplefb an option for you?

----------

## xaviermiller

Hi NeddySeagoon,

I will check those other options this week and come back then  :Wink: 

----------

## xaviermiller

Hi,

simplefb is not initialized by syslinux, and vesafb is not working.

Finally, I have found an old backup with a working v86d binary... and uvesafb works again!

```
[    0.000000] Console: colour VGA+ 80x25

[    0.000000] console [tty0] enabled

[    1.624949] uvesafb: NVIDIA Corporation, GT218 Board - 08720000, Chip Rev   , OEM: NVIDIA, VBE v3.0

[    1.749776] uvesafb: VBIOS/hardware supports DDC2 transfers

[    1.814897] uvesafb: monitor limits: vf = 75 Hz, hf = 99 kHz, clk = 250 MHz

[    1.815843] uvesafb: scrolling: redraw

[    2.039482] Console: switching to colour frame buffer device 128x48

[    2.042759] uvesafb: framebuffer at 0xdd000000, mapped to 0xffffc90001000000, using 14336k, total 14336k

[    2.042760] uvesafb: fb0: VESA VGA frame buffer device
```

Now I can play with bootsplash  :Smile: 

----------

## andrewwalker27

As it appears that vesafb and uvesafb are both unsuitable for use alongside nvidia-drivers, it looks like my only option is simplefb but I can't find any simple guide to using it!

This is all I could find, https://forums.gentoo.org/viewtopic-p-7482038.html but most of the links are dead or less than helpful.

Do I need to just need to rebuild the kernel, generate a new intrdramfs and it should work? Should grub2 work out the resolution or do I have to manually set it somehow?

----------

## NeddySeagoon

andrewwalker27,

Most of those links are into the kernel sources Documentation tree.

They are dead because that's been reorganised since they were posted.

Look in /usr/src/linux/Documentation/fb/

If you use grub2, it sets up the simple frambuffer and the kernel uses what it finds.

To set the resolution, you set the resolution that grub2 uses.

I have not looked at passing 

```
video=simplefb <setup>
```

 on the kernel command line. There may be a way.

After all, if grub2 can set up the framebuffer, so can other things.

The bad news is that the 'other things' may be userspace tools, in which case you would need an initrd,

----------

## HeXiLeD

It's been a while since I played with nvidia-drivers proprietary package and console fb. The reason was because at some point with the 3** driver series, things stopped working for me and I removed fb support from the kernel and gave up at the time.

As  was reading your posts I thought I would give it a try again but i see that seems that all of you have something running different from each other. Is the issue solved for all of you ?

Currently my system is/has:

System uses: BIOS

Package v86d is gone.

x11-drivers/nvidia-drivers-387.34

# lsmod | grep nvidia

```
nvidia_uvm            606208  0

nvidia_drm             40960  1

nvidia_modeset        872448  6 nvidia_drm

nvidia              13508608  456 nvidia_modeset,nvidia_uvm
```

 # cat /etc/portage/make.conf| grep VIDEO

```
VIDEO_CARDS="nvidia virtualbox v4l fbdev"
```

# uname -a

```
Linux 4.12.12-gentoo #4 SMP
```

# lspci | grep VGA 

```
01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
```

# dmesg | grep -i vesa

Outputs nothing.

# cat /usr/src/linux/.config| egrep -i 'VGA|FRAMEBUFFER|VESA|CONFIG_FB'

```
CONFIG_VGA_ARB=y

CONFIG_VGA_ARB_MAX_GPUS=1

# CONFIG_VGA_SWITCHEROO is not set

CONFIG_FB=y

CONFIG_FB_CMDLINE=y

CONFIG_FB_NOTIFY=y

# CONFIG_FB_DDC is not set

# CONFIG_FB_BOOT_VESA_SUPPORT is not set

CONFIG_FB_CFB_FILLRECT=y

CONFIG_FB_CFB_COPYAREA=y

CONFIG_FB_CFB_IMAGEBLIT=y

# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set

CONFIG_FB_SYS_FILLRECT=y

CONFIG_FB_SYS_COPYAREA=y

CONFIG_FB_SYS_IMAGEBLIT=y

# CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA is not set

# CONFIG_FB_FOREIGN_ENDIAN is not set

CONFIG_FB_SYS_FOPS=y

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 is not set

# CONFIG_FB_TILEBLITTING is not set

# 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 is not set

# CONFIG_FB_VESA is not set

# CONFIG_FB_N411 is not set

# CONFIG_FB_HGA is not set

# CONFIG_FB_OPENCORES is not set

# CONFIG_FB_S1D13XXX is not set

# CONFIG_FB_NVIDIA is not set

# CONFIG_FB_RIVA is not set

# CONFIG_FB_I740 is not set

# CONFIG_FB_LE80578 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_CARMINE is not set

# CONFIG_FB_SMSCUFX is not set

# CONFIG_FB_UDL is not set

# CONFIG_FB_IBM_GXT4500 is not set

# CONFIG_FB_VIRTUAL is not set

# CONFIG_FB_METRONOME is not set

# CONFIG_FB_MB862XX is not set

# CONFIG_FB_BROADSHEET is not set

# CONFIG_FB_AUO_K190X is not set

CONFIG_FB_SIMPLE=y

# CONFIG_FB_SM712 is not set

# CONFIG_VGASTATE is not set

CONFIG_VGA_CONSOLE=y

CONFIG_VGACON_SOFT_SCROLLBACK=y

CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=1024

# CONFIG_VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT is not set

CONFIG_FRAMEBUFFER_CONSOLE=y

CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y

# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set

# CONFIG_FB_CON_DECOR is not set

# CONFIG_LOGO_LINUX_VGA16 is not set

# CONFIG_USB_SISUSBVGA is not set
```

No grub configuration is currently set as I would like to start all this with from scratch.

The wiki is also very poor for this topic as it seems to favor uvesafb.

Have all of you been able to get yours to work  and with exactly what support ? vesafb ?  v86d ? simplefb ?

----------

