[mythtv] Matrox G200 TV out works! HOWTO!
Colin Panisset
mythtv-dev@snowman.net
Tue, 17 Dec 2002 16:17:00 -0800
Since I've just spent a hair-pulling time getting this lot going, I figured
I'd share the joy and perhaps help others work out how to get this beast
set up. Perhaps it'll even be useful for those using a G400 with TV-out on
the second head.
This is kinda long...
WARNINGS:
** keep a rescue floppy/CD!
** don't blame me if you fry your hardware/TV/monitor trying this. Tweaking
video card settings at the register level can cause signals which may drive
display hardware beyond their design specs. You can kill hardware like
this.
** no warranty expressed or implied, contents under pressure, not suitable
for children, not a floatation device, sell-by date on bottom of package.
So, here we go:
Step 1: Upgrade the G200 BIOS
Step 1.1: Download the latest BIOS for the card from
http://www.matrox.com/mga/support/drivers/bios/home2.cfm
Step 1.2: You'll need to use DOS to flash the BIOS -- I used the FreeDOS
install floppy (available from
http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/beta8/instdisk/1.44/)
as a temporary boot disk. dd the image to a floppy, then mount it. Delete
most of the contents, except for the command.com and kernel.sys. Copy in
all the .bin files from the bios .ZIP, plus ubiosdos.exe, dos4gw.exe,
english.mmf, and progbios.exe.
Leave the disk writeable.
Step 1.3: boot the machine from the FreeDOS floppy, and execute:
ubiosdos
I didn't make a backup disk, just pressed enter and let it flash
(note: if things screw up, this could be your undoing)
Step 1.4: force the G200 BIOS to turn on the TV out at boot time:
progbios -maven ntsc (use pal for PAL, and off for, um, off)
Step 1.5: reboot. At this point, I already had my TV connected to the
external breakout box, and was delighted to see the Award BIOS boot
messages. I was able to alter PC BIOS settings, and all. This could be
important... :)
Step 2: Build an appropriate kernel
Step 2.1: I built the following into the kernel (not built as modules):
Character devices -> I2C support -> I2C support
Character devices -> I2C support -> I2C bit-banging interfaces
Character devices -> I2C support -> I2C device interface
Character devices -> I2C support -> I2C /proc interface
Console drivers -> Frame-buffer support -> Matrox acceleration
Console drivers -> Frame-buffer support -> G100/G200/ ...
Console drivers -> Frame-buffer support -> Matrox I2C support
Console drivers -> Frame-buffer support -> G400 second head support
Console drivers -> Frame-buffer support -> Matrox /proc interface
NOTE: you need the G400 second head support even if you have a G200. It
builds the driver for the MAVEN chip, which actually does the TV-out
conversion.
Step 2.2: make dep, make bzImage, make modules, make modules_install. Copy
bzImage to the boot wherever and lilo it. Read
/usr/src/linux/Documentation/fb/matroxfb.txt for options you can pass to
the Matrox framebuffer driver through lilo
You could boot the new kernel at this point if you liked, but make sure
you've kept your monitor attached to the PC, because the MGA console driver
switches to a VESA mode that my TV couldn't display.
Step 3: Set up XFree86
Step 3.1: In your /etc/X11/XF86Config-4, put something like this:
---- Begin snippet ----
Section "Monitor"
Identifier "TV"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 31-50
VertRefresh 60 # This is for NTSC. PAL should use 50
EndSection
Section "Device"
Identifier "My Video Card"
Driver "mga"
BoardName "Unknown"
Option "UseFBDev" "on"
Option "HWCursor" "off"
EndSection
Section "Device"
Identifier "Linux Frame Buffer"
Driver "fbdev"
BoardName "Unknown"
EndSection
Section "Screen"
Identifier "Screen0"
Device "My Video Card"
Monitor "TV"
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "800x600"
EndSubSection
EndSection
---- End snippet ----
Step 3.2: restart X (ctrl-alt-backspace) to make sure it's using the fb
device. Check /var/log/XFree86.0.log to make sure.
Step 3.3: Get matroxset from the MPlayer distribution
(http://www.mplayerhq.hu/homepage/), build and install it (it's in the
TVout subdirectory of the source). Also build and install fbset from the
same distribution.
Get maven-prog from http://platan.vc.cvut.cz/~vana/matroxfb.html -- build
it (it'll end up being called "matrox", but you can rename it) and install
it.
Step 3.4: Mirror the framebuffer onto the TV out with matroxset:
matroxset -f /dev/fb/0 -m 3 # use -m 1 for monitor-only, -m 2 for TV only
matroxset -f /dev/fb/0 -o 1 2 # set output 1 to NTSC. Use -o 1 1 for PAL
Step 3.5: Tweak the display
This is where you may end up typing blind. See
http://davedina.apestaart.org/download/doc/Matrox-TVOUT-HOWTO-0.1.txt for a
great explanation
When you have the size and location of the screen set to your liking, use
"maven-prog" (or "matrox", if you didn't rename it) from above to set the
black level, white level, saturation, hue, antialiasing, and whatnot. My
settings are:
matrox 0x0e 0x3f # sets the black level
matrox 0x1e 0xcf # sets the white level
matrox 0x22 0x76 # sets the hue
See http://platan.vc.cvut.cz/~vana/maven/mavenreg.html for a description of
the MAVEN chip registers.
I put the resulting fbset and matrox commands in my mythtv user's
.xsession.
Step 3.6: To put the text console back on the TV after the boot process
turns it off, I put the following lines in /etc/rc.sysinit, right after
devfsd is launched:
/sbin/matroxset -f /dev/fb/0 -m 3 # both monitor and TV
/sbin/matroxset -f /dev/fb/0 -o 1 2 # set TV to NTSC
Step 4: Beer (or tea, coffee, wine, spring water, or whatever)
That's it. I only wish it had been as quick and easy to figure out as it was
to type this up :)
Notes:
** if you built ALSA drivers for a previous kernel, you'll probably have to
build and install them again.
** The G200 (and, presumably, the G400) will display up to 1024x768 through
the miracle of scan conversion, but 800x600 works well for MythTV for me.
** don't be concerned if it seems like X is taking a long time to start up
in a mode that the TV can sync to. My TV also flashes like crazy for about
5 seconds while this is going on. Eventually, it gets there.
** My Shuttle SV24 locks up sometimes with this card. It's reproducible, so
must be a driver problem. It happens when running "make xconfig" from the
linux kernel tree, and sometimes when dragging the scrollbar up or down in
Mozilla. Turning off various acceleration features may resolve this, but I
haven't tried that yet.
** I have run mplayer with the normal Xvideo output in this mode, and it's
just fine. You could also build it with the mga driver and have it use the
hardware acceleration, but I haven't got there yet.