mostly headless server display resolution

I have a 1U server that is only has a display attached when a crash cart is connected to the VGA port on the back. I would like to know how to configure Xorg or gdm or whatever so that the resolution is always 1024x768 60Hz, which should work no matter what monitor is attached after Xorg starts. I have no experience configuring Xorg before, as it has mostly “just worked” in other situations. I have tried adding

Section "Monitor"
  Identifier "Default Monitor"
  VertRefresh 60
  Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

to /etc/X11/xorg.conf.d/50-monitor.conf (ModeLine from cvt 1024 768 60 output) and

Section "Screen"
  Identifier "Default Screen"
  Device "Default Device"
  Monitor "Default Monitor"
EndSection

to /etc/X11/xorg.conf.d/50-screen.conf and

Section "Device"
  Identifier "Default Device"
  Device "mach64"
EndSection

but it does not help. In fact, I get the error “Screen(s) found, but none have a usable configuration.”

Here is info about he graphics card:

> sudo /usr/sbin/hwinfo --gfxcard25: PCI 107.0: 0300 VGA compatible controller (VGA)             
  [Created at pci.378]
  Unique ID: 2_DJ.htW7mB2rDz4
  Parent ID: WL76.uix4ssU0yQ0
  SysFS ID: /devices/pci0000:00/0000:00:09.0/0000:01:07.0
  SysFS BusID: 0000:01:07.0
  Hardware Class: graphics card
  Model: "ATI Rage XL"
  Vendor: pci 0x1002 "ATI Technologies Inc"
  Device: pci 0x4752 "Mach64 GR"
  SubVendor: pci 0x1002 "ATI Technologies Inc"
  SubDevice: pci 0x8008 "Rage XL"
  Revision: 0x27
  Memory Range: 0xde000000-0xdeffffff (rw,non-prefetchable)
  I/O Ports: 0x2000-0x2fff (rw)
  Memory Range: 0xdd100000-0xdd100fff (rw,non-prefetchable)
  Memory Range: 0x000c0000-0x000dffff (rw,non-prefetchable,disabled)
  IRQ: 10 (no events)
  I/O Ports: 0x3c0-0x3df (rw)
  Module Alias: "pci:v00001002d00004752sv00001002sd00008008bc03sc00i00"
  Driver Info #0:
    XFree86 v4 Server Module: ati
    XF86Config Entry: Option "XaaNoPixmapCache" "on"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #15 (PCI bridge)


Primary display adapter: #25

