Setting up Ubuntu-Server with intel GPU for custom resolution

1

Short Version:
How can I disable the DisplayPort and display-cloning completely and only use VGA with a custom resolution of 1920x240 (15KHz) on a CRT. Might involve the creation of a custom xorg.conf


Long Version:
I'm struggeling with a RetroPie installation in Ubuntu Server that I'd like to use on a SONY PVM 15KHz CRT monitor. As soon as RetroArch kicks in everything is fine, games are displayed via CRTswitchRes-function and look awesome on the screen - just the linux environment gives me a hard time.

I chose to use so called "Super Resolutions" which are super-wide (e.g. 1920x240) and look correct when fed to the CRT. In order to be able to navigate the frontend, the console has to be set to something similar and there are some pitfalls which I'd like to work out.

First things first, this is the hardware I'm using: HP Compaq Elite 8000 Ultra Small Desktop E8600@3.3GHz, 8GB DDR3, intel GMA 4500 DisplayPort (to Samsung Monitor), VGA (to CRT with custom cable)

The main problem seems to be, that Xorg cannot do anything, because the CRT doesn't give any infos via EDID. Also I've read that with intel you must not use display-cloning, otherwise the system always uses resolutions that both monitors are capable of.

In short: xrandr output is always: Can't open display

The Version of Ubuntu doesn't really matter, I tried 14, 16 and 18 LTS with the same results: RetroArch works, console doesn't. I don't want to switch to Ubuntu-Desktop because I'd like this to be as slick as possible. Right now I'm trying to work with 18.10 LTS.

So, regardless of RetroPie, I tried my best to get the desired resolution:

  • created an EDID binary and referenced it in /etc/default/grub
  • tried many different parameters in grub file
  • patched the kernel with this: https://github.com/TiBeN/15khz-arcade-pkg/blob/master/doc/15khz-package-documentation.md
  • installed intel drivers xf86-video-intel and xserver-xorg-video-intel but both gave me performance issues in RetroPie.
  • Since auto-creation of a xorg.conf fails I tried to make my own, but the frontend won't even boot because I just don't know what to put in there.

Some system information that I collected:

hwinfo --gfxcard

07: PCI 02.0: 0300 VGA compatible controller (VGA)              
  [Created at pci.366]
  Unique ID: _Znp.QUyWiVSQCGD
  SysFS ID: /devices/pci0000:00/0000:00:02.0
  SysFS BusID: 0000:00:02.0
  Hardware Class: graphics card
  Model: "Intel 4 Series Chipset Integrated Graphics Controller"
  Vendor: pci 0x8086 "Intel Corporation"
  Device: pci 0x2e12 "4 Series Chipset Integrated Graphics Controller"
  SubVendor: pci 0x103c "Hewlett-Packard Company"
  SubDevice: pci 0x3648 
  Revision: 0x03
  Driver: "i915"
  Driver Modules: "drm"
  Memory Range: 0xf0000000-0xf03fffff (rw,non-prefetchable)
  Memory Range: 0xe0000000-0xefffffff (ro,non-prefetchable)
  I/O Ports: 0x1230-0x1237 (rw)
  IRQ: 31 (33735 events)
  I/O Ports: 0x3c0-0x3df (rw)
  Module Alias: "pci:v00008086d00002E12sv0000103Csd00003648bc03sc00i00"
  Driver Info #0:
    Driver Status: i915 is active
    Driver Activation Cmd: "modprobe i915"
  Config Status: cfg=new, avail=yes, need=no, active=unknown

08: PCI 02.1: 0380 Display controller
  [Created at pci.366]
  Unique ID: ruGf.xwJ9cLl4Ut2
  SysFS ID: /devices/pci0000:00/0000:00:02.1
  SysFS BusID: 0000:00:02.1
  Hardware Class: graphics card
  Model: "Intel 4 Series Chipset Integrated Graphics Controller"
  Vendor: pci 0x8086 "Intel Corporation"
  Device: pci 0x2e13 "4 Series Chipset Integrated Graphics Controller"
  SubVendor: pci 0x103c "Hewlett-Packard Company"
  SubDevice: pci 0x3648 
  Revision: 0x03
  Memory Range: 0xf0400000-0xf04fffff (rw,non-prefetchable,disabled)
  Module Alias: "pci:v00008086d00002E13sv0000103Csd00003648bc03sc80i00"
  Config Status: cfg=new, avail=yes, need=no, active=unknown

