The firmware of this GPON ONT SFP module can be updated using the web interface (Management | Update Software):
The web interface only accepts image files with a special header. These can be created by adding the header to a flash dump.
Change extension to .zip and extract.
.img unmodified mtd2 / mtd3 flash dump
.upf with header (can be installed using the web interface)
V1.00 is based on OpenWrt 12.09. Deutsche Telekom (Germany) seems to stick with this branch.
V1.00(ABVJ.0)b3s (2020-12-23)
V1.00(ABVJ.0)b3v (2021-05-08)
V1.00(ABVJ.1)b1e (2023-07-26)
V2.50 is based on OpenWrt 14.07. Wind Tre (Italy) upgraded to this branch at the end of 2022.
V2.50(ABVJ.1)b1d (2023-04-21)
V2.50(ABVJ.1)b1f (2023-07-14)
Both branches are maintained separately, so a 1.00 image can have a later build date than a 2.50 image.
Create flash dump of mtd2 or mtd3 (Image A / Image B):
dd if=/dev/mtd2 of=/tmp/mtd2
Download flash dump from SFP (e. g. using TFTP).
Download header file (rename to 'header') and add it to flash dump:
cat header mtd2 > firmware.upf
Copy software version string from flash dump to header:
dd if=firmware.upf of=firmware.upf bs=1 skip=632 seek=124 count=32 conv=notrunc
Get CRC32 of firmware.upf:
v=$(cat firmware.upf | gzip | tail -c 8 | head -c 4 | hexdump -e '1/4 "%08x"')
Convert CRC32 to binary and write it to header:
echo -e -n "\x${v:0:2}\x${v:2:2}\x${v:4:2}\x${v:6:2}" | dd of=firmware.upf bs=1 seek=104 conv=notrunc









Unfortunately, my PMG3000-D20B isn't accessible via web UI. I tried that procedure, but obviously it doesn't work for me. If you have any information on how to perform a "PCB hard reset", please let me know. Thanks for your advice.