The ‘28 is close to the EN751627 but it’s little-endian so it’s also a little bit like the EN7580, currently we don’t have any plans for that processor. Support status is here: https://econet-linux.pkt.wiki/
Basically at this point it’s EN7512, EN7513, EN7521 or EN7526.
If you happen to find an EN7512 or EN7521 though, please let me know because these seem to be very rare.
Patch to fix Byte Order Bug in mt76 wifi drivers awaiting review - Without this, PCI support is not that useful because wifi doesn’t work on these chips.
Regarding the EN7516 I have some good news and some bad news.
The bad news is the EX3301-T0 is shot. I learned a few things:
We CAN build software that will install on that device via the factory web interface, this was my first try to get into it (but my tricky update backfired and it refused to boot)
Trying to read out a flash chip with an SPI probe is the depths of hell. It can’t be done with the modem off because you can’t get power to the chip - the modem sucks it up. With the modem on, the modem interferes even if you’re not using the chip. You have to unsolder it.
But I did unsolder it, and I did get the bootloader off of it - but after soldering it back, the device won’t power on.
Anyway, the good news, I pulled out the ATSE / ATEN algo and implemented my own scrambler: https://github.com/cjdelisle/ATENv3 and it seems to work (its output matches ATEN numbers I see online).
So whenever I next get my hands on an EX3301-T0 or DX3301-T0, we can pretty much consider it unlocked and ready to install on.
Some manufacturers add ECC, while others do not. There is no standard. If you read without OOB and then wrote undefined values. It may not start. The chip may also have been soldered incorrectly.
For in-circuit reading, one of the power pins is disconnected from the board. You can also use a reduced voltage (2.7v). The SPI is already working, but the processor is not yet.
This uses on-die ECC. I didn’t read the OOB, but I know the reads were good because reading the kernel, the checksum matched. I wrote the bootloader (all of eraseblock 0) and read it back and it matched, the solder looks good and it has voltage where it’s supposed to. My thinking is that I must have either changed a persistent register that makes the chip not read the way the CPU wants to read it - or else I just overheated something when heatgunning the chip on and off…
Okay I just went to put together what I had and I realized there’s a really important point that I completely forgot to mention - the bootloader I wrote was patched…
Here’s the code, the bootloader I wrote is bootloader_patched.bin, and because the patch is in stage 2, I would expect if there was a problem in the patch, it would at least print the memory info before failing - absolutely nothing on the console tells me it’s something more serious than that.
I have two devices at my disposal, with en7512 and en7528 chipsets. Of course, your bootloaders didn't work on them. Of the first three bootloaders from this site, only en7512 bootloader worked. En7528 bootloader from there didn't work on en7528 device.
I do have a ‘28 but I don’t want to start messing with it now. Especially since it looks like tinkering with the flash on the ‘16 bricked it. That said, I think I’ll buy a flash holder so I can reprogram the ‘16 again and see if I’m able to revive it.
The interrupt controller is different (but we knew that)
The ethernet area is almost identical - which is fantastic news.
USB and PCIe seem to be identical so they’re likely to Just Work
The SPI flash controller is different (we already knew this) but the same driver is likely to Just Work.
So it’s most likely that the “boots to a console” support which we eventually get for the EN7516 will also include PCIe and USB. It’s also quite a good chance that the same kernel will work on EN7516 with just a different DTS, so for expediency of OpenWrt builds, we may look at building one kernel for EN751221 + EN7516, of course when we get to EN7528 we need a new build because it is little endian, but that’s way far in the future.
That’s a really neat device and thank you for the offer, but I’m afraid it would be wasted on me because my only plans for the EN751627 is to get to basic boots-to-a-console support. What is definitely interesting to me is EN7512 or EN7521, but those seem to be very rare chipsets.
Hey everyone, I've been following this thread for a while! Great work!
I have a Nokia G-2425G-A ONT. It is based on the EN7528 chipset. I have root ssh access to the same.
I'm not entirely sure how I could help out. But if any of you need the firmware dump or anything else, I would love to contribute. Attaching my cpuinfo below.
Another important detail I should mention is that using uci which was preinstalled, I was able to verify that the ONT firmware is based on OpenWrt
Regards
[root@AONT: ONTUSER]# cat /proc/cpuinfo
system type : EcoNet EN7528 SOC
machine : econet,en751221
processor : 0
cpu model : MIPS 1004Kc V2.15
BogoMIPS : 591.87
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
VPE : 0
processor : 1
cpu model : MIPS 1004Kc V2.15
BogoMIPS : 623.41
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
VPE : 1
processor : 2
cpu model : MIPS 1004Kc V2.15
BogoMIPS : 589.82
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt
shadow register sets : 1
kscratch registers : 0
package : 0
core : 1
VCED exceptions : not available
VCEI exceptions : not available
VPE : 0
processor : 3
cpu model : MIPS 1004Kc V2.15
BogoMIPS : 640.61
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp mt
shadow register sets : 1
kscratch registers : 0
package : 0
core : 1
VCED exceptions : not available
VCEI exceptions : not available
VPE : 1
Initial EN7528 subtarget support is now in PR https://github.com/openwrt/openwrt/pull/21326 with support of DASAN H660GM-A . Currently only minimal boot to console support. USB support coming soon. If you have an EN7528-based device, please test and review. Contributions for additional devices are welcome!