Support MA5671A SFP GPON

Thank you for the reply.

Yes, I'm using a USB powered CP2102 adapter.

But I tried on the router too and I cannot reach


Yes, It seems this was exactly the problem.

For some reason SFP adapter has ip

Thank you very much :smiley:

Best Regards


I changed S/N, MACs and eeprom i2c variables to suit original equipment.

For some reason PLOAM state is always 1. Exceptionally I see 2 here but it last one or two seconds.

Receive state machine status and Receive superframe state machine status are syncing, but nothing else.

I tried rebooting with the fiber cable inserted but it has the same behaviour.


Hello morishe

A few questions
Is the printenv output given above complete? If not, what values have been deleted? In this form it appears as if the boot environment is default or without optical calibration.

Have you confirmed that the ont_serial and password changes have been saved?
Do all the variables look good?
root@SFP:/# fw_printenv ont_serial
root@SFP:/# uci show gpon.ploam.nPassword

root@SFP:/# onu gtcsng
root@SFP:/# onu gtcpg

Yes, the printenv output in pastebin above is complete.

The commands ont_serial and gpon.ploam.nPassword looks good.

ONU commands are the same but in dec form.

My ISP only checks s/n. How should I indicate that the password is blank?

The optical calibration is something exclusive from every SFP unit or it could have default values?


I haven't analyzed the optical calibration closely because there is not much documentation available for this chip. Anyway, I noticed that due to the lack of variable goi_config or default values, the laser will not turn on. See if you can extract mtd1 partition from the full image(post number 7) or from github. Save your old mtd1(uboot_env) just in case.

Then move the mtd1 image file from your PC to the SFP module's /tmp folder using the scp protocol. After image transfer:

root@SFP:/# cd /tmp/
root@SFP:/# cat /proc/mtd
root@SFP:/tmp# mtd -e uboot_env write mtd1 uboot_env

After restarting, verify that fw_printenv has changed and rewrite target, password, SN values again

root@SFP:/# fw_setenv target oem-generic
root@SFP:/# fw_setenv ont_serial ELTX11223344
root@SFP:/# uci set gpon.ploam.nPassword="0xde 0xad 0x31 0x32 0x33 0x34 0x35 0x36 0xbe 0xef"
root@SFP:/# uci commit
root@SFP:/# reboot

Thank you very much for the detailed instructions. I will try them now.

Keep you informed


I tried with bmx29 and minhng99 mtd1's but It doesn't solve the problem :frowning:

In gtop I see PLOAM state = 1.

One thing that surprises me: If I connect the fiber cable with the module started it doesn't change anything (same values gtop with cable disconnected). If I restart the module with the cable inserted I see sync in Receive state machine status and Receive superframe state machine status and Downstream FEC= YES. In both cases same Ploam state.

Any other ideas?

i have same problem firmware HL23446 is not work
change to other firmware now working


I think I wrote you on Mikrotik´s thread. I read you had the same problem.

I will try modified mtd2 image from @bmx29

Which firmware do you use?

Update: Indeed this was the problem. I used modded @bmx29 mtd2 and it detects light immediately. I didn't finish the config yet but it goes to Ploam State 3. Thank you @kapook007.

I will try to compare both images to shed some light.


I wonder if this problem is related to saved parameters from previous firmware.
Maybe this command will help clear the old data?
root@SFP:/# firstboot

To clarify me: Do you propose reflash with HL23446 mtd2 and execute this command?


Yes, that's what I propose. I will also try firmware HL23446 with mtd1 variables from your module.

I done it.

Restored HL23446 mtd2 and "original" mtd1.

root@SFP:~# firstboot
This will erase all settings and remove any installed packages. Are you sure? [N/y]
/dev/mtdblock4 is mounted as /overlay, only erasing files

Now, it seems mtd1 is empty. fw_printenv show no variables. I imagine I have to restore original mtd1 before rebooting.

mtd4 seems empty and mtd2 also changed (different md5sum)

webgui also broken.

pastebin showing differences between dmesg from HL23446 and Huawei's (bmx29 modded):

Is it safe to reboot? Or should I have to restore something else before?


Restarting the module is safe as long as you have a USB adapter at hand in case something goes wrong. Firmware HL23446 on my MA5671A module works without any problems. It connected right away.
Here is the mtd1 that I used

Yes, I have one.

Thank you for your mtd1. I will try it now.

mtd4 is critical here or not?

I would not worry about mtd4. It will be populated.

I used your mtd1 and still same behaviour.

I connected the cable and no reaction in gtop. Ploam state 1.

One thing I notice in otop -> status . If I'm not wrong (memory) Precalc & DCDCs voltages in Huawei (bmx29) firmware are around 35V and with HL23446 are around 44V. Both before connecting fiber cable.

Thank you for your valuable help

I used your mtd1 and still same problem
old mtd1 HL23446 mtd2 got ip
new mtd1 HL23446 mtd2 got ip

HL23446 mtd2 problem is
OLT signal very good -14dbm Ploam state 5
OLT signal narmal -24dbm Ploam state 1

please share working HL23446 mtd0 mtd1 mtd2 mtd5

Are you saying that if someone lives near OLT (strong signal -14dbm) then firmware HL23446 works on MA5671A just fine?
I saw several requests on the Mikrotik forum for full software for HL23446 or CPGOS03-0490. But no one shared them.
What's your signal level?
Perhaps part of the problem is the lack of optical calibration on your module. This may be important for distant locations. My module MA5671A came as calibrated.