# nvidiafb/rivafb issues (no X)

## dtjohnst

I'm trying to get either nvidiafb or rivafb to work so I can get an accelerated framebuffer. I don't use X and I don't plan to install X, so the fact that the nvidia X drivers conflict is a non-issue for me. I'm more interested in an accelerated framebuffer than I am in getting a working gui. I'm not sure if I should be using nvidiafb or rivafb as the rivafb help text says it's for "GeForce" cards as well. I have a GeForce 8600M GT on a Dell laptop. I can get vesafb and uvesafb to load just fine. It's a fresh install on a bare system, so my make.conf is pretty spartan at the moment.

```
make.conf

# These settings were set by the catalyst build script that automatically

# built this stage.

# Please consult /etc/make.conf.example for a more detailed example.

CFLAGS="-O2 -pipe"

CXXFLAGS="-O2 -pipe"

# WARNING: Changing your CHOST is not something that should be done lightly.

# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.

CHOST="x86_64-pc-linux-gnu"

# These are the USE flags that were used in addition to what is provided by the

# profile used for building.

MAKEOPTS="-j2"

GENTOO_MIRRORS="http://gentoo.mirrors.tera-byte.com/ "

SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage"

USE="mmx sse sse2 fbcon" 
```

Here's what I've tried:

```
grub.conf

default 0

timeout 8

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.27-r8

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8 root=/dev/sda7 video=uvesafb:1920x1200-32,mtrr:3,ywrap

title Gentoo nvidiafb1

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb:1920x1200-32

title Gentoo nvidiafb2

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb:1920x1200-60

title Gentoo nvidiafb3

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb:1920x1200@60-32

title Gentoo nvidiafb4

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb:1920x1200M@60

title Gentoo nvidiafb5

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb:1920x1200MR@60

title Gentoo nvidiafb6

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb:1920x1200M-32

title Gentoo nvidiafb7

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb:1920x1200MR-32

title Gentoo nvidiafb8

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-nvidiafb root=/dev/sda7 video=nvidiafb vga=0x37d

title Gentoo rivafb1

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb:1920x1200-32

title Gentoo rivafb2

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb:1920x1200-60

title Gentoo rivafb3

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb:1920x1200@60-32

title Gentoo rivafb4

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb:1920x1200M@60

title Gentoo rivafb5

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb:1920x1200MR@60

title Gentoo rivafb6

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb:1920x1200M-32

title Gentoo rivafb7

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb:1920x1200MR-32

title Gentoo rivafb8

root (hd0,0)

kernel /boot/kernel-2.6.27-gentoo-r8-rivafb root=/dev/sda7 video=rivafb vga=0x37d
```

I used this many different methods of passing arguments because I wasn't sure which to use. There's a lack of documentation and I've seen all these examples used in other threads in various places. Most of those threads ended with "You can't use nvidiafb/rivafb with the nvidia X drivers, so use vesafb instead" followed by a "Thanks, that works" post. Which obviously doesn't help me.

As for symptoms: nvidiafb1-7 result in a normal console loading, with no framebuffer at all. dmesg | grep nvidia returns the following, with the first 2 lines having the resolution that was passed:

```
[    0.000000] Command line: root=/dev/sda7 video=nvidiafb:1920x1200-32

[    0.000000] Kernel command line: root=/dev/sda7 video=nvidiafb:1920x1200-32

[    0.487254] nvidiafb 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16

[    0.488214] nvidiafb: Device ID: 10de0407

[    0.488639] nvidiafb: unknown NV_ARCH
```

The unknown NV_ARCH means my card is not supported I assume. But is the 8600M GT really that new a card? If I use nvidiafb8, I get a blank screen if vesafb support is not enabled. With vesafb support enabled, I get a VESA VGA framebuffer with no acceleration according to fbset. With rivafb1-7 I get the following when I dmesg | grep riva:

```
[    0.000000]Command line: root=/dev/sda7 video=rivafb:1920x1200-32

[    0.000000]Kernel command line: root=/dev/sda7 video=rivafb:1920x1200-32

```

No mention of framebuffer at all. Not even an attempt. I'm concerned this means my card is not supported. I was hoping for a 1.5 year old laptop that I'd be able to get all the hardware working efficiently. For reference, I'd like to get a framebuffer that can play high-quality movies and tv shows. Not necessarily Blu-Ray, but a good-quality XVID/DIVX-encoded tvshow or something would be fine. Blu-ray would be wicked, but I'm not that picky. I really don't want X, and I won't really be doing anything to require graphics (aside from the odd movie or tv show I want to play).

The relevent parts of my .config are as follows:

