Netgear X10 (R9000)

the .config file for the r9000 Linux-v6.1.44_2023-08-16 firmware images

i didn't manage to add eth0 SFP to the lan bridge wih "/R9000/target/linux/alpine/base-files/etc/board.d/02_network"; Fortunately, it also works with uci-defaults/99-custom. :wink:

# >>> add the 10G SFP Port (eth0) to the LAN; enable the LED of the 10G SFP Port <<<
echo "uci set network.@device[0].ports='eth0'; uci add_list network.@device[0].ports='eth1.1'; uci commit network" > target/linux/alpine/base-files/etc/uci-defaults/99-custom
echo "uci -q delete system.@led[0]; uci add system led; uci set system.@led[0].name='SFP'; uci set system.@led[0].sysfs='white:sfp'; uci set system.@led[0].trigger='netdev'; uci set system.@led[0].dev='eth0'; uci set system.@led[0].mode='link'; uci add_list system.@led[0].mode='tx'; uci add_list system.@led[0].mode='rx'; uci commit system;" >> target/linux/alpine/base-files/etc/uci-defaults/99-custom

... to build the firmware I use Ubuntu 22.04 (on Oracle Virtual Box 7.0.10); it's fast and easy to setup

can you recommend an optical sfp+ single core not multi core as the one you mentioned, so i can connect my isp fiber cable directly to r9000 and bypass their supplied ont

Hi, you can try the Generic 1G BiDi SFP from of FS:

1G BiDi SFP

you have to chose the correct wavelength combinarion for TX and RX (ask the provider)

examples:
1000BASE-BX BiDi SFP 1550nm-TX/1310nm-RX
1000BASE-BX BiDi SFP 1310nm-TX/1490nm-RX
1000BASE-BX BiDi SFP 1490nm-TX/1310nm-RX

1 Like

Updated firmware: Linux 6.1.46

  • 10G SFP Port enabled on the LAN
  • 10G SFP LED enabled
  • CPU Load
  • CPU Temperatures
  • HTTPS (LUCI-SSL)

openwrt-alpine-generic-netgear_r9000-squashfs-factory_(Linux-v6.1.46_2023-08-23).img
MD5: 23a172bb98cdce8a9f7df90102ba2ff5

openwrt-alpine-generic-netgear_r9000-squashfs-sysupgrade_(Linux-v6.1.46_2023-08-23).bin
MD5: 1be1efc2c6230aecd8a735cacee54fef

.config_(r9000_Linux-v6.1.46_2023-08-23).zip

build-command for R9000

# >>>>>>>>>>>>>
# (1) Prepare
# >>>>>>>>>>>>>

git clone https://github.com/egorenar/openwrt.git R9000
cd R9000
git switch netgear-r9000

echo "src-git alpinefancontrol https://github.com/hurrian/openwrt-alpine-fan-control.git" >> feeds.conf.default
git clone --depth 1 --branch master --single-branch --no-tags --recurse-submodules https://github.com/fantastic-packages/packages package/fantastic-packages

# >>> add the 10G SFP Port (eth0) to the LAN; enable the LED of the 10G SFP Port <<<
echo "uci set network.@device[0].ports='eth0'; uci add_list network.@device[0].ports='eth1.1'; uci commit network" > target/linux/alpine/base-files/etc/uci-defaults/99-custom
echo "uci -q delete system.@led[0]; uci add system led; uci set system.@led[0].name='SFP'; uci set system.@led[0].sysfs='white:sfp'; uci set system.@led[0].trigger='netdev'; uci set system.@led[0].dev='eth0'; uci set system.@led[0].mode='link'; uci add_list system.@led[0].mode='tx'; uci add_list system.@led[0].mode='rx'; uci commit system;" >> target/linux/alpine/base-files/etc/uci-defaults/99-custom

./scripts/feeds update -a
./scripts/feeds install -a

echo "CONFIG_TARGET_alpine=y" >> .config
echo "CONFIG_TARGET_BOARD=alpine" >> .config

make menuconfig


# >>>>>>>>>>>>>>>>>>>>>>>>
# (2) Select in menuconfig
# >>>>>>>>>>>>>>>>>>>>>>>>

