XPON #5
Notifications
Due Date
No due date set.
Depends on
#2 Ethernet
airoha_en7523/kernel
#14 EN7571 laser driver
airoha_en7523/kernel
Reference: airoha_en7523/kernel#5
Reference in New Issue
Block a user
4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/mach-econet/ecnt_xpon.c4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/mach-econet/ecnt_pon_phy.cen7512 based code or compatible
aea3a43562/tclinux_phoenix/modules/private/xpon_phyaea3a43562/tclinux_phoenix/modules/private/xponNotes
It appears that configuration communication is via
I2C, as well as withMMIOtogether with serders to the newairoha_ethdrive4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/boot/dts/en7523.dts (L406-L413)4d76b59039/sdk/en7529/linux-4.4.115/arch/arm/boot/dts/en7523.dts (L391-L397)Yeah, that is pretty much correct. One thing missing is a huge user space part called OMCI. It is for management and for xPON data path setup.
I'm going to gather the XPON code into a repository here within this project, many things are similar, and it seems we have an OMCI daemon within the private code
OMCI:
XPON Supportto XPONGPON and EPON will have to be built from scratch; some things will have to be done entirely from scratch, in addition to modernizing a good part of what's already there. Furthermore, we'll have to implement the GPON base in the kernel. I haven't found much related information, and from what I've seen, a lot of GPON-related code will have to be written. EPON might be simpler to implement. I don't understand much about networking, but that will come too late. Some ideas I'm having are using NetLink Generic to configure OAM, OMCI/PLOAM, and a generic abstraction for PON devices. I wish I could do this now, but it seems like it will be more work than anything else
Hi,
I found this issue because I'm starting to investigate the possibility to port the TP-Link XX530v v1 to OpenWrt and found some information that may be useful to you in this case.
For some reason TP-Link released some of the preprocessed files of the EN7571 xpon driver:
0932f2c9b3/sdk/en7529/linux-4.4.115/en7571.i0932f2c9b3/sdk/en7529/linux-4.4.115/mt7570.iIt appears that in some cases the en7571 file uses the mt7570 API (function
get_flash_matrix, for example) and in other cases a function was duplicated and is identical, like the functionsmt7570_LOS_initanden7571_LOS_init.Feel free to ignore this message if it does not make sense because despite having some years of experience on C and C++ I'm only now learning about kernel development.
Thanks.
@raphaelgz Hello, welcome!
The xx530v v1 is very similar to the xx230v v1, so porting it shouldn't be much of a problem. It seems to only change the wireless chips. I was going to buy one to add to OpenWRT. It's also my first time with the Linux kernel, but it's not far from any C program. For now, we have little support for the en7529, and merbanan managed to get the Ethernet working now, but we still have some problems. Feel free to contribute to this internal project, and update your profile based on your GitHub if you have one. If you have any changes you want to upload, just ask me for permission.
Merbanan sent some changes yesterday and I merged them today. Now I'll be working with the server for the EN7529. I'm currently comparing some things from the EN7581 to see how it was ported to the mainline. A lot of things from the EN7581 are compatible with the EN7529. Any testing of new features can be useful if you first test with the EN7581 drivers before creating one for the EN7523
In terms of code, as you said, they are identical, but with adaptations for the EN7571 for calibration and other things. I'm still thinking about many things for the PON on Linux; much of it will be based on these drivers:
aea3a43562/tclinux_phoenix/modules/privatedrive diff
i found this https://sirherobrine23.com.br/airoha_en7523/docs/src/branch/main/en7523/ilide.info-xg-s-pon-driver-programming-guide-en-pr_5a9b872d2910abc7ac9da69ab376a1e8.pdf
i found code for en7571 and mt7570 pon in archer vr600 v3 gpl code
cb0b6f99a4/mtk/modules/private/xpon_phycb0b6f99a4/mtk/modules/private/xponGood that we have sources for both chips.
cjdelisle can take some things from this repository for the en7580 and some other mips chips
cjs ?
Sorry, I'm writing from my phone
I will have to make minor changes between them, but it doesn't seem like much, but the integration with
ecnt_pon_phy.candecnt_xpon.cToday I understand what you meant, but I still have doubts about how to integrate this into the kernel. I'll delve deeper into the closed-source driver to think about how to integrate it all
62085877ae/Documentation/devicetree/bindings/net/sff%2Csfp.yaml (L93-L143)62085877ae/drivers/net/phy/sfp.c (L345-L345)Sirherobrine23 referenced this issue2026-01-24 11:08:02 +00:00
Standard sfp modules answer on 0x50 (static rom part) and on 0x51 (dynamic debug interface). So my idea is that we emulate a complete i2c bus. On this bus on address 0x50 we attach a simple eeprom and fill it with static data. This code already exists you just have to enable to correct modules write the dts and create the rom data.
For the dynamic part we need a driver that attaches to 0x51 on this emulated bus and dynamically reroutes requests to the laser driver on the real i2c bus.
I think the first thing to do here is to write the dts so every part of the abstraction is understood. There are some details not fully understood also and that is the pon mac to laser driver configuration. I think it is a one off setting and then that config can be placed in the laser driver dts node.
When possible, I will purchase this mini OLT to create a test environment for the EN7571, this OLT is only GPON, I will not be able to test EPON
Ok. This model claim HGU support which is interesting. Anyway make sure you get access to the management software. I know how to get omci debug data also but we need a working hardware setup.
I have the same module but I could not get any device to link up then. I have access to more hardware now so that might change.
Alot of things needs to work before we can implement our own things. So one working reference is needed before we start spending time.
Today I was messing around with the web driver, but I've given up on messing with it for now. Starting today, I'll begin working with the xPON driver
From what I'm seeing, it has a management interface. The price will drop in a few days, and i intend to buy it as soon as possible. Importing anything from Brazil is very expensive, and it's difficult to find something similar or low-cost for testing here.
One question, what's your time zone? I don't want to bother you outside of your time
Gmt+1 but dont let that limit you. I was able to get access to the management software. I tried to linkup but was not able to get it to work.
EN7571 didn't identify the link, but is it in stock?
I don't think much, but did you configure anything on the OLT to make it work?
The driver in this repository isn't even functional yet.
2+ hours diferrence
I tried all the pon units I have access to but none was able to pass traffic. I need to retest and see if I can get it working. But there arent much you are supposed to do on the OLT side.
Do you remember which version you got?
I have the 1.25G (16 users) version. That is the standard 1G sfp slot speed.
That's strange, I'll buy one too, so I can test it. It will take up a good part of my salary, because I'll have to buy an SFP -> Ethernet module, a 20 cm cord, and an attenuator so as not to burn the BOSA with the high power emitted by the OLT at short distances
I will receive my salary tomorrow. With what's left over, I'll see if I can get some of the things I need to start testing pon module
I just bought this module with 32 clients + 1G SFP, I will wait for customs to clear it as soon as it arrives to buy the rest of the items. I hope to receive them by next week
This model is a clone, which is probably a clone of another SFP OLT
I hadn't noticed that when I was analyzing the xx230v files I had separated, but should it be something to put in pinctrl?
900ce0df3e/econet_private/xpon_phy/src/i2c.c (L231)522a0ca806/econet_public/arch/arm/boot/dts/en7523.dtsi (L345-L350)