Here is the tail of log file:

   995.607] (II) Unloading vbe
   995.607] (II) MACH64(0): Manufacturer: DEL  Model: a007  Serial#: 808668236
   995.607] (II) MACH64(0): Year: 2004  Week: 42
   995.607] (II) MACH64(0): EDID Version: 1.3
   995.607] (II) MACH64(0): Analog Display Input,  Input Voltage Level: 0.700/0.300 V
   995.607] (II) MACH64(0): Sync:  Separate  Composite  SyncOnGreen
   995.607] (II) MACH64(0): Max Image Size [cm]: horiz.: 41  vert.: 31
   995.607] (II) MACH64(0): Gamma: 2.20
   995.607] (II) MACH64(0): DPMS capabilities: StandBy Suspend Off; RGB/Color Display
   995.608] (II) MACH64(0): Default color space is primary color space
   995.608] (II) MACH64(0): First detailed timing is preferred mode
   995.608] (II) MACH64(0): redX: 0.638 redY: 0.342   greenX: 0.293 greenY: 0.608
   995.608] (II) MACH64(0): blueX: 0.146 blueY: 0.067   whiteX: 0.312 whiteY: 0.328
   995.608] (II) MACH64(0): Supported established timings:
   995.608] (II) MACH64(0): 720x400@70Hz
   995.608] (II) MACH64(0): 640x480@60Hz
   995.608] (II) MACH64(0): 640x480@75Hz
   995.608] (II) MACH64(0): 800x600@60Hz
   995.608] (II) MACH64(0): 800x600@75Hz
   995.608] (II) MACH64(0): 1024x768@60Hz
   995.608] (II) MACH64(0): 1024x768@75Hz
   995.608] (II) MACH64(0): 1280x1024@75Hz
   995.608] (II) MACH64(0): Manufacturer's mask: 0
   995.608] (II) MACH64(0): Supported standard timings:
   995.608] (II) MACH64(0): #0: hsize: 1280  vsize 1024  refresh: 60  vid: 32897
   995.608] (II) MACH64(0): #1: hsize: 1600  vsize 1200  refresh: 60  vid: 16553
   995.608] (II) MACH64(0): #2: hsize: 1152  vsize 864  refresh: 75  vid: 20337
   995.608] (II) MACH64(0): Supported detailed timing:
   995.608] (II) MACH64(0): clock: 162.0 MHz   Image Size:  367 x 275 mm
   995.608] (II) MACH64(0): h_active: 1600  h_sync: 1664  h_sync_end 1856 h_blank_end 2160 h_border: 0
   995.608] (II) MACH64(0): v_active: 1200  v_sync: 1201  v_sync_end 1204 v_blanking: 1250 v_border: 0
   995.608] (II) MACH64(0): Serial No: C06464AC03LL
   995.608] (II) MACH64(0): Monitor name: DELL 2001FP
   995.608] (II) MACH64(0): Ranges: V min: 56 V max: 76 Hz, H min: 31 H max: 80 kHz, PixClock max 165 MHz
   995.608] (II) MACH64(0): EDID (in hex):
   995.608] (II) MACH64(0):     00ffffffffffff0010ac07a04c4c3330
   995.608] (II) MACH64(0):     2a0e01030e291f78ee6390a3574b9b25
   995.608] (II) MACH64(0):     115054a54b008180a940714f01010101
   995.608] (II) MACH64(0):     010101010101483f403062b0324040c0
   995.608] (II) MACH64(0):     13006f131100001e000000ff00433036
   995.608] (II) MACH64(0):     343634414330334c4c20000000fc0044
   995.608] (II) MACH64(0):     454c4c203230303146500a20000000fd
   995.608] (II) MACH64(0):     00384c1f5010000a20202020202000b1
   995.608] (II) MACH64(0): EDID vendor "DEL", prod id 40967
   995.608] (II) MACH64(0): Using hsync ranges from config file
   995.608] (II) MACH64(0): Using vrefresh ranges from config file
   995.608] (II) MACH64(0): Printing DDC gathered Modelines:
   995.608] (II) MACH64(0): Modeline "1600x1200"x0.0  162.00  1600 1664 1856 2160  1200 1201 1204 1250 +hsync +vsync (75.0 kHz eP)
   995.608] (II) MACH64(0): Modeline "800x600"x0.0   40.00  800 840 968 1056  600 601 605 628 +hsync +vsync (37.9 kHz e)
   995.608] (II) MACH64(0): Modeline "640x480"x0.0   31.50  640 656 720 840  480 481 484 500 -hsync -vsync (37.5 kHz e)
   995.608] (II) MACH64(0): Modeline "640x480"x0.0   25.18  640 656 752 800  480 490 492 525 -hsync -vsync (31.5 kHz e)
   995.608] (II) MACH64(0): Modeline "720x400"x0.0   28.32  720 738 846 900  400 412 414 449 -hsync +vsync (31.5 kHz e)
   995.609] (II) MACH64(0): Modeline "1280x1024"x0.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz e)
   995.609] (II) MACH64(0): Modeline "1024x768"x0.0   78.75  1024 1040 1136 1312  768 769 772 800 +hsync +vsync (60.0 kHz e)
   995.609] (II) MACH64(0): Modeline "1024x768"x0.0   65.00  1024 1048 1184 1344  768 771 777 806 -hsync -vsync (48.4 kHz e)
   995.609] (II) MACH64(0): Modeline "800x600"x0.0   49.50  800 816 896 1056  600 601 604 625 +hsync +vsync (46.9 kHz e)
   995.609] (II) MACH64(0): Modeline "1280x1024"x0.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz e)
   995.609] (II) MACH64(0): Modeline "1152x864"x0.0  108.00  1152 1216 1344 1600  864 865 868 900 +hsync +vsync (67.5 kHz e)
   995.609] (II) MACH64(0): BIOS Data:  BIOSSize=0x8000, ROMTable=0x0114.
   995.609] (II) MACH64(0): BIOS Data:  ClockTable=0x097C, FrequencyTable=0x0000.
   995.609] (II) MACH64(0): BIOS Data:  LCDTable=0x0000.
   995.609] (II) MACH64(0): BIOS Data:  VideoTable=0x0000, HardwareTable=0x015E.
   995.609] (II) MACH64(0): BIOS Data:  I2CType=0x0F, Tuner=0x00, Decoder=0x00, Audio=0x0F.
   995.609] (--) MACH64(0): ATI 3D Rage XL or XC graphics controller detected.
   995.609] (--) MACH64(0): Chip type 4752 "GR", version 7, foundry TSMC, class 0, revision 0x00.
   995.609] (--) MACH64(0): PCI bus interface detected;  block I/O base is 0x2000.
   995.609] (--) MACH64(0): ATI Mach64 adapter detected.
   995.609] (!!) MACH64(0): For information on using the multimedia capabilities
    of this adapter, please see http://gatos.sf.net.
   995.609] (--) MACH64(0): Internal RAMDAC (subtype 1) detected.
   995.609] (==) MACH64(0): RGB weight 888
   995.609] (==) MACH64(0): Default visual is TrueColor
   995.609] (==) MACH64(0): Using gamma correction (1.0, 1.0, 1.0)
   995.609] (II) MACH64(0): Using Mach64 accelerator CRTC.
   995.609] (II) MACH64(0): Storing hardware cursor image at 0xDE7FFC00.
   995.609] (II) MACH64(0): Using 8 MB linear aperture at 0xDE000000.
   995.609] (!!) MACH64(0): Virtual resolutions will be limited to 8191 kB
 due to linear aperture size and/or placement of hardware cursor image area.
   995.609] (II) MACH64(0): Using Block 0 MMIO aperture at 0xDD100400.
   995.609] (II) MACH64(0): Using Block 1 MMIO aperture at 0xDD100000.
   995.609] (EE) MACH64(0): Unable to map linear aperture. Invalid argument (22)
   995.609] (II) UnloadModule: "mach64"
   995.609] (II) UnloadSubModule: "int10"
   995.609] (II) Unloading int10
   995.609] (EE) Screen(s) found, but none have a usable configuration.
   995.610] (EE) 
