[ipq8065] Synology rt2600ac support

Advised for experienced users... get serial... use initramfs to backup everything!!!

Dirty Support Patch ( for r13044+2-3773ae127a 22042020 )

sudo cat /usb1/booty.txt

wrt_extra=rootwait nohz=off
wrtbootarg=setenv bootargs console=ttyMSM0,115200n8 init=/sbin/init root=/dev/sda3 rootwait
wrtgo=usb start; ext2load usb 0:1 $kload kernel; run wrtbootarg; bootm $kload
bootcmd=run wrtgo

Outstanding Items

-tiny reset button ( eject is used as temp workaround )
-switch and storage leds ( i think just usb is left )
-mmc card reader support ( you will fry cards due to volts! ) 


NOTE: Pinwidth is small

______________front_left_corner_from_rear_____ pcb
     .      .      .
     .      .      .


  • Interrupting boot causes ubootvars to be reset.....
    Try not to ctrl-c / power cycle early in the boot process
1 Like

Sysupgrade -> beta working

NOTE: Upgrades what you are currently booted into... so if you've booted usb, usb will be upgraded... if you've booted internal mmc, mmc will be upgraded.

It is based on 18.06.2 ( now master ), which as I understand... is technically incorrect and should be based off of master..... but hey...... as it's just an initial RFC et. al.... I think it might be more help than hindrance.......

EDIT: revised because i am learning quilt etc. etc. ( thanks slh )

Advanced Reboot
-On the cards.... digesting options at the moment
EDIT: custom script for this in dirty git patch
( sdOEM | sdOPENWRT | usbOPENWRTifpresent )

Just a very superficial review (and yes, for it to be useful, you need to rebase it against master and submit it formally):

  • build_dir/target-arm_cortex-a15+neon-vfpv4_musl_eabi/linux-ipq806x/linux-4.14.95/arch/arm/boot/dts/Makefile
    this mustn't be in the patch, it's generated at build time
  • package/boot/uboot-envtools/files/ipq806x
    don't remove support for other devices (netgear,r7800)
  • target/linux/ipq806x/Makefile
    • you remove "ramdisk" from the FEATURES definition, even if you need the additional "usb" featureset (and this shouldn't be needed for a native install on its internal eMMC. making it an optional feature --> DEVICE_PACKAGES) is better/ necessary, there shouldn't be any reason to remove "ramdisk"
    • DEFAULT_PACKAGES: this affects the package set for all ipq806x devices, while none of the other devices need these - if the rt2600 does indeed 'needs' them (at least lua, ubus and ncurses definately don't belong there), they need to go into DEVICE_PACKAGES for your device (alone).
  • target/linux/ipq806x/base-files/etc/board.d/01_leds
    • don't remove or change settings for other devices (buffalo,wxr-2533dhp, zyxel,nbg6817)
    • is ${boardname}:amber:wifi2g really necessary? 18.06.x and up should cover this by default (by implicit ath10k triggers), you configure what's enabled by default
  • target/linux/ipq806x/base-files/etc/board.d/02_network
    • don't remove support for other devices (buffalo,wxr-2533dhp, qcom,ipq8064-ap161)
    • review if the MAC address assignment is really correct, relative to the OEM firmware - it's possible, but not very likely that both ZyXEL and Synology really use the same strategy here
  • target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
    you are reverting this file to an older version, you really need to work against current (master) code here and only do changes for your device (this change actively breaks WLAN support for all ipq806x/ ath10k devices, as they won't be assigned a correct MAC address anymore).
    your only hunk here should be for the synology,rt2600ac (and you need to update it according to the changes done for the other devices)
  • target/linux/ipq806x/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
  • target/linux/ipq806x/base-files/lib/upgrade/platform.sh
    • don't remove support for other devices (buffalo,wxr-2533dhp, qcom,ipq8064-ap161)
    • your device specific upgrade invocation looks a bit complicated (should this go into the called script instead?), but I don't know your hardware well enough to comment further
    • blink_led(), is this really necessary or just left over from an old file you used as example?
  • target/linux/ipq806x/base-files/lib/upgrade/synology.sh
    remove lines left over from the nbg6817 file you took as example, this will make your script much easier to read - and it will kill probably 50% of its total size.
  • target/linux/ipq806x/files-4.14/arch/arm/boot/dts/qcom-ipq8065-rt2600ac.dts
    I don't know enough about the rt2600 to comment here
  • target/linux/ipq806x/image/Makefile
    don't do changes unrelated to your rt2600 here, the only change should be the hunks around define Device/SynologyImage and define Device/synology_rt2600ac, you should default to the -ct variant of the ath10k kernel modules and firmware for consistency reasons. your additional "DEVICE_PACKAGES" go here (use sparingly, only for hard requirements)
  • target/linux/ipq806x/profiles/00-default.mk
    this file shouldn't be changed in your patch

After these changes your patch set will become a lot smaller and easier to review (and it's really essential to work against current master, there have been significant changes recently/ post 18.06).

1 Like

I'm still a little unclear as to what this does. From an R7800 user's point of view, will this ultimately allow booting and running an unmodified device (ie I haven't prised it open to get Serial JTAG access) entirely from an attached USB drive? so the NAND flash will not be used at all?

If so, how does it work? It modifies the u-boot?

(for context I know nothing about the boot process, i have merely been flashing my local builds)

in essence... once the basic buildroot side of things is done...

it inserts a uboot entry to check for usb .txt options.... they could choose to boot from usb, tftp or whatever....

if they are not found.... then the device boots as normal. it is possible to have OEM on the router and just these small changes to check usb first... but otherwise the system could be strictly OEM.

the challenge in getting them there without serial is that the OEM needs to have the fw_printenv command. For my device it doesn't, so I inject the binary and libraries from the openwrt rootfs.

if you have output from a fw_printenv command.... post it here... obfuscating any MAC addresses .... that will give me a head start for that device.

oh mine is already on master of openwrt...and i don't have serial. or does that not matter? i'm afraid i don't really understand what you're asking :).

@wulfy23, what happened to your GitHub repositories mentioned here?

I've just bought one of these routers and I'd like to pick up this work, if possible.

The repos got stale waiting for Synology to be added to the ToH so the device could be properly documented.

You can pick that up if you like...

I'm short for time now as I have to find a job...

When get some time, I will rebase and push a PR... if your git skills are good i'm happy to add you so you can help with the remaining aspects ( sdcard + installation fine tuning )

If anyone wants to "pick-up" the work and push a ( clean ) PR... go for it... i'll stick around to try to add input when I have time... But as my needs are satisfied with this device ( been running openwrt for 12+ months ) I doubt i'll be adding much more in terms of "official support" / frequently.

Here is an initramfs you can use to backup your system and test basic functionality


Just updated the top post with a GIT.PATCH... ( for r13044+2-3773ae127a )

I normally work with quilt so have not tried / tested it yet. It is "dirty" aka... it is my custom build mods with alot of junk in it, but most of the key areas are covered.

Hey Wulfy, do you still own this device? How is support? Are you still running a personal tree on this?

I might be able to get this second hand for a nice price, but it's only interesting if we can get OpenWrt running on it.


hey Borromini...

  • tree is 3 months out of date ( no issue )

the main challenge with this device is the OEM restore...

it's definitely supportable if a config decision is made to *nuke* the OEM uboot vars... ( or the user is clearly told what operations will might trigger OEM reset logic etc. etc.) but my current tree plays nice and inserts some uboot logix to still boot OEM if openwrt is not installed... which can have fallbacks if uenv is reset etc. etc.

basically... i'm using an OEM ext4 'spare' partition... and installing via CP at the moment...

my tree also installs a boot.scr that will boot off usb of you compile in the driver... but that is easily stripped out for official support...

so yes... definitely supportable... ( all the nuts and bolts are done... you just have to make the design decision re: partition + uenv defaults etc. )

AUD these retail around $360 ( $290US? ) but i've seen them often around $300 ( $255US? )...

( o' the external mmc i've never fully had working... be carefull with this as i'm sure your aware... excess volts be frying cards )

OK, thanks for the status update! Will see, I mistook 'any acceptable offer' for 50-ish EUR :crazy_face:

1 Like