Primary display adapter: #7

++++++++++++++++++++++++++++++++++++++++++++++++++++++

hwinfo --monitor

20: None 00.0: 10002 LCD Monitor                                
  [Created at monitor.125]
  Unique ID: rdCR.k6CV94ujG82
  Parent ID: _Znp.QUyWiVSQCGD
  Hardware Class: monitor
  Model: "SAMSUNG SyncMaster"
  Vendor: SAM "SAMSUNG"
  Device: eisa 0x01ae "SyncMaster"
  Serial ID: "HS3P601288"
  Resolution: 720x400@70Hz
  Resolution: 640x480@60Hz
  Resolution: 640x480@67Hz
  Resolution: 640x480@72Hz
  Resolution: 640x480@75Hz
  Resolution: 800x600@56Hz
  Resolution: 800x600@60Hz
  Resolution: 800x600@72Hz
  Resolution: 800x600@75Hz
  Resolution: 832x624@75Hz
  Resolution: 1024x768@60Hz
  Resolution: 1024x768@70Hz
  Resolution: 1024x768@75Hz
  Resolution: 1280x1024@75Hz
  Resolution: 1600x1200@60Hz
  Resolution: 1280x1024@60Hz
  Resolution: 1280x960@60Hz
  Resolution: 1152x864@75Hz
  Size: 408x306 mm
  Year of Manufacture: 2007
  Week of Manufacture: 24
  Detailed Timings #0:
     Resolution: 1600x1200
     Horizontal: 1600 1664 1856 2160 (+64 +256 +560) +hsync
       Vertical: 1200 1201 1204 1250 (+1 +4 +50) +vsync
    Frequencies: 162.00 MHz, 75.00 kHz, 60.00 Hz
  Driver Info #0:
    Max. Resolution: 1600x1200
    Vert. Sync Range: 56-75 Hz
    Hor. Sync Range: 30-81 kHz
    Bandwidth: 162 MHz
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #2 (VGA compatible controller)

++++++++++++++++++++++++++++++++++++++++++++++++++++++

lspci | grep VGA

00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03)

++++++++++++++++++++++++++++++++++++++++++++++++++++++

glxgears -info

Error: couldn't open display (null)

++++++++++++++++++++++++++++++++++++++++++++++++++++++

xrandr

Can't open display 

++++++++++++++++++++++++++++++++++++++++++++++++++++++

ls /sys/class/drm/

card0  card0-DP-1  card0-HDMI-A-1  card0-VGA-1  controlD64  renderD128  version

++++++++++++++++++++++++++++++++++++++++++++++++++++++

/etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT="gfxpayload=640x480x16,640x480 video=card0-VGA-1:640x480@60ec"
GRUB_CMDLINE_LINUX_DEFAULT="video=card0-VGA-1:640x240ec drm_kms_helper.edid_firmware=card0-VGA-1:/lib/f$
GRUB_CMDLINE_LINUX="quiet splash consoleblank=0 video=card0-VGA-1:640x240ec drm_kms_helper.edid_firmwar$

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE="640x240x32 ; 640x240x24 ; 640x240x16"
GRUB_GFXPAYLOAD="640x240x32 ; 640x240x24 ; 640x240x16"

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

++++++++++++++++++++++++++++++++++++++++++++++++++++++

Picture of the set
Everything works as soon as RetroArch kicks in
1920x240 looks perfect on the CRT

Alex

Posted 2019-01-21T16:09:32.920

Reputation: 11

Answers

0

I wasn't aware that if I trigger xrandr over SSH the "Can't open display" message was the expected output. I got it sorted out and was able to create a modeline that works for my needs.

Alex

Posted 2019-01-21T16:09:32.920

Reputation: 11