Voodoo 3 Setup
Using the lm_sensors & i2c packages it is possible to run X on the tv-out to display freevo. Download and install from http://secure.netroedge.com/~lm78/ first. This was tested using Fedora.
Kernel Modules
In the 2.4 kernel the card uses the following modules located under Character devices in the kernel configuration.
i2c-core, i2c-algo-bit, i2c-voodoo3, i2c-proc, i2c-dev, bt869, eeprom.
These can be compiled into the kernel or as called as modules using modprobe.
XF86Config Configuration
The output from the card can be displayed in 640x480 or 800x600 both in only depth 16 colour. The correct settings must be added to '/etc/X11/XF86Config' as the card requires special modelines. They are -
**** I've managed to get the TV-Out work at 24 bit color depth with my Voodoo3 3000 ****
**** you can see the difference right away, just echo 24 > /proc/sys/dev/sensors/bt869-i2c-1-44/depth
**** and yes, I tried 32 and it didn't work
***** The modeline "720X576PAL" worked best for my TV - no black borders - unfortunately a little is overscanned.
{{{ [...]
ModeLine "640x480PAL" 29.50 640 675 678 944 480 530 535 625 ModeLine "800x600PAL" 36.00 800 818 820 960 600 653 655 750 ModeLine "720x576PAL" 27.50 720 744 800 880 576 581 583 625 ModeLine "640x480NTSC" 28.195793 640 656 658 784 480 520 525 600 ModeLine "800x600NTSC" 38.769241 800 812 814 880 600 646 649 735 [...] Subsection "Display"
- Depth 16 Modes "1280x1024" "800x600PAL" "800x600" "720x576PAL" "640x480PAL" "640x480" # Or for NTSC: #Modes "1280x1024" "800x600NTSC" "800x600" "640x480NTSC" "640x480"
[...] }}}
BT869 Chip Configuration
Then the card needs to be set to use a resolution and whether to use ntsc or not.
Manual Configuration
This can be done manually be running
{{{ echo 0 > /proc/sys/dev/sensors/bt869-i2c-1-44/ntsc echo "640 480" > /proc/sys/dev/sensors/bt869-i2c-1-44/res }}}
or
{{{ echo 0 > /proc/sys/dev/sensors/bt869-i2c-0-44/ntsc echo "800 600" > /proc/sys/dev/sensors/bt869-i2c-0-44/res }}}
Auto Configuration
This can be automated on startup using the '/etc/sysctl.conf' file. Just add to the file
{{{ [...] dev.sensors.bt869-i2c-0-44.ntsc = 0 dev.sensors.bt869-i2c-0-44.res = 800 600 [...] }}}
This will update the bt869 chip just before X loads.
Kernel 2.6
The bt869 chip driver has not been ported to the 2.6 kernel yet. I2c and lm_sensors have however been fully built in barr this and some other external drivers.
Quick 2.6 hack: make sure i2c_voodoo3 and i2c_dev are built and loaded.
i2cset 1 0x44 0xC6 0x001 & i2cset 1 0x44 0x0ba 0x80 & i2cset 1 0x44 0xa0 0x80 & i2cset 1 0x44 0xba 0x20 & i2cset 1 0x44 0x0C6 0x001 & i2cset 1 0x44 0xC4 0x1 & i2cset 1 0x44 0xC8 0x0 & i2cset 1 0x44 0xa0 0x91 & i2cset 1 0x44 0xC4 1 & i2cset 1 0x44 0x6c 0x80 & i2cset 1 0x44 0xba 0x80 & i2cset 1 0x44 0xB8 2 & i2cset 1 0x44 0xa0 0x91 & i2cset 1 0x44 0xba 0x20 &
Changes Depth to 16Bpp and res to 800 x 600 NTSC
The &'s are required becuase of a 5 second delay built into i2cset. (All of them must be completed withen seconds of each other.)
The following made my 24Bpp 720x576PAL S-Video-out work (perhaps you have to call it twice):
i2cset 1 0x44 0xC6 0x001 & i2cset 1 0x44 0x0ba 0x80 & i2cset 1 0x44 0xa0 0x80 & i2cset 1 0x44 0xba 0x20 & i2cset 1 0x44 0x0C6 0x001 & i2cset 1 0x44 0xC4 0x1 & i2cset 1 0x44 0xC8 0x0 & i2cset 1 0x44 0xa0 0x91 & i2cset 1 0x44 0xC4 1 & i2cset 1 0x44 0x6c 0x80 & i2cset 1 0x44 0xba 0x80 & i2cset 1 0x44 0xB8 2 & i2cset 1 0x44 0xC8 0x0&i2cset 1 0x44 0x6e 0x00&i2cset 1 0x44 0x70 0x02&i2cset 1 0x44 0x72 0x00&i2cset 1 0x44 0x74 0x01&i2cset 1 0x44 0x76 0xe0&i2cset 1 0x44 0x78 0xd0&i2cset 1 0x44 0x7a 0x80&i2cset 1 0x44 0x7c 0x98&i2cset 1 0x44 0x7e 0x58&i2cset 1 0x44 0x80 0x20&i2cset 1 0x44 0x82 0x16&i2cset 1 0x44 0x84 0x22&i2cset 1 0x44 0x86 0xa6&i2cset 1 0x44 0x88 0x00&i2cset 1 0x44 0x8a 0x78&i2cset 1 0x44 0x8c 0x80&i2cset 1 0x44 0x8e 0x03&i2cset 1 0x44 0x90 0x71&i2cset 1 0x44 0x92 0x2a&i2cset 1 0x44 0x94 0x40&i2cset 1 0x44 0x96 0x0a&i2cset 1 0x44 0x98 0x00&i2cset 1 0x44 0x9a 0x50&i2cset 1 0x44 0x9c 0x30&i2cset 1 0x44 0x9e 0x0&i2cset 1 0x44 0xa0 0x8c&i2cset 1 0x44 0xa2 0x24&i2cset 1 0x44 0xa4 0xf0&i2cset 1 0x44 0xa6 0x57&i2cset 1 0x44 0xa8 0x82&i2cset 1 0x44 0xaa 0x49&i2cset 1 0x44 0xac 0x8c&i2cset 1 0x44 0xae 0xb4&i2cset 1 0x44 0xb0 0xe0&i2cset 1 0x44 0xb2 0x45&i2cset 1 0x44 0xb4 0x29&i2cset 1 0x44 0xb6 0x00&i2cset 1 0x44 0xc4 0x01&i2cset 1 0x44 0xc6 0x00&i2cset 1 0x44 0xc8 0x40&i2cset 1 0x44 0xca 0xc0&i2cset 1 0x44 0xcc 0xc0&i2cset 1 0x44 0xd6 0x00&i2cset 1 0x44 0x0C6 0x000&i2cset 1 0x44 0xC4 1 & i2cset 1 0x44 0xba 0x20
Update
With the following changes i was able to get the TV-out work at 800x600PAL 16Bpp using the 2.6.12 kernel, and the above "800x600PAL" ModeLines. Make sure i2c_voodoo3 and i2c_dev are built and loaded, and you have root access. It's the above mentioned script for 800 x 600 NTSC, but i have commented a bit, and changed "i2cset 1 0x44 0xB8 2 &" to "i2cset -y 1 0x44 0xB8 0x03 &" to get 800 x 600 PAL.
# Using i2cset to set the tv out on voodoo3 graphics card. # Now PAL 800x600, but can be changed, see at the end. # "Quick 2.6 hack: make sure i2c_voodoo3 and i2c_dev are built and loaded." i2cset -y 1 0x44 0xC6 0x01 & #1 input set i2cset -y 1 0x44 0xba 0x80 & #2 reset i2cset -y 1 0x44 0xa0 0x80 & #3 clk set i2cset -y 1 0x44 0xba 0x20 & #4 slave/master i2cset -y 1 0x44 0xC6 0x01 & #5 input set i2cset -y 1 0x44 0xC4 0x01 & #6 video active i2cset -y 1 0x44 0xC8 0x00 & #7 filters off i2cset -y 1 0x44 0xa0 0x91 & #8 clk, pll, ... set i2cset -y 1 0x44 0xC4 0x01 & #9 video active i2cset -y 1 0x44 0x6c 0x80 & #10 timing reset i2cset -y 1 0x44 0xba 0x80 & #11 reset i2cset -y 1 0x44 0xB8 0x03 & #12 auto config - see the comment! i2cset -y 1 0x44 0xa0 0x91 & #13 clk, pll, ... set i2cset -y 1 0x44 0xba 0x20 & #14 slave/master # 0xB8 #12 - The autoconfig field # "This field determines the configuration # for the automatic configuration process" # # CONFIG[2:0] # 000 = NTSC 640x480 RGB input 0x00h # 001 = PAL 640x480 RGB input 0x01h # 010 = NTSC 800x600 RGB input 0x02h # 011 = PAL 800x600 RGB input 0x03h
Ia'm searching for the original author of this page for additional consultation.