To modify a WDR3600 with 16MB flash, you will need an external SPI programmer and soldering tools. First, obtain a copy of the starting contents either with the external programmer or from commands in OpenWrt:
# dd if=/dev/mtdblock0 of=/tmp/uboot.img # dd if=/dev/mtdblock1 of=/tmp/firmware.img # dd if=/dev/mtdblock5 of=/tmp/art.img Copy the files off the router. In order to make clean reads/writes with the external SPI programmer, it is helpful to hold the CPU in reset. To do this, solder a shunt across R2 near the JTAG header so that a jumper between pin 10 and pin 11 of the JTAG header can hold the RESET pin low. It is probabaly worth trying out your external SPI programmer by reading a few copies before desoldering the original flash part. Desolder the SPI flash in the middle of the board. Solder on the new one, noting the correct orientation. Build the pepe2k u-boot for the WDR3600 (branch with support added): $ git clone https://github.com/RussellSenior/u-boot_mod/tree/add-wdr3600-16m $ make tp-link_tl-wdr3600_16m Extract the novel bits from your original uboot.img, thusly: $ dd if=uboot.img of=macaddr.bin bs=1 skip=130048 count=6 $ dd if=uboot.img of=model.bin bs=1 skip=130304 count=8 $ dd if=uboot.img of=pin.bin bs=1 skip=130560 count=8 $ dd if=/dev/zero bs=64k count=2 | tr '\000' '\377' > u-boot-new.img $ dd if=u-boot_mod.bin of=u-boot-new.img conv=notrunc $ dd if=macaddr.bin of=u-boot-new.img bs=1 count=6 seek=130048 conv=notrunc $ dd if=model.bin of=u-boot-new.img bs=1 count=8 seek=130304 conv=notrunc $ dd if=pin.bin of=u-boot-new.img bs=1 count=8 seek=130560 conv=notrunc where u-boot_mod.bin is the u-boot image built using the pepe2k tree with patches for the 16MB flash size. Compose a new 16MB image: $ dd if=/dev/zero bs=1M count=16 | tr '\000' '\377' > 16MB-new.img $ dd if=u-boot-new.img of=16MB-new.img conv=notrunc $ dd if=openwrt-ath79-generic-tplink_tl-wdr3600-16m-squashfs-sysupgrade.bin of=16MB-new.img bs=64k seek=2 conv=notrunc $ dd if=art.bin of=16MB-new.img bs=64k seek=255 conv=notrunc Then, use your external SPI flash programmer to write 16MB-new.img to the new flash part. Signed-off-by: Russell Senior <russ...@personaltelco.net> --- .../ath79/base-files/etc/board.d/02_network | 1 + .../etc/hotplug.d/firmware/10-ath9k-eeprom | 1 + .../dts/ar9344_tplink_tl-wdr3600-16m.dts | 46 +++++++++++++++++++ target/linux/ath79/image/generic-tp-link.mk | 10 ++++ 4 files changed, 58 insertions(+) create mode 100644 target/linux/ath79/dts/ar9344_tplink_tl-wdr3600-16m.dts diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network index e66eb938fd..5701372ed5 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -170,6 +170,7 @@ ath79_setup_interfaces() tplink,archer-c7-v4|\ tplink,archer-c7-v5|\ tplink,tl-wdr3600|\ + tplink,tl-wdr3600-16m|\ tplink,tl-wdr4300) ucidef_add_switch "switch0" \ "0@eth0" "2:lan:1" "3:lan:2" "4:lan:3" "5:lan:4" "1:wan" diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 84e4d07b35..40ea3f3a42 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -146,6 +146,7 @@ case "$FIRMWARE" in ;; ocedo,raccoon|\ tplink,tl-wdr3600|\ + tplink,tl-wdr3600-16m|\ tplink,tl-wdr4300|\ tplink,tl-wdr4900-v2|\ winchannel,wb2000) diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdr3600-16m.dts b/target/linux/ath79/dts/ar9344_tplink_tl-wdr3600-16m.dts new file mode 100644 index 0000000000..ca8fd077e3 --- /dev/null +++ b/target/linux/ath79/dts/ar9344_tplink_tl-wdr3600-16m.dts @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "ar9344_tplink_tl-wdr4300.dtsi" + +/ { + model = "TP-Link WDR3600 16M"; + compatible = "tplink,tl-wdr3600-16m", "qca,ar9344"; +}; + +&spi { + num-cs = <1>; + + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + uboot: partition@0 { + label = "u-boot"; + reg = <0x000000 0x020000>; + read-only; + }; + + partition@20000 { + compatible = "tplink,firmware"; + label = "firmware"; + reg = <0x020000 0xfd0000>; + }; + + art: partition@7f0000 { + label = "art"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk index e82a5a3073..bd8365618b 100644 --- a/target/linux/ath79/image/generic-tp-link.mk +++ b/target/linux/ath79/image/generic-tp-link.mk @@ -152,6 +152,16 @@ define Device/tplink_tl-wdr3600 endef TARGET_DEVICES += tplink_tl-wdr3600 +define Device/tplink_tl-wdr3600-16m + $(Device/tplink-16mlzma) + ATH_SOC := ar9344 + DEVICE_TITLE := TP-Link TL-WDR3600 16M + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport + TPLINK_HWID := 0x36000001 + SUPPORTED_DEVICES += tl-wdr3600-16m +endef +TARGET_DEVICES += tplink_tl-wdr3600-16m + define Device/tplink_tl-wdr4300 $(Device/tplink-8mlzma) ATH_SOC := ar9344 -- 2.21.0 -- Russell Senior, President russ...@personaltelco.net _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel