mirror of https://github.com/pikvm/pikvm.git
				
				
				
			
		
			
				
	
	
		
			325 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			325 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| # EDID
 | |
| 
 | |
| !!! info
 | |
| 
 | |
|     This applies to [PiKVM V3](v3.md), [V4](v4.md) and DIY based on CSI bridge.
 | |
|     It is impossible to change the EDID for the HDMI-USB dongle.
 | |
| 
 | |
| 
 | |
| The EDID provides an information about the video modes supported by the video capture device.
 | |
| In the case of PiKVM, this is an HDMI CSI bridge.
 | |
| Usually, you don't need to change this, since the default configuration is quite flexible,
 | |
| but sometimes, for example for strange UEFIs/BIOSes, this may be necessary
 | |
| ([a story](https://github.com/pikvm/pikvm/issues/78)).
 | |
| 
 | |
| 
 | |
| -----
 | |
| ## Basics
 | |
| 
 | |
| The EDID is stored on the PiKVM in the file `/etc/kvmd/tc358743-edid.hex` in HEX format.
 | |
| When booting PiKVM OS, it is used by `kvmd-tc358743.service` and loaded into the video capture chip.
 | |
| 
 | |
| If you replace the EDID in this file, the EDID can be applied manually without rebooting
 | |
| using the command `kvmd-edidconf --apply`.
 | |
| 
 | |
| If you just want to change the monitor's identification, we don't recommend that you change the entire EDID.
 | |
| Just use `kvmd-edidconf` and its built-in EDID changing options.
 | |
| 
 | |
| !!! note
 | |
| 
 | |
|     Windows caches drivers and registry settings so changing the monitor name is not enough,
 | |
|     you will also need to change the product ID and/or the serial number along with the monitor name:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# kvmd-edidconf --set-monitor-name=TOSHIBA --set-mfc-id=TTP --set-product-id=34953 --set-serial=2290649089 --apply
 | |
|     ```
 | |
| 
 | |
| {!_edidconf_options.md!}
 | |
| 
 | |
| Typical examples of working with EDID and the full cycle of using custom EDID will be shown below.
 | |
| 
 | |
| 
 | |
| -----
 | |
| ## Adopt real display indentifiers on V4 Plus
 | |
| 
 | |
| PiKVM V4 Plus has a simple way read and adopt display identifiers like model and serial number
 | |
| from the physical monitor connected to `OUT2` port (it's also used for [HDMI passthrough](pass.md)).
 | |
| This way, the target host will recognize PiKVM as your display.
 | |
| 
 | |
| To adopt display identifiers, connect the display to `OUT2` port and run these commands:
 | |
| 
 | |
| ```console
 | |
| [root@pikvm ~]# rw
 | |
| [root@pikvm ~]# kvmd-edidconf --import-display-ids --apply
 | |
| [root@pikvm ~]# ro
 | |
| ```
 | |
| 
 | |
| Now the display can be unplugged. PiKVM will remember the new settings.
 | |
| 
 | |
| 
 | |
| -----
 | |
| ## Restore default EDID
 | |
| 
 | |
| If you need to restore the default EDID you can easily do this with `kvmd-edidconf`, for example:
 | |
| 
 | |
| ```console
 | |
| [root@pikvm ~]# rw
 | |
| [root@pikvm ~]# kvmd-edidconf --import-preset=v4plus --apply
 | |
| [root@pikvm ~]# ro
 | |
| ```
 | |
| Available options: `v0`, `v1`, `v2`, `v3`, `v4mini` and `v4plus`.
 | |
| 
 | |
| Also defaults edid can be found locally on your PiKVM: `/usr/share/kvmd/configs.default/kvmd/edid`,
 | |
| or in the [kvmd repo](https://github.com/pikvm/kvmd/blob/master/configs/kvmd/edid).
 | |
| 
 | |
| 
 | |
| -----
 | |
| ## Force 1080p by default on PiKVM V0-V3
 | |
| 
 | |
| PiKVM V3 (or DIY V0-V2) has a hardware limit of 50Hz for 1080p mode, and this is a less common frequency than 60Hz.
 | |
| Therefore, on V3, the default mode is 720p. Some OS (like Proxmox) may not work well with 720p,
 | |
| so you can force 1080p resolution by default:
 | |
| 
 | |
| ```console
 | |
| [root@pikvm ~]# rw
 | |
| [root@pikvm ~]# kvmd-edidconf --import-preset=v3.1080p-by-default --apply  # Or, for example, v1.1080p-by-default
 | |
| [root@pikvm ~]# ro
 | |
| ```
 | |
| 
 | |
| 
 | |
| -----
 | |
| ## Disable 1920x1200 on PiKVM V4
 | |
| 
 | |
| PiKVM V4 supports the advanced capture mode with 1920x1200. If it bothers you
 | |
| (for example, if you use a physical monitor 1920x1080 with [video passthrough](pass.md)),
 | |
| you can easily disable it and use only 1920x1080:
 | |
| 
 | |
| ```console
 | |
| [root@pikvm ~]# rw
 | |
| [root@pikvm ~]# kvmd-edidconf --import-preset=v4plus.no-1920x1200 --apply  # Or v4mini.no-1920x1200
 | |
| [root@pikvm ~]# ro
 | |
| ```
 | |
| 
 | |
| 
 | |
| -----
 | |
| ## Applying a custom EDID
 | |
| 
 | |
| PiKVM is able to emulate a physical display with a specific EDID.
 | |
| You can find EDID examples in the [community database](https://github.com/linuxhw/EDID)
 | |
| and then use it on PiKVM.
 | |
| 
 | |
| At the same time, you should pay attention to the hardware capabilities of PiKVM
 | |
| and the EDID capabilities that you use. For example, if EDID reports 8K support,
 | |
| then this obviously won't work: your host will try to send an 8K signal,
 | |
| while PiKVM can process no more than 1080p.
 | |
| 
 | |
| * PiKVM V1-V3: The maximum resolution is 1920x1080 at 50Hz.
 | |
| * PiKVM V4: The maximum is 1920x1200 at 60Hz.
 | |
| 
 | |
| In the case of the [PiKVM V4](v4.md), almost any EDID for 1080p monitors will work.
 | |
| All EDIDs that are suitable for [PiKVM V3](v3.md) will work too.
 | |
| 
 | |
| #### Example EDIDs for V4
 | |
| 
 | |
| ??? example "Acer B246WL, 1920x1200, with audio"
 | |
|     Taken [here](https://github.com/linuxhw/EDID/blob/master/Digital/Acer/ACR0565/CCF78B30FE61), as described above.
 | |
|     ```
 | |
|     00FFFFFFFFFFFF00047265058A3F6101
 | |
|     101E0104A53420783FC125A8554EA026
 | |
|     0D5054BFEF80714F8140818081C08100
 | |
|     8B009500B300283C80A070B023403020
 | |
|     360006442100001A000000FD00304C57
 | |
|     5716010A202020202020000000FC0042
 | |
|     323436574C0A202020202020000000FF
 | |
|     0054384E4545303033383532320A01F8
 | |
|     02031CF14F9002030405060701111213
 | |
|     1415161F2309070783010000011D8018
 | |
|     711C1620582C250006442100009E011D
 | |
|     007251D01E206E28550006442100001E
 | |
|     8C0AD08A20E02D10103E960006442100
 | |
|     0018C344806E70B028401720A8040644
 | |
|     2100001E000000000000000000000000
 | |
|     00000000000000000000000000000096
 | |
|     ```
 | |
| 
 | |
| ??? example "ASUS PA248QV, 1920x1200, with audio"
 | |
|     Taken [here](https://github.com/linuxhw/EDID/blob/master/Digital/ASUS/AUS2487/2B473481CAE6), as described above.
 | |
|     ```
 | |
|     00FFFFFFFFFFFF0006B3872401010101
 | |
|     021F010380342078EA6DB5A7564EA025
 | |
|     0D5054BF6F00714F8180814081C0A940
 | |
|     9500B300D1C0283C80A070B023403020
 | |
|     360006442100001A000000FD00314B1E
 | |
|     5F19000A202020202020000000FC0050
 | |
|     4132343851560A2020202020000000FF
 | |
|     004D314C4D51533035323135370A014D
 | |
|     02032AF14B900504030201111213141F
 | |
|     230907078301000065030C001000681A
 | |
|     00000101314BE6E2006A023A80187138
 | |
|     2D40582C450006442100001ECD5F80B0
 | |
|     72B0374088D0360006442100001C011D
 | |
|     007251D01E206E28550006442100001E
 | |
|     8C0AD08A20E02D10103E960006442100
 | |
|     001800000000000000000000000000DC
 | |
|     ```
 | |
| 
 | |
| ??? example "DELL D2721H to avoid black screen on some HDMI splitters, 1920x1080, no audio"
 | |
|     Taken [here](https://github.com/linuxhw/EDID/blob/master/Digital/Dell/DEL2013/EEE824E681BF), as described above.
 | |
|     ```
 | |
|     00FFFFFFFFFFFF0010AC132045393639
 | |
|     201E0103803C22782ACD25A3574B9F27
 | |
|     0D5054A54B00714F8180A9C0D1C00101
 | |
|     010101010101023A801871382D40582C
 | |
|     450056502100001E000000FF00335335
 | |
|     475132330A2020202020000000FC0044
 | |
|     454C4C204432373231480A20000000FD
 | |
|     00384C1E5311000A2020202020200181
 | |
|     02031AB14F9005040302071601061112
 | |
|     1513141F65030C001000023A80187138
 | |
|     2D40582C450056502100001E011D8018
 | |
|     711C1620582C250056502100009E011D
 | |
|     007251D01E206E28550056502100001E
 | |
|     8C0AD08A20E02D10103E960056502100
 | |
|     00180000000000000000000000000000
 | |
|     0000000000000000000000000000004F
 | |
|     ```
 | |
| 
 | |
| #### Example EDIDs for V1-V3
 | |
| 
 | |
| ??? example "1280x1024 as preferred. Useful for Gigabyte GA-H77-DS3H"
 | |
|     ```
 | |
|     00FFFFFFFFFFFF005262888800888888
 | |
|     1C150103800000780AEE91A3544C9926
 | |
|     0F505425400001000100010001000100
 | |
|     010001010101D51B0050500019400820
 | |
|     B80080001000001EEC2C80A070381A40
 | |
|     3020350040442100001E000000FC0050
 | |
|     492D4B564D20566964656F0A000000FD
 | |
|     00323D0F2E0F0000000000000000014D
 | |
|     02030400DE0D20A03058122030203400
 | |
|     F0B400000018E01500A0400016303020
 | |
|     3400000000000018B41400A050D01120
 | |
|     3020350080D810000018AB22A0A05084
 | |
|     1A3030203600B00E1100001800000000
 | |
|     00000000000000000000000000000000
 | |
|     00000000000000000000000000000000
 | |
|     00000000000000000000000000000045
 | |
|     ```
 | |
| 
 | |
| ??? example "1920x1080 as preferred. Useful for motherboards such as [ASRock H670 PG Riptide](https://github.com/pikvm/pikvm/issues/715), Gigabyte GA-H77-DS3H, MSI series such as B550M, B660M, Z690-A and X570. Also the Intel NUC."
 | |
|     ```
 | |
|     00FFFFFFFFFFFF005262888800888888
 | |
|     1C150103800000780AEE91A3544C9926
 | |
|     0F505425400001000100010001000100
 | |
|     010001010101D32C80A070381A403020
 | |
|     350040442100001E7E1D00A050001940
 | |
|     3020370080001000001E000000FC0050
 | |
|     492D4B564D20566964656F0A000000FD
 | |
|     00323D0F2E0F000000000000000001C4
 | |
|     02030400DE0D20A03058122030203400
 | |
|     F0B400000018E01500A0400016303020
 | |
|     3400000000000018B41400A050D01120
 | |
|     3020350080D810000018AB22A0A05084
 | |
|     1A3030203600B00E1100001800000000
 | |
|     00000000000000000000000000000000
 | |
|     00000000000000000000000000000000
 | |
|     00000000000000000000000000000045
 | |
|     ```
 | |
| 
 | |
| ??? example "1280x1024 as preferred, disabled 1080p at all. This may be necessary in extremely rare cases if the BIOS is completely buggy. In the future, we will provide a way to dynamically switch EDID"
 | |
|     ```
 | |
|     00FFFFFFFFFFFF005262888800888888
 | |
|     1C150103800000780AEE91A3544C9926
 | |
|     0F50542FCF0001000100010001000100
 | |
|     0100010101018C2300A050001E403020
 | |
|     370080001000001E000000FC0050492D
 | |
|     4B564D20566964656F0A000000FD0032
 | |
|     3D0F2E0F000000000000000000000010
 | |
|     0000000000000000000000000000016B
 | |
|     02030400DE0D20A03058122030203400
 | |
|     F0B400000018E01500A0400016303020
 | |
|     3400000000000018B41400A050D01120
 | |
|     3020350080D810000018AB22A0A05084
 | |
|     1A3030203600B00E1100001800000000
 | |
|     00000000000000000000000000000000
 | |
|     00000000000000000000000000000000
 | |
|     00000000000000000000000000000045
 | |
|     ```
 | |
| 
 | |
| #### Applying a choosen custom EDID
 | |
| 
 | |
| To apply the selected EDID, follow these steps:
 | |
| 
 | |
| 1. Switch filesystem to RW-mode:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# rw
 | |
|     ```
 | |
| 
 | |
| 2. Open the file `/etc/kvmd/tc358743-edid.hex` with any text editor, for example, with Nano:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# nano /etc/kvmd/tc358743-edid.hex
 | |
|     ```
 | |
| 
 | |
| 3. Replace the HEX data with the new, save and close the editor.
 | |
| 
 | |
| 4. Apply the EDID:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# kvmd-edidconf --apply
 | |
|     ```
 | |
| 
 | |
| 5. Sometimes it may be necessary to reboot the target host. Check the OS on the host, UEFI/BIOS.
 | |
|     If everything works, then your goal has been achieved and proceed to the last step.
 | |
|     If something went wrong, you can always undo these changes and [restore the default EDID](#restore-default-edid).
 | |
| 
 | |
| 6. Don't forget to switch filesystem to the RO-mode:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# ro
 | |
|     ```
 | |
| 
 | |
| 
 | |
| -----
 | |
| ## Editing EDID
 | |
| 
 | |
| To edit the EDID, it is best to use third-party utilities, such as the recommended advanced
 | |
| [AW EDID Editor](https://www.analogway.com/emea/products/software-tools/aw-edid-editor) for Windows (it's working great in wine)
 | |
| or [wxEDID](https://sourceforge.net/projects/wxedid). Both editors work with the binary EDID format, but you can easily import and export it
 | |
| to PiKVM using the `kvmd-edidconf` utility.
 | |
| 
 | |
| So, to tune EDID on PiKVM, use the following steps:
 | |
| 
 | |
| 1. Switch filesystem to RW-mode:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# rw
 | |
|     ```
 | |
| 
 | |
| 2. Export the system EDID to the binary file `myedid.bin`:
 | |
| 
 | |
|     ```console
 | |
|     # kvmd-edidconf --export-bin=/root/myedid.bin
 | |
|     ```
 | |
| 
 | |
| 3. Copy this file to your PC using SCP, Putty or something like that.
 | |
|     Open this binary file in the EDID editor and change the necessary parameters.
 | |
|     Save your changes and copy the binary file back to PiKVM.
 | |
| 
 | |
| 4. Convert the binary file to the HEX and test it:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# kvmd-edidconf --import=/root/myedid.bin --apply
 | |
|     ```
 | |
| 
 | |
| 5. Sometimes it may be necessary to reboot the target host. Check the OS on the host, UEFI/BIOS.
 | |
|     If everything works, then your goal has been achieved and proceed to the last step.
 | |
|     If something went wrong, you can always undo these changes and [restore the default EDID](#restore-default-edid).
 | |
| 
 | |
| 6. Don't forget to switch filesystem to the RO-mode:
 | |
| 
 | |
|     ```console
 | |
|     [root@pikvm ~]# ro
 | |
|     ```
 |