| Sigillo's framebuffer5 September 2005
 Status The new nvidiafb still (as of 2.6.12) doesn't work right on sigillo; 
I need to bugreport it to Antonin. The rivafb works fine -- but it's not compatible with the proprietary 
nvidia kernel module. You can play movies (but touching the keyboard 
will freeze the computer solid) and watch slideshows -- great for plane 
rides. See recipe in /root/commands. I finally (Sep 05) discovered how people get a penguin on boot -- you 
need to activate FB_VESA (Device drivers | Graphics support | Support 
for frame buffer devices) in the kernel; cf. Documentation/fb/vesafb.txt 
-- I've used Linux for nearly four years, wanting a boot penguin, 
knowing it was possible on Sigillo (since I get it with Knoppix) and 
that I likely need the vesa framebuffer, but never actually activating 
this part of the kernel. I built it in, along with Device drivers | 
Graphics | Console display | Framebuffer console -- and it works! I now 
have a beautiful little penguin on boot, though it gets turned off by 
loading the keyboard that maps the vpr key (in bootmisc.sh). Afterwards, I get a framebuffer console, which works fine both with 
xorg's nv and the nvidia driver -- in the latter, glxgears run at 
1300fps, which is what it was doing before. It will likely also work 
with xorg's fbdev driver without problems -- the reason I wasn't using 
that is that the rivafb and nvidiafb modules don't unload. Otoh the nv 
driver is likely better. Anyway, the framebuffer console is not as nice 
as the text console, and apparently also not quite as fast, so I won't 
be using it on a regular basis. I haven't tried suspending it. Now, can I watch movies directly in this vesa framebuffer? No, 
that doesn't work, but fbi handles slideshows fine. Goal I've been curious about the framebuffer and its capabilities. Does it 
allow me to view graphics from the CLI? Could I run a lightweight GUI 
using the framebuffer -- as in directfb -- and get faster responses? 
 Documentation and software Commands 
  To use the framebuffer, do this on bootup:
    rmmod nvidiamodprobe fbconmodprobe rivafbfbset fullscreenmplayer -vo directfb <moviename>fbi /windows/WINDOWS/Web/Wallpaper/*.jpg -t 5 -autozoom -editw3m can use fb for web page image display MPlayer keyboard shortcuts (usful in framebuffer -- mouse will freeze everything!)
     Basic keys: (complete list in the man page, also check input.conf)
            <-  or  ->       seek backward/forward 10 seconds
up or down       seek backward/forward  1 minute
pgup or pgdown   seek backward/forward 10 minutes
< or >           step backward/forward in playlist
p or SPACE       pause movie (press any key to continue)
q or ESC         stop playing and quit program
+ or -           adjust audio delay by +/- 0.1 second
o               
cycle OSD mode:  none / seekbar / seekbar + timer
* or /           increase or decrease PCM volume
z or x           adjust subtitle delay by +/- 0.1 second
r or t           adjust subtitle position up/down, also see -vf expand
 
 Snapshot of the frame buffer content: cp /dev/fb0 myfilefbset: set frame buffer resolutionfbset -i  
fbset "640x480-60"
 man fb.modesmodeline2fb (for creating entries in /etc/fb.modes)
 Gentoo's
instructions
 
You can also use
rivafb --Kernel
Disable the rivafb moduleEnable the vesa module (and no
other gfx card modules) 
 Lilo
vga=ask video=vesa:ywrap,mtrr 
 Boot
menuA menu should come up with all the
strange 640x480 modes
listedEnter 0317 at the prompt to give you a
1024x768x16bit console resolution (even though it isn't in the
menu) 
Also try 031Ato give you a 1280x1024x32k
using the vga=794
 The logo should come up at the
top! 
 Lilovga=791 video=vesa:ywrap,mtrrvga=794 video=vesa:ywarp,mtrr (1280x1024)vga=0x307,
0x319, 0x31a or 0x31b (1280x1024)vga=0x346
(=838) (1600x1200)
 
 
        if you don't load fbcon, you'll be able to unload rivafb afterwardsyou can also run X with the nv driver (but not with the nvidia driver)
 
The frame buffer devices should show up.append = "video=riva:1024x768-16@60"You may be able to up to 1280x1024x256RivaFB
support must be compiled into the kernel for this to workStill didn't
work for me -- I didn't try all settings of course 
 Installation history
 
 2004-03-20
 It turns out you can run X-windows with the fbdev driver!!!! You can likely also run it in dual monitors, using xinerama -- cf instructions. Dual head graphics cards are likely not supported.
 2004-11-11
 I wrote to Antonino Daplas <adaplas@pol.net> that the main remaining annoyance is that you can't remove the rivafb module:
 You can actually, as long as you don't enable the framebuffer console. This sequence should work: 
        modprobe rivafbmplayer -vo directfb
 rmmod rivafb
 
 Of course you will only have a vga console.
 He also points out that the nv driver is compatible with rivafb, so you can boot into windows after using riva.
 2004-11-09
 
 2004-11-08
 "If
you have sample XFree86 modelines, you can use the utility modeline2fb
to convert them to entries compatible with /etc/fb.modes."It's part of the fbset package.  Here's my modeline -- not sure it's entirely correct:
 
 ModeLine     "1280x854" 85.26 1280 1296 1552 1792 854 854 861 892 -hsync -vsync
 To create the correct modes, issue
 modeline2fb /etc/X11/XF86Config
 
 That generated this:
 
 
mode "1280x854"geometry   1280 854   1280 26201   8
 timings    11728   240 16   31 0   256 7
 hsync low
 vsync low
 endmode
 
 
       I
tried setting the -d 16 and -d 24 flag for more color depth
(modeline2fb -d 24 /etc/X11/XF86Config-4), but when I used those modes
I got the error message there wasn't enough video memory.  The
result of the 8-bit mode:
 #fbset -xHowever, today I couldn't get fbxine to work -- it worked yesterday,
though only with scrambled colors. Today it didn't work at all.
 Mode "1280x854"
 # D: 85.266 MHz, H: 47.581 kHz, V: 53.342 Hz
 DotClock 85.267
 HTimings 1280 1296 1552 1792
 VTimings 854 854 861 892
 Flags    "-HSync" "-VSync"    # Warning: XFree86 doesn't support accel
 EndMode
 
 
 
       
       2004-11-07 update
 I followed these instructions from Antonino A. Daplas <adaplas@pol.net> to modify the rivafb.c file:
 1. cd /usr/src/linux && pico drivers/video/riva/fbdev.cThis worked -- I can now issue:2. search for the function "static int __devinit rivafb_probe".
 3. Somewhere near the end you should see these lines:
 
 fb_destroy_modedb(info->monspecs.modedb);
 info->monspecs.modedb_len = 0;
 info->monspecs.modedb = NULL;
 
 4. Remove the line "info->monspecs.modedb_len = 0"
 5. Next, search for the function "static int rivafb_check_var"
 6. Look for these lines:
 
 if (!mode_valid && !list_empty(&info->modelist))
 return -EINVAL;
 
 7. Change it so it becomes like this:
 
 if (!mode_valid && info->monspecs.modedb_len)
 return -EINVAL;
 
 8. Recompile and reboot. The end effect is rivafb will accept all modelines coming from fbset as gospel truth.
 
 root@sigillo:/usr/src/linux# rm drivers/video/riva/*.o
 root@sigillo:/usr/src/linux# make SUBDIRS=drivers/video/riva
 LD      drivers/video/riva/built-in.o
 CC [M]  drivers/video/riva/fbdev.o
 CC [M]  drivers/video/riva/riva_hw.o
 CC [M]  drivers/video/riva/nv_driver.o
 CC [M]  drivers/video/riva/rivafb-i2c.o
 LD [M]  drivers/video/riva/rivafb.o
 Building modules, stage 2.
 MODPOST
 CC      drivers/video/riva/rivafb.mod.o
 LD [M]  drivers/video/riva/rivafb.ko
 root@sigillo:/usr/src/linux# cp drivers/video/riva/rivafb.ko /lib/modules/2.6.9/kernel/drivers/video/riva/
 
 
 fbset "1024x768-60"and get the new size. Some oddities with the mouse -- it doesn't go
over the whole area, but seems to stick to 640x480. Now I need to
define the real monitor size in /etc/fb.modes. These can be derived
from the modeline in X11, I found this one, for a radeon card:
 
 mode "1280x854-60"# D: 79.815 MHz, H: 51.963 kHz, V: 60.003 Hz
 geometry 1280 854 1280 854 8
 timings 12529 128 16 8 1 112 3
 rgba 8/0,8/0,8/0,0/0
 endmode
 
 root@sigillo:~# fbset "1280x854-60"Slideshows are great -- and the quality better thanfor the radeon:rivafb: setting virtual Y resolution to 26214
 rivafb: Detected CRTC controller 1 being used
 rivafb: Detected CRTC controller 1 being used
 root@sigillo:~# fbset -x
 
 Mode "1280x854"
 # D: 79.815 MHz, H: 51.963 kHz, V: 60.003 Hz
 DotClock 79.816
 HTimings 1280 1296 1408 1536
 VTimings 854 855 858 866
 Flags    "-HSync" "-VSync"    # Warning: XFree86 doesn't support accel
 EndMode
 
 
 fbi /windows/WINDOWS/Web/Wallpaper/*.jpg -t 5 -autozoom -edit
 
 Press H for help, V to remove the status line, R to rotate, etc.
 
 And then I discovered fbxine -- it will play anything, but the colors are all wrong. Sound is perfect.
 
 2004-11-04 update 
 On the 2.6.9 kernel, rivafb is working,
but only in 640x480, and only when the nvidia kernel module is not
loaded. It's probably been working on 2.6 for a while, and quite possibly on 2.4 too.
 Here are the results before installing the proprietary nVidia driver.
       I inserted after boot with the flatpanel=1 parameter that came up by
default:
       
        Installing module rivafb. If the device isn't there, or isn't configured 
correctly, this could cause your system to pause for up to a minute.
 ACPI: PCI interrupt 0000:01:00.0[A] -> GSI 11 (level, low) -> IRQ 11
        rivafb: nVidia device/chipset 10DE0176
 rivafb: nVidia Corporation NV17 [GeForce4 420 Go 32M]
 rivafb: flatpanel support enabled
 rivafb: Detected CRTC controller 1 being used
 rivafb: RIVA MTRR set to ON
 rivafb: could not retrieve EDID from DDC/I2C
 rivafb: setting virtual Y resolution to 52428
 rivafb: Detected CRTC controller 1 being used
 rivafb: Detected CRTC controller 1 being used
 Console: switching to colour frame buffer device 80x30
 rivafb: PCI nVidia NV17 framebuffer ver 0.9.5b (32MB @ 0xEC000000)
 Installation succeeded.
         Please press ENTER when you are ready to continue.
         I can only see it on the built-in screen -- the attached screen is 
black. The size is perhaps 640x480. Note the version number: 0.9.5b.
       
        root@sigillo:~# cat /proc/fb0 NV17
 The i2c modules are loaded! They must be required for the framebuffer:
       
        Module                  Size  Used byrivafb                 49924  1
 i2c_algo_bit            8968  1 rivafb
 vgastate                9472  1 rivafb
 cfbimgblt               2944  1 rivafb
 i2c_core               19088  2 rivafb,i2c_algo_bit
 
 Yay!!
       Settings are in /etc/fb.modes. 
       fbset with no parameters shows this:
       root@sigillo:~# fbset mode "640x480-60"
       
            # D: 25.176 MHz, H: 31.469 kHz, V: 59.942 Hz
    geometry 640 480 640 32767 8timings 39721 40 24 32 11 96 2
 accel true
 rgba 8/0,8/0,8/0,0/0
 endmode
 The results are excellent, but of course the screen is needlessly small.
       If I try issue fbset "640x480-60" I get this:
       
        rivafb: setting virtual Y resolution to 52428
        rivafb: Detected CRTC controller 1 being used
 That's the default. Other settings don't work -- that is to say, all the 
"640x480" settings work, and the sync rate number at the end makes no 
difference.
       Once the modules are loaded, I cannot unload them. I then issued
       
        rmmod -f rivafb i2c_algo_bit vgastate cfbimgblt i2c_core
         and the command simply didn't execute, just hung there -- everything was 
still working.Now, after installing the proprietary nVidia driver, version 1.0.6111, inserting the riva module still works fine:
 
  Module                  Size  Used byrivafb                 49924  0
 i2c_algo_bit            8968  1 rivafb
 vgastate                9472  1 rivafb
 cfbimgblt               2944  1 rivafb
 i2c_core               19088  2 rivafb,i2c_algo_bit
 nvidia               4814900  0
 
 However, it has no effect. Since it's not used, it removes cleanly:
       # rmmod rivafb i2c_algo_bit vgastate cfbimgblt i2c_core
       After removing the nvidia kernel module, rivafb loads fine. I tried to play a video:
       
  root@sigillo:/ssa/video# mplayer -vo fbdev welcome.avi
   Didn't work. Size is wrong.
 vesafb
 
       I issued modprobe vesafb:
       
                vesafb: probe of vesafb0 failed with error -6 
         Still, lsmod shows it itserted:
       Module                  Size  Used byvesafb                  4896  0
 cfbcopyarea             3840  1 vesafb
 cfbimgblt               2944  1 vesafb
 cfbfillrect             3584  1 vesafb
 
 
 Removing it produces this mess:
       # rmmod vesafb cfbcopyarea cfbimgblt cfbfillrect
       Device 'vesafb0' does not have a release() function, it is broken and must be fixed.
      Badness in device_release at drivers/base/core.c:85
 [<c01c7580>] kobject_cleanup+0x98/0x9a
 [<c01c7582>] kobject_release+0x0/0xa
 [<c01c78ce>] kref_put+0x39/0x93
 [<c01c75aa>] kobject_put+0x1e/0x22
 [<c01c75aa>] kobject_put+0x1e/0x22
 [<c01c7582>] kobject_release+0x0/0xa
 [<e0927293>] vesafb_exit+0xf/0x1f [vesafb]
 [<c012dc92>] sys_delete_module+0x153/0x183
 [<c01449eb>] do_munmap+0x142/0x17f
 [<c010400d>] sysenter_past_esp+0x52/0x71
 
 2.6.5 kernel update (fall 2003?)
 In the 2.6.5 kernel I have
rivafb enabled and get this in dmesg: 
 rivafb: nVidia device/chipset 10DE0176The switch during boot, however, is not pretty -- an illegible blob of
lights in the middle, where I can just about make out a duplicated
image of the Debian boot screen. These modules are loaded:rivafb: On a laptop.  Assuming Digital Flat Panel
 rivafb: Detected CRTC controller 1 being used
 rivafb: RIVA MTRR set to ON
 rivafb: PCI nVidia NV20 framebuffer ver 0.9.5b (nVidiaGeForce4-4, 32MB
@ 0xEC000000)
 Console: switching to colour frame buffer device 80x30
 
 
 fbcon                 
26692  0Can I leave fbcon out of it? And font? Or are they required to run
rivafb?font                   
8192  1 fbcon
 rivafb                
46276  1
 vgastate               
9472  1 rivafb
 cfbimgblt              
2944  1 rivafb
 
 
       
 |