```
CONFIG_CONNECTOR=y **

CONFIG_BLK_DEV_INITRD=y **

CONFIG_INITRAMFS_SOURCE="/usr/share/v86d/initramfs" **

CONFIG_AGP=y

CONFIG_AGP_AMD64=y

CONFIG_AGP_INTEL=y

CONFIG_FB=y

CONFIG_FIRMWARE_EDID *

CONFIG_FB_CFB_FILLRECT=y

CONFIG_FB_CFB_COPYAREA=y

CONFIG_FB_CFB_IMAGEBLIT=y

CONFIG_FB_MODE_HELPERS=y

CONFIG_FB_TILEBLITTING=y *

CONFIG_FB_NVIDIA=y

CONFIG_FB_NVIDIA_I2C=y *

CONFIG_FB_NVIDIA_BACKLIGHT=y *

```

If there's a * after it, that means I've tried with it both on and off, in all possible combinations. Items with ** indicate they were configured for use with uvesafb (with CONFIG_FB_UVESA=y as well obviously). I have tried both framebuffers with them configured and without them configured as well with no luck. With rivafb I disable the nvidiafb and enable rivafb. In that case, I have also tried all combinations of * using the riva backlight control, and riva ddc sub-options.

Does anyone know the status of 8600M GT support with a framebuffer or how to get this to work?

----------

## NeddySeagoon

dtjohnst,

rivafb is for ATI cards and nvidiafb is for nvidia cards, as you have a laptop you may have on board intel graphics.

Lets start with a look at your lspci output.

----------

## M

Nope, rivafb is for old nvidia cards, before geforce, and after all these configs in grub.conf I would say the man knows he has nvidia card   :Smile:  . 

dtjohnst,

I tried nvidiafb, the problem is obviously that your card is too new, or doesn't support that resolution, try some lower, my native res is 1680x1050 but with vesafb only 1400x1050 is possible, with nvidiafb I can only get 1280x1024, and the picture is too dark and blury in mplayer, sdlmame works alot better then vesafb but also too dark. I think these days nobody care about nvidiafb there for no updates etc. We can only hope that nouveaufb will be something usable.

----------

## krinn

you could use vga=ask so it will display all valids modes that can be use. Might help you.

----------

## dtjohnst

Definitely nvidia. I've got a Dell Inspiron 1720 with an nvidia GeForce 8600M GT and 256MB dedicated video RAM. The relevant section of lspci -vv is:

```
01:00.0 VGA compatible controller: nVidia Corporation GeForce 8600M GT (rev a1) (prog-if 00 [VGA controller])

   Subsystem: Dell Device 01f2

   Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-

   Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-

   Latency: 0, Cache Line Size: 64 bytes

   Interrupt: pin A routed to IRQ 7

   Region 0: Memory at fd000000 (32-bit, non-prefetchable) [size=16M]

   Region 1: Memory at e0000000 (64-bit, prefetchable) [size=256M]

   Region 3: Memory at fa000000 (64-bit, non-prefetchable) [size=32M]

   Region 5: I/O ports at df00 [size=128]

   Expansion ROM at fea00000 [disabled] [size=128K]

   Capabilities: [60] Power Management version 2

      Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)

      Status: D0 PME-Enable- DSel=0 DScale=0 PME-

   Capabilities: [68] Message Signalled Interrupts: Mask- 64bit+ Count=1/1 Enable-

      Address: 0000000000000000  Data: 0000

   Capabilities: [78] Express (v1) Endpoint, MSI 00

      DevCap:   MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us

         ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset-

      DevCtl:   Report errors: Correctable- Non-Fatal- Fatal- Unsupported-

         RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+

         MaxPayload 128 bytes, MaxReadReq 512 bytes

      DevSta:   CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-

      LnkCap:   Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Latency L0 <512ns, L1 <4us

         ClockPM- Suprise- LLActRep- BwNot-

      LnkCtl:   ASPM L0s L1 Enabled; RCB 128 bytes Disabled- Retrain- CommClk+

         ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-

      LnkSta:   Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

   Capabilities: [100] Virtual Channel <?>

   Capabilities: [128] Power Budgeting <?>

   Capabilities: [600] Vendor Specific Information <?>
```

My graphics card supported a ton of resultions in the framebuffer. Using vesafb or uvesafb I can display 1920x1200 using vga=0x37d. I've tried 1024x768 and the results are the same (no change). If I use the vga= kernel option, it doesn't matter what resolution I specify. If vesafb is compiled into the kernel, I get an unaccelerated vesa framebuffer, and if vesafb is NOT compiled in, I get a black screen. Here's the output of hwinfo --framebuffer

```
02: None 00.0: 11001 VESA Framebuffer

  [Created at bios.447]

  Unique ID: rdCR.RenlEygV6o6

  Hardware Class: framebuffer

  Model: "NVIDIA G84 Board - p410h1  "

  Vendor: "NVIDIA Corporation"

  Device: "G84 Board - p410h1  "

  SubVendor: "NVIDIA"

  SubDevice: 

  Revision: "Chip Rev"

  Memory Size: 14 MB

  Memory Range: 0xfb000000-0xfbdfffff (rw)

  Mode 0x0300: 640x400 (+640), 8 bits

  Mode 0x0301: 640x480 (+640), 8 bits

  Mode 0x0303: 800x600 (+800), 8 bits

  Mode 0x0305: 1024x768 (+1024), 8 bits

  Mode 0x0307: 1280x1024 (+1280), 8 bits

  Mode 0x030e: 320x200 (+640), 16 bits

  Mode 0x030f: 320x200 (+1280), 24 bits

  Mode 0x0311: 640x480 (+1280), 16 bits

  Mode 0x0312: 640x480 (+2560), 24 bits

  Mode 0x0314: 800x600 (+1600), 16 bits

  Mode 0x0315: 800x600 (+3200), 24 bits

  Mode 0x0317: 1024x768 (+2048), 16 bits

  Mode 0x0318: 1024x768 (+4096), 24 bits

  Mode 0x031a: 1280x1024 (+2560), 16 bits

  Mode 0x031b: 1280x1024 (+5120), 24 bits

  Mode 0x0330: 320x200 (+320), 8 bits

  Mode 0x0331: 320x400 (+320), 8 bits

  Mode 0x0332: 320x400 (+640), 16 bits

  Mode 0x0333: 320x400 (+1280), 24 bits

  Mode 0x0334: 320x240 (+320), 8 bits

  Mode 0x0335: 320x240 (+640), 16 bits

  Mode 0x0336: 320x240 (+1280), 24 bits

  Mode 0x033d: 640x400 (+1280), 16 bits

  Mode 0x033e: 640x400 (+2560), 24 bits

  Mode 0x0345: 1600x1200 (+1600), 8 bits

  Mode 0x0346: 1600x1200 (+3200), 16 bits

  Mode 0x0347: 1400x1050 (+1400), 8 bits

  Mode 0x0348: 1400x1050 (+2800), 16 bits

  Mode 0x0349: 1400x1050 (+5600), 24 bits

  Mode 0x034a: 1600x1200 (+6400), 24 bits

  Mode 0x0352: 2048x1536 (+8192), 24 bits

  Mode 0x0360: 1280x800 (+1280), 8 bits

  Mode 0x0361: 1280x800 (+5120), 24 bits

  Mode 0x0362: 768x480 (+768), 8 bits

  Mode 0x0364: 1440x900 (+1440), 8 bits

  Mode 0x0365: 1440x900 (+5760), 24 bits

  Mode 0x0368: 1680x1050 (+1680), 8 bits

  Mode 0x0369: 1680x1050 (+6720), 24 bits

  Mode 0x037c: 1920x1200 (+1920), 8 bits

  Mode 0x037d: 1920x1200 (+7680), 24 bits

  Config Status: cfg=new, avail=yes, need=no, active=unknown
```

As for vga=ask...I've tried that as well. I get a menu with the same modes as displayed in hwinfo --framebuffer. If vesafb support is compiled in, I get an unaccelerated vesa framebuffer. Without vesafb support, I get a black screen. I'm 99% sure from experimentation that the vga= switch ONLY controls the vesa framebuffer and has nothing to do with the nvidia framebuffer.

I'm surprised that accelerated framebuffers aren't more widely supported. A 2-year old video card is supported by everything else it seems. I guess X has just become so prevalent in the Linux world that no one really cares about framebuffers anymore. I remember when I first got started in Linux no one even cared to get X working. With things like Ubuntu finding widespread use, I suppose more and more mouse-centric persons are getting involved and X is becoming a "must" on most systems. It's unfortunate. Seems like we're taking a step backwards (in my humble opinion).

----------

## Hibbelharry

Framebuffer is getting a little more popular again due to kernelmodesetting and in-kernel drm. At least for intel card this provides a little boost of capabilities. Ati might come back in game, too. Concerning nvidia there might some day be some rescue from the nouveau project, but there is none currently. Indeed nvidiafb has mediocre support on newer cards. Vesafb and brothers should be able to support non widespread resolutions but they are all slow as you might notice when you scroll around.

While I'm a terminal centric worker i switched to using X. There are some really slick wm's causing relatively low overhead and output in any x-terminal beats vesafbs speed by a huge amount. Try considering X again. Even if you just use terminals. It's worth doing it.

Greetz

Hibbelharry

----------

## dtjohnst

Yeah, worst case I run something simple with no taskbars or anything use a full-screen console as my "desktop". It's not really my ideal, adds a fair bit of overhead and whatnot, but I'll live.

----------

