-
Notifications
You must be signed in to change notification settings - Fork 15
Amlogic HDMI Boot Dongle
Schematics of the modified HDMI Display Emulator dongle : hdmi-amlogic-boot-dongle.pdf
The original emulator I bought at : https://www.aliexpress.com/item/4000494867545.html I only changed the A1 pin from GND to VCC.
The idea is to heat up the A1 pin (pin 2 of the AT24 EEPROM) and lift it to disconnect it from the PCB (using a fine needle as a lever might help here), then solder a wire to the the VCC pin (pin 8 of the AT24 EEPROM).
Note: some emulators uses EEPROMs with not changeable I2C address (A0 to A2 pins aren't used), the you may need to buy some fresh EEPROMs like the ones from Microchip directly and solder a new one, while making sure A1 is connected to VCC while A0 & A2 to GND to have the 0x52 I2C address: https://www.microchip.com/wwwproducts/en/AT24CS02
If you fail or don't have the skills, please drop a mail to superna9999[at]gmail.com
I also sells some ready dongles on: https://www.tindie.com/products/superna9999/meson-hdmi-recovery-boot-plug/
The amlogic BootROM reads 8bytes at the EEPROM address 0x52, offset 0xf8 (248). If the 8bytes content is boot@USB
it will force USB boot mode. You should be able force SDCard with boot@SDC
and eventually boot@SPI
for SPI.
To test, you can connect the HDMI dongle to your laptop (it may not work behing HDMI to DP adapters or HDMI to Type-C adapters) or directly on an Amlogic board, and use i2cdetect
over all your i2c busses like :
sudo i2cdetect -y -r 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- 52 -- -- -- -- -- -- -- 5a -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
If 0x50 appears, the address change didn't work, if 0x52 appears, it's a win !
To flash the EEPROM (the linux kernel needs to have the CONFIG_EEPROM_AT24 enabled for the eeprom node to be available below), simply connect the dongle to the HDMI port while linux is running, and add a new i2c device on the hdmi i2c port:
cd /sys/bus/i2c/devices/i2c-0
echo 24c02 0x52 > new_device
cd *-0052
echo -n "boot@USB" | dd of=eeprom bs=1 seek=248 count=8
dd if=eeprom bs=1 skip=248 | hexdump
in my tests, the last byte was not flashed correctly... so I did:
echo -n "B" | dd of=eeprom bs=1 seek=255 count=1