How To Create LCFG headers for new monitors

Most "normal" monitors do not require an additional header. Typically it is only when they are wide-screen that there is a requirement to manually specify the configuration. Note also that if the machine to which the monitor is attached is using a recent nvidia card it should be able to auto-detect any monitor, whatever size or shape.

The standard DICE desktop machines (e.g. the Optiplex 620, 745 and 755) do not have nvidia graphics cards, the onboard intel chipset is used instead. This is the main reason we need these additional headers. If you are unsure whether a machine has an nvidia card, it may be obvious from the LCFG source profile including an extra video_nvidia header. The only reliable way to find out is to get access to the machine (with a new machine that could be by booting with PXE or a CD) and using the lspci command. If there is an nvidia card you will see something like this:

$ /sbin/lspci | grep -i nvidia
01:00.0 VGA compatible controller: nVidia Corporation GeForce 8800 GTS 512 (rev a2)

Adding support for a new monitor is fairly simple and it is best to follow how it has been done for others, for example I am using the Dell E228WFP monitor (lcfg/options/monitor_dellE228Wfp.h).

The first step is to (as root) use the tools provided in the monitor-edid package which is installed as standard on DICE SL5 machines.

# /usr/sbin/monitor-get-edid | /usr/bin/monitor-parse-edid
Name: DELL E228WFP
Screen size: 47.3 cm x 29.6 cm (21.97 inches, aspect ratio 16/10 = 1.60)
Gamma: 2.2
Digital signal
Max video bandwidth: 140 MHz

        HorizSync 30-83
        VertRefresh 56-75

        # Monitor preferred modeline (59.9 Hz vsync, 64.7 kHz hsync, ratio 16/10)
        ModeLine "1680x1050" 119 1680 1728 1760 1840 1050 1053 1059 1080 -hsync +vsync

That provides all the information required to create the LCFG header. You should then create a new LCFG-level header with a name that matches the monitor (e.g. lcfg/options/monitor_dellE228Wfp.h). After that create a new DICE-level header which just includes that LCFG-level header (e.g. dice/options/monitor_dellE228Wfp.h).

If it is a widescreen monitor with an intel graphics card you will need the 915resolution tool so you have to include the lcfg/options/monitor_915res.h header. You then need to set the gbios.options resource to match the width and height of the monitor (which in this case is 1680x1050) - anyone know what the 3c bit is for?

#include <lcfg/options/monitor_915res.h>

gbios.options       3c 1680 1050

The next part is to add all the information needed to describe the monitor in the configuration file.

!xfree.monitors                 mADD(dellE228Wfp)
xfree.hsync_dellE228Wfp         30-83
xfree.vrefresh_dellE228Wfp      56-75
!xfree.monopts_dellE228Wfp      mADD(dpms)
xfree.monopt_dellE228Wfp_dpms   Option "DPMS" "true"
!xfree.monopts_dellE228Wfp      mADD(mode)
xfree.monopt_dellE228Wfp_mode   Modeline "1680x1050" 139.64 1680 1712 2224 2256 1050 1071 1081 1103

!xfree.monitor_main             mSET(dellE228Wfp)
!xfree.displaymodes_main        mSET("1680x1050")

Choose a sensible name for the monitor which will not clash with anything else (dellE228Wfp in this case) and then copy the horizsync, vertrefresh and modeline from the output of the monitor-edid commands.

Because of the weekly release cycle this new header will not be immediately available for use on a machine following stable. If you need the configuration to be in place immediately you will need to copy the contents of the new header into the relevant LCFG source profile. You will then also need to remember to remove them once the new header is in stable and include the header instead.

-- StephenQuinney - 23 Sep 2008

Topic revision: r4 - 19 Jul 2011 - 13:46:03 - StephenQuinney
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
This Wiki uses Cookies