#!/bin/sh # # Gabucino - no warranty, this script can BOOM your TV and/or monitor, or else. # v2.5 # This script has been tested and configured on a Matrox G400DH, a PAL TV, # a 14" analog and a 15" digital monitor. # # INSTALLATION: # 1. READ MPLAYER'S TVOUT DOCUMENTATION! # 2. Edit 'defaultmode', 'TVdefaultmode', and 'SetTVstandard' functions # below to fit your needs. # 3. Remove 'exit 1' safety check. # function defaultmode { # You can choose the mode to use in monitor-only mode # 640x480 60Hz 32bpp (14" monitors) fbset -a -xres 640 -yres 480 -vxres 640 -vyres 480 -depth 32 -pixclock 39721 -left 48 -right 16 -upper 33 -lower 10 -hslen 96 -vslen 2 -hsync high -accel true # 768x576 60Hz 32bpp (14" monitors) # fbset -a -xres 768 -yres 576 -vxres 768 -vyres 5460 -depth 32 -pixclock 26101 -left 144 -right 16 -upper 28 -lower 6 -hslen 112 -vslen 4 -accel true # 800x600 76Hz 32bpp (15" monitors) # fbset -a -xres 800 -yres 600 -vxres 800 -vyres 1440 -depth 32 -pixclock 20000 -left 128 -right 16 -upper 24 -lower 2 -hslen 96 -vslen 6 # 1024x768 70Hz 32bpp (15" monitors) # fbset -a -xres 1024 -yres 768 -vxres 1024 -vyres 1440 -depth 32 -pixclock 12500 -left 144 -right 32 -upper 30 -lower 2 -hslen 192 -vslen 6 } function TVdefaultmode { ## ## PAL modes ## # 640x512 80Hz 32bpp fbset -depth 32 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true # 640x528 83Hz 32bpp # fbset -depth 32 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -laced false -bcast true # 720x576 78Hz 32bpp # fbset -depth 32 -left 54 -right -36 -upper 55 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true ## ## NTSC modes ## # 640x240 non-interlaced 32bpp # fbset -depth 32 -xres 640 -yres 240 -vxres 640 -vyres 240 -pixclock 79443 -left 72 -right 40 -upper 15 -lower 5 -hslen 48 -vslen 3 # 640x480 interlaced 32bpp # fbset -depth 32 -xres 640 -yres 480 -vxres 640 -vyres 480 -pixclock 79443 -left 72 -right 40 -upper 30 -lower 10 -hslen 48 -vslen 5 -laced true } function SetTVstandard { matroxset 1 # PAL # matroxset 2 # NTSC } function SetMonitorMode { matroxset 128 } function mappingreset { matroxset -f /dev/fb0 -m 0 matroxset -f /dev/fb1 -m 0 matroxset -f /dev/fb0 -m 1 con2fb /dev/fb0 /dev/tty1 con2fb /dev/fb0 /dev/tty2 SetMonitorMode defaultmode } function warn { clear echo "Display routing is about to come! Due to certain limitations" echo "(kernel? driver?), you MUST switch ttys a few times for" echo "these changes to take effect!!!!! After pressing a key now." echo echo "I.e.: press alt-f1, alt-f2, alt-f3, then back to alt-f1" echo echo "NOTE: you won't automatically get consoles on the new display." echo " To achieve that, use the con2fb utility:" echo " $ con2fb /dev/fb1 /dev/tty1" echo " (and don't forget to change ttys a few times...)" echo echo echo "If you read this, PRESS ANY KEY TO CONTINUE" read } function warn2 { clear echo echo echo echo echo Routing done! echo Change consoles! echo echo Then PRESS ANY KEY TO RETURN to menu read } echo echo "Please read MPlayer's TV-out documentation, and install 'matroxset' and 'fbset'." echo "Then edit this script to suit your monitor+TV set." echo exit 1 while [ 1 ]; do clear echo " [ 0 ] Clear & blank screen" echo " [ 1 ] Monitor only" echo " /---> Monitor" echo " [ 2 ] Cloning - CRTC1" echo " \\---> TV" echo echo " /---> Monitor1" echo " [ 3 ] Cloning - CRTC1" echo " \\---> Monitor2" echo echo " CRTC1 ---> Monitor1" echo " [ 4 ] DualHead -" echo " CRTC2 ---> Monitor2" echo echo " CRTC1 ---> Monitor2" echo " [ 5 ] DualHead - SWAP!" echo " CRTC2 ---> Monitor1" echo echo -- TV MODES echo echo " [ A ] 640x512 PAL" echo " [ S ] 640x528 PAL" echo " [ D ] 720x576 PAL" echo " [ F ] 640x240 NTSC" echo " [ G ] 640x480 NTSC, Interlaced" read ABC case "$ABC" in 0) clear setterm -cursor off setterm -blank 0 read setterm -cursor on ;; 1) mappingreset echo ;; 2) mappingreset matroxset -f /dev/fb0 -m 3 SetTVstandard TVdefaultmode ;; 3) mappingreset matroxset -f /dev/fb0 -m 3 ;; 4) warn mappingreset matroxset -f /dev/fb0 -m 1 matroxset -f /dev/fb1 -m 2 warn2 ;; 5) warn mappingreset matroxset -f /dev/fb0 -m 2 matroxset -f /dev/fb1 -m 1 warn2 ;; a) # 640x512 80Hz 32bpp fbset -depth 32 -left 60 -right 0 -upper 70 -lower 39 -hslen 76 -vslen 4 -xres 640 -yres 512 -bcast true ;; s) # 640x528 83Hz 32bpp fbset -depth 32 -left 40 -right 0 -upper 63 -lower 29 -hslen 56 -vslen 4 -xres 640 -yres 528 -vxres 640 -vyres 528 -laced false -bcast true ;; d) # 720x576 78Hz 32bpp # fbset -depth 32 -left 54 -right -36 -upper 55 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true fbset -depth 32 -right -36 -lower -6 -hslen 46 -vslen 4 -xres 720 -yres 576 -vxres 720 -vyres 576 -laced false -bcast true ;; f) # 640x240 non-interlaced 32bpp fbset -depth 32 -xres 640 -yres 240 -vxres 640 -vyres 240 -pixclock 79443 -left 72 -right 40 -upper 15 -lower 5 -hslen 48 -vslen 3 ;; g) # 640x480 interlaced 32bpp fbset -depth 32 -xres 640 -yres 480 -vxres 640 -vyres 480 -pixclock 79443 -left 72 -right 40 -upper 30 -lower 10 -hslen 48 -vslen 5 -laced true ;; esac done