HackingVGAforFun: Unterschied zwischen den Versionen
Aus LaborWiki
Siro (Diskussion | Beiträge) K (+links) |
Siro (Diskussion | Beiträge) (+doku) |
||
Zeile 5: | Zeile 5: | ||
[http://pinouts.ru/all/VGA15_pinout.shtml VGA pinouts] | [http://pinouts.ru/all/VGA15_pinout.shtml VGA pinouts] | ||
== edid == | == build a fake monitor == | ||
* Terminate the color lines with 75ohms | |||
* Attach a 24C02 serial eeprom to the specified pins (24c04 - 24c16 is possible to ) | |||
* if no eeprom is at hand, connect ID3 to GND | |||
== Modesetting == | |||
=== xrandr === | |||
To do so use xrandr:<br> | |||
xrandr --newmode "MODE1" 64.00 1400 1400 1401 1401 700 700 702 702 -hsync -vsync | |||
xrandr --addmode VGA-0 "MODE1" | |||
xrandr --output VGA-0 --mode "MODE1" --right-of LVDS | |||
note: VGA-0 may not apply, it could be VGA1 or VGA too, depending on the driver.<br> | |||
note: the last command assumes LVDS to be your primary active connector, change depending on your system. | |||
alternative arandr | |||
=== Xorg.conf === | |||
Add a ModeLine to your Xorg.conf. | |||
Section "Monitor" | |||
Identifier "SyncMaster" | |||
Option "VGA-0" | |||
HorizSync 30-96 | |||
VertRefresh 50-160 | |||
ModeLine "MODE1" 64.00 1400 1400 1401 1401 700 700 702 702 | |||
EndSection | |||
=== edid in eeprom === | |||
[http://de.wikipedia.org/wiki/EDID EDID] | [http://de.wikipedia.org/wiki/EDID EDID] | ||
I used EDID 1.3<br> | I used EDID 1.3<br> | ||
Zeile 20: | Zeile 48: | ||
** standart timings | ** standart timings | ||
** prefered timings | ** prefered timings | ||
<br> | |||
''' flash a new edid ''' | |||
* Load the kernelmodule i2c-dev | * Load the kernelmodule i2c-dev | ||
* Get [http://www.lm-sensors.org/wiki/I2CTools i2c-tools] | * Get [http://www.lm-sensors.org/wiki/I2CTools i2c-tools] | ||
Zeile 34: | Zeile 58: | ||
* Flash new EDID with [https://github.com/tomka/write-edid write-edid.sh] | * Flash new EDID with [https://github.com/tomka/write-edid write-edid.sh] | ||
* Note the input file is plain/text with hexvalues, spaces and newlines only | * Note the input file is plain/text with hexvalues, spaces and newlines only | ||
<br> | |||
''' create custom edid ''' | |||
* use [http://www.tucows.com/preview/329441 Phoenix EDID Designer] to create custom EDIDs | * use [http://www.tucows.com/preview/329441 Phoenix EDID Designer] to create custom EDIDs | ||
'''Note''' | '''Note''' | ||
Zeile 41: | Zeile 65: | ||
* you can use the export function to generate .raw files and use hexdump to convert them to plain/text hex | * you can use the export function to generate .raw files and use hexdump to convert them to plain/text hex | ||
=== hack the kernel module drm === | === hack the kernel module drm for custom edid === | ||
This is neccessary if you specify hsync < 1 or vsync < 1 in your edid | |||
* install linux-source | * install linux-source | ||
* install linux-kernel-headers | * install linux-kernel-headers | ||
Zeile 73: | Zeile 99: | ||
|AMD RV710 | |AMD RV710 | ||
|Hsync = 0 | |Hsync = 0 | ||
|normal graphics | |normal graphics | ||
|- | |- | ||
|AMD RV710 | |AMD RV710 | ||
Zeile 80: | Zeile 106: | ||
|- | |- | ||
|} | |} | ||
== Links == | == Links == | ||
* http://www.nathandumont.com/node/241 | * http://www.nathandumont.com/node/241 | ||
[[Category:HowTo]] |
Version vom 6. März 2013, 11:38 Uhr
VGA
Video Graphics Adapter
pinouts
build a fake monitor
- Terminate the color lines with 75ohms
- Attach a 24C02 serial eeprom to the specified pins (24c04 - 24c16 is possible to )
- if no eeprom is at hand, connect ID3 to GND
Modesetting
xrandr
To do so use xrandr:
xrandr --newmode "MODE1" 64.00 1400 1400 1401 1401 700 700 702 702 -hsync -vsync xrandr --addmode VGA-0 "MODE1" xrandr --output VGA-0 --mode "MODE1" --right-of LVDS
note: VGA-0 may not apply, it could be VGA1 or VGA too, depending on the driver.
note: the last command assumes LVDS to be your primary active connector, change depending on your system.
alternative arandr
Xorg.conf
Add a ModeLine to your Xorg.conf.
Section "Monitor" Identifier "SyncMaster" Option "VGA-0" HorizSync 30-96 VertRefresh 50-160 ModeLine "MODE1" 64.00 1400 1400 1401 1401 700 700 702 702 EndSection
edid in eeprom
EDID
I used EDID 1.3
Windows
- it accepts:
- standart timings
- established timings
- it looks like Windows XP doesn't like "prefered timings"
Linux
- The kernel module drm handels all the display stuff
- it accepts:
- established timings
- standart timings
- prefered timings
flash a new edid
- Load the kernelmodule i2c-dev
- Get i2c-tools
- build the i2c-tools
- Become root: Sudo -s
- Add the tools folder to the PATH: PATH=$PATH:< ... >/i2c-tools/tools
- Run i2cdump to find the correct BUSID (device at 0x50 and 0x51)
- Flash new EDID with write-edid.sh
- Note the input file is plain/text with hexvalues, spaces and newlines only
create custom edid
- use Phoenix EDID Designer to create custom EDIDs
Note
- the tool outputs .dat-files, that need to be editet by hand, it contains invalid symbols
- you can use the export function to generate .raw files and use hexdump to convert them to plain/text hex
hack the kernel module drm for custom edid
This is neccessary if you specify hsync < 1 or vsync < 1 in your edid
- install linux-source
- install linux-kernel-headers
- modify the Makefile
all: $(MAKE) -C $(KDIR) M=$(PWD) modules cp drm.ko /lib/modules/`uname -r`/kernel/drivers/gpu/drm cp drm_kms_helper.ko /lib/modules/`uname -r`/kernel/drivers/gpu/drm chmod 755 /lib/modules/`uname -r`/kernel/drivers/gpu/drm update-initramfs -u
- patch drm_edid.c , it doesn't accept vsync_width OR hsync_width to be 0
Results
Mesa 9.0
Label | EDID Value | Description |
---|---|---|
AMD RV710 | Vsync = 0 | no graphics |
AMD RV710 | Vsync = 1 | random graphics |
AMD RV710 | Htotal = Hactive | no graphics |
AMD RV710 | Hsync = 0 | normal graphics |
AMD RV710 | Vtotal = Vactive + 2 | random graphics |