Utilities -> Shells -> bash
Utilities -> alpine-fan-control
LUCI -> Collections -> luci
LUCI -> Collections -> luci-ssl
LUCI -> 3. Applications -> luci-app-alpine-fan-control
LUCI -> 3. Applications -> luci-app-cpu-status-mini
LUCI -> 3. Applications -> luci-app-temp-status
Kernel modules -> Network Devices -> kmod-be2net
Kernel modules -> Network Devices -> kmod-macvlan
Kernel modules -> Network Devices -> kmod-sfp
Kernel modules -> Network Support -> kmod-nat46
Kernel modules -> Network Support -> kmod-tun
Kernel modules -> Netfilter Extensions -> kmod-ipt-ipset
Kernel modules -> Netfilter Extensions -> kmod-ipt-nat
Network ->Firewall->iptables-mod-conntrack-extra
Network ->Firewall->iptables-mod-ipopt

#otional
#LUCI -> 2. Modules -> luci-mod-dashboard
#LUCI -> 3. Applications -> luci-app-argon-config
#LUCI -> 3. Applications -> luci-app-mwan3
#LuCI -> VPN -> OpenVPN
#LUCI -> Themes
#Network -> VPN -> openvpn-openssl
#Network -> Routing And Redirection -> mwan3
#Network -> Routing And Redirection -> vpn-policy-routing
#Kernel modules -> USB Support -> kmod-usb-net-aqc111
#Kernel modules -> USB Support -> kmod-usb-net-rtl8152


# >>>>>>>>>>>>>>>>>>>>>
# (3) Start compiling
# >>>>>>>>>>>>>>>>>>>>>

make V=sc -j$(($(nproc)+1))

ls -arl bin/targets/alpine/generic/

.

In the last build the HTTPS support (LUCI-SSL) was missing. This build fix this security issue.
If the router is used in public, it should only be configured with SSH or web HTTPS.

1 Like

A few questions:

Is there a reliable download location for this firmware? The latest posted one continues to fail on download.

Can the SPF port be configured as WAN?

Updated firmware: Linux 6.1.46

  • 10G SFP Port enabled on the LAN, 10G SFP LED
  • CPU Load, CPU Temperatures, FAN Control
  • HTTPS (LUCI-SSL), OpenVPN
  • Ports Status, Advanced log
  • Speedtest (iperf3 Server, Ookla SpeedTest, librespeed)
  • Multi WAN Manager

openwrt-alpine-generic-netgear_r9000-squashfs-factory-(Linux-v6.1.46_25.08.2023).img.zip
MD5: b0c98b5bfd36585d6328df3e6dbfde95

openwrt-alpine-generic-netgear_r9000-squashfs-sysupgrade-(Linux-v6.1.46_25.08.2023).bin.zip
MD5: 4753e5fea58a3cf8d3d42d4da392950c

.config_r9000-(Linux-v6.1.46_25.08.2023).zip

.

build-command for R9000

# >>>>>>>>>>>>>
# (1) Prepare
# >>>>>>>>>>>>>

git clone https://github.com/egorenar/openwrt.git R9000
cd R9000
git switch netgear-r9000

echo "src-git alpinefancontrol https://github.com/hurrian/openwrt-alpine-fan-control.git" >> feeds.conf.default
git clone --depth 1 --branch master --single-branch --no-tags --recurse-submodules https://github.com/fantastic-packages/packages package/fantastic-packages

# >>> add the 10G SFP Port (eth0) to the LAN; enable the LED of the 10G SFP Port <<<
echo "uci set network.@device[0].ports='eth0'; uci add_list network.@device[0].ports='eth1.1'; uci commit network" > target/linux/alpine/base-files/etc/uci-defaults/99-custom
echo "uci -q delete system.@led[0]; uci add system led; uci set system.@led[0].name='SFP'; uci set system.@led[0].sysfs='white:sfp'; uci set system.@led[0].trigger='netdev'; uci set system.@led[0].dev='eth0'; uci set system.@led[0].mode='link'; uci add_list system.@led[0].mode='tx'; uci add_list system.@led[0].mode='rx'; uci commit system;" >> target/linux/alpine/base-files/etc/uci-defaults/99-custom

