define Build/mktplinkfw
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) -N OpenWrt -V $(REVISION) $2 \
+ -m $(TPLINK_HEADER_VERSION) \
-k $(word 1,$^) \
-r $@ \
-o $@.new \
define Build/mktplinkfw-initramfs
$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) -N OpenWrt -V $(REVISION) $2 \
+ -m $(TPLINK_HEADER_VERSION) \
-k $@ \
-o $@.new \
-s -S \
cat "$(1)" > "$@"
endef
-DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT
+DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT TPLINK_HEADER_VERSION
# UBNT_BOARD e.g. one of (XS2, XS5, RS, XM)
# UBNT_TYPE e.g. one of (BZ, XM, XW)
DEVICE_VARS += UBNT_BOARD UBNT_CHIP UBNT_TYPE
-define Build/mkubntkernelimage
- rm -rf $(KDIR_TMP)/ubnt-$(KERNEL_IMAGE)/image && \
- mkdir -p $(KDIR_TMP)/ubnt-$(KERNEL_IMAGE)/image && \
- cp $@ $(KDIR_TMP)/ubnt-$(KERNEL_IMAGE)/image/kernel0 && \
- $(STAGING_DIR_HOST)/bin/mkfs.jffs2 \
- --pad --big-endian --squash-uids -v -e 64KiB \
- -o $@.new \
- -d $(KDIR_TMP)/ubnt-$(KERNEL_IMAGE)/image \
- 2>&1 && \
- $(STAGING_DIR_HOST)/bin/padjffs2 $@.new -J 64
- -rm -rf $(KDIR_TMP)/ubnt-$(KERNEL_IMAGE)/image
- @mv $@.new $@
-endef
-
define Device/Default
BOARDNAME :=
DEVICE_PROFILE = $$(BOARDNAME)
endef
TARGET_DEVICES += weio
+define Device/gl-ar150
+ BOARDNAME = GL-AR150
+ IMAGE_SIZE = 16000k
+ CONSOLE = ttyATH0,115200
+ MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
+endef
+TARGET_DEVICES += gl-ar150
+
+define Device/gl-ar300
+ BOARDNAME = GL-AR300
+ IMAGE_SIZE = 16000k
+ CONSOLE = ttyS0,115200
+ MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
+endef
+TARGET_DEVICES += gl-ar300
+
+define Device/gl-domino
+ BOARDNAME = DOMINO
+ IMAGE_SIZE = 16000k
+ CONSOLE = ttyATH0,115200
+ MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
+endef
+TARGET_DEVICES += gl-domino
+
define Device/wndr3700
BOARDNAME = WNDR3700
NETGEAR_KERNEL_MAGIC = 0x33373030
define Device/tplink
TPLINK_HWREV := 0x1
+ TPLINK_HEADER_VERSION := 1
KERNEL := kernel-bin | patch-cmdline | lzma
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | mktplinkfw-initramfs
IMAGES := sysupgrade.bin factory.bin
IMAGE/factory.bin := append-rootfs | mktplinkfw factory
endef
-define Device/tplink-chn-v2
-$(Device/tplink)
- IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade "-m 2"
- IMAGE/factory.bin := append-rootfs | mktplinkfw factory "-m 2"
-endef
-
define Device/tplink-nolzma
$(Device/tplink)
LOADER_FLASH_OFFS := 0x22000
IMAGE_SIZE := 15872k
endef
-define Device/tplink-chn-v2-4mlzma
-$(Device/tplink-chn-v2)
- TPLINK_FLASHLAYOUT := 4Mlzma
- IMAGE_SIZE := 3904k
-endef
-
define Device/tl-wdr4300-v1
$(Device/tplink-8mlzma)
BOARDNAME = TL-WDR4300
endef
TARGET_DEVICES += tl-wdr3500-v1 tl-wdr3600-v1 tl-wdr4300-v1 tl-wdr4300-v1-il tl-wdr4310-v1 mw4530r-v1
+define Device/tl-wdr6500-v2
+$(Device/tplink-8mlzma)
+ KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
+ KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | uImage lzma | mktplinkfw-initramfs
+ BOARDNAME = TL-WDR6500-v2
+ DEVICE_PROFILE = TLWDR6500V2
+ TPLINK_HWID := 0x65000002
+ TPLINK_HEADER_VERSION := 2
+endef
+TARGET_DEVICES += tl-wdr6500-v2
+
define Device/tl-wdr3320-v2
-$(Device/tplink-chn-v2-4mlzma)
+$(Device/tplink-4mlzma)
BOARDNAME = TL-WDR3320-v2
DEVICE_PROFILE = TLWDR3320V2
TPLINK_HWID := 0x33200002
+ TPLINK_HEADER_VERSION := 2
endef
TARGET_DEVICES += tl-wdr3320-v2
-define Device/archer-c5
+define Device/archer-c5-v1
$(Device/tplink-16mlzma)
BOARDNAME := ARCHER-C5
DEVICE_PROFILE := ARCHERC7
DEVICE_PROFILE := ARCHERC7
TPLINK_HWID := 0xc7000002
endef
-TARGET_DEVICES += archer-c5 archer-c7-v1 archer-c7-v2
+
+define Device/tl-wdr7500-v3
+ $(Device/tplink-8mlzma)
+ BOARDNAME := ARCHER-C7
+ DEVICE_PROFILE := ARCHERC7
+ TPLINK_HWID := 0x75000003
+endef
+TARGET_DEVICES += archer-c5-v1 archer-c7-v1 archer-c7-v2 tl-wdr7500-v3
+
+define Device/cap324
+ BOARDNAME := CAP324
+ DEVICE_PROFILE := CAP324
+ IMAGE_SIZE = 15296k
+ MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,15296k(firmware),640k(certs),64k(nvram),64k(art)
+endef
+
+TARGET_DEVICES += cap324
+
+define Device/cap324-nocloud
+ BOARDNAME := CAP324
+ DEVICE_PROFILE := CAP324
+ IMAGE_SIZE = 16000k
+ MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,16000k(firmware),64k(art)
+endef
+
+TARGET_DEVICES += cap324-nocloud
+
+define Device/cr3000
+ BOARDNAME := CR3000
+ DEVICE_PROFILE := CR3000
+ IMAGE_SIZE = 7104k
+ MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)
+endef
+
+TARGET_DEVICES += cr3000
+
+define Device/cr3000-nocloud
+ BOARDNAME := CR3000
+ DEVICE_PROFILE := CR3000
+ IMAGE_SIZE = 7808k
+ MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7808k(firmware),64k(art)
+endef
+
+TARGET_DEVICES += cr3000-nocloud
+
+define Device/cr5000
+ BOARDNAME := CR5000
+ DEVICE_PROFILE := CR5000
+ IMAGE_SIZE = 7104k
+ MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7104k(firmware),640k(certs),64k(nvram),64k(art)
+endef
+
+TARGET_DEVICES += cr5000
+
+define Device/cr5000-nocloud
+ BOARDNAME := CR5000
+ DEVICE_PROFILE := CR5000
+ IMAGE_SIZE = 7808k
+ MTDPARTS = spi0.0:256k(u-boot),64k(u-boot-env)ro,7808k(firmware),64k(art)
+endef
+
+TARGET_DEVICES += cr5000-nocloud
define Device/antminer-s1
- $(Device/tplink-8mlzma)
- BOARDNAME := ANTMINER-S1
- DEVICE_PROFILE := ANTMINER_S1
- TPLINK_HWID := 0x04440001
- CONSOLE := ttyATH0,115200
+ $(Device/tplink-8mlzma)
+ BOARDNAME := ANTMINER-S1
+ DEVICE_PROFILE := ANTMINERS1
+ TPLINK_HWID := 0x04440101
+ CONSOLE := ttyATH0,115200
endef
define Device/antminer-s3
- $(Device/tplink-8mlzma)
- BOARDNAME := ANTMINER-S3
- DEVICE_PROFILE := ANTMINER_S3
- TPLINK_HWID := 0x04440003
- CONSOLE := ttyATH0,115200
+ $(Device/tplink-8mlzma)
+ BOARDNAME := ANTMINER-S3
+ DEVICE_PROFILE := ANTMINERS3
+ TPLINK_HWID := 0x04440301
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/antrouter-r1
+ $(Device/tplink-8mlzma)
+ BOARDNAME := ANTROUTER-R1
+ DEVICE_PROFILE := ANTROUTERR1
+ TPLINK_HWID := 0x44440101
+ CONSOLE := ttyATH0,115200
endef
define Device/el-m150
TPLINK_HWID := 0x01530001
CONSOLE := ttyATH0,115200
endef
-TARGET_DEVICES += antminer-s1 antminer-s3 el-m150 el-mini
+TARGET_DEVICES += antminer-s1 antminer-s3 antrouter-r1 el-m150 el-mini
define Device/gl-inet-6408A-v1
$(Device/tplink-8mlzma)
endef
TARGET_DEVICES += gl-inet-6408A-v1 gl-inet-6416A-v1
+define Device/rnx-n360rt
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR941ND
+ DEVICE_PROFILE := RNXN360RT
+ TPLINK_HWID := 0x09410002
+ TPLINK_HWREV := 0x00420001
+endef
+TARGET_DEVICES += rnx-n360rt
+
define Device/mc-mac1200r
$(Device/tplink-8mlzma)
BOARDNAME := MC-MAC1200R
endef
TARGET_DEVICES += mc-mac1200r
+define Device/minibox-v1
+ $(Device/tplink-16mlzma)
+ BOARDNAME := MINIBOX-V1
+ DEVICE_PROFILE := MINIBOXV1
+ TPLINK_HWID := 0x3C000201
+ CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += minibox-v1
+
define Device/onion-omega
$(Device/tplink-16mlzma)
BOARDNAME := ONION-OMEGA
CONSOLE := ttyATH0,115200
endef
+define Device/tl-mr3220-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-MR3220
+ DEVICE_PROFILE := TLMR3220
+ TPLINK_HWID := 0x32200001
+endef
+
define Device/tl-mr3220-v2
$(Device/tplink-4mlzma)
BOARDNAME := TL-MR3220-v2
CONSOLE := ttyATH0,115200
endef
+define Device/tl-mr3420-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-MR3420
+ DEVICE_PROFILE := TLMR3420
+ TPLINK_HWID := 0x34200001
+endef
+
define Device/tl-mr3420-v2
$(Device/tplink-4mlzma)
BOARDNAME := TL-MR3420-v2
DEVICE_PROFILE := TLMR3420
TPLINK_HWID := 0x34200002
endef
-TARGET_DEVICES += tl-mr3020-v1 tl-mr3040-v1 tl-mr3040-v2 tl-mr3220-v2 tl-mr3420-v2
+TARGET_DEVICES += tl-mr3020-v1 tl-mr3040-v1 tl-mr3040-v2 tl-mr3220-v1 tl-mr3220-v2 tl-mr3420-v1 tl-mr3420-v2
define Device/tl-wr703n-v1
$(Device/tplink-4mlzma)
CONSOLE := ttyATH0,115200
endef
+define Device/tl-wr710n-v2.1
+ $(Device/tplink-8mlzma)
+ BOARDNAME := TL-WR710N
+ DEVICE_PROFILE := TLWR710
+ TPLINK_HWID := 0x07100002
+ TPLINK_HWREV := 0x00000002
+ CONSOLE := ttyATH0,115200
+endef
+
define Device/tl-wr720n-v3
$(Device/tplink-4mlzma)
BOARDNAME := TL-WR720N-v3
TPLINK_HWID := 0x07200104
CONSOLE := ttyATH0,115200
endef
-TARGET_DEVICES += tl-wr703n-v1 tl-wr710n-v1 tl-wr710n-v2 tl-wr720n-v3 tl-wr720n-v4
+TARGET_DEVICES += tl-wr703n-v1 tl-wr710n-v1 tl-wr710n-v2 tl-wr710n-v2.1 tl-wr720n-v3 tl-wr720n-v4
+
+define Device/tl-wr740n-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR741ND
+ DEVICE_PROFILE := TLWR740
+ TPLINK_HWID := 0x07400001
+endef
+
+define Device/tl-wr740n-v3
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR741ND
+ DEVICE_PROFILE := TLWR740
+ TPLINK_HWID := 0x07400003
+endef
define Device/tl-wr740n-v4
$(Device/tplink-4mlzma)
CONSOLE := ttyATH0,115200
endef
+define Device/tl-wr743nd-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR741ND
+ DEVICE_PROFILE := TLWR743
+ TPLINK_HWID := 0x07430001
+endef
+
define Device/tl-wr743nd-v2
$(Device/tplink-4mlzma)
BOARDNAME := TL-WR741ND-v4
TPLINK_HWID := 0x07430002
CONSOLE := ttyATH0,115200
endef
-TARGET_DEVICES += tl-wr740n-v4 tl-wr740n-v5 tl-wr741nd-v1 tl-wr741nd-v2 tl-wr741nd-v4 tl-wr741nd-v5 tl-wr743nd-v2
+TARGET_DEVICES += tl-wr740n-v1 tl-wr740n-v3 tl-wr740n-v4 tl-wr740n-v5 tl-wr741nd-v1 tl-wr741nd-v2 tl-wr741nd-v4 tl-wr741nd-v5 tl-wr743nd-v1 tl-wr743nd-v2
+
+define Device/tl-wr841nd-v1.5
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR841N-v1.5
+ DEVICE_PROFILE := TLWR841
+ TPLINK_HWID := 0x08410002
+ TPLINK_HWREV := 2
+endef
+
+define Device/tl-wr841nd-v3
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR941ND
+ DEVICE_PROFILE := TLWR841
+ TPLINK_HWID := 0x08410003
+ TPLINK_HWREV := 3
+endef
+
+define Device/tl-wr841nd-v5
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR741ND
+ DEVICE_PROFILE := TLWR841
+ TPLINK_HWID := 0x08410005
+endef
+
+define Device/tl-wr841nd-v7
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR841N-v7
+ DEVICE_PROFILE := TLWR841
+ TPLINK_HWID := 0x08410007
+endef
define Device/tl-wr841n-v8
$(Device/tplink-4mlzma)
TPLINK_HWID := 0x08410009
endef
+define Device/tl-wr841n-v10
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR841N-v9
+ DEVICE_PROFILE := TLWR841
+ TPLINK_HWID := 0x08410010
+endef
+
+define Device/tl-wr842n-v1
+ $(Device/tplink-8m)
+ BOARDNAME := TL-MR3420
+ DEVICE_PROFILE := TLWR842
+ TPLINK_HWID := 0x08420001
+endef
+
define Device/tl-wr842n-v2
$(Device/tplink-8mlzma)
BOARDNAME := TL-WR842N-v2
DEVICE_PROFILE := TLWR841
TPLINK_HWID := 0x08470008
endef
-TARGET_DEVICES += tl-wr841n-v8 tl-wr841n-v9 tl-wr842n-v2 tl-wr843nd-v1 tl-wr847n-v8
+TARGET_DEVICES += tl-wr841nd-v1.5 tl-wr841nd-v3 tl-wr841nd-v5 tl-wr841nd-v7 tl-wr841n-v8 tl-wr841n-v9 tl-wr841n-v10 tl-wr842n-v1 tl-wr842n-v2 tl-wr843nd-v1 tl-wr847n-v8
+
+define Device/tl-wr941nd-v2
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR941ND
+ DEVICE_PROFILE := TLWR941
+ TPLINK_HWID := 0x09410002
+ TPLINK_HWREV := 2
+endef
+
+define Device/tl-wr941nd-v3
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR941ND
+ DEVICE_PROFILE := TLWR941
+ TPLINK_HWID := 0x09410002
+ TPLINK_HWREV := 2
+endef
+
+define Device/tl-wr941nd-v4
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR741ND
+ DEVICE_PROFILE := TLWR941
+ TPLINK_HWID := 0x09410004
+endef
define Device/tl-wr941nd-v5
$(Device/tplink-4mlzma)
TPLINK_HWID := 0x09410005
endef
+define Device/tl-wr941nd-v6
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR941ND-v6
+ DEVICE_PROFILE := TLWR941
+ TPLINK_HWID := 0x09410006
+endef
+
# Chinese version (unlike European) is similar to the TL-WDR3500
define Device/tl-wr941nd-v6-cn
$(Device/tplink-4mlzma)
DEVICE_PROFILE := TLWR941
TPLINK_HWID := 0x09410006
endef
-TARGET_DEVICES += tl-wr941nd-v5 tl-wr941nd-v6-cn
+TARGET_DEVICES += tl-wr941nd-v2 tl-wr941nd-v3 tl-wr941nd-v4 tl-wr941nd-v5 tl-wr941nd-v6 tl-wr941nd-v6-cn
define Device/tl-wr1041n-v2
$(Device/tplink-4mlzma)
endef
TARGET_DEVICES += tl-wr1041n-v2
+define Device/tl-wr1043nd-v1
+ $(Device/tplink-8m)
+ BOARDNAME := TL-WR1043ND
+ DEVICE_PROFILE := TLWR1043
+ TPLINK_HWID := 0x10430001
+endef
+
define Device/tl-wr1043nd-v2
$(Device/tplink-8mlzma)
BOARDNAME := TL-WR1043ND-v2
DEVICE_PROFILE := TLWR1043
TPLINK_HWID := 0x10430002
endef
-TARGET_DEVICES += tl-wr1043nd-v2
+
+define Device/tl-wr1043nd-v3
+ $(Device/tplink-8mlzma)
+ BOARDNAME := TL-WR1043ND-v2
+ DEVICE_PROFILE := TLWR1043
+ TPLINK_HWID := 0x10430003
+endef
+TARGET_DEVICES += tl-wr1043nd-v1 tl-wr1043nd-v2 tl-wr1043nd-v3
define Device/tl-wr2543-v1
$(Device/tplink-8mlzma)
endef
TARGET_DEVICES += tl-wdr4900-v2
+define Device/tl-wa701n-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WA901ND
+ DEVICE_PROFILE := TLWA701
+ TPLINK_HWID := 0x07010001
+endef
+
define Device/tl-wa701nd-v2
$(Device/tplink-4mlzma)
BOARDNAME := TL-WA701ND-v2
CONSOLE := ttyATH0,115200
endef
+define Device/tl-wa730rev1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WA901ND
+ DEVICE_PROFILE := TLWA730RE
+ TPLINK_HWID := 0x07300001
+endef
+
define Device/tl-wa750re-v1
$(Device/tplink-4mlzma)
BOARDNAME := TL-WA750RE
DEVICE_PROFILE := TLWA750
TPLINK_HWID := 0x07500001
endef
-TARGET_DEVICES += tl-wa701nd-v2 tl-wa750re-v1
+
+define Device/tl-wa7510n
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WA7510N
+ DEVICE_PROFILE := TLWA7510
+ TPLINK_HWID := 0x75100001
+endef
+TARGET_DEVICES += tl-wa701n-v1 tl-wa701nd-v2 tl-wa730rev1 tl-wa750re-v1 tl-wa7510n
+
+define Device/tl-wa801nd-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WA901ND
+ DEVICE_PROFILE := TLWA801
+ TPLINK_HWID := 0x08010001
+endef
define Device/tl-wa801nd-v2
$(Device/tplink-4mlzma)
TPLINK_HWID := 0x08010002
endef
+define Device/tl-wa830re-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WA901ND
+ DEVICE_PROFILE := TLWA830
+ TPLINK_HWID := 0x08300010
+endef
+
define Device/tl-wa830re-v2
$(Device/tplink-4mlzma)
BOARDNAME := TL-WA830RE-v2
DEVICE_PROFILE := TLWA860
TPLINK_HWID := 0x08600001
endef
-TARGET_DEVICES += tl-wa801nd-v2 tl-wa830re-v2 tl-wa850re-v1 tl-wa860re-v1
+TARGET_DEVICES += tl-wa801nd-v1 tl-wa801nd-v2 tl-wa830re-v1 tl-wa830re-v2 tl-wa850re-v1 tl-wa860re-v1
+
+define Device/tl-wa901nd-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WA901ND
+ DEVICE_PROFILE := TLWA901
+ TPLINK_HWID := 0x09010001
+endef
+
+define Device/tl-wa901nd-v2
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WA901ND-v2
+ DEVICE_PROFILE := TLWA901
+ TPLINK_HWID := 0x09010002
+endef
define Device/tl-wa901nd-v3
$(Device/tplink-4mlzma)
DEVICE_PROFILE := TLWA901
TPLINK_HWID := 0x09010003
endef
-TARGET_DEVICES += tl-wa901nd-v3
+TARGET_DEVICES += tl-wa901nd-v1 tl-wa901nd-v2 tl-wa901nd-v3
define Device/tl-wa7210n-v2
$(Device/tplink-4mlzma)
TARGET_DEVICES += ubnt-rs ubnt-rspro ubnt-ls-sr71
define Device/ubnt-uap-pro
+ KERNEL_SIZE := 1536k
IMAGE_SIZE := 15744k
MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1536k(kernel),14208k(rootfs),256k(cfg)ro,64k(EEPROM)ro,15744k@0x50000(firmware)
UBNT_TYPE := BZ
UBNT_CHIP := ar934x
BOARDNAME := UAP-PRO
DEVICE_PROFILE := UBNT UAPPRO
- KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | mkubntkernelimage
+ KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 kernel0
IMAGES := sysupgrade.bin factory.bin
- IMAGE/sysupgrade.bin = append-kernel 1536k | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+ IMAGE/sysupgrade.bin = append-kernel $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
IMAGE/factory.bin = $$(IMAGE/sysupgrade.bin) | mkubntimage2
endef
SINGLE_PROFILES:=
-# $(1) : name of image build method to be used, e.g., TPLINK-LZMA, AthLzma.
+# $(1) : name of image build method to be used, e.g., AthLzma.
# $(2) : name of the build template to be used, e.g. 64k, 64kraw, 128k, etc.
# $(3) : name of the profile to be defined.
# $(4) : board name.
$(LOADER_MAKE) clean
endef
-
alfa_ap96_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,13312k(rootfs),2048k(kernel),512k(caldata)ro,15360k@0x80000(firmware)
alfa_mtdlayout_8M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6144k(rootfs),1600k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
alfa_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,15936k(firmware),64k(nvram),64k(art)ro
ap121_mtdlayout_2M=mtdparts=spi0.0:64k(u-boot)ro,1216k(rootfs),704k(kernel),64k(art)ro,1920k@0x10000(firmware)
ap121_mtdlayout_4M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,2448k(rootfs),1200k(kernel),64k(nvram),64k(art)ro,3648k@0x50000(firmware)
ap121_mtdlayout_8M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6144k(rootfs),1600k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
+ap121_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,10944k(rootfs),4992k(kernel),64k(nvram),64k(art)ro,15936k@0x50000(firmware)
ap132_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),6400k(rootfs),64k(art),7808k@0x50000(firmware)
ap135_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware)
ap136_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(mib0),64k(art)ro,7744k@0x50000(firmware)
eap300v2_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),320k(custom),13632k(firmware),2048k(failsafe),64k(art)ro
db120_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
dgl_5500_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,15296k(firmware),192k(lang)ro,512k(my-dlink)ro,64k(mac)ro,64k(art)ro
+dlan_hotspot_mtdlayout=mtdparts=spi0.0:128k(u-boot)ro,64k(Config1)ro,64k(Config2)ro,7872k@0x40000(firmware),64k(art)ro
dlan_pro_500_wp_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(Config1)ro,64k(Config2)ro,7680k@0x70000(firmware),64k(art)ro
dlan_pro_1200_ac_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(Config1)ro,64k(Config2)ro,15872k@0x70000(firmware),64k(art)ro
cameo_ap94_mtdlayout=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,6208k(firmware),64k(caldata)ro,1600k(unknown)ro,64k@0x7f0000(caldata_copy)
whrhpg300n_mtdlayout=mtdparts=spi0.0:248k(u-boot)ro,8k(u-boot-env)ro,3712k(firmware),64k(art)ro
wlr8100_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),14080k(rootfs),192k(unknown)ro,64k(art)ro,384k(unknown2)ro,15488k@0x40000(firmware)
wpj344_mtdlayout_16M=mtdparts=spi0.0:192k(u-boot)ro,16128k(firmware),64k(art)ro
+dr344_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
wpj531_mtdlayout_16M=mtdparts=spi0.0:192k(u-boot)ro,16128k(firmware),64k(art)ro
wpj558_mtdlayout_16M=mtdparts=spi0.0:192k(u-boot)ro,16128k(firmware),64k(art)ro
wndap360_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1728k(kernel),6016k(rootfs),64k(nvram)ro,64k(art)ro,7744k@0x50000(firmware)
wnr2000v3_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,3712k(firmware),64k(art)ro
wnr2000v4_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,3776k(firmware),64k(art)ro
r6100_mtdlayout=mtdparts=ar934x-nfc:128k(u-boot)ro,256k(caldata),256k(caldata-backup),512k(config),512k(pot),2048k(kernel),122240k(ubi),25600k@0x1a0000(firmware),2048k(language),3072k(traffic_meter)
+tew823dru_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,15296k(firmware),192k(lang)ro,512k(my-dlink)ro,64k(mac)ro,64k(art)ro
wndr4300_mtdlayout=mtdparts=ar934x-nfc:256k(u-boot)ro,256k(u-boot-env)ro,256k(caldata),512k(pot),2048k(language),512k(config),3072k(traffic_meter),2048k(kernel),23552k(ubi),25600k@0x6c0000(firmware),256k(caldata_backup),-(reserved)
zcn1523h_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6208k(rootfs),1472k(kernel),64k(configure)ro,64k(mfg)ro,64k(art)ro,7680k@0x50000(firmware)
mynet_n600_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
mynet_rext_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,7808k(firmware),64k(nvram)ro,64k(ART)ro
zyx_nbg6716_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(env)ro,64k(RFdata)ro,-(nbu);ar934x-nfc:2048k(zyxel_rfsd),2048k(romd),1024k(header),2048k(kernel),-(ubi)
qihoo_c301_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(devdata),64k(devconf),15744k(firmware),64k(warm_start),64k(action_image_config),64k(radiocfg)ro;spi0.1:15360k(upgrade2),1024k(privatedata)
+yun_mtdlayout_8M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6464k(rootfs),1280k(kernel),64k(nvram),64k(art),7744k@0x50000(firmware)
+yun_mtdlayout_16M=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14656k(rootfs),1280k(kernel),64k(nvram),64k(art),15936k@0x50000(firmware)
define Image/BuildKernel
$(call sysupname,$(1),$(2))
endef
-Image/Build/TPLINKOLD/loader=$(call Image/BuildLoaderAlone,$(1),gz,$(2),0x22000,0)
-
-define Image/Build/TPLINKOLD
- [ -e "$(KDIR)/loader-$(2).gz" ]
- $(call MkuImageOKLI,$(2))
- ( \
- dd if=$(KDIR)/loader-$(2).gz bs=7680 count=1 conv=sync; \
- dd if=$(KDIR_TMP)/vmlinux-$(2).okli conv=sync; \
- ) > $(KDIR_TMP)/kernel-$(2).bin
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION)\
- -X 0x40000 \
- -k $(KDIR_TMP)/kernel-$(2).bin \
- -r $(KDIR)/root.$(1) \
- -o $(call factoryname,$(1),$(2))
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION) -s\
- -X 0x40000 \
- -k $(KDIR_TMP)/kernel-$(2).bin \
- -r $(KDIR)/root.$(1) \
- -o $(call sysupname,$(1),$(2))
-endef
-
-define Image/Build/TPLINKOLD/initramfs
- $(call Image/BuildLoader,$(2),gz,$(3),0x80060000,-initramfs)
- -$(STAGING_DIR_HOST)/bin/mktplinkfw -c \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION) -s\
- -k $(KDIR)/loader-$(2)-initramfs.gz \
- -o $(call imgname,$(1),$(2))-initramfs-uImage.bin
-endef
-
-
-Image/Build/TPLINK/loader=$(call Image/BuildLoaderAlone,$(1),gz,$(2),0x22000,0)
-
-define Image/Build/TPLINK
- [ -e "$(KDIR)/loader-$(2).gz" ]
- $(call MkuImageOKLI,$(2))
- ( \
- dd if=$(KDIR)/loader-$(2).gz bs=7680 count=1 conv=sync; \
- dd if=$(KDIR_TMP)/vmlinux-$(2).okli conv=sync; \
- ) > $(KDIR_TMP)/kernel-$(2).bin
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION)\
- -X 0x40000 \
- -k $(KDIR_TMP)/kernel-$(2).bin \
- -r $(KDIR)/root.$(1) \
- -a $(call rootfs_align,$(1)) -j \
- -o $(call factoryname,$(1),$(2))
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION) -s\
- -X 0x40000 \
- -k $(KDIR_TMP)/kernel-$(2).bin \
- -r $(KDIR)/root.$(1) \
- -a $(call rootfs_align,$(1)) -j \
- -o $(call sysupname,$(1),$(2))
-endef
-
-define Image/Build/TPLINK/initramfs
- $(call Image/BuildLoader,$(2),gz,$(3),0x80060000,-initramfs)
- -$(STAGING_DIR_HOST)/bin/mktplinkfw -c \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION) -s\
- -k $(KDIR)/loader-$(2)-initramfs.gz \
- -o $(call imgname,$(1),$(2))-uImage.bin
-endef
-
-
-Image/Build/TPLINK-LZMA/buildkernel=$(call PatchKernelLzma,$(2),$(3))
-
-define Image/Build/TPLINK-LZMA
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION) $(7) \
- -X 0x40000 \
- -k $(KDIR_TMP)/vmlinux-$(2).bin.lzma \
- -r $(KDIR)/root.$(1) \
- -a $(call rootfs_align,$(1)) -j \
- -o $(call factoryname,$(1),$(2))
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION) $(7) -s \
- -X 0x40000 \
- -k $(KDIR_TMP)/vmlinux-$(2).bin.lzma \
- -r $(KDIR)/root.$(1) \
- -a $(call rootfs_align,$(1)) -j \
- -o $(call sysupname,$(1),$(2))
-endef
-
-define Image/Build/TPLINK-LZMA/initramfs
- $(call PatchKernelLzma,$(2),$(3),,-initramfs)
- -$(STAGING_DIR_HOST)/bin/mktplinkfw -c \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -V $(REVISION) $(7) -s \
- -k $(KDIR_TMP)/vmlinux-initramfs-$(2).bin.lzma \
- -o $(call imgname,$(1),$(2))-uImage.bin
-endef
-
-Image/Build/TPLINK-64K/buildkernel=$(call PatchKernelLzma,$(2),$(3))
-
-define Image/Build/TPLINK-64K
- -$(STAGING_DIR_HOST)/bin/mkimage \
- -A mips -O linux -T kernel -a 0x80060000 -C lzma \
- -e 0x80060000 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
- -d $$(KDIR_TMP)/vmlinux-$(2).bin.lzma $(KDIR_TMP)/vmlinux-$(2).bin.lzma.img
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -m 2 -V $(REVISION) $(7) \
- -X 0x20000 \
- -k $(KDIR_TMP)/vmlinux-$(2).bin.lzma.img \
- -r $(KDIR)/root.$(1) \
- -a $(call rootfs_align,$(1)) -j \
- -o $(call factoryname,$(1),$(2))
- -$(STAGING_DIR_HOST)/bin/mktplinkfw \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -m 2 -V $(REVISION) $(7) -s \
- -X 0x20000 \
- -k $(KDIR_TMP)/vmlinux-$(2).bin.lzma.img \
- -r $(KDIR)/root.$(1) \
- -a $(call rootfs_align,$(1)) -j \
- -o $(call sysupname,$(1),$(2))
-endef
-
-define Image/Build/TPLINK-64K/initramfs
- $(call PatchKernelLzma,$(2),$(3),,-initramfs)
- -$(STAGING_DIR_HOST)/bin/mktplinkfw -c \
- -H $(4) -W $(5) -F $(6) -N OpenWrt -m 2 -V $(REVISION) $(7) -s \
- -k $(KDIR_TMP)/vmlinux-initramfs-$(2).bin.lzma.img \
- -o $(call imgname,$(1),$(2))-uImage.bin
-endef
-
-
Image/Build/TPLINK-SAFELOADER/loader = $(call Image/BuildLoaderPatched,$(1),elf,$(2) $(3))
define Image/Build/TPLINK-SAFELOADER
Image/Build/CyberTANLZMA=$(call Image/Build/CyberTAN,$(1),$(2),$(3),$(4),$(5))
+define Build/MerakiNAND
+ -$(STAGING_DIR_HOST)/bin/mkmerakifw \
+ -B $(BOARDNAME) -s \
+ -i $@ \
+ -o $@.new
+ @mv $@.new $@
+endef
+
Image/Build/Netgear/initramfs=$(call MkuImageLzma/initramfs,$(2),$(3) $(4),,-M $(5))
define Image/Build/Netgear/buildkernel
endef
endif
+define Device/NBG6616
+ BOARDNAME = NBG6616
+ KERNEL_SIZE = 2048k
+ IMAGE_SIZE = 15323k
+ MTDPARTS = spi0.0:192k(u-boot)ro,64k(env)ro,64k(RFdata)ro,384k(zyxel_rfsd),384k(romd),64k(header),2048k(kernel),13184k(rootfs),15232k@0x120000(firmware)
+ CMDLINE += mem=128M
+ IMAGES := sysupgrade.bin
+ KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 boot/vmlinux.lzma.uImage
+ IMAGE/sysupgrade.bin = append-kernel $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+ # We cannot currently build a factory image. It is the sysupgrade image
+ # prefixed with a header (which is actually written into the MTD device).
+ # The header is 2kiB and is filled with 0xff. The format seems to be:
+ # 2 bytes: 0x0000
+ # 2 bytes: checksum of the data partition (big endian)
+ # 4 bytes: length of the contained image file (big endian)
+ # 32 bytes: Firmware Version string (NUL terminated, 0xff padded)
+ # 2 bytes: 0x0000
+ # 2 bytes: checksum over the header partition (big endian)
+ # 32 bytes: Model (e.g. "NBG6616", NUL termiated, 0xff padded)
+ # rest: 0xff padding
+ #
+ # The checksums are calculated by adding up all bytes and if a 16bit
+ # overflow occurs, one is added and the sum is masked to 16 bit:
+ # csum = csum + databyte; if (csum > 0xffff) { csum += 1; csum &= 0xffff };
+ # Should the file have an odd number of bytes then the byte len-0x800 is
+ # used additionally.
+ # The checksum for the header is calcualted over the first 2048 bytes with
+ # the firmware checksum as the placeholder during calculation.
+ #
+ # The header is padded with 0xff to the erase block size of the device.
+endef
+
+TARGET_DEVICES += NBG6616
define Image/Build/ZyXELNAND/buildkernel
$(eval kernelsize=$(call mtdpartsize,kernel,$(5)))
$(eval $(call BuildTemplate,all,,64k 128k 256k))
ifeq ($(SUBTARGET),generic)
+define Device/c-55
+ BOARDNAME = C-55
+ KERNEL_SIZE = 2048k
+ IMAGE_SIZE = 15872k
+ MTDPARTS = spi0.0:256k(u-boot)ro,128k(u-boot-env)ro,2048k(kernel),13824k(rootfs),13824k(opt)ro,2624k(failsafe)ro,64k(art)ro,15872k@0x60000(firmware)
+ IMAGE/sysupgrade.bin = append-kernel $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+endef
+
+TARGET_DEVICES += c-55
+
$(eval $(call SingleProfile,ALFA,64k,ALFANX,alfa-nx,ALFA-NX,ttyS0,115200,$$(alfa_mtdlayout_8M),1638400,6291456,vmlinux.gz.uImage,pb9x-2.6.31-jffs2))
$(eval $(call SingleProfile,ALFA,64k,HORNETUB,hornet-ub,HORNET-UB,ttyATH0,115200,$$(alfa_mtdlayout_8M),1638400,6291456,kernel_image,rootfs_image))
$(eval $(call SingleProfile,ALFA,64k,TUBE2H8M,tube2h-8M,TUBE2H,ttyATH0,115200,$$(alfa_mtdlayout_8M),1638400,6291456,kernel.image,rootfs.image))
$(eval $(call SingleProfile,AthLzma,64k,AP121_2M,ap121-2M,AP121,ttyATH0,115200,$$(ap121_mtdlayout_2M),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,AP121_4M,ap121-4M,AP121,ttyATH0,115200,$$(ap121_mtdlayout_4M),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,AP121_8M,ap121-8M,AP121,ttyATH0,115200,$$(ap121_mtdlayout_8M),RKuImage))
+$(eval $(call SingleProfile,AthLzma,64k,AP121_16M,ap121-16M,AP121,ttyATH0,115200,$$(ap121_mtdlayout_16M),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,AP121MINI,ap121-mini,AP121-MINI,ttyATH0,115200,$$(ap121_mtdlayout_4M),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,AP132,ap132,AP132,ttyS0,115200,$$(ap132_mtdlayout),KRuImage))
$(eval $(call SingleProfile,AthLzma,64k,AP135,ap135-020,AP135-020,ttyS0,115200,$$(ap135_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,TUBE2H16M,tube2h-16M,TUBE2H,ttyATH0,115200,$$(alfa_mtdlayout_16M),KRuImage,65536))
$(eval $(call SingleProfile,AthLzma,64k,WLR8100,wlr8100,WLR8100,ttyS0,115200,$$(wlr8100_mtdlayout),KRuImage))
$(eval $(call SingleProfile,AthLzma,64k,WPJ344_16M,wpj344-16M,WPJ344,ttyS0,115200,$$(wpj344_mtdlayout_16M),KRuImage,65536))
+$(eval $(call SingleProfile,AthLzma,64k,DR344,dr344,DR344,ttyS0,115200,$$(dr344_mtdlayout),RKuImage))
$(eval $(call SingleProfile,AthLzma,64k,WPJ531_16M,wpj531-16M,WPJ531,ttyS0,115200,$$(wpj531_mtdlayout_16M),KRuImage,65536))
$(eval $(call SingleProfile,AthLzma,64k,WPJ558_16M,wpj558-16M,WPJ558,ttyS0,115200,$$(wpj558_mtdlayout_16M),KRuImage,65536))
+$(eval $(call SingleProfile,AthLzma,64k,YUN_8M,yun-8M,Yun,ttyATH0,250000,$$(yun_mtdlayout_8M),RKuImage))
+$(eval $(call SingleProfile,AthLzma,64k,YUN_16M,yun-16M,Yun,ttyATH0,250000,$$(yun_mtdlayout_16M),RKuImage))
$(eval $(call SingleProfile,Belkin,64k,F9K1115V2,f9k1115v2,F9K1115V2,ttyS0,115200,$$(f9k1115v2_mtdlayout),BR-6679BAC))
$(eval $(call SingleProfile,CameoAP121_8M,64kraw-nojffs,DIR505A1,dir-505-a1,DIR-505-A1,ttyATH0,115200,"HORNET-PACKET-DIR505A1-3",1.99.99,""))
$(eval $(call SingleProfile,CameoAP135,64kraw,DGL5500A1,dgl-5500-a1,DGL-5500-A1,ttyS0,115200,$$(dgl_5500_mtdlayout),"00AP135AR9558-RT-130508-00"))
+$(eval $(call SingleProfile,CameoAP135,64kraw,TEW823DRU,tew-823dru,TEW-823DRU,ttyS0,115200,$$(tew823dru_mtdlayout) mem=256M,"00AP135AR9558-RT-131129-00"))
$(eval $(call SingleProfile,CameoDB120,64kraw,DHP1565A1,dhp-1565-a1,DHP-1565-A1,ttyS0,115200,"00DB120AR9344-RT-101214-00"))
$(eval $(call SingleProfile,CameoDB120,64kraw,DIR825C1,dir-825-c1,DIR-825-C1,ttyS0,115200,"00DB120AR9344-RT-101214-00"))
$(eval $(call SingleProfile,CameoAP94,64kraw,TEW673GRU,tew-673gru,TEW-673GRU,ttyS0,115200,$$(cameo_ap94_mtdlayout),$$(cameo_ap94_mtdlayout_fat),01AP94-AR7161-RT-080619-01,00AP94-AR7161-RT-080619-01))
$(eval $(call SingleProfile,CameoAP94,64kraw,DLRTDEV01,dlrtdev01,DIR-825-B1,ttyS0,115200,$$(dlrtdev_mtdlayout),$$(dlrtdev_mtdlayout_fat),01AP94-AR7161-RT-080619-00,00AP94-AR7161-RT-080619-00))
-$(eval $(call SingleProfile,dLANLzma,64k,dLAN_pro_500_wp,dlan-pro-500-wp,dLAN-pro-500-wp,ttyS0,115200,$$(dlan_pro_500_wp_mtdlayout) mem=128M,KRuImage,64k))
-$(eval $(call SingleProfile,dLANLzma,64k,dLAN_pro_1200_ac,dlan-pro-1200-ac,dLAN-pro-1200-ac,ttyS0,115200,$$(dlan_pro_1200_ac_mtdlayout) mem=128M,KRuImage,64k))
+$(eval $(call SingleProfile,dLANLzma,64k,dLAN_Hotspot,dlan-hotspot,dLAN-Hotspot,ttyATH0,115200,$$(dlan_hotspot_mtdlayout) mem=64M,KRuImage,65536))
+$(eval $(call SingleProfile,dLANLzma,64k,dLAN_pro_500_wp,dlan-pro-500-wp,dLAN-pro-500-wp,ttyS0,115200,$$(dlan_pro_500_wp_mtdlayout) mem=128M,KRuImage,65536))
+$(eval $(call SingleProfile,dLANLzma,64k,dLAN_pro_1200_ac,dlan-pro-1200-ac,dLAN-pro-1200-ac,ttyS0,115200,$$(dlan_pro_1200_ac_mtdlayout) mem=128M,KRuImage,65536))
$(eval $(call SingleProfile,EnGenius,64k,ESR900,esr900,ESR900,ttyS0,115200,$$(esr900_mtdlayout),KRuImage,,0x4e))
$(eval $(call SingleProfile,EnGenius,64k,ESR1750,esr1750,ESR1750,ttyS0,115200,$$(esr1750_mtdlayout),KRuImage,,0x61))
$(eval $(call SingleProfile,Senao,squashfs-only,EAP300V2,eap300v2,EAP300V2,ttyS0,115200,$$(eap300v2_mtdlayout)))
-$(eval $(call SingleProfile,TPLINKOLD,squashfs-only,TLWR841NV15,tl-wr841nd-v1.5,TL-WR841N-v1.5,ttyS0,115200,0x08410002,2,4M))
-
-$(eval $(call SingleProfile,TPLINK,64kraw,RNXN360RT,rnx-n360rt,TL-WR941ND,ttyS0,115200,0x09410002,0x00420001,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLMR3220V1,tl-mr3220-v1,TL-MR3220,ttyS0,115200,0x32200001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLMR3420V1,tl-mr3420-v1,TL-MR3420,ttyS0,115200,0x34200001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWA701NV1,tl-wa701n-v1,TL-WA901ND,ttyS0,115200,0x07010001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWA730REV1,tl-wa730rev1,TL-WA901ND,ttyS0,115200,0x07300001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWA7510NV1,tl-wa7510n,TL-WA7510N,ttyS0,115200,0x75100001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWA801NV1,tl-wa801nd-v1,TL-WA901ND,ttyS0,115200,0x08010001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWA830RV1,tl-wa830re-v1,TL-WA901ND,ttyS0,115200,0x08300010,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWA901NV1,tl-wa901nd-v1,TL-WA901ND,ttyS0,115200,0x09010001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWA901NV2,tl-wa901nd-v2,TL-WA901ND-v2,ttyS0,115200,0x09010002,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR740NV1,tl-wr740n-v1,TL-WR741ND,ttyS0,115200,0x07400001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR740NV3,tl-wr740n-v3,TL-WR741ND,ttyS0,115200,0x07400003,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR743NV1,tl-wr743nd-v1,TL-WR741ND,ttyS0,115200,0x07430001,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR841NV3,tl-wr841nd-v3,TL-WR941ND,ttyS0,115200,0x08410003,3,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR841NV5,tl-wr841nd-v5,TL-WR741ND,ttyS0,115200,0x08410005,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR841NV7,tl-wr841nd-v7,TL-WR841N-v7,ttyS0,115200,0x08410007,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR842V1,tl-wr842n-v1,TL-MR3420,ttyS0,115200,0x08420001,1,8M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR941NV2,tl-wr941nd-v2,TL-WR941ND,ttyS0,115200,0x09410002,2,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR941NV3,tl-wr941nd-v3,TL-WR941ND,ttyS0,115200,0x09410002,2,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR941NV4,tl-wr941nd-v4,TL-WR741ND,ttyS0,115200,0x09410004,1,4M))
-$(eval $(call SingleProfile,TPLINK,64kraw,TLWR1043V1,tl-wr1043nd-v1,TL-WR1043ND,ttyS0,115200,0x10430001,1,8M))
-
-$(eval $(call SingleProfile,TPLINK-64K,64kraw,TLWDR6500V2,tl-wdr6500-v2,TL-WDR6500-v2,ttyS0,115200,0x65000002,1,8Mlzma))
-
$(eval $(call SingleProfile,TPLINK-SAFELOADER,64kraw,CPE510,cpe210-220-510-520,CPE510,ttyS0,115200,$$(cpe510_mtdlayout),CPE510))
$(eval $(call SingleProfile,WHRHPG300N,64kraw,WHRG301N,whr-g301n,WHR-G301N,ttyS0,115200,$$(whrhpg300n_mtdlayout),WHR-G301N))
$(eval $(call SingleProfile,ZyXEL,64k,NBG_460N_550N_550NH,nbg460n_550n_550nh,NBG460N,ttyS0,115200,NBG-460N))
-$(eval $(call MultiProfile,AP121,AP121_2M AP121_4M AP121_8M))
+$(eval $(call MultiProfile,AP121,AP121_2M AP121_4M AP121_8M AP121_16M))
$(eval $(call MultiProfile,AP136,AP136_010 AP136_020))
$(eval $(call MultiProfile,AP143,AP143_8M AP143_16M))
$(eval $(call MultiProfile,AP147,AP147_010))
$(eval $(call MultiProfile,EWDORIN, EWDORINAP EWDORINRT EWDORIN16M))
$(eval $(call MultiProfile,OPENMESH,OM2P OM5P MR600 MR900 MR1750))
$(eval $(call MultiProfile,TEW652BRP,TEW652BRP_FW TEW652BRP_RECOVERY))
-$(eval $(call MultiProfile,TLMR3220,TLMR3220V1))
-$(eval $(call MultiProfile,TLMR3420,TLMR3420V1))
-$(eval $(call MultiProfile,TLWA701,TLWA701NV1))
-$(eval $(call MultiProfile,TLWA730RE,TLWA730REV1))
-$(eval $(call MultiProfile,TLWA801,TLWA801NV1))
-$(eval $(call MultiProfile,TLWA830,TLWA830RV1))
-$(eval $(call MultiProfile,TLWA901,TLWA901NV1 TLWA901NV2))
-$(eval $(call MultiProfile,TLWA7510,TLWA7510NV1))
-$(eval $(call MultiProfile,TLWR740,TLWR740NV1 TLWR740NV3))
-$(eval $(call MultiProfile,TLWR743,TLWR743NV1))
-$(eval $(call MultiProfile,TLWR841,TLWR841NV15 TLWR841NV3 TLWR841NV5 TLWR841NV7))
-$(eval $(call MultiProfile,TLWR842,TLWR842V1))
-$(eval $(call MultiProfile,TLWR941,TLWR941NV2 TLWR941NV3 TLWR941NV4))
-$(eval $(call MultiProfile,TLWR1043,TLWR1043V1))
$(eval $(call MultiProfile,TUBE2H,TUBE2H8M TUBE2H16M))
$(eval $(call MultiProfile,WNR612V2,REALWNR612V2 N150R))
$(eval $(call MultiProfile,WNR1000V2,REALWNR1000V2 WNR1000V2_VC))
$(eval $(call MultiProfile,WPJ344,WPJ344_16M))
$(eval $(call MultiProfile,WPJ531,WPJ531_16M))
$(eval $(call MultiProfile,WPJ558,WPJ558_16M))
+$(eval $(call MultiProfile,Yun,YUN_16M YUN_8M))
$(eval $(call MultiProfile,Minimal,$(SINGLE_PROFILES)))
$(eval $(call MultiProfile,Madwifi,EAP7660D WP543))
endif # ifeq ($(SUBTARGET),generic)
ifeq ($(SUBTARGET),nand)
+
+define Device/mr18
+ BOARDNAME = MR18
+ BLOCKSIZE := 64k
+ CONSOLE = ttyS0,115200
+ MTDPARTS = ar934x-nfc:512k(nandloader)ro,8M(kernel),8M(recovery),113664k(ubi),128k@130944k(odm-caldata)ro
+ IMAGES := sysupgrade.tar
+ KERNEL := kernel-bin | patch-cmdline | MerakiNAND
+ KERNEL_INITRAMFS := kernel-bin | patch-cmdline | MerakiNAND
+ IMAGE/sysupgrade.tar := sysupgrade-nand
+endef
+TARGET_DEVICES += mr18
+
$(eval $(call SingleProfile,NetgearNAND,64k,WNDR3700V4,wndr3700v4,WNDR3700_V4,ttyS0,115200,$$(wndr4300_mtdlayout),0x33373033,WNDR3700v4,"",-H 29763948+128+128,wndr4300))
$(eval $(call SingleProfile,NetgearNAND,64k,WNDR4300V1,wndr4300,WNDR4300,ttyS0,115200,$$(wndr4300_mtdlayout),0x33373033,WNDR4300,"",-H 29763948+0+128+128+2x2+3x3,wndr4300))
$(eval $(call SingleProfile,NetgearNAND,64k,R6100,r6100,R6100,ttyS0,115200,$$(r6100_mtdlayout),0x36303030,R6100,"",-H 29764434+0+128+128+2x2+2x2,wndr4300))