STM8S firmware template
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
King Kévin 888a5af823 NAK I²C write when EDID protected 6 months ago
.gitignore initial firmware template 3 years ago
LICENSE initial firmware template 3 years ago
Makefile make: verify programming 10 months ago doc: add EDID I²C programming 10 months ago
edid_cuvoodoo.bin add EDID EEPROM flashing 11 months ago
main.c NAK I²C write when EDID protected 6 months ago
main.h main: use header file 12 months ago
softi2c_master.c softi2c_master: improve pin configuration 11 months ago
softi2c_master.h softi2c_master: add software implementation I²C library 12 months ago
stm8s.h stm8s: fix data unlocking keys 12 months ago

firmware for HDMI firewall v2.



  • 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.


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.


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:


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.