Framebuffer console mode generator

0. Contents

This is the documentation of fbmodes-1.2.1.
   1. Purpose
   2. Usage
      2.1. modetest (the newer and easier program)
      2.2. fbmodes (older and not so flexible program)
   3. Some examples
   4. Copying
   5. Drawbacks
   6. Feedback
   7. Requirements
   8. Installation
   9. Downloading

1. Purpose

Give it the requested screen resolution and refresh time (vsync period), and it gives you the modelines for fbset (/etc/fb.modes), SVGATextMode (/etc/TextConfig) and XFree86 (/etc/XF86Config).

On modern monitors, you probably have to specify the blank part lengths for left, right, top and bottom of screen too.

2. Usage

(Both are found in the same archive)

2.1. modetest (the newer and easier program)

Missing options.
modetest - video mode composer v1.2.0 (C) 1992,2002 Bisqwit

Developes a screen mode.
Usage: modetest <options> [<...>]
Options:
    -V, --version                                 Version information
    -X, --hslen <num>                             Horizontal sync length. Range: 0..1 s, default: 1e-6 (1 microsecond)
    -Y, --vslen <num>                             Vertical sync length. Range: 0..1 s, default: 46e-6 (46 microseconds)
    -h, --help                                    Help
    -r, --refresh <num>                           Screen refresh rate.
    -x, --xres <visible>[+<invisible>[/<left%>]]  Horizontal resolution.
    -y, --yres <visible>[+<invisible>[/<top%>]]   Vertical resolution.

You must specify at least xres, yres and refresh.
Current assumed monitor and display card limits (used in warnings):
    Horizontal sync (hsync) range: 30 .. 70 kHz
    Vertical sync (refresh) range: 50 .. 120 Hz
    atyfb maxs: h_disp=2048, h_sync_start=4096, hslen=248,
                v_disp=2048, v_sync_strt=2048, vslen=31

The program tries to set the screenmode with fbset command.
You might want to redirect the stderr to a file in case the fbset command
fails and renders the screen garbled: modetest [<options>] 2>logfile.txt

