substring/os

Negative sync option

Closed this issue · 12 comments

It seems that all displays are configured for positive sync only. There should be option if possible to use negative sync signals, as some displays do work better with those as this was pretty much standard for arcade games, and also J-PAC and other jamma converters seem to work bit better with negative sync. Also negative sync can be converted to composite sync more easily with passive circuit.

I do have issue where my machine boots with 15kHz negative sync, and when groovyarcade start it switches to positive, and K7000 monitor I'm using can't switch between these without changing sync lead position in input connector.

Hi,

All syncs are negative, definitely. See patches from https://github.com/D0023R/linux_kernel_15khz/blob/master/linux-5.10/01_linux_15khz.diff

What monitor preset have you enabled ? k7000 ? can you give me the result of cat /proc/cmdline ?

cat /proc/cmdline:

BOOT_IMAGE=/vmlinuz-linux-15khz root=/dev/disk/by-label/GA rw quiet rd.udev.log-priority=3 splash mitigations=off audit=0 monitor=k7000 video=VGA-1:640x400iS initrd=/initrams-linux-15khz.img

GPU: ASUS HD5570
Motherboard: MSI AM1I

GPU is flashed with Atom-15 firmware, and BIOS/POST does output 800x600 resolution at 50Hz/16kHz, with negative sync. Also in gasetup I can't set resolution as I get message that GPU does not support low pixel clocks, but I am pretty sure that in previous versions it has worked without issues.

I'm surprised a 5570 can't be forced to a different resolution, it does use the radeon driver, I'll try on my side.

Now for you BIOS screen, 800x600 ? your monitor is supposed to just handle 15kHz, not such a big res.

And reading you kernel parameters, 640x400 is not a resolution we've added in the kernel, better 640x480i.

You can edit the resolution in /boot/syslinux/syslinux.cfg (if using bios, oterhwise there is a EFI folder in the path). But just remember these resolutions are fixed, the kernel doesn't compute them on the fly

Edit : could change the resolution in gasetup for ma 5450 that should use the same driver as a 5570

At least on LCD display this uefi bios uses 800x600 res. I think Atom-15 VBIOS patch has resolution tables forced to 15kHz that results higher resolutions still somewhat working on arcade monitors. and indeed bios screen is barely readable and far too tall on K7000. Could it be that GA does not work well with Atom-15 patch, and uses VBIOS table for resolution. I tried it with 15kHz EDID dongle also and still same issues. And with just VGA ID0+ID2 pin grounded, GA starts with high resolution >31kHz mode.

EDIT: it was 640x480iS, just typo when manually copying command line output.

Can you run that and give me the output please ?

for p in /sys/class/drm/card? ; do 
  id=$(basename `readlink -f $p/device`)
  name=$(lspci -mms $id | cut -d '"' -f4,6 --output-delimiter=" ")
  cardnum=$(basename $p)
  module_name=$(lspci -ks $id | grep "Kernel driver in use:" | cut -d ":" -f 2 |tr -d ' ')
  echo "$cardnum ($module_name): $name"
  for p in /sys/class/drm/${cardnum}-*/status; do 
    con=${p%/status}
    bus=$(ls -d "$con"/i2c-* 2>/dev/null)
    echo -n "  ${con#*/card?-}: $(cat $p)"
    [[ -n $bus ]] && echo -n " - Has i2c"
    edid_size=$(cat "$con"/edid | wc -c)
    [[ $edid_size > 0 ]] && echo -n " - Found an EDID"
    echo -e "\nList of video modes:"
    cat "$con"/modes
  done
done

I've also used a EDID dongle with an EDID generated by switchres (a bunch of them is available in /usr/lib/firmware/edid), and gasetup can even detect it and configure accordingly.

[root@GroovyArcade ~]# ./cardinfo.sh
card0 (radeon): Advanced Micro Devices, Inc. [AMD/ATI] Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570]
  DVI-I-1: disconnected
List of video modes:
  HDMI-A-1: disconnected
List of video modes:
  VGA-1: connected - Found an EDID
List of video modes:
640x480i
640x240i

So you've made your own EDID ? Why a 640x240 interlace resolution ? Where do the timings come from ?

I am using this as EDID binary: https://github.com/Ansa89/linux-15khz-patch/blob/master/edid/edid_arcade15.bin but even without EDID dongle and J-PAC in the middle, just straight 6 wires from VGA to monitor, I still can't set resolution and sync only works when connected to positive inputs.

have you tried with one from my distro ? Just set drm.edid_firmware=<connector>:edid/arcade_15.bin in /boot/syslinux/syslinux.cfg (if you're on BIOS, UEFI has a different path). No need to rebuild the initramfs with my distro, it's already inside.

Tried that. No change. Even reinstalled without UEFI enabled, and even sync goes positive as soon as splash screen comes up, with or without edid dongle. And install says that"Your video card doesn't support low dotclocks". I think there might be issue with Atom-15 bios and GA. I ordered 5450 and another 5570 and will test with those, with and without Atom-15 mod.

I've tested on a 5450, 5570 and R9 380 (none atom15 flashed), had no problems so far. You're the very first person in that situation. I really don't think it has something to do with this.

No feedback for 1.5month, shall I close ?