3dfx Voodoo3
From Gentoo Linux Wiki
Please format this article according to the guidelines and Wikification suggestions, then remove this notice {{Wikify}} from the article
| Laptops • TV Tuner Cards • Wireless • Servers • Storage • Other Hardware • Motherboards • Related |
[edit] Introduction
First of all, I have to disappoint you: this won't work with Kernel-2.6 (yet)!
My configuration:
- kernel-2.4.26-gentoo-r2
- i2c-2.8.4
- lm-sensors-2.8.6
- gcc-3.3.3-r6
- glibc-2.3.3.20040420
[edit] Let's Get Started
First, you need to remove all i2c support from your kernel:
cd /usr/src/linux make menuconfig
Go to: Character devices/I2C support/ Disable everything! Then delete the i2c modules:
rm -fr /lib/modules/`uname -r`/kernel/drivers/i2c/*
Also unmerge all versions of i2c and lm-sensors:
emerge -C i2c lm-sensors
Then go to the correct directories in the portage and install the newest versions. It is very import to do it this way, just emerging i2c and lm-sensors will not install the newest versions though ebuilds for newer versions do exist: I don't know why!
First, emerge i2c:
cd /usr/portage/sys-apps/i2c emerge i2c-2.8.4.ebuild
Then do:
update-modules
Then emerge lm-sensors:
cd /usr/portage/sys-apps/lm-sensors emerge lm-sensors-2.8.6.ebuild
Then:
update-modules
Ok, it should have installed with no problems. Now go to the "Monitor" Section in your /etc/X11/XF86Config and add these Modelines:
ModeLine "640x480PAL" 29.50 640 675 678 944 480 530 535 625 ModeLine "800x600PAL" 36.00 800 818 820 960 600 653 655 750
then search for the "Display" Subsection, and add:
Modes "800x600PAL"
Save the file as /etc/X11/XF86Config.TV
Now create a file you use to start your TV-Out:
| File: /bin/startv |
#!/bin/bash
# -Craig-'s TV enable script for Voodoo3 3000 AGP
# 04-06-25
removemods()
{
rmmod i2c-voodoo3 >/dev/null 2>/dev/null
rmmod bt869 >/dev/null 2>/dev/null
rmmod i2c-algo-biths >/dev/null 2>/dev/null
rmmod i2c-algo-bit >/dev/null 2>/dev/null
rmmod i2c-proc >/dev/null 2>/dev/null
rmmod i2c-dev >/dev/null 2>/dev/null
rmmod i2c-core >/dev/null 2>/dev/null
}
removemods
if [ ! -e /lib/modules/`uname -r`/kernel/drivers/i2c ]
then
echo "[ ] /lib/modules/`uname -r`/kernel/drivers/i2c does not exist."
exit -1
else
echo "[*] using /lib/modules/`uname -r`/kernel/drivers/i2c"
fi
cd /lib/modules/`uname -r`/kernel/drivers/i2c
echo " loading modules:"
for i in i2c-core.o i2c-dev.o i2c-proc.o i2c-algo-bit.o i2c-algo-biths.o
do
if [ ! -e $i ]
then
echo " $i missing."
removemods
exit -1
else
echo -n " $i found, loading..."
if insmod $i
then
echo ok
else
echo failed
exit -2
fi
fi
done
if [ ! -e ./chips/bt869.o ]
then
echo "[ ] /lib/modules/`uname -r`/kernel/drivers/i2c/chips/bt869.o missing."
removemods
exit -1
else
echo -n "[*] bt869.o found, loading..."
cd chips
if insmod bt869.o
then
echo ok
else
echo failed
removemods
exit -2
fi
fi
if [ ! -e ../busses/i2c-voodoo3.o ]
then
echo "[ ] /lib/modules/`uname -r`/kernel/drivers/i2c/busses/i2c-voodoo3.o missing."
removemods
exit -1
else
echo -n "[*] i2c-voodoo3.o found, loading..."
cd ../busses
if insmod i2c-voodoo3.o
then
echo ok
else
echo failed
removemods
exit -1
fi
fi
echo -n " using proc interface..."
if [ -e /proc/sys/dev/sensors/bt869-i2c-0-44/ntsc ] && [ -e /proc/sys/dev/sensors/bt869-i2c-0-44/res ]
then
echo 0 > /proc/sys/dev/sensors/bt869-i2c-0-44/ntsc
echo "800 600" > /proc/sys/dev/sensors/bt869-i2c-0-44/res
echo ok
else
echo "failed: /proc/sys/dev/sensors/bt869-i2c-0-44 does not exist."
removemods
exit -1
fi
# X starten:
cp /etc/X11/XF86Config /etc/X11/XF86Config.backup
cp /etc/X11/XF86Config.TV /etc/X11/XF86Config
echo
echo " ::: starting X server :::"
startx
cp -f /etc/X11/XF86Config.backup /etc/X11/XF86Config
echo
removemods
|
You can save the script as /bin/startv, then you just have to enter startx for normal work oder startv if you want to watch a film on TV. The scripts is quick'n'dirty, I know...I am working on it and will add more error checking in the future!
EDIT: Error checking added to the script! The output of the script looks like:
| Code: startv output |
[*] using /lib/modules/2.4.26-gentoo-r2/kernel/drivers/i2c
loading modules:
i2c-core.o found, loading...ok
i2c-dev.o found, loading...ok
i2c-proc.o found, loading...ok
i2c-algo-bit.o found, loading...ok
i2c-algo-biths.o found, loading...ok
[*] bt869.o found, loading...ok
[*] i2c-voodoo3.o found, loading...ok
using proc interface...ok
::: starting X server :::
This is a pre-release version of XFree86, and is not supported in any
way. Bugs may be reported to XFree86@XFree86.Org and patches submitted
to fixes@XFree86.Org. Before reporting bugs in pre-release versions,
please check the latest version in the XFree86 CVS repository
(http://www.XFree86.Org/cvs).
XFree86 Version 4.3.0.1
Release Date: 15 August 2003
X Protocol Version 11, Revision 0, Release 6.6
Build Operating System: Linux 2.4.26-gentoo-r2 i686 [ELF]
Build Date: 22 June 2004
Before reporting problems, check http://www.XFree86.Org/
to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/XFree86.0.log", Time: Fri Jun 25 14:09:35 2004
(==) Using config file: "/etc/X11/XF86Config"
Using vt 7
BScreen::BScreen: managing screen 0 using visual 0x23, depth 24
|
[edit] Finding the /sys entry
This is taken from http://www.realh.co.uk/linux_tv_howto/ar01s07.html (works on both 2.4 and 2.6 kernels)
if `uname -r | grep -q 2.6` ; then
DEVDIR=/sys/devices/
else
DEVDIR=/proc/sys/dev/sensors/
fi
DEVDIR="$(dirname $(find $DEVDIR -name svideo))"
echo 800 600 > $DEVDIR/res
echo 24 > $DEVDIR/depth
echo 1 > $DEVDIR/svideo
