+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/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade
+ IMAGE/factory.bin := append-rootfs | mktplinkfw factory
+endef
+
+define Device/tplink-nolzma
+$(Device/tplink)
+ LOADER_FLASH_OFFS := 0x22000
+ COMPILE := loader-$(1).gz
+ COMPILE/loader-$(1).gz := loader-okli-compile
+ KERNEL := copy-file $(KDIR)/vmlinux.bin.lzma | uImage lzma -M 0x4f4b4c49 | loader-okli $(1)
+ KERNEL_INITRAMFS := copy-file $(KDIR)/vmlinux-initramfs.bin.lzma | loader-kernel | mktplinkfw-initramfs
+endef
+
+define Device/tplink-4m
+$(Device/tplink-nolzma)
+ TPLINK_FLASHLAYOUT := 4M
+ IMAGE_SIZE := 3904k
+endef
+
+define Device/tplink-8m
+$(Device/tplink-nolzma)
+ TPLINK_FLASHLAYOUT := 8M
+ IMAGE_SIZE := 7936k
+endef
+
+define Device/tplink-4mlzma
+$(Device/tplink)
+ TPLINK_FLASHLAYOUT := 4Mlzma
+ IMAGE_SIZE := 3904k
+endef
+
+define Device/tplink-8mlzma
+$(Device/tplink)
+ TPLINK_FLASHLAYOUT := 8Mlzma
+ IMAGE_SIZE := 7936k
+endef
+
+define Device/tplink-16mlzma
+$(Device/tplink)
+ TPLINK_FLASHLAYOUT := 16Mlzma
+ IMAGE_SIZE := 15872k
+endef
+
+define Device/tl-wdr4300-v1
+$(Device/tplink-8mlzma)
+ BOARDNAME = TL-WDR4300
+ DEVICE_PROFILE = TLWDR4300
+ TPLINK_HWID := 0x43000001
+endef
+
+define Device/tl-wdr3500-v1
+$(Device/tl-wdr4300-v1)
+ BOARDNAME = TL-WDR3500
+ TPLINK_HWID := 0x35000001
+endef
+
+define Device/tl-wdr3600-v1
+$(Device/tl-wdr4300-v1)
+ TPLINK_HWID := 0x36000001
+endef
+
+define Device/tl-wdr4300-v1-il
+$(Device/tl-wdr4300-v1)
+ TPLINK_HWID := 0x43008001
+endef
+
+define Device/tl-wdr4310-v1
+$(Device/tl-wdr4300-v1)
+ TPLINK_HWID := 0x43100001
+endef
+
+define Device/mw4530r-v1
+$(Device/tl-wdr4300-v1)
+ TPLINK_HWID := 0x45300001
+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-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-v1
+ $(Device/tplink-16mlzma)
+ BOARDNAME := ARCHER-C5
+ DEVICE_PROFILE := ARCHERC7
+ TPLINK_HWID := 0xc5000001
+endef
+
+define Device/archer-c7-v1
+ $(Device/tplink-8mlzma)
+ BOARDNAME := ARCHER-C7
+ DEVICE_PROFILE := ARCHERC7
+ TPLINK_HWID := 0x75000001
+endef
+
+define Device/archer-c7-v2
+ $(Device/tplink-16mlzma)
+ BOARDNAME := ARCHER-C7
+ DEVICE_PROFILE := ARCHERC7
+ TPLINK_HWID := 0xc7000002
+endef
+
+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/antminer-s1
+ $(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 := ANTMINERS3
+ TPLINK_HWID := 0x04440301
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/el-m150
+ $(Device/tplink-8mlzma)
+ BOARDNAME := EL-M150
+ DEVICE_PROFILE := ELM150
+ TPLINK_HWID := 0x01500101
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/el-mini
+ $(Device/tplink-8mlzma)
+ BOARDNAME := EL-MINI
+ DEVICE_PROFILE := ELMINI
+ TPLINK_HWID := 0x01530001
+ CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += antminer-s1 antminer-s3 el-m150 el-mini
+
+define Device/gl-inet-6408A-v1
+ $(Device/tplink-8mlzma)
+ BOARDNAME := GL-INET
+ DEVICE_PROFILE := GLINET
+ TPLINK_HWID := 0x08000001
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/gl-inet-6416A-v1
+ $(Device/tplink-16mlzma)
+ BOARDNAME := GL-INET
+ DEVICE_PROFILE := GLINET
+ TPLINK_HWID := 0x08000001
+ CONSOLE := ttyATH0,115200
+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
+ DEVICE_PROFILE := MAC1200R
+ TPLINK_HWID := 0x12000001
+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
+ DEVICE_PROFILE := OMEGA
+ TPLINK_HWID := 0x04700001
+ CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += onion-omega
+
+define Device/tl-mr10u-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR10U
+ DEVICE_PROFILE := TLMR10U
+ TPLINK_HWID := 0x00100101
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-mr11u-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR11U
+ DEVICE_PROFILE := TLMR11U
+ TPLINK_HWID := 0x00110101
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-mr11u-v2
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR11U
+ DEVICE_PROFILE := TLMR11U
+ TPLINK_HWID := 0x00110102
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-mr12u-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR13U
+ DEVICE_PROFILE := TLMR12U
+ TPLINK_HWID := 0x00120101
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-mr13u-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR13U
+ DEVICE_PROFILE := TLMR13U
+ TPLINK_HWID := 0x00130101
+ CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += tl-mr10u-v1 tl-mr11u-v1 tl-mr11u-v2 tl-mr12u-v1 tl-mr13u-v1
+
+define Device/tl-mr3020-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR3020
+ DEVICE_PROFILE := TLMR3020
+ TPLINK_HWID := 0x30200001
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-mr3040-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR3040
+ DEVICE_PROFILE := TLMR3040
+ TPLINK_HWID := 0x30400001
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-mr3040-v2
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-MR3040-v2
+ DEVICE_PROFILE := TLMR3040
+ TPLINK_HWID := 0x30400002
+ 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
+ DEVICE_PROFILE := TLMR3220
+ TPLINK_HWID := 0x32200002
+ 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-v1 tl-mr3220-v2 tl-mr3420-v1 tl-mr3420-v2
+
+define Device/tl-wr703n-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR703N
+ DEVICE_PROFILE := TLWR703
+ TPLINK_HWID := 0x07030101
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-wr710n-v1
+ $(Device/tplink-8mlzma)
+ BOARDNAME := TL-WR710N
+ DEVICE_PROFILE := TLWR710
+ TPLINK_HWID := 0x07100001
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-wr710n-v2
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR710N
+ DEVICE_PROFILE := TLWR710
+ TPLINK_HWID := 0x07100002
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-wr720n-v3
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR720N-v3
+ DEVICE_PROFILE := TLWR720
+ TPLINK_HWID := 0x07200103
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-wr720n-v4
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR720N-v3
+ DEVICE_PROFILE := TLWR720
+ TPLINK_HWID := 0x07200104
+ CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += tl-wr703n-v1 tl-wr710n-v1 tl-wr710n-v2 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)
+ BOARDNAME := TL-WR741ND-v4
+ DEVICE_PROFILE := TLWR740
+ TPLINK_HWID := 0x07400004
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-wr740n-v5
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR741ND-v4
+ DEVICE_PROFILE := TLWR740
+ TPLINK_HWID := 0x07400005
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-wr741nd-v1
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR741ND
+ DEVICE_PROFILE := TLWR741
+ TPLINK_HWID := 0x07410001
+endef
+
+define Device/tl-wr741nd-v2
+ $(Device/tplink-4m)
+ BOARDNAME := TL-WR741ND
+ DEVICE_PROFILE := TLWR741
+ TPLINK_HWID := 0x07410001
+endef
+
+define Device/tl-wr741nd-v4
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR741ND-v4
+ DEVICE_PROFILE := TLWR741
+ TPLINK_HWID := 0x07410004
+ CONSOLE := ttyATH0,115200
+endef
+
+define Device/tl-wr741nd-v5
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR741ND-v4
+ DEVICE_PROFILE := TLWR741
+ TPLINK_HWID := 0x07400005
+ 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
+ DEVICE_PROFILE := TLWR743
+ TPLINK_HWID := 0x07430002
+ CONSOLE := ttyATH0,115200
+endef
+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)
+ BOARDNAME := TL-WR841N-v8
+ DEVICE_PROFILE := TLWR841
+ TPLINK_HWID := 0x08410008
+endef
+
+define Device/tl-wr841n-v9
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR841N-v9
+ DEVICE_PROFILE := TLWR841
+ 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 := TLWR842
+ TPLINK_HWID := 0x8420002
+endef
+
+define Device/tl-wr843nd-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR841N-v8
+ DEVICE_PROFILE := TLWR843
+ TPLINK_HWID := 0x08430001
+endef
+
+define Device/tl-wr847n-v8
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR841N-v8
+ DEVICE_PROFILE := TLWR841
+ TPLINK_HWID := 0x08470008
+endef
+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)
+ BOARDNAME := TL-WR941ND-v5
+ DEVICE_PROFILE := TLWR941
+ TPLINK_HWID := 0x09410005
+endef
+
+# Chinese version (unlike European) is similar to the TL-WDR3500
+define Device/tl-wr941nd-v6-cn
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WDR3500
+ DEVICE_PROFILE := TLWR941
+ TPLINK_HWID := 0x09410006
+endef
+TARGET_DEVICES += tl-wr941nd-v2 tl-wr941nd-v3 tl-wr941nd-v4 tl-wr941nd-v5 tl-wr941nd-v6-cn
+
+define Device/tl-wr1041n-v2
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WR1041N-v2
+ DEVICE_PROFILE := TLWR1041
+ TPLINK_HWID := 0x10410002
+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-v1 tl-wr1043nd-v2
+
+define Device/tl-wr2543-v1
+ $(Device/tplink-8mlzma)
+ BOARDNAME := TL-WR2543N
+ DEVICE_PROFILE := TLWR2543
+ TPLINK_HWID := 0x25430001
+ IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade "-v 3.13.99"
+ IMAGE/factory.bin := append-rootfs | mktplinkfw factory "-v 3.13.99"
+endef
+TARGET_DEVICES += tl-wr2543-v1
+
+define Device/tl-wdr4900-v2
+ $(Device/tplink-8mlzma)
+ BOARDNAME := TL-WDR4900-v2
+ DEVICE_PROFILE := TLWDR4900V2
+ TPLINK_HWID := 0x49000002
+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
+ DEVICE_PROFILE := TLWA701
+ TPLINK_HWID := 0x07010002
+ 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
+
+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)
+ BOARDNAME := TL-WA801ND-v2
+ DEVICE_PROFILE := TLWA801
+ 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 := TLWA830
+ TPLINK_HWID := 0x08300002
+endef
+
+define Device/tl-wa850re-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WA850RE
+ DEVICE_PROFILE := TLWA850
+ TPLINK_HWID := 0x08500001
+endef
+
+define Device/tl-wa860re-v1
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WA860RE
+ DEVICE_PROFILE := TLWA860
+ TPLINK_HWID := 0x08600001
+endef
+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)
+ BOARDNAME := TL-WA901ND-v3
+ DEVICE_PROFILE := TLWA901
+ TPLINK_HWID := 0x09010003
+endef
+TARGET_DEVICES += tl-wa901nd-v1 tl-wa901nd-v2 tl-wa901nd-v3
+
+define Device/tl-wa7210n-v2
+ $(Device/tplink-4mlzma)
+ BOARDNAME := TL-WA7210N-v2
+ DEVICE_PROFILE := TLWA7210
+ TPLINK_HWID := 0x72100002
+ CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += tl-wa7210n-v2
+
+define Device/smart-300
+ $(Device/tplink-8mlzma)
+ BOARDNAME := SMART-300
+ DEVICE_PROFILE := SMART-300
+ TPLINK_HWID := 0x93410001
+endef
+TARGET_DEVICES += smart-300
+
+define Device/oolite
+ $(Device/tplink-16mlzma)
+ BOARDNAME := GS-OOLITE
+ DEVICE_PROFILE := OOLITE
+ TPLINK_HWID := 0x3C000101
+ CONSOLE := ttyATH0,115200
+endef
+TARGET_DEVICES += oolite
+
+# UBNT_BOARD e.g. one of (XS2, XS5, RS, XM)
+# UBNT_TYPE e.g. one of (BZ, XM, XW)
+# UBNT_CHIP e.g. one of (ar7240, ar933x, ar934x)
+define Device/ubnt-xm
+ DEVICE_PROFILE := UBNT
+ IMAGE_SIZE := 7552k
+ MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7552k(firmware),256k(cfg)ro,64k(EEPROM)ro
+ UBNT_TYPE := XM
+ UBNT_BOARD := XM
+ UBNT_CHIP := ar7240
+ IMAGES := sysupgrade.bin factory.bin
+ IMAGE/factory.bin = $$(IMAGE/sysupgrade.bin) | mkubntimage-split
+ IMAGE/sysupgrade.bin = append-kernel $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+endef
+
+define Device/ubnt-xw
+ DEVICE_PROFILE := UBNT
+ IMAGE_SIZE := 7552k
+ MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7552k(firmware),256k(cfg)ro,64k(EEPROM)ro
+ UBNT_TYPE := XW
+ UBNT_BOARD := XM
+ UBNT_CHIP := ar934x
+ IMAGES := sysupgrade.bin factory.bin
+ IMAGE/factory.bin = $$(IMAGE/sysupgrade.bin) | mkubntimage-split
+ IMAGE/sysupgrade.bin = append-kernel $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+endef
+
+define Device/ubnt-bz
+ DEVICE_PROFILE := UBNT
+ IMAGE_SIZE := 7552k
+ MTDPARTS = spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7552k(firmware),256k(cfg)ro,64k(EEPROM)ro
+ UBNT_TYPE := BZ
+ UBNT_BOARD := XM
+ UBNT_CHIP := ar934x
+ IMAGES := sysupgrade.bin factory.bin
+ IMAGE/factory.bin = $$(IMAGE/sysupgrade.bin) | mkubntimage-split
+ IMAGE/sysupgrade.bin = append-kernel $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+endef
+
+define Device/rw2458n
+ $(Device/ubnt-xm)
+ BOARDNAME := RW2458N
+endef
+
+define Device/ubnt-airrouter
+ $(Device/ubnt-xm)
+ BOARDNAME := UBNT-AR
+endef
+
+define Device/ubnt-bullet-m
+ $(Device/ubnt-xm)
+ BOARDNAME := UBNT-BM
+endef
+
+define Device/ubnt-rocket-m
+ $(Device/ubnt-xm)
+ BOARDNAME := UBNT-RM
+endef
+
+define Device/ubnt-nano-m
+ $(Device/ubnt-xm)
+ BOARDNAME := UBNT-NM
+endef
+TARGET_DEVICES += rw2458n ubnt-airrouter ubnt-bullet-m ubnt-rocket-m ubnt-nano-m
+
+define Device/ubnt-unifi
+ $(Device/ubnt-bz)
+ BOARDNAME := UBNT-UF
+ DEVICE_PROFILE := UBNT UBNTUNIFI
+endef
+
+define Device/ubnt-unifi-outdoor
+ $(Device/ubnt-bz)
+ BOARDNAME := UBNT-U20
+ DEVICE_PROFILE := UBNT UBNTUNIFIOUTDOOR
+endef
+TARGET_DEVICES += ubnt-unifi ubnt-unifi-outdoor
+
+define Device/ubnt-nano-m-xw
+ $(Device/ubnt-xw)
+ BOARDNAME := UBNT-NM-XW
+endef
+
+define Device/ubnt-loco-m-xw
+ $(Device/ubnt-xw)
+ BOARDNAME := UBNT-LOCO-XW
+endef
+
+define Device/ubnt-rocket-m-xw
+ $(Device/ubnt-xw)
+ BOARDNAME := UBNT-RM-XW
+endef
+
+define Device/ubnt-rocket-m-ti
+ $(Device/ubnt-xw)
+ BOARDNAME := UBNT-RM-TI
+ UBNT_TYPE := TI
+ UBNT_BOARD := XM
+endef
+TARGET_DEVICES += ubnt-nano-m-xw ubnt-loco-m-xw ubnt-rocket-m-xw ubnt-rocket-m-ti
+
+define Device/ubnt-air-gateway
+ $(Device/ubnt-xm)
+ BOARDNAME := UBNT-AGW
+ UBNT_BOARD := XM
+ UBNT_TYPE := AirGW
+ UBNT_CHIP := ar933x
+ CONSOLE = ttyATH0,115200
+endef
+TARGET_DEVICES += ubnt-air-gateway
+
+define Device/ubnt-air-gateway-pro
+ $(Device/ubnt-xm)
+ BOARDNAME := UBNT-AGWP
+ UBNT_TYPE := AirGWP
+ UBNT_CHIP := ar934x
+ CONSOLE = ttyS0,115200
+endef
+TARGET_DEVICES += ubnt-air-gateway-pro
+
+define Device/ubdev01
+ $(Device/ubnt-xm)
+ MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7488k(firmware),64k(certs),256k(cfg)ro,64k(EEPROM)ro
+ BOARDNAME := UBNT-UF
+ UBNT_BOARD := XM
+ UBNT_TYPE := XM
+ UBNT_CHIP := ar7240
+endef
+
+TARGET_DEVICES += ubdev01
+
+define Device/ubnt-routerstation
+ IMAGE_SIZE := 16128k
+ IMAGES := sysupgrade.bin factory.bin
+ IMAGE/factory.bin = append-rootfs | pad-rootfs | mkubntimage
+ IMAGE/sysupgrade.bin = append-rootfs | pad-rootfs | combined-image | check-size $$$$(IMAGE_SIZE)
+ KERNEL := kernel-bin | patch-cmdline | lzma | pad-to $$(BLOCKSIZE)
+endef
+
+define Device/ubnt-rs
+$(Device/ubnt-routerstation)
+ BOARDNAME := UBNT-RS
+ DEVICE_PROFILE := Madwifi UBNT UBNTRS
+ UBNT_BOARD := RS
+ UBNT_TYPE := RSx
+ UBNT_CHIP := ar7100
+endef
+
+define Device/ubnt-rspro
+$(Device/ubnt-routerstation)
+ BOARDNAME := UBNT-RSPRO
+ DEVICE_PROFILE := Madwifi UBNT UBNTRSPRO
+ UBNT_BOARD := RSPRO
+ UBNT_TYPE := RSPRO
+ UBNT_CHIP := ar7100pro
+endef
+
+define Device/ubnt-ls-sr71
+$(Device/ubnt-routerstation)
+ BOARDNAME := UBNT-LS-SR71
+ DEVICE_PROFILE := Madwifi UBNT
+ UBNT_BOARD := LS-SR71
+ UBNT_TYPE := LS-SR71
+ UBNT_CHIP := ar7100
+endef
+
+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 | jffs2 kernel0
+ IMAGES := sysupgrade.bin factory.bin
+ IMAGE/sysupgrade.bin = append-kernel $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
+ IMAGE/factory.bin = $$(IMAGE/sysupgrade.bin) | mkubntimage2
+endef
+
+define Device/ubnt-unifi-outdoor-plus
+$(Device/ubnt-uap-pro)
+ UBNT_CHIP := ar7240
+ BOARDNAME := UBNT-UOP
+ DEVICE_PROFILE := UBNT
+endef
+
+TARGET_DEVICES += ubnt-uap-pro ubnt-unifi-outdoor-plus
+