Netgear X10 (R9000)

Well I installed most of the packages on your build but just can't seem to get the mbim protocol to show up when creating the interface for the modem. So far all these dependencies show up as installed: libc, librt, libpthread, libubox(latest version), kmod-usb-net, kmod-usb-net-cdc-mbim, wwan.

When I try to create the interface, modemmanger and qmi show up, but no mbim. Since my cellular modem device uses the mbim protocol, I can't proceed.

Any ideas?

i would try to find out what package is used by your other router and port it then as a new package.

Well I made a list of all the installed packages on the linksys router running the cellular
modem module, and I can see what packages are missing. I can find the ones I would try from
the package list on the openwrt site, but I cannot figure out how to obtain an ipk version
to install on the R9000. To new at this sort of thing...

Sorry, I meant to say I made a list of the installed packages on the linksys that I
need on the R9000, however, I do not know how to obtain them from the linksys to install
on the R9000.

@egorenar I checked the code, it seems that there is a typo in driver mdio-al-gpio in target/linux/alpine/files/drivers/net/mdio/mdio-al-gpio.c

#define MARVELL_CHIP_ID         0x1302

It should be QCA instead of MARVELL. Did you get the whole file from GPL without anything change?

what is the problem here ?
i used ddwrt and netgear code for my port.

Oh, no problem in use. Just one finding and want to know if we can correct in case someone to review or improve the code without confusion.

I removed trunk ports from the switch configuration.

Regarding tweaking the switch configuration - did you ever consider migrating over to a DSA configuration?

I toyed with the idea once and while looking into it more-or-less came to the conclusion that the trunking / link-aggregated connection between switches was the only thing that DSA couldnt do**. If thats gone now (and apparently wasnt so helpful in the first place) then DSA should work. It probably is better suited too for a cascaded switch setup like the R9000 has (being that DSA stands fior distributed switch architecture and all).

The QCA8337N switches in the R9000 are already supported by DSA. (note: DSA support for these may need to be explicitly compiled in...the configuration option for doing this lives somewhere in the make kernel_menuconfig menu).