Example: modetest 2>tmptmp -x1280+296/78.4 -y1024+39/99 -r60
         (gives the screenmode I'm using with my framebuffer console)
(Note that you need write access to /dev/vcsa0 and a working fbset (v2.1) program to fully gain the features this program has to offer.)

2.2. fbmodes (older and not so flexible program)

fbmodes version 1.2.0
Copyright (C) 1992,1999 Bisqwit (http://iki.fi/bisqwit/)

Generates various type of video mode entries with given settings

Usage: fbmodes [-?xyfrdXYmV]

  -?, --help          Help
  -x, --xres n        Requested horizontal resolution (default: 256)
  -y, --yres n        Requested vertical resolution (default: 256)
  -f, --hfreq n       Horizontal pixel clock/Hz (default: 31500)
  -r, --refresh n     Specify (vertical) display refreshment rate/Hz
                       (default: hfreq/ylen or 120)
  -xl,--xlen n        Specify video line width/pixels (default: xres*3/2)
  -yl,--ylen n        Specify number of scanlines (default: hfreq/refresh)
  -d, --depth n       Specify bitness (used in fb.modes) (default: 8)
  -X, --xofs n        Specify hsyncstart-xres (default: (xlen-xres)/2)
  -Y, --yofs n        Specify vsyncstart-yres (default: (ylen-yres)/3)
  -xs,--hslen n       Specify hsync length/pixels
                       (default: min(40,(xlen-xres)/2-1))
  -ys,--vslen n       Specify vsync length/pixels
                       (default: min(10,(ylen-yres)/2-1))
  -fx,--fontxres n    Specify fontxres (used in TextConfig) (default: 8)
  -fy,--fontyres n    Specify fontyres (used in TextConfig) (default: 8)
  -m, --mem n         Video memory size/kB (default: 4000)
  -V, --version       Version information

The order of the parameter elements is not important.
Also any of them can be omitted.

Pparameter translation algorithm:
 If hfreq was specified and refresh was not specified,
     refresh gets calculated from hfreq/ylen.
 Else if refresh was not specified, it is assumed as 120.
 Next if ylen was not specified, it is calculated from hfreq/refresh.
 If ylen, refresh and hfreq were specified, ignore hfreq.
 Next, if hslen and vslen were not specified, calculates them as documented.

3. Some examples

(For my "ATY Mach64" framebuffer and Belinea 10 70 20 monitor)
mode "2000x1750-40"
    # D: 186.602 MHz, H: 70.683 kHz, V: 39.687 Hz
    geometry 2000 1750 2000 1750 8
    timings 5359 434 70 29 1 136 1
    hsync high
    vsync high
endmode

#~/src/fbmodes/fbmodes -x360 -y256 -d32 -ys3 -xs48 -f50000 -m1024
mode "360x256-120"
  geometry 360 256  360 1000  32
  timings 39746  24 72  104 53  48 3
endmode
    
#~/src/fbmodes/fbmodes -x320 -y256 -d32 -ys3 -xs48 -f50000 -m1024
mode "320x256-120"
  geometry 320 256  320 1000  32
  timings 43642  22 69  104 53  48 3
endmode

#~/src/fbmodes/fbmodes -x360 -xl460 -y240 -d32 -ys3 -X30 -xs20 -f35000 -m256 -r120
mode "360x240-120"
  geometry 360 240  360 728  32
  timings 62254  50 30  31 17  20 3
endmode

#~/src/fbmodes/fbmodes -x320 -y240 -d32 -ys2 -xs48 -f45000 -m1024
mode "320x240-120"
  geometry 320 240  320 1000  32
  timings 48414  22 69  88 45  48 2
endmode

#~/src/fbmodes/fbmodes -x576 -y432 -d32 -ys3 -xs48 -f50000 -m512
mode "576x432-120"
  geometry 576 432  576 910  32
  timings 23328  32 79  33 18  48 3
endmode

#~/src/fbmodes/modetest -x320+50/20 -y200+100/70 -r120 -X2.5e-6 -Y58e-6
mode "320x200-120"
    # D: 14.799 MHz, H: 36.360 kHz, V: 120.000 Hz
    geometry 320 200   320 200   8
    timings 67574  10 40  70 30  37 3
    vsync high
    hsync high
endmode

#~/src/fbmodes/modetest -x384+50/35 -y288+40/80 -r120 -X2.5e-6 -Y58e-6
mode "384x288-120"
    # D: 19.145 MHz, H: 39.720 kHz, V: 120.000 Hz
    geometry 384 288   384 288   8
    timings 52232  17 33  32 8  48 3
endmode

# Generated with: modetest -x256+95/40 -y320+30 -r120 -X0 -Y1e-6
mode "256x320-120"
    # D: 14.784 MHz, H: 42.120 kHz, V: 120.000 Hz
    geometry 256 320   256 320   32
    timings 67640  38 57  27 3  0 1
    vsync high
    hsync high
endmode

# Generated with: modetest -x400+60/48 -y320+50/60 -r120
mode "400x320-120"
    # D: 21.472 MHz, H: 44.640 kHz, V: 120.000 Hz
    geometry 400 320   400 320   8
    timings 46572  28 32  30 20  21 2
    vsync high
    hsync high
endmode

# Generated with: modetest -x 432+70/50 -y 320+30 -r 120
mode "432x320-120"
    # D: 22.071 MHz, H: 42.120 kHz, V: 120.000 Hz
    geometry 432 320   432 320   8
    timings 45308  35 35  27 3  22 1
    vsync high
    hsync high
endmode

# Generated with: modetest -x352+116/35 -y288+120/70 -r124
mode "352x288-124"
    # D: 25.064 MHz, H: 50.840 kHz, V: 124.000 Hz
    geometry 352 288   352 288   8
    timings 39897  40 76  84 36  25 2
    vsync high
    hsync high
endmode

# Generated with: modetest -x640+100/97 -y360+30 -r120
mode "640x360-120"
    # D: 36.503 MHz, H: 47.040 kHz, V: 120.000 Hz
    geometry 640 360   640 360   8
    timings 27394  97 3  27 3  36 2
    vsync high
    hsync high
endmode

# Generated with: modetest -x640+200 -y480+50 -r120
mode "640x480-120"
    # D: 57.264 MHz, H: 63.840 kHz, V: 120.000 Hz
    geometry 640 480   640 480   8
    timings 17462  160 40  45 5  57 2
    vsync high
    hsync high
endmode

# Generated with: modetest -x512+110/90 -y384+30 -r120
mode "512x384-120"
    # D: 32.648 MHz, H: 49.920 kHz, V: 120.000 Hz
    geometry 512 384   512 384   8
    timings 30630  99 11  27 3  32 2
    vsync high
    hsync high
endmode

# Generated with: modetest -x720+180/70 -y480+60/70 -r120
mode "720x480-120"
    # D: 62.568 MHz, H: 65.040 kHz, V: 120.000 Hz
    geometry 720 480   720 480   8
    timings 15982  126 54  42 18  62 2
    vsync high
    hsync high
endmode

(I have made this much different screen modes to play divx videos full screen without software rescaling. The MPlayer script be found here.)

4. Copying

modetest has been written by Joel Yliluoma, a.k.a. Bisqwit,
and is distributed under the terms of the General Public License (GPL).

If you happen to see this program useful for you, I'd appreciate if you tell me :) Perhaps it would motivate me to enhance the program.

5. Drawbacks

6. Feedback

If you have problems using this program or ideas how to develop it, email me your questions or ideas. Please do not omit the details.

7. Requirements

Only tested with GNU make and GCC version 3.03 in Linux.
Mode tester (visualizer and tester) part works only on Linux (it uses /dev/vcsa0 and fbset).

8. Installation

$ make
$ su
# make install
If you do not want to install libargh (included in the archive), do not use "make install" and edit Makefile and enable the STATIC linking instead of DYNAMIC.

9. Downloading

The official home page of fbmodes is at http://oktober.stc.cx/source/fbmodes.html.
Check there for new versions.

Generated from progdesc.php (last updated: Fri, 7 Jun 2002 00:12:10 +0300)
with docmaker.php (last updated: Wed, 15 May 2002 04:26:32 +0300)
at Fri, 7 Jun 2002 00:26:02 +0300