STM8S firmware template
Go to file
King Kévin 888a5af823 NAK I²C write when EDID protected 2022-12-07 11:18:40 +01:00
.gitignore initial firmware template 2020-09-30 16:59:31 +02:00
LICENSE initial firmware template 2020-09-30 16:59:31 +02:00
Makefile make: verify programming 2022-08-06 10:27:30 +02:00
README.md doc: add EDID I²C programming 2022-08-19 16:10:52 +02:00
edid_cuvoodoo.bin add EDID EEPROM flashing 2022-07-11 10:40:01 +02:00
main.c NAK I²C write when EDID protected 2022-12-07 11:18:40 +01:00
main.h main: use header file 2022-06-22 11:03:22 +02:00
softi2c_master.c softi2c_master: improve pin configuration 2022-07-11 18:47:36 +02:00
softi2c_master.h softi2c_master: add software implementation I²C library 2022-06-22 11:07:39 +02:00
stm8s.h stm8s: fix data unlocking keys 2022-06-22 11:03:22 +02:00

README.md

firmware for HDMI firewall v2.

usage

functions:

  • upon request by the device/source over the HDMI DDC interface, the HDMI firewall returns the EDID stored in its EEPROM
  • if the EDID/7 switch is on the ALLOW/ON position, when powered (e.g. device plugs in), it will retrieve the monitors EDID and store it in EEPROM (ERROR LED will blink once)
  • once the EDID copied, it will try to re-connect to device by pulsing the Hot Plug Detect (HPD)
  • stored EDID adds a '|' at the end of the name to indicate firewall is used
  • if DDC is forwarded (e.g. SCL and SDA switches are on the ALLOW position), the HDMI firewall does no interfere with the signals, does not return the stored EDID, and does not firewall the communication

if the ERROR LED is on, the possible cause is one of the following:

  • no EDID might is present in the EEPROM
  • tried reading the EDID from the monitor, but it is not connected
  • communication with monitor failed, due to damaged cable
  • monitor EDID is invalid
  • storing EDID in EEPROM failed

the firewall only acts as an I²C EEPROM at address 0x50 toward the HDMI device to provide the EDID information. if the EDID switch is on the BLOCK position, the EEPROM is read only. if the EDID switch is on the ALLOW position, writing the EEPROM is possible over the HDMI connection using standard I²C write operations.

limitations

stored EDID has only up 1 EDID extension. some monitors might use more to offer additional features, but I haven't encountered this case yet.

flashing

the firmware is for an STM8S103. the debug port on the HDMI firewall allows to flash and debug the firmware.

to compile the firmware using SDCC:

make

to flash the firmware with stm8flash using an ST-LINK/V2 (clone):

make flash

to store the generic HD EDID profile in EEPROM:

make eeprom

this uses the edid_cuvoodoo.bin binary EDID, which you can replace with your own.

to enable printf debugging, set DEBUG to 1 in main.c. the serial configuration in 115200 8N1.