Perhaps even more importantly (and the main reason I'm interested in moving to a DSA switch config) is that the QCA8337N DSA driver supports hardware flow offloading (whereas the swconfig based driver only supports software flow offloading).


**I built some firmware images with QCA3337N DSA support (as well as some other things like nftables HW offloading support) compiled in, but I never ended up actually attempting to switch to using DSA. This is mostly because my family's patience for having the internet not working has largely run out.

Also, thinking back, the only other possible issue I saw was:

inability to configure specific VLAN IDs / trunking VLANs between switches when using a cascaded setup

but I think that is referring to the link itself, not the ethernet ports on the slave switch. i.e., the trunk / connection between the switches itself cant be assigned specific VLAN IDs (and as such cant filter traffic between the switches based on VLAN ID), but the ports on the slave switch still can.

Hi, I'm a fairly new user of OpenWrt and just recently compiled egorenar's build for the R9000. I'm currently running SNAPSHOT, r19607-ee8546d86a. Over the past few days I've been trying to get the SFP port working with a Cisco GLC-T module with limited success. Basically I can see the link is up at 1Gb/full but no matter what I do, on both the router side and client side, cannot receive a single packet. Transmits show on both sides but using tcpdump on both yields no received packets whatsoever.

I've tried adding eth0 to br-lan as well as adding it as an independent interface (with a new static address & dhcp server), tried forcing the link speed to 1Gb/full, auto neg off and toggling mdix on/off. Tried using an 8-port 1Gb switch in between as well, but to no avail. The only thing that seems to work is the fact that it does indeed show a 1Gb/full link at both ends and does drop when the cable is unplugged. Here's what ethtool is reporting:

root@icen:~# ethtool eth0
Settings for eth0:
        Supported ports: [ ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: umb
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: no
root@icen:~#

Not sure if I'm fighting with something that just isn't supported here - I did see others further back in this topic saying they were able to make use of the SFP so I thought I'd give it a try.

Any help/thoughts would be greatly appreciated!

Erik

I havent ever tried using the SFP port on my R9000, but the first thing that comes to mind is to ensure the kernel module is loaded. Run (as root):

depmod -a
modprobe kmod-sfp

if you get a "module cant be found" message you may need to recompile and select this kmod in the make menuconfig configuration menu.

You're right, thanks! I didn't even think to look there for a kernel module. I've added it to my config but unfortunately I'm getting a few compile errors :frowning: I don't think it's related to this new module though, as I tried without and still got the same error. I even re-cloned the entire thing to make sure nothing was out of sync. It looks like it's related to elfutils:

if [ -f /home/icen/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/packages/elfutils.list ]; then /home/icen/openwrt/scripts/clean-package.sh "/home/icen/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/packages/elfutils.list" "/home/icen/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi"; fi
if [ -d /home/icen/openwrt/tmp/stage-elfutils ]; then (cd /home/icen/openwrt/tmp/stage-elfutils; find ./ > /home/icen/openwrt/tmp/stage-elfutils.files); 	SHELL= flock /home/icen/openwrt/tmp/.staging-dir.flock -c ' mv /home/icen/openwrt/tmp/stage-elfutils.files /home/icen/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/packages/elfutils.list && cp -fpR /home/icen/openwrt/tmp/stage-elfutils/* /home/icen/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/; '; fi
rm -rf /home/icen/openwrt/tmp/stage-elfutils
touch /home/icen/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.elfutils_installed
make[3]: Leaving directory '/home/icen/openwrt/package/libs/elfutils'
time: package/libs/elfutils/compile#63.96#9.93#81.07
make[2]: Leaving directory '/home/icen/openwrt'
make[1]: *** [package/Makefile:110: /home/icen/openwrt/staging_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/stamp/.package_compile] Error 2
make[1]: Leaving directory '/home/icen/openwrt'
make: *** [/home/icen/openwrt/include/toplevel.mk:230: world] Error 2

I'm new to this so I'm not even sure where to begin.

Thanks again,

Erik

EDIT:

Nevermind, just realized I didn't have all the appropriate/recommended Ubuntu packages installed for the compile, worked without error now.

EDIT 2:

Still having the same issue with the SFP, but I did find a posting on another forum stating the Cisco GLC-T 30-1410-02 SFP isn't compatible with the R9000 (perhaps only with stock f/w). I'm going to try getting my hands on a different SFP which has been tested, ie. a 10Gtek ASF-10G-T.

Hi @egorenar, Great job! I've succeed setup R9000 as main router using your firmware. I'm now trying to connect R9000 to my crs305 switch using sfp port, i.e. setup PPPOE with sfp instead of wan on port3. With Netgear's original firmware, I can choose to use wan or sfp-wan to setup PPPOE connection. so that we could setup a 10Gbps channel with local network provider.

I've compiled both kmod-sfp and kmod-al-eth, dmesg shows eth0 indeed recognize my sfp module on sfp plugging in. Though I have to set speed to 1000 using ethtool. The only problem is I didn't find any eth0 config in board.json. I added a port7 and eth0, regenerate /etc/config/network, and it shows up in switch0, unfortunately it says no link on that port.

I'm wondering how to find out the port number of sfp, is it possible to dump squashfs out from original firmware, and dig it out?

it seems al_eth doesn't support my sfp module yet.
I got al_eth_link_status_task failed to establish link in dmesg
will try to use kgdb to debug alpine's eth driver. will report here if I have more progress.

Just received a 10Gtek ASF-10G-T SFP module and tried it out in the R9000 - works perfectly. I currently have no other 10Gb/s devices to test speeds with, but at 1Gb/s it's working without issue. My end goal is that once the fibre that's been run to the side of my house is fully operational, I'll use the GPON ONU SFP directly in the R9000. Worst case if that doesn't work, use a media converter first then into this 10Gtek SFP since the provider can offer up to 3Gb/s speeds.

1 Like

unfortunately, i have no use for SFP at the moment, that's why i never really tested it or tried to fix it in case it is broken. no idea whether it works at all.

Thanks a lot for your amazing job on this. I think it's enough for me to debug al_eth's driver. My serial cable is just arrived, trying to get kgdb working now.

My plan is firstly use raw socket to communicate with my sfp module, then tcp socket. Will report more if I got any progress.

I am not sure I am doing this quite right.
I go to link : https://github.com/egorenar/openwrt/tree/netgear-r9000
I download the files in a zip format and extract them on my machine.
I follow the directions and setup my build environment. then run the /feeds update/install commands.

When I do the make menuconfig I just save it as it is or are there settings I need to change? The .config part is where I get unsure. Should I be pulling the .config file from another place?

The default .config with no changes seems to compile OK but I don't know for sure if I have everything I need or it is compiled for the correct hardware.

Any guidance anyone can give would be a great help.

I think you have to set target to Annapurna Labs Alpine in make menuconfig, and no other change is required.

1 Like

Seems that I don't have that option. I will have to revisit my build setup as maybe I missed something. The only A targets I have are:
Allwinner, AppliedMicro, Atheros AR...., Atheros ATH79 (defaults to this) I can't find any Alpine in the list and there are no AL314 that I can find in the rest of the list.

https://github.com/egorenar/openwrt/archive/refs/heads/netgear-r9000.zip
Are you sure you downloaded this?
I just checked out Annapurna Labs Alpine for target.

1 Like