# >>> add Network Interfaces Ports Status <<<
printf "printf \"config global 'global'\\\n\\\toption default_additional_info '1'\\\n\\\toption default_h_mode '1'\\\n\\\toption hv_mode_switch_button '1'\\\n\\\n\" > /etc/config/luci_netports\n" >> target/linux/alpine/base-files/etc/uci-defaults/98-netports
printf "printf \"config port\\\n\\\toption ifname 'eth2.2'\\\n\\\toption name 'WAN'\\\n\\\toption type 'copper'\\\n\\\nconfig port\\\n\\\toption ifname 'eth0'\\\n\\\toption name 'SFP'\\\n\\\toption type 'sfp'\\\n\\\nconfig port\\\n\\\toption ifname 'eth1.1'\\\n\\\toption name 'LAN 1-6'\\\n\\\toption type 'copper'\\\n\\\n\" >> /etc/config/luci_netports\n" >> target/linux/alpine/base-files/etc/uci-defaults/98-netports
printf "printf \"config port\\\n\\\toption ifname 'radio0.network1'\\\n\\\toption name 'WLAN 6 GHz'\\\n\\\toption type 'wifi'\\\n\\\nconfig port\\\n\\\toption ifname 'phy1-ap0'\\\n\\\toption name 'WLAN 5 GHz'\\\n\\\toption type 'wifi'\\\n\\\nconfig port\\\n\\\toption ifname 'phy2-ap0'\\\n\\\toption name 'WLAN 2.4 GHz'\\\n\\\toption type 'wifi'\\\n\\\n\" >> /etc/config/luci_netports\n" >> target/linux/alpine/base-files/etc/uci-defaults/98-netports


./scripts/feeds update -a
./scripts/feeds install -a

echo "CONFIG_TARGET_alpine=y" >> .config
echo "CONFIG_TARGET_BOARD=alpine" >> .config

make menuconfig


# >>>>>>>>>>>>>>>>>>>>>>>>
# (2) Select in menuconfig
# >>>>>>>>>>>>>>>>>>>>>>>>

Utilities -> Shells -> bash
Languages -> Phython -> python3-speedtest-cli

LUCI -> Collections -> luci
LUCI -> Collections -> luci-ssl
LUCI -> 2. Moduls -> luci-compat
LUCI -> 3. Applications -> luci-app-alpine-fan-control
LUCI -> 3. Applications -> luci-app-cpu-status-mini
LUCI -> 3. Applications -> luci-app-log
LUCI -> 3. Applications -> luci-app-mwan3
LUCI -> 3. Applications -> luci-app-netspeedtest
LUCI -> 3. Applications -> luci-app-openvpn
LUCI -> 3. Applications -> luci-app-temp-status
LuCI -> 3. Applications -> luci-app-tn-netports

Kernel modules -> Network Devices -> kmod-be2net
Kernel modules -> Network Devices -> kmod-macvlan
Kernel modules -> Network Devices -> kmod-sfp
Kernel modules -> Network Support -> kmod-nat46
Kernel modules -> Network Support -> kmod-tun
Kernel modules -> Netfilter Extensions -> kmod-ipt-ipset
Kernel modules -> Netfilter Extensions -> kmod-ipt-nat
Network -> Firewall -> iptables-mod-conntrack-extra
Network -> Firewall -> iptables-mod-ipopt
Network -> VPN -> openvpn-openssl

#otional
#LUCI -> 2. Modules -> luci-mod-dashboard
#LUCI -> 3. Applications -> luci-app-argon-config
#LUCI -> Themes


# >>>>>>>>>>>>>>>>>>>>>
# (3) Start compiling
# >>>>>>>>>>>>>>>>>>>>>

make V=sc -j$(($(nproc)+1))

ls -arl bin/targets/alpine/generic/

Status Page on R9000


.

iperf3 Server running on Router R9000

Speedtest on client with 2.5GBit Ethernet Adapter

.

Port Status does not show if WAN (eth2.2) is unplugged; same on LAN1-6

Converting to DSA with dual switches ... could fix the problem
Has anyone found a way how to do the DSA configuration for the R9000 switches. Unfortunately I haven't gotten any further. The port configuration would then work much better and easier...

1 Like

Out of curiosity, how close is this to being out of "development" and into the mainstream of OpenWrt?

The last firmware includes now the Multi WAN Manager

With MultiWAN Manger it's possible to use the SFP port as WAN

To Enable:

  1. Remove the eth0 (SFP) from the lan bridge
    Network -> Interfaces -> Devices -> Configure br_lan -> Bridge ports -> uncheck eth0 -> Save & Apply

  2. Create wanb and add eth0 (SFP)
    Network -> Interfaces -> Add new interface -> set name to wanb -> select device eth0 -> Create
    Interface

  3. Set wanb firewall setting
    Assign firewall-zone "wan" -> save -> Save & Apply

  4. Enable wanb in MultiWAN Manger
    Network -> MultiWAN Manager -> Interface -> Edit "wanb" -> check Enabled -> save -> Save & Apply

....

I also think the R9000 is ready for mainstream OpenWrt. LAN, WLAN and SFP are stable and fast...

4 Likes

Please pardon the multitude of questions, I'm moving over to OpenWRT from other firmwares...

Do I need to load up the "config" file as well? I've already successfully installed the firmware.

the config file is just for information so you can know what's inside the firmware

1 Like

The WAN Throughput / Performance of R9000 with OpenWrt Linux 6.1.46 is 1.3 Gbits/sec.

(used the SFP port for testing, connected to a server with 2.5GBit Ethernet Adapter, tested with MultiWANManger enabled and SFP Port set to wanb.)

Enabling "Software flow offloading" or "Hardware flow offloading" in the Firewall - Zone Settings makes no difference.

1 Like

Great. Would love to see this as an official build and no longer a snapshot. The latter seems to be causing issues with software addons.

10G SFP+ Throughput between two R9000s running OpenWrt Linux 6.1.46 is 7.6 Gbits/sec.
(two R9000 connected via LAN to LAN with a 2m 10G SFP+ DAC)

.

@holocronology : yes, on custom not offical supported builds some software addons are missing / not compiled / compatible for this architecture ...

1 Like

Any idea what could cause the high amount of retries spikes?
I had it on my iperf test aswell a while ago when testing the SPF+ port. (although a lot more)

post: Netgear X10 (R9000) - #618 by dentillozie

id be willing to bet its a 2.5gb driver issue. I know for mine I had to install the latest driver from the manufacturer to get proper speeds. The default driver installed by windows worked for crap. I never got more than about what he got in his tests. Mine would also only go to about 1.3gb/sec. After i got the newest driver its been fine.

Understood.

Let's move this to official build.... :grin:

1 Like

10G SFP+ Throughput between Netgear R9000 and Netgear XR700 running OpenWrt Linux 6.1.52
Connected together with a 2m 10G SFP+ DAC

WAN to LAN with Firewall enabled and working

LAN to LAN no Firewall (disabled)

With the DAC cable we also achieved very high throughput over WAN. I'm surprised how powerful the R9000 can be :smiley:

2 Likes

New OpenWRT Linux 6.1.52 builds for Netgear R9000 and XR700

https://github.com/masmbit/Netgear-R9000-Build/tree/master/bin ...

openwrt-alpine-generic-netgear_r9000-squashfs-factory-(Linux-v6.1.52_09.09.2023).img.zip
openwrt-alpine-generic-netgear_r9000-squashfs-sysupgrade-(Linux-v6.1.52_09.09.2023).bin.zip
openwrt-alpine-generic-netgear_xr700-squashfs-factory-(Linux-v6.1.52_09.09.2023).img.zip
openwrt-alpine-generic-netgear_xr700-squashfs-sysupgrade-(Linux-v6.1.52_09.09.2023).bin.zip

2 Likes

Amazing...

Is it possible to use the SFP+ type ONU provided by the Japanese network provider (NTT), model number: GE-PONA SFP-ONU<1>S?

Hi, you have to try it the original works or search a compatible.

maybe this one is compatible: GPON SFP ONU Stick with Mac

1 Like