Using older machines for HDTV video playback (with nVidia 5200)
If you've been wondering if you can use a slightly slower machine to play back HDTV content, you may be interested
to find that one popular approach to getting the job done is to offload some of the work to the graphics card using
an X extension called XvMC. Now that the PCI interface nVidia 5200 graphics card are considered "legacy", they
are becoming quite reasonably priced, and nVidia makes a non-
Free Software (proprietary) driver for the 5200 card available for Linux
with support for this extension.
If you can find an nVidia 5200 card with a heat sink, choose it in preference to one with a fan.
Some vendors still stock the PCI version of the nVidia 5200. See the
Wiggly Windows section
below for some memory considerations when buying an nVidia card.
The focus of this article, though, is mainly to explain how to get video playback of HDTV streams working with the nVidia 5200.
Update: Issues with nVidia 6200 card in Dell PowerEdge 1600SC
It has been reported that a Dell PowerEdge 1600SC with BIOS revision A12 doesn't work with a PCI nVidia 6200 card. Two beeps are heard, but no video is displayed.
Installing the drivers for the nVidia 5200 (PCI)
The following packages include the binary-only proprietary nVidia drivers (the Linux kernel modules and the libraries needed to use them) for Ubuntu 6.06 (Dapper Drake):
sudo apt-get install linux-restricted-modules-`uname -r`
(e.g.: sudo apt-get install linux-restricted-modules-2.6.15-26-686)
sudo apt-get install nvidia-glx nvidia-glx-dev libxvmc1 libxvmc-dev
Update: for Ubuntu 8.04 (Hardy Heron), after using
System ->
Administration ->
Hardware Drivers to enable the
NVIDIA accelerated graphics driver, you just need to install
mplayer (no additional packages need to be installed). You still need to edit
/etc/X11/XvMCConfig as shown
below, to get XvMC going.
After loading the
nvidia kernel module you should see these messages in the
dmesg output, which show the particular version
of the nVidia proprietary driver currently used by Dapper Drake (
1.0-8762). The version available from nVidia's website is usually
going to be slightly ahead of this, as nVidia are continually making changes to the driver (with varying degrees of success). Trying
to keep track of which versions are most likely to work well with which Linux kernel version tends to be quite time-consuming, so
kudos to the Ubuntu maintainers for helping with this, and making a prebuilt kernel module available to use with Ubuntu.
[17179670.528000] nvidia: module license 'NVIDIA' taints kernel.
[17179670.540000] ACPI: PCI Interrupt 0000:00:04.0[A] -> GSI 25 (level, low) -> IRQ 217
[17179670.540000] NVRM: loading NVIDIA Linux x86 Kernel Module 1.0-8762 Mon May 15 13:06:38 PDT 2006
Also check in
/proc/interrupts to make sure the
nvidia entry isn't sharing the interrupt request line (IRQ 217 in this example) with
anything else, as that could cause it to be slowed down a bit. The contents of
/proc/interrupts look like this here, because there are
two processors (with hyperthreading, so it looks like four):
CPU0 CPU1 CPU2 CPU3
0: 27393437 0 0 0 IO-APIC-edge timer
1: 20244 0 0 0 IO-APIC-edge i8042
7: 0 0 0 0 IO-APIC-edge parport0
8: 3 0 0 0 IO-APIC-edge rtc
9: 0 0 0 0 IO-APIC-level acpi
11: 42969 0 0 0 IO-APIC-level ohci_hcd:usb1
12: 149161 0 0 0 IO-APIC-edge i8042
14: 2028417 0 0 0 IO-APIC-edge ide0
15: 1923151 0 0 0 IO-APIC-edge ide1
177: 201100 0 0 0 IO-APIC-level ioc0
185: 15 0 0 0 IO-APIC-level aic7xxx
193: 15 0 0 0 IO-APIC-level aic7xxx
201: 30 0 0 0 IO-APIC-level aic7xxx, aic7xxx
209: 3 0 0 0 IO-APIC-level ohci1394
217: 8606773 0 0 0 IO-APIC-level nvidia
225: 108682 0 0 0 IO-APIC-level eth0
233: 117636 0 0 0 IO-APIC-level EMU10K1
NMI: 1 0 0 0
LOC: 27394793 27394793 27394792 27394791
ERR: 0
MIS: 0
In addition to installing the above packages, the following changes
to
/etc/X11/xorg.conf needed to be made, to switch from the
ati driver
to the
nvidia driver:
< Identifier "ATI Technologies, Inc. Rage XL"
< Driver "ati"
< BusID "PCI:0:14:0"
---
> Identifier "NVIDIA Corporation NV34 [GeForce FX 5200]"
> Driver "nvidia"
> BusID "PCI:0:4:0"
> Option "NvAGP" "0"
> Option "RenderAccel" "On"
> Option "IgnoreDisplayDevices" "DFP,TV"
> Option "NoRenderExtension" "Off"
> Option "AllowGLXWithComposite" "Off"
104c109
< Device "ATI Technologies, Inc. Rage XL"
---
> Device "NVIDIA Corporation NV34 [GeForce FX 5200]"
You may need to adjust the
BusID setting numbers for your machine. Usually taking a look in
/var/log/Xorg.0.log for the following string will give you the numbers to use:
(--) PCI:*(0:4:0) nVidia Corporation NV34 [GeForce FX 5200] rev 161, Mem @ 0xfd000000/24, 0xf0000000/27, BIOS @ 0xd1000000/17
Once the above changes are made, restart the display manager (you'll be working from the console at this point, as the display
manager would not have been able to start up with the
ati driver because that card is no longer available when the nVidia 5200
card is installed in the PCI slot):
invoke-rc.d gdm restart
After logging in, check the output of
xdpyinfo for the following lines in the section listing the extensions currently loaded (where it will say for example, "number of extensions: 31"):
XVideo
XVideo-MotionCompensation
Creation of the configuration file for XvMC on nVidia 5200
The
nvidia-glx package contains the nVidia XvMC shared library, and
the
libxvmc1 package contains the configuration file
/etc/X11/XvMCConfig which
needs to contain a reference to the nVidia shared library like this, with no spaces:
libXvMCNVIDIA_dynamic.so.1
See this
link for where I found the explanation.
If you try to use XvMC with the
libXvMC.so.1 library (the default) instead of the
libXvMCNVIDIA_dynamic.so.1 library configured in
/etc/X11/XvMCConfig, the error message is quite misleading:
/usr/lib/libXvMC.so.1: undefined symbol: XvMCCreateContext
vo_xvmc: XvMCCreateContext failed with error 2
FATAL: Cannot initialize video driver.
Playback of 1080i ATSC content
Playback of 1080i ATSC content works very well (on a
Dell PowerEdge 1600SC with an nVidia 5200 card in a PCI slot) using xine. See
here for how to receive ATSC over the air, and
here for some MPEG2 transport stream samples and test patterns.
Playback using xine
xine -V xxmc filename.ts
Although deinterlacing with
xine appears to work OK,
xine-lib still requires this
patch from Scott Larson. Enable it under the "gui" settings:
Enable deinterlacing by default.
[x] deinterlace_by_default
In addition to the "deinterlace_by_default" option, you need to turn on the "bob" deinterlacing option under the "video" settings:
Use bob as accelerated deinterlace method.
[x] device.xvmc_bob_deinterlacing
Playback using mplayer
mplayer -vo xvmc -vc ffmpeg12mc filename.ts
Deinterlacing with
mplayer seems to require a
patch as
explained last year by Scott Larson in the pcHDTV forums. To apply the patch to mplayer 1.0 pre8, use:
wget http://www3.mplayerhq.hu/MPlayer/releases/MPlayer-1.0pre8.tar.bz2
tar jxvf MPlayer-1.0pre8.tar.bz2
wget http://www.penlug.org/twiki/pub/Main/LinuxHardwareInfoNvidia5200/mplayer_xvmc_bob_deinterlace.patch
sudo apt-get install patch
cat mplayer_xvmc_bob_deinterlace.patch|patch -p0 >patch.out 2>patch.err
Check the
patch.out and
patch.err files. The first should be as follows, the second should be empty.
patching file MPlayer-1.0pre8/configure
patching file MPlayer-1.0pre8/libavcodec/xvmcvideo.c
patching file MPlayer-1.0pre8/libvo/vo_xvmc.c
patching file MPlayer-1.0pre8/loader/ldt_keeper.c
patching file MPlayer-1.0pre8/mplayer.c
patching file MPlayer-1.0pre8/xvmc_render.h
To build mplayer with XvMC support for nVidia on Ubuntu, I first needed to add a missing symbolic link as
explained
here (filed bug
58741 for this. Update: April 2008 - the following workaround is still needed for building MPlayer-1.0pre8 in Ubuntu 8.04 (Hardy Heron) Beta, scheduled for release April 2008):
cd /usr/lib && sudo ln -s libXvMCNVIDIA.so.1 libXvMCNVIDIA.so
Then install some development libraries:
sudo apt-get install libc6-dev libxvmc-dev libasound2-dev
Then build mplayer, using:
cd MPlayer-1.0pre8
./configure --enable-xvmc
Check over the output of the
./configure carefully for anything unusual. Check especially that it shows the following lines, and
that in the "Enabled optional drivers:" section for "Video output:" it does indeed include
xvmc.
Checking for Xv ... yes
Checking for XvMC ... yes (using XvMCNVIDIA)
So now you're all set to build mplayer:
cd MPlayer-1.0pre8
make > make.out 2>&1
If all goes well (check the
make.out file), proceed to install it (or you can just test it out first using
$HOME/MPlayer-1.0pre8/mplayer):
cd MPlayer-1.0pre8
make install
To test whether the patched
mplayer is now deinterlacing, use the "Alternating black/white 1, 2, 3 and 4 pixel strips 1920x1080" vertical resolution
pattern from
W6RZ Homepage as follows. Without the patch, you won't see any flickering in the top bar, but with the patch the top
bar will flicker wildly (the two bars below it will flicker slightly less), as they do in
xine when deinterlacing is enabled. This pattern is acting as
a deinterlacing stress test, normal everyday transport streams don't usually contain anything this bad, but it's useful for testing.
wget http://www.w6rz.net/vertrez1080.zip
unzip vertrez1080.zip
$HOME/MPlayer-1.0pre8/mplayer -vo xvmc -vc ffmpeg12mc vertrez1080.ts
When you launch mplayer with the
-vo xvmc -vc ffmpeg12mc options, you should see the following messages in the
mplayer output if XvMC is actually being used:
==========================================================================
vo_xvmc: X-Video extension 2.2
vo_xvmc: X-Video MotionCompensation Extension version 1.1
==========================================================================
Forced video codec: ffmpeg12mc
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
vd_ffmpeg: XVMC accelerated codec
Selected video codec: [ffmpeg12mc] vfm: ffmpeg (FFmpeg MPEG-1/2 (XvMC))
==========================================================================
as well as:
VO: [xvmc] 1920x1080 => 1920x1080 MPEG1/2 Motion Compensation and IDCT
vo_xvmc: Port 244 grabed
vo_xvmc: Found matching surface with id=54434449 on 244 port at 0 adapter
vo_xvmc: Allocated Direct Context
vo_xvmc: data_blocks allocated
vo_xvmc: mv_blocks allocated
vo_xvmc: Motion Compensation context allocated - 8 surfaces
vo_xvmc: idct=1 unsigned_intra=0
vo_xvmc: looking for OSD support
Subpicture id 0x34344149
vo_xvmc: OSD support by additional frontend rendering
The gentoo wiki
covers a lot more details of mplayer, and is well worth a visit.
Multiple monitor support
See
here for reasons to avoid TwinView and what to do instead. The following
/etc/X11/xorg.conf is an example of a dual head configuration running
at 1920x1200 with the DVI on the left and the VGA on the right. Please be careful: only use this on your monitors if they are capable of these settings,
otherwise damage could occur.
Puzzling Quirks
- Using the VGA output, the nVidia 5200 PCI card is able to drive a Dell 2405FPW monitor at 1920x1200. The following lines need to be added to use the DVI output, otherwise the best resolution attainable is only 1280x1024. With these lines added, 1920x1200 over the DVI connection works (with some caveats, see below) with a Dell 2405FPW monitor:
Option "UseDisplayDevice" "DFP"
Option "IgnoreDisplayDevices" "CRT,TV"
Option "ModeValidation" "NoMaxPClkCheck, NoEdidMaxPClkCheck"
- Update March 11, 2007: When testing with Ubuntu Feisty Fawn alpha herd5, which contains nVidia kernel module revision 1.0-9631,
and with Ubuntu Feisty Fawn beta (which contains revision 1.0-9755), I found that there is no longer any jagged breakup like there used to be in Dapper Drake (see below). The screen size info is being properly sent as the full display size instead of as just the gnome desktop size, so now fullscreen playback with mplayer is as easy as
$HOME/MPlayer-1.0pre8/mplayer -monitoraspect 16:9 -ao alsa -ac hwac3 -vo xvmc -vc ffmpeg12mc filename.ts. Playback with
xine using this command:
/usr/bin/xine -V xxmc --geometry 1920x1080+0+0 --borderless filename.ts. In Feisty, moving the window around and resizing it works fine during playback using xvmc, whereas with Dapper it tended to crash.
- In Ubuntu Dapper Drake, when running with the Dell 2405FPW monitor connected over either VGA or DVI at 1920x1200, I found that I needed to use the following geometry settings:
mplayer -monitoraspect 16:9 (or mplayer -geometry 1920x1080 stream.ts) and xine --geometry 1840x1035 stream.ts, and move the window over to the right side of the screen, to avoid bizarre jagged horizontal breakup of the video. Just by moving the window over to the right, all was crystal clear again. Couldn't believe my eyes the first time it happened by accident, and all the interference disappeared. Any suggestions on what could be the cause of this would be much appreciated. It seems to be due to some incompatibility between the Dell 2405FPW monitor and the nVidia 5200, or perhaps the settings I'm using are still not right, because using an ordinary Sun GDM-90W10 VGA monitor works fine (with no jagged breakup during video playback) with the same configuration file.
- When running the Dell 2405FPW monitor on either VGA or DVI at 1680x1050 there's nothing unusual, no jagged breakup during video playback, although of course text looks quite fuzzy (due to not running at the monitor's native 1920x1200 resolution).
Rotating Your Monitor Clockwise
The Dell 2405FPW monitor can be rotated clockwise, which can be very convenient if you are working a lot on web pages or documents.
It allows you to display full pages vertically, instead of having to scroll them up and down. It also appears to be an advantage
for coding, because an xterm can be stretched vertically to display 140 lines of code compared to "only" 51 when the screen isn't
rotated. For the nVidia driver, to enable rotation, you need to add the
RandRRotation option into the "Device" section,
for example as follows:
Section "Device"
Identifier "Generic Video Card"
Driver "nvidia"
BusID "PCI:4:3:0"
Option "AddARGBGLXVisuals" "True"
Option "RandRRotation" "true"
EndSection
To use this to enable rotation, once you have launched
X you can issue the following command (e.g. from an xterm window):
xrandr -o left
To get back to non-rotated, use:
xrandr -o normal
If you would like to initiate the rotation graphically, you can install the gnome randr applet package, as follows:
apt-get install gnome-randr-applet
Right-clicking on the gnome panel and selecting the
+ Add to Panel menu item, then scrolling down
to find the
Display Geometry Switcher in the
Utilities section, selecting it and clicking the
+ Add button
will add an inconspicuous little grey monitor icon. Clicking on it will offer the options
Normal,
Left,
Inverted
and
Right. Selecting
Left will immediately rotate your screen counter-clockwise, at which point you would then
rotate your monitor clockwise. The
Inverted option could be useful if you are running out of desk space, but are able
to attach the monitor (hanging upside-down) to the ceiling.
After enabling rotation, xvmc video playback would be "stretched" vertically.
To avoid that, flip the monitoraspect to
9:16 instead of
16:9 as follows.
The video window then fills only a little more than a third of the screen,
instead of stretching vertically to fill the entire screen.
mplayer -framedrop -monitoraspect 9:16 -cache 8192 -vo xvmc -vc ffmpeg12mc -ao alsa -ac hwac3 filename.ts
The gentoo wiki hosts
this useful page on widescreen monitor configuration.
Wiggly Windows
Recently the graphical effects and usability aspects of the Linux desktop have gained a substantial boost from the
X Composite Extension. This extension is beginning to
enjoy quite broad hardware support from graphics cards, and provides (or rather, the compositing manager "compiz"
provides) those wonderfully enjoyable "wiggly" windows.
You might also like to give
beryl a try in Ubuntu Feisty Fawn. I've found that it works very reliably (for a
single screen) on the nVidia 5200 using this
/etc/X11/xorg.conf and following
this guide (with help
from the
Beryl wiki).
You may find that you need to use this "black windows" workaround from the
gentoo nVidia page (search for "Black Window Bug") or from
the bottom of the
Beryl wiki page:
If opening multiple windows results in some of them persistently showing only black contents, it means you do not have enough video memory.
This is a bug in the nVidia 1.0-9631 drivers: currently, shared video RAM cannot be used with the GLX_EXT_TEXTURE_FROM_PIXMAP extension.
NVidia is aware of it, and it may be fixed in the future (update: it's fixed now in Ubuntu 7.10 Gutsy Gibbon,
which uses nVidia kernel module 100.14.19.). In the meantime, one solution is to use the Copy Rendering Path.
It can be enabled by right-clicking the beryl icon (in the top right-hand corner) and then selecting
Advanced Beryl options -->
Rendering path -->
Copy. This does slow things down considerably, though, so I guess in the meantime
having an nVidia card with more than 128MB memory could be an advantage for running beryl.
nVidia Support
If you're still stuck after studying the
readme.txt,
(or if you are using the latest 1.0-9755 drivers, then in
Appendix D)
and you've googled to the limits of the known universe,
the
nVidia Linux Support Forums might be a good place to start asking questions.
Framebuffer Support for nVidia 5200 with the old vesafb
For Ubuntu 7.10 (Gutsy Gibbon), the framebuffer is not properly configured to support
VESA by the Ubuntu installer, so we need to do a few manual steps.
See
here and launchpad
bug 129910 for details (workaround: the "black" console is still functional, so if you log in and load the modules manually, it becomes fully functional again).
Add the following two lines to the
/etc/initramfs-tools/modules (the set of modules included in the
initial ramdisk) configuration file.
You could also try using
nvidiafb rather than
vesafb, as
nvidiafb apparently no longer conflicts with the proprietary
nvidia-glx-new driver.
On the other hand, the
nvidiafb is fine if you are using the Free Software
nv xorg video driver,
fbcon
vesafb
Then run this command to rebuild the initial ramdisk:
sudo update-initramfs -u
Also, edit
/etc/modprobe.d/blacklist-framebuffer and comment out the line blacklisting
vesafb so that it will actually be loaded into the kernel during boot:
#blacklist vesafb
Use the following commands to load the modules manually (before rebooting):
sudo modprobe fbcon
sudo modprobe vesafb
The
dmesg output should contain for example:
vesafb: framebuffer at 0xd0000000, mapped to 0xfb900000, using 5742k, total 131072k
vesafb: mode is 1400x1050x16, linelength=2800, pages=1
vesafb: protected mode interface info at c000:e340
vesafb: pmi: set display start = c00ce376, set palette = c00ce3e0
vesafb: pmi: ports = 3b4 3b5 3ba 3c0 3c1 3c4 3c5 3c6 3c7 3c8 3c9 3cc 3ce 3cf 3d0 3d1 3d2 3d3 3d4 3d5 3da
vesafb: scrolling: redraw
vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0
Console: switching to colour frame buffer device 175x65
fb0: VESA VGA frame buffer device
List the configurable framebuffer resolutions using the following commands:
sudo apt-get install hwinfo
sudo hwinfo --framebuffer
For the nVidia 5200, the output looks like this:
02: None 00.0: 11001 VESA Framebuffer
[Created at bios.447]
Unique ID: rdCR.gV6QWt3XSCC
Hardware Class: framebuffer
Model: "NVIDIA NV34 Board - p162-1n "
Vendor: "NVIDIA Corporation"
Device: "NV34 Board - p162-1n "
SubVendor: "NVIDIA"
SubDevice:
Revision: "Chip Rev"
Memory Size: 128 MB
Memory Range: 0xd0000000-0xd7ffffff (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 0x0352: 2048x1536 (+8192), 24 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown
Let's avoid the 24 bit modes (they'd be slow, and might interfere with the accelerated X driver) and pick
Mode 0x0346. We'd add "vga=0x346" to the kernel boot line, by editing
/boot/grub/menu.lst and adding the following line.
Using this syntax will save having to edit the kernel line to add "vga=0x346" each time a new update to the kernel package is installed.
# defoptions=vga=0x346
Run the following command to update the kernel boot line in the grub configuration file:
sudo update-grub
Framebuffer Support for nVidia 5200 with uvesafb
For the upcoming Ubuntu 8.04 (Hardy Heron), see
here for info on the
uvesafb project.
See also
this thread on the gentoo forums where spock_ explains some details.
The required kernel module
uvesafb will be included in Ubuntu Hardy Heron, as it is part of the mainline kernel since 2.6.24. You'll need to build the userspace
v86d for Ubuntu, as there doesn't appear to be any package containing it yet (see this launchpad
bug 189621):
sudo apt-get install -y build-essential
wget http://dev.gentoo.org/~spock/projects/uvesafb/archive/v86d-0.1.3.tar.bz2
tar jxvf v86d-0.1.3.tar.bz2
cd v86d-0.1.3/
You'll need to edit the
Makefile here, so that it contains:
KDIR ?= /lib/modules/$(shell uname -r)/build
instead of:
KDIR ?= /lib/modules/$(shell uname -r)/source
Then configure and build as usual:
./configure --default
make
sudo make install
sudo modprobe uvesafb mode=1400x1050-16 mtrr=3 scroll=ywrap
To see what other resolutions are available, you can also use:
cat /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
cat /sys/class/graphics/fb0/modes
Now you should be able to use mplayer's
-vo fbdev flag to playback video on the framebuffer console (Ctrl Alt F1), e.g.:
mplayer -vo fbdev -zoom -x 1400 -y 1050 filename.ts
You can also try other aspect ratios listed in the output from
hwinfo, as follows:
sudo apt-get install hwinfo
sudo hwinfo --framebuffer
For example:
sudo modprobe -r uvesafb
sudo modprobe uvesafb mode=1280x1024-16 mtrr=3 scroll=ywrap
mplayer -vo fbdev -zoom -x 1280 -y 1024 filename.ts
In
this thread on the gentoo forums, spock_ explains some additional details:
- vesafb is loaded earlier than uvesafb/vesafb-tng/nvidiafb/whateverfb, therefore it's better for the splash screen: with vesafb the video mode switch does indeed happen earlier than with any other fb driver. However, this DOES NOT mean that the splash screen will be displayed at an earlier stage. It will only appear after the fb driver and fbcon are initialized. If you're bothered by the messages displayed while still in text mode when not using vesafb, use the quiet kernel command line parameter to suppress them.
- The ywrap or ypan options are used in the kernel command line, but the driver says it's using redraw: ywrap/ypan are only available on x86.
- Does v86d have to be included in an initrd?: Yes, it does, unless you want to compile uvesafb as a module.
- uvesafb requires an initrd, which adds complexity to the boot process: uvesafb only needs the initrd as a storage mechanism to hold the v86d executable. It does not require any special scripts or the use of genkernel. In fact, it doesn't even require an initrd something line in GRUB/LILO -- you can just use CONFIG_INITRAMFS_SOURCE="/usr/src/v86d-0.1/misc/initramfs" in your kernel config and forget that there is an initrd involved
- The framebuffer splash, CONSOLE=/dev/tty1 and etc. are independent of the fb driver (people often confuse fbsplash and the fbdev layer, but please note that these are two completely different things).
Caveats and limitations with uvesafb
The
uvesafb driver is a
generic driver which supports a wide variety of video cards, but which is ultimately limited by the Video BIOS interface.
The most important limitations are:
- Lack of any type of acceleration.
- A strict and limited set of supported video modes. Often the native or most optimal resolution/refresh rate for your setup will not work with uvesafb, simply because the Video BIOS doesn't support the video mode you want to use. This can be especially painful with widescreen panels, where native video modes don't have the 4:3 aspect ratio, which is what most BIOS-es are limited to (with some exceptions: e.g. a Dell latitude d820 can do 1920x1200).
- Adjusting the refresh rate is only possible with a VBE 3.0 compliant Video BIOS. Note that many nVidia Video BIOS-es claim to be VBE 3.0 compliant, while they simply ignore any refresh rate settings.
Back to
LinuxHardwareInfo
Back to
LinuxHints - Everything GNU ever wanted to know about Linux
- xorg.conf: Dual head xorg.conf with DVI and CRT at 1920x1200
to top