Fatal server error:
   995.610] (EE) no screens found(EE) 
   995.610] (EE) 

I would appreciate suggestions on how to make this fix the display resolution at 1024x768 60Hz.

It’s never occurred to me to try setting only VertRefresh without HorizSync, or as an integer instead of a range, and Xorg knows how to calculate modelines just as well as CVT& GTF given the right specs. I suggest to try this instead:

Section "Monitor"
	ModelName	"DELL D2001FP"
	HorizSync	31-80
	VertRefresh	56-76
	Option	"PreferredMode"	"1024x768"
EndSection

Thank you for the suggestion. I cut and paste this into 50-monitor.conf, added an Identifier, and I still get “Screen(s) found, but none have a usable configuration.” Almost anything I do gets that error (even when the files are left with their initial Leap 15.0 values). If you have other suggestions, they would be appreciated.

At the moment, in my experiments, 50-monitor.conf contains

Section "Monitor"    Identifier    "Default Monitor"
    ModelName    "DELL 2001FP"
    HorizSync    31-80
    VertRefresh    56-76
    Modeline    "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
    Option        "PreferredMode" "1024x768_60.00"
EndSection

But as always I get no usable screens.

susepaste -n eak9000 -e 10080 /var/log/Xorg.0.log

I’d try video= on the kernel cmdline to force enabling: https://raw.githubusercontent.com/torvalds/linux/master/Documentation/fb/modedb.txt

Maybe use video= and/or Grub’s gfx parameters and skip xorg.conf altogether?

Maybe the mach64 driver is broken. It probably gets little or no testing as X and kernel evolve. Is it part of the motherboard? Can you swap in an old Radeon or GeForce?

Maybe a consult with the AMD devs is in order: http://lists.x.org/mailman/listinfo/xorg-driver-ati

Manual CVT or GTF calculation of modeline to include in xorg.conf has never been a solution for me. No xorg.conf here has ever included a modeline any longer than the minute it takes to see it did not help anything. Xorg knows how to do the same calculations as CVT and GTF. Trying to force use of a manually generated modeline can cause a failure that Xorg automagic would not.

Thank you for the suggestion. Using the grub’s gfxmode parameter was the first thing I did, and it indeed fixed the console. I was hoping to also get X working because I occasionally use GUI configuration for some things I don’t know how to do with /etc/sysconfig settings.

Maybe the mach64 driver is broken. It probably gets little or no testing as X and kernel evolve. Is it part of the motherboard? Can you swap in an old Radeon or GeForce?

Maybe a consult with the AMD devs is in order: http://lists.x.org/mailman/listinfo/xorg-driver-ati

I think this is what I will try next. I appreciate the pointer.

Manual CVT or GTF calculation of modeline to include in xorg.conf has never been a solution for me. No xorg.conf here has ever included a modeline any longer than the minute it takes to see it did not help anything. Xorg knows how to do the same calculations as CVT and GTF. Trying to force use of a manually generated modeline can cause a failure that Xorg automagic would not.

Good to know. I will adjust accordingly for future attempts.

cmdline option iomem=relaxed from https://bugzilla.opensuse.org/show_bug.cgi?id=1112963#c25 might be worth a try.

Chris Sorenson on the xorg mailing list pointed me to a 2017 Debian discussion:
https://lists.debian.org/debian-powerpc/2017/03/msg00234.html
There it seems the kernel change to CONFIG_IO_STRICT_DEVMEM=y was the problem, since the ATI drivers are user mode, and cannot share I/O registers with anything referenced by the kernel. To solution was to add iomem=relaxed to the kernel command line. I tried this and made some progress (at least Xorg starts).