Netgear X10 (R9000)

Hello is there a build in the works for netgear X10? I know there is openwrt for this router so idk why there wouldn't be for LEDE

Where did you find that?

Specs: https://wikidevi.com/wiki/Netgear_R9000
Specs: https://wikidevi.wi-cat.ru/Netgear_R9000
Related reading: Annapurna Labs Alpine platform build support

https://www.myopenrouter.com/download/openwrt-netgear-r9000-update-release-2016-dec

You can (unfortunately) safely assume anything posted to myopenrouter.com is not an official OpenWrt or LEDE firmware.

You probably already are running OpenWrt on your R9000, but it will be a Chaos Calmer 15.05 derivative if you're lucky. It's just what Netgear's using in-house as their own firmware (it saves them time, thus saving money).

Pretty sure most components on the board would be supported. Been a while since last having any involvement in the embedded space but I have one of these Nighhawk X10 / R9000 units at my disposal and willing to help if possible. Few things I can think of but still trying to catch up on the project here.

Some initial detail below.

show env (uboot)
Annapurna Labs stage 2: stage2_eth3_ram_loader v1.65.1
Executing next!
Annapurna Labs stage 2: stage2.5_loader v1.65.1
SPD I2C Address:00000057
Executing next!

-----------------------------------------------------
Stage 3 version: 1.65.1
Commit ID: e88c9c4
CVOS commit ID: d32367c
HAL commit ID: 8b8f7b5
Build date: May 20 2015 19:57:35
-----------------------------------------------------

EEPROM Revision ID = 38
Device ID = a314
Device Info: AL31400-1700
Loading DT to 00100000 (17730 bytes)...
Board config ID: alpine_db (hw29765235p0p512p1024p4x4p4x4)
Loading application to 00100000 (449864 bytes)...
Executing application...


U-Boot 2015.01-gb2e1be8 (Apr 29 2016 - 18:24:54)

U-boot dni1 V1.5 for DNI HW ID: 29765235 NOR flash 0MB; NAND flash 512MB; RAM 1024MB; 1st Radio 4x4; 2nd Radio 4x4
I2C:   ready
DRAM:  1 GiB
WARNING: Caches not enabled

   _
  /_\  _ __  _ __   __ _ _ __  _   _ _ __ _ __   __ _
 //_\\| '_ \| '_ \ / _` | '_ \| | | | '__| '_ \ / _` |
/  _  \ | | | | | | (_| | |_) | |_| | |  | | | | (_| |
\_/ \_/_| |_|_| |_|\__,_| .__/ \__,_|_|  |_| |_|\__,_|
   __       _           |_|
  / /  __ _| |__  ___
 / /  / _` | '_ \/ __|
/ /__| (_| | |_) \__ \
\____/\__,_|_.__/|___/
               ___             _
 /\ /\        / __\ ___   ___ | |_
/ / \ \_____ /__\/// _ \ / _ \| __|
\ \_/ /_____/ \/  \ (_) | (_) | |_
 \___/      \_____/\___/ \___/ \__|

Board config ID: alpine_db (hw29765235p0p512p1024p4x4p4x4)
NAND:  512 MiB
*** Warning - bad CRC, using default environment

  00:00.0     - 1c36:0002 - Network controller
  00:01.0     - 1c36:0001 - Network controller
  00:03.0     - 1c36:0001 - Network controller
  00:04.0     - 1c36:0011 - Cryptographic device
  00:05.0     - 1c36:0021 - Base system peripheral
PCIE_0: Link up. Speed 5GT/s Width x1
  01:00.0     - 1b21:1182 - Bridge device
PCIE_1: Link up. Speed 5GT/s Width x1
  02:00.0     - 1b21:1142 - Serial bus controller
PCIE_2: Link up. Speed 5GT/s Width x1
  03:00.0     - 1ae9:0310 - Network controller
In:    serial
Out:   serial
Err:   serial
eeprom_per_device_init: no valid information found!
eeprom_per_device_init#104: Try reading from NAND flash
eeprom_per_device_init#116: Reading from NAND flash OK
Net:   (QCA8337) Check Status Port 3 status is 0x0
al_eth0, al_eth1 [PRIME], al_eth3
Warning: al_eth3 using MAC address from net device

Hit any key to stop autoboot:  0

ALPINE_DB> env print
arch=arm
autoload=n
baudrate=115200
board=alpine_hw29765235p0p512p1024p4x4p4x4_32_db
board_name=alpine_hw29765235p0p512p1024p4x4p4x4_32_db
boot_instance_active=0
boot_instance_non_active=1
bootargshd=run rootargshd; setenv bootargs $rootargs pci=pcie_bus_perf console=ttyS0,115200 $bootargsextra; printenv bootargs
bootargsnand=run rootargsnand; setenv bootargs $rootargs pci=pcie_bus_perf console=ttyS0,115200 $bootargsextra; printenv bootargs
bootargsnfs=run rootargsnfs; setenv bootargs $rootargs pci=pcie_bus_perf console=ttyS0,115200 $bootargsextra; printenv bootargs
bootcmd=nmrp;run check_dni_image;run bootargsnand;qca8337_init_one; ledtoggle;sleep 1;run bootnand
bootdelay=2
bootext4=lcd_print "Loading OS...";scsi init; ext4load scsi ${ext4dev}:${ext4part} $loadaddr ${ext4dir}${dt_filename};if test $? -ne 0; then run fail; exit; fi;if test ${dt_is_from_toc} != 1; then; else flash_contents_obj_read_mem $loadaddr_dt $loadaddr;if test $? -ne 0; then run fail; exit; fi;fi;ext4load scsi ${ext4dev}:${ext4part} $loadaddr ${ext4dir}uImage;if test $? -ne 0; then run fail; exit; fi;fdt addr $lo                                                                                                                                                                                                                adaddr_dt;bootm $loadaddr - $fdtaddr;run fail; exit
bootnand=lcd_print "Loading OS...";nand set_partition_offset $nand_pt_addr_kernel;nand read $loadaddr $nand_pt_addr_kernel 4;setenvmem filesize $loadaddr;incenv filesize 4;nand read $loadaddr $nand_pt_addr_kernel $filesize;ledtoggle;nand set_partition_offset $nand_pt_addr_al_boot;bootm $loadaddr_payload - $fdtaddr;lcd_print Failed!
bootnandmulti=run kernel_select;if test $kernel_selected -ne 0; then run bootnand; fi
boottftp=lcd_print "Loading OS...";tftpboot $loadaddr ${tftpdir}${dt_filename};if test $? -ne 0; then run fail; exit; fi;if test ${dt_is_from_toc} != 1; then; else flash_contents_obj_read_mem $loadaddr_dt $loadaddr;if test $? -ne 0; then run fail; exit; fi;fi;tftpboot $loadaddr ${tftpdir}uImage;if test $? -ne 0; then run fail; exit; fi;fdt addr $loadaddr_dt;bootm $loadaddr - $fdtaddr;run fail; exit
bootupd=is_nand_boot; if test $? -eq 0; then run bootupdspi; else; run bootupdnand; fi
bootupdnand=lcd_print "Updating al-boot" "to NAND"; tftpboot $loadaddr ${tftpdir}boot.img; if test $? -ne 0; then run fail; exit; fi;nand set_partition_offset $nand_pt_addr_al_boot;nand erase.spread $nand_pt_addr_al_boot $filesize; nand write $loadaddr $nand_pt_addr_al_boot $filesize; lcd_print "Done"
bootupdnandy=lcd_print "Updating al-boot" "to NAND"; echo >> Use YModem to upload the boot image binary...;loady $loadaddr;if test $? -ne 0; then run fail; exit; fi;nand set_partition_offset $nand_pt_addr_al_boot;nand erase.spread $nand_pt_addr_al_boot $filesize; nand write $loadaddr $nand_pt_addr_al_boot $filesize; lcd_print "Done"
bootupdspi=lcd_print "Updating al-boot" "to SPI"; tftpboot ${loadaddr} ${tftpdir}boot.img; if test $? -ne 0; then run fail; exit; fi;sf probe; sf erase 0 +${filesize}; sf write ${loadaddr} 0 ${filesize}; echo bootupd done;echo Notice: Changes in default environment variables will only take effect once the;echo environment variables are deleted from flash using the 'delenv' script;lcd_print "Done"
bootupdspiy=lcd_print "Updating al-boot" "to SPI"; echo >> Use YModem to upload the boot image binary...;loady ${loadaddr};if test $? -ne 0; then run fail; exit; fi;sf probe; sf erase 0 +${filesize}; sf write ${loadaddr} 0 ${filesize}; echo bootupd done;echo Notice: Changes in default environment variables will only take effect once the;echo environment variables are deleted from flash using the 'delenv' script;lc                                                                                                                                                                                                                d_print "Done"
bootupdy=is_nand_boot; if test $? -eq 0; then run bootupdspiy;else; run bootupdnandy; fi
check_dni_image=lcd_print "Loading DNI firmware for checking...";nand set_partition_offset $nand_pt_addr_kernel;ledtoggle;loadn_dniimg 0 $nand_pt_addr_kernel $loadaddr;ledtoggle;calc_rootaddr $nand_pt_addr_kernel $loadaddr;nand set_partition_offset $nand_pt_addr_al_boot;setenv kernel_addr_for_fw_checking $loadaddr;incenv kernel_addr_for_fw_checking 4;iminfo $kernel_addr_for_fw_checking;if test $? -ne 0; then echo                                                                                                                                                                                                                 "linux checksum error";fw_recovery; fi;ledtoggle;iminfo $rootfs_addr_for_fw_checking;if test $? -ne 0; then echo "rootfs checksum error";fw_recovery; fi;ledtoggle;lcd_print Failed!
cpu=armv7
cvos_tags=0x01000000
cvos_tags_seed_a=0x01000004
cvos_tags_seed_b=0x01000008
cvos_tags_validate=mw.l ${cvos_tags} 0xcf05cf05
delenv=is_nand_boot; if test $? -eq 0; then run delenvspi; else; run delenvnand; fi
delenvnand=lcd_print "Deleting env..."; nand erase ${env_offset} 2000; if test -n ${env_offset_redund}; then nand erase ${env_offset_redund} 2000; fi;lcd_print "Done"
delenvspi=lcd_print "Deleting env..."; sf probe; sf erase ${env_offset} +2000;if test -n ${env_offset_redund}; then sf erase ${env_offset_redund} +2000;fi;lcd_print "Done"
dt_filename=dt.img
dt_is_from_toc=1
dt_location=80000
dtupd=is_nand_boot; if test $? -eq 0; then run dtupdspi; else; run dtupdnand; fi
dtupdnand=lcd_print "Updating DT" "to NAND"; tftpboot $loadaddr_dt ${tftpdir}${dt_filename};if test $? -ne 0; then run fail; exit; fi;if test ${dt_is_from_toc} != 1; then; else flash_contents_obj_read_mem $loadaddr $loadaddr_dt;if test $? -ne 0; then run fail; exit; fi;fi;nand set_partition_offset $nand_pt_addr_al_boot;nand erase.spread ${dt_location} 10000; nand write ${loadaddr_dt} ${dt_location} 10000; lcd_prin                                                                                                                                                                                                                t "Done"
dtupdnandy=lcd_print "Updating DT" "to NAND"; echo >> Use YModem to upload the device tree binary...;loady $loadaddr_dt;if test $? -ne 0; then run fail; exit; fi;if test ${dt_is_from_toc} != 1; then; else flash_contents_obj_read_mem $loadaddr $loadaddr_dt;if test $? -ne 0; then run fail; exit; fi;fi;nand set_partition_offset $nand_pt_addr_al_boot;nand erase.spread ${dt_location} 10000; nand write ${loadaddr_dt} ${                                                                                                                                                                                                                dt_location} 10000; lcd_print "Done"
dtupdspi=lcd_print "Updating DT" "to SPI"; tftpboot $loadaddr_dt ${tftpdir}${dt_filename};if test $? -ne 0; then run fail; exit; fi;if test ${dt_is_from_toc} != 1; then; else flash_contents_obj_read_mem $loadaddr $loadaddr_dt;if test $? -ne 0; then run fail; exit; fi;fi;sf probe; sf erase ${dt_location} +${filesize}; sf write ${loadaddr_dt} ${dt_location} ${filesize};echo dtupd done;lcd_print "Done"
dtupdspiy=lcd_print "Updating DT" "to SPI"; echo >> Use YModem to upload the device tree binary...;loady $loadaddr_dt;if test $? -ne 0; then run fail; exit; fi;if test ${dt_is_from_toc} != 1; then; else flash_contents_obj_read_mem $loadaddr $loadaddr_dt;if test $? -ne 0; then run fail; exit; fi;fi;sf probe; sf erase ${dt_location} +${filesize}; sf write ${loadaddr_dt} ${dt_location} ${filesize}; echo dtupd done;lc                                                                                                                                                                                                                d_print "Done"
dtupdy=is_nand_boot; if test $? -eq 0; then run dtupdspiy; else; run dtupdnandy; fi
eepromupd=confirm_msg "Perform EEPROM update? [y/n] ";if test $? -ne 0; then exit; fi;tftpboot ${tftpdir}eeprom.bin;if test $? -ne 0; then exit; fi;i2c probe ${pld_i2c_addr};if test $? -ne 0; then exit; fi;i2c write $fileaddr ${pld_i2c_addr} 0.2 $filesize;if test $? -ne 0; then exit;fi;echo eepromupd done
eepromupdy=confirm_msg "Perform EEPROM update? [y/n] ";if test $? -ne 0; then exit; fi;echo >> Use YModem to upload the EEPROM binary...;loady $loadaddr;if test $? -ne 0; then exit; fi;i2c probe ${pld_i2c_addr};if test $? -ne 0; then exit; fi;i2c write $loadaddr ${pld_i2c_addr} 0.2 $filesize;if test $? -ne 0; then exit;fi;echo eepromupdy done
env_offset=1e0000
env_offset_redund=200000
eth1addr=10:da:43:0c:e2:b7
eth3addr=02:31:74:ea:0c:d3
ethact=al_eth1
ethaddr=10:da:43:0c:e2:b8
ethprime=al_eth1
ext4dev=0
ext4dir=boot/
ext4part=1
fail=echo Failed!; lcd_print "Failed!"
fdtaddr=3b73008
fwupd=tftpboot ${tftpdir}uboot_script_fw_update.bin;source ${loadaddr}
hdroot=/dev/sda1
iocc_force=1
iocc_force_val=1
ipaddr=192.168.1.1
kernel_rename_1=editenv nand_pt_desc_kernel_1;saveenv
kernel_rename_2=editenv nand_pt_desc_kernel_2;saveenv
kernel_select=setenv kernel_selected 0;setenv bootmenu_0 ${nand_pt_desc_kernel_1}=run kernel_select_1;setenv bootmenu_1 ${nand_pt_desc_kernel_2}=run kernel_select_2;bootmenu
kernel_select_1=setenv nand_pt_addr_kernel ${nand_pt_addr_kernel_1};setenv kernel_selected 1
kernel_select_2=setenv nand_pt_desc_kernel ${nand_pt_desc_kernel_2};setenv nand_pt_addr_kernel ${nand_pt_addr_kernel_2};setenv nand_pt_desc_kernel_2 ${nand_pt_desc_kernel_1};setenv nand_pt_addr_kernel_2 ${nand_pt_addr_kernel_1};setenv nand_pt_desc_kernel_1 ${nand_pt_desc_kernel};setenv nand_pt_addr_kernel_1 ${nand_pt_addr_kernel};saveenv;setenv kernel_selected 2
kernelupd=lcd_print "Updating kernel...";tftpboot $loadaddr_payload ${tftpdir}uImage;if test $? -ne 0; then run fail; exit; fi;nand set_partition_offset $nand_pt_addr_kernel;mw.l $loadaddr $filesize;incenv filesize 4;nand erase.spread $nand_pt_addr_kernel $filesize;nand write $loadaddr $nand_pt_addr_kernel $filesize;nand set_partition_offset $nand_pt_addr_al_boot;echo kernelupd done;lcd_print "Done"
loadaddr=0x08000000
loadaddr_dt=0x07000000
loadaddr_payload=0x08000004
loadaddr_rootfs_chk=0x07000000
nand_pt_addr_al_boot=0x0
nand_pt_addr_fs=0x01000000
nand_pt_addr_kernel=0x00580000
nand_pt_addr_kernel_1=0x00400000
nand_pt_addr_kernel_2=0x00a00000
nand_pt_desc_kernel_1=Test kernel A
nand_pt_desc_kernel_2=Test kernel B
nand_pt_size_fs=0x1f000000
nand_pt_size_kernel=0x00c00000
netmask=255.255.255.0
nfsrootdir=/srv/root/
pld_i2c_addr=57
rootargshd=setenv rootargs root=${hdroot} rw
rootargsnand=setenv rootargs root=ubi0:root rootfstype=ubifs ubi.mtd=3
rootargsnfs=setenv rootargs root=/dev/nfs rw nfsroot=${serverip}:${nfsrootdir},tcp,nolock rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${board_name}:eth1:none
rootfsupd=lcd_print "Updating rootfs...";tftpboot $loadaddr_rootfs_chk ${tftpdir}rootfs.ubi.md5;if test $? -ne 0; then run fail; exit; fi;tftpboot $loadaddr ${tftpdir}rootfs.ubi;if test $? -ne 0; then run fail; exit; fi;md5sum -v $loadaddr $filesize *$loadaddr_rootfs_chk;if test $? -ne 0; then run fail; exit; fi;nand set_partition_offset $nand_pt_addr_fs;nand erase.spread $nand_pt_addr_fs $nand_pt_size_fs;nand wri                                                                                                                                                                                                                te $loadaddr $nand_pt_addr_fs $filesize;nand set_partition_offset $nand_pt_addr_al_boot;echo rootfsupd done;lcd_print "Done"
serverip=192.168.1.10
skip_eth_halt=0
soc=alpine_hw29765235p0p512p1024p4x4p4x4
test=echo this is a test!
vendor=annapurna-labs
cat /proc/mtd
cat /proc/mtd
dev:    size   erasesize  name
mtd0: 001e0000 00020000 "u-boot"
mtd1: 00120000 00020000 "u-boot-env"
mtd2: 00140000 00020000 "ART"
mtd3: 00140000 00020000 "ART.bak"
mtd4: 00440000 00020000 "kernel"
mtd5: 02800000 00020000 "rootfs"
mtd6: 02c40000 00020000 "firmware"
mtd7: 04480000 00020000 "netgear"
mtd8: 12c00000 00020000 "plex"
mtd9: 05780000 00020000 "reserve"
mtd10: 00080000 00020000 "crashdump"
mtd11: 00380000 00020000 "language"
mtd12: 00120000 00020000 "config"
mtd13: 00120000 00020000 "pot"
mtd14: 0001f000 0001f000 "cert"
mtd15: 0005d000 0001f000 "pot.bak"
mtd16: 001b2000 0001f000 "traffic_meter"
mtd17: 001b2000 0001f000 "traffic_meter.bak"
mtd18: 001b2000 0001f000 "dongle"
mtd19: 037b4000 0001f000 "overlay_volume"
mtd20: 11874000 0001f000 "plexmediaserver"
cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 4 (v7l)
Speed           : 1.7GHz
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc0f
CPU revision    : 4

processor       : 1
model name      : ARMv7 Processor rev 4 (v7l)
Speed           : 1.7GHz
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc0f
CPU revision    : 4

processor       : 2
model name      : ARMv7 Processor rev 4 (v7l)
Speed           : 1.7GHz
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc0f
CPU revision    : 4

processor       : 3
model name      : ARMv7 Processor rev 4 (v7l)
Speed           : 1.7GHz
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0xc0f
CPU revision    : 4

Hardware        : AnnapurnaLabs Alpine (Device Tree)
Revision        : 0000
Serial          : 0000000000000000
cat /proc/meminfo
root@R9000:/# cat /proc/meminfo
MemTotal:        1030732 kB
MemFree:          877520 kB
Buffers:            7412 kB
Cached:            21976 kB
SwapCached:            0 kB
Active:            12440 kB
Inactive:          21656 kB
Active(anon):       4864 kB
Inactive(anon):     3868[ 2013.750868] [wifi1] FWLOG: [2060705] WAL_DBGID_TX_BA_SETUP ( 0x44927c, 0x4ad50001, 0x108, 0x8, 0x1 )
 kB
Active(file):       7576 kB
Inactive(file):    17788 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:        270336 kB
HighFree:         239768 kB
LowTotal:         760396 kB
LowFree:          637752 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:          4560 kB
Mapped:             2792 kB
Shmem:              4024 kB
Slab:              54932 kB
SReclaimable:       2500 kB
SUnreclaim:        52432 kB
KernelStack:        1112 kB
PageTables:          784 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      515364 kB
Committed_AS:     189212 kB
VmallocTotal:     245760 kB
VmallocUsed:       22076 kB
VmallocChunk:     186888 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
cat /proc/cmdline
root=/dev/mtdblock5 rootfstype=squashfs ubi.mtd=netgear pci=pcie_bus_perf console=ttyS0,115200
brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.10da430ce2b7       yes             ath0
                                                        ath1
                                                        eth0
                                                        ethlan
                                                        ethwan
                                                        wlan0
brwan           8000.000000000000       no

Boot log to follow.

Would you happen to know how to overclock this beast?

Yeah that's the build on myopenrouter.

The myopenrouter.com release is crap! It seems to the netgear release with an updated rootfs image. There is no way to install any packages, so it's pretty useless.

Hi all, I'm really interested to see lede running on a R9000...

1 Like

Bought one myself but sadly keeping it in the box so far. A whole year passed and no luck. Maybe now that the price is more affordable more interest will be gathered on it.

1 Like

While the hardware is really nice, the SOC has only extremely minimal upstream (mainline linux) support (no ethernet, no ..., ...), combined with the fact that it isn't used in many other routers either, supporting it would need quite dedicated efforts to port- and maintain it long term.

It looks like a really interesting SoC, but like @slh stated its minimally supported upstream with only basic stuff and PCI-E support.
It looks like the 60GHz ad radio is supported with wil6210 upstream drivers.
Even the second switch is supported.

There is a complete (not sure how much though) distro released by dd-wrt. Maybe it could be a start to base new developments but not really sure.

1 Like

Has anyone managed to get openwrt running on the netgear X10 R9000 yet

Same question here, I have tried dd-wrt but wifi performance is very low and I still prefer to use OpenWRT.
What can be done to build an OpenWRT build for this monster?

Many thanks in advance!

I'm waiting as well

I know someone got openwrt working on this router a few years ago but that link is dead. Is anyone willing to take a crack at this? I can make a donation if it will expedite the process.