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









@Emmegi2001 Okay, nice! I wrote this gist more as an addition to all the information that's already out there, hence it's not that detailed.
You can use TFTP to extract files from the SFP. This requires running a TFTP server on your PC. For example, Tftpd64 is a good option for Windows.
Then, while logged into the SFP's console, create a flash dump and upload it to your PC:
Where 10.10.1.2 is the IP address of the PC running the TFTP server.
You can then send me the file (e. g. attach it to a comment). I'll add the header and include it in the gist. Thanks!