build: move seama commands to image-commands.mk
[oweals/openwrt.git] / target / linux / ar71xx / image / generic.mk
1 DEVICE_VARS += DAP_SIGNATURE NETGEAR_BOARD_ID NETGEAR_HW_ID NETGEAR_KERNEL_MAGIC ROOTFS_SIZE
2 DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK
3
4 define Build/alfa-network-rootfs-header
5         mkimage \
6                 -A mips -O linux -T filesystem -C lzma -a 0 -e 0 \
7                 -n 'RootfsImage' -d $@ $@.new
8         @mv $@.new $@
9 endef
10
11 define Build/append-md5sum-bin
12         $(STAGING_DIR_HOST)/bin/mkhash md5 $@ | sed 's/../\\\\x&/g' |\
13                 xargs echo -ne >> $@
14 endef
15
16 define Build/mkwrggimg
17         $(STAGING_DIR_HOST)/bin/mkwrggimg -b \
18                 -i $@ -o $@.imghdr -d /dev/mtdblock/1 \
19                 -m $(BOARDNAME) -s $(DAP_SIGNATURE) \
20                 -v $(VERSION_DIST) -B $(REVISION)
21         mv $@.imghdr $@
22 endef
23
24 define Build/mkdapimg2
25         $(STAGING_DIR_HOST)/bin/mkdapimg2 \
26                 -i $@ -o $@.new \
27                 -s $(DAP_SIGNATURE) \
28                 -v $(VERSION_DIST)-$(firstword $(subst +, ,$(firstword $(subst -, ,$(REVISION))))) \
29                 -r Default \
30                 $(if $(1),-k $(1))
31         mv $@.new $@
32 endef
33
34 define Build/netgear-squashfs
35         rm -rf $@.fs $@.squashfs
36         mkdir -p $@.fs/image
37         cp $@ $@.fs/image/uImage
38         $(STAGING_DIR_HOST)/bin/mksquashfs-lzma \
39                 $@.fs $@.squashfs \
40                 -noappend -root-owned -be -b 65536 \
41                 $(if $(SOURCE_DATE_EPOCH),-fixed-time $(SOURCE_DATE_EPOCH))
42
43         dd if=/dev/zero bs=1k count=1 >> $@.squashfs
44         mkimage \
45                 -A mips -O linux -T filesystem -C none \
46                 -M $(NETGEAR_KERNEL_MAGIC) \
47                 -a 0xbf070000 -e 0xbf070000 \
48                 -n 'MIPS $(VERSION_DIST) Linux-$(LINUX_VERSION)' \
49                 -d $@.squashfs $@
50         rm -rf $@.squashfs $@.fs
51 endef
52
53 define Build/netgear-uImage
54         $(call Build/uImage,$(1) -M $(NETGEAR_KERNEL_MAGIC))
55 endef
56
57 define Build/relocate-kernel
58         rm -rf $@.relocate
59         $(CP) ../../generic/image/relocate $@.relocate
60         $(MAKE) -j1 -C $@.relocate KERNEL_ADDR=$(KERNEL_LOADADDR) CROSS_COMPILE=$(TARGET_CROSS)
61         ( \
62                 dd if=$@.relocate/loader.bin bs=32 conv=sync && \
63                 perl -e '@s = stat("$@"); print pack("N", @s[7])' && \
64                 cat "$@" \
65         ) > "$@.new"
66         mv "$@.new" "$@"
67         rm -rf $@.relocate
68 endef
69
70 define Build/teltonika-fw-fake-checksum
71         # Teltonika U-Boot web based firmware upgrade/recovery routine compares
72         # 16 bytes from md5sum1[16] field in TP-Link v1 header (offset: 76 bytes
73         # from begin of the firmware file) with 16 bytes stored just before
74         # 0xdeadc0de marker. Values are only compared, MD5 sum is not verified.
75         let \
76                 offs="$$(stat -c%s $@) - 20"; \
77                 dd if=$@ bs=1 count=16 skip=76 |\
78                 dd of=$@ bs=1 count=16 seek=$$offs conv=notrunc
79 endef
80
81 define Build/uImageHiWiFi
82         # Field ih_name needs to start with "tw150v1"
83         mkimage -A $(LINUX_KARCH) \
84                 -O linux -T kernel \
85                 -C $(1) -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
86                 -n 'tw150v1 $(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' -d $@ $@.new
87         @mv $@.new $@
88 endef
89
90 define Build/wrgg-pad-rootfs
91         $(STAGING_DIR_HOST)/bin/padjffs2 $(IMAGE_ROOTFS) -c 64 >>$@
92 endef
93
94
95 define Device/ap121f
96   DEVICE_TITLE := ALFA Network AP121F
97   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage -swconfig
98   BOARDNAME := AP121F
99   IMAGE_SIZE := 16064k
100   CONSOLE := ttyATH0,115200
101   MTDPARTS := spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware)
102   SUPPORTED_DEVICES := ap121f
103   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
104         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
105 endef
106 TARGET_DEVICES += ap121f
107
108 define Device/ap531b0
109   DEVICE_TITLE := Rockeetech AP531B0
110   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
111   BOARDNAME := AP531B0
112   IMAGE_SIZE := 16000k
113   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
114 endef
115 TARGET_DEVICES += ap531b0
116
117 define Device/ap90q
118   DEVICE_TITLE := YunCore AP80Q/AP90Q
119   BOARDNAME := AP90Q
120   IMAGE_SIZE := 16000k
121   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
122 endef
123 TARGET_DEVICES += ap90q
124
125 define Device/ap91-5g
126   DEVICE_TITLE := ALFA Network AP91-5G
127   DEVICE_PACKAGES := rssileds -swconfig
128   BOARDNAME := AP91-5G
129   IMAGE_SIZE := 7744k
130   KERNEL_SIZE := 1600k
131   ROOTFS_SIZE := 6144k
132   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),6144k(rootfs),1600k(kernel),64k(config)ro,64k(art)ro,7744k@0x50000(firmware)
133   IMAGES := sysupgrade.bin factory.bin
134   IMAGE/factory.bin := append-rootfs | pad-rootfs |\
135         alfa-network-rootfs-header | append-kernel | check-size $$$$(IMAGE_SIZE)
136   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs |\
137         pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
138 endef
139
140 define Device/arduino-yun
141   DEVICE_TITLE := Arduino Yun
142   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
143   BOARDNAME := Yun
144   IMAGE_SIZE := 15936k
145   CONSOLE := ttyATH0,250000
146   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15936k(firmware),64k(nvram),64k(art)ro
147 endef
148 TARGET_DEVICES += arduino-yun
149
150 define Device/bsb
151   DEVICE_TITLE := Smart Electronics Black Swift board
152   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
153   BOARDNAME := BSB
154   IMAGE_SIZE := 16000k
155   CONSOLE := ttyATH0,115200
156   MTDPARTS := spi0.0:128k(u-boot)ro,64k(u-boot-env)ro,16128k(firmware),64k(art)ro
157 endef
158 TARGET_DEVICES += bsb
159
160 define Device/carambola2
161   DEVICE_TITLE := 8devices Carambola2
162   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
163   BOARDNAME := CARAMBOLA2
164   IMAGE_SIZE := 16000k
165   CONSOLE := ttyATH0,115200
166   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
167 endef
168 TARGET_DEVICES += carambola2
169
170 define Device/cf-e316n-v2
171   DEVICE_TITLE := COMFAST CF-E316N v2
172   DEVICE_PACKAGES := -swconfig -uboot-envtools
173   BOARDNAME := CF-E316N-V2
174   IMAGE_SIZE := 16192k
175   MTDPARTS := spi0.0:64k(u-boot)ro,64k(art)ro,16192k(firmware),64k(art-backup)ro
176 endef
177 TARGET_DEVICES += cf-e316n-v2
178
179 define Device/cf-e320n-v2
180   $(Device/cf-e316n-v2)
181   DEVICE_TITLE := COMFAST CF-E320N v2
182   DEVICE_PACKAGES += kmod-usb-core kmod-usb2
183   BOARDNAME := CF-E320N-V2
184 endef
185 TARGET_DEVICES += cf-e320n-v2
186
187 define Device/cf-e355ac-v1
188   DEVICE_TITLE := COMFAST CF-E355AC v1
189   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct \
190         -swconfig -uboot-envtools
191   BOARDNAME := CF-E355AC-V1
192   IMAGE_SIZE := 16192k
193   MTDPARTS := spi0.0:64k(u-boot)ro,64k(art)ro,16192k(firmware),64k(art-backup)ro
194 endef
195 TARGET_DEVICES += cf-e355ac-v1
196
197 define Device/cf-e355ac-v2
198   $(Device/cf-e355ac-v1)
199   DEVICE_TITLE := COMFAST CF-E355AC v2
200   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca9888-ct \
201         -swconfig -uboot-envtools
202   BOARDNAME := CF-E355AC-V2
203 endef
204 TARGET_DEVICES += cf-e355ac-v2
205
206 define Device/cf-e375ac
207   DEVICE_TITLE := COMFAST CF-E375AC
208   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca9888-ct \
209         -uboot-envtools
210   BOARDNAME := CF-E375AC
211   IMAGE_SIZE := 16000k
212   MTDPARTS := spi0.0:256k(u-boot)ro,64k(art)ro,16000k(firmware),64k(art-backup)ro
213 endef
214 TARGET_DEVICES += cf-e375ac
215
216 define Device/cf-e380ac-v1
217   DEVICE_TITLE := COMFAST CF-E380AC v1
218   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct \
219         -swconfig -uboot-envtools
220   BOARDNAME := CF-E380AC-V1
221   IMAGE_SIZE := 16128k
222   MTDPARTS := spi0.0:128k(u-boot)ro,64k(art)ro,16128k(firmware),64k(art-backup)ro
223 endef
224 TARGET_DEVICES += cf-e380ac-v1
225
226 define Device/cf-e380ac-v2
227   $(Device/cf-e380ac-v1)
228   DEVICE_TITLE := COMFAST CF-E380AC v2
229   BOARDNAME := CF-E380AC-V2
230   IMAGE_SIZE := 16000k
231   MTDPARTS := spi0.0:256k(u-boot)ro,64k(art)ro,16000k(firmware),64k(art-backup)ro
232 endef
233 TARGET_DEVICES += cf-e380ac-v2
234
235 define Device/cf-e385ac
236   DEVICE_TITLE := COMFAST CF-E385AC
237   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca9984-ct \
238         -uboot-envtools
239   BOARDNAME := CF-E385AC
240   IMAGE_SIZE := 16000k
241   MTDPARTS := spi0.0:256k(u-boot)ro,64k(art)ro,16000k(firmware),64k(art-backup)ro
242 endef
243 TARGET_DEVICES += cf-e385ac
244
245 define Device/cf-e520n
246   DEVICE_TITLE := COMFAST CF-E520N
247   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -swconfig -uboot-envtools
248   BOARDNAME := CF-E520N
249   IMAGE_SIZE := 8000k
250   MTDPARTS := spi0.0:64k(u-boot)ro,64k(art)ro,8000k(firmware),64k(art-backup)ro
251 endef
252 TARGET_DEVICES += cf-e520n
253
254 define Device/cf-e530n
255   $(Device/cf-e520n)
256   DEVICE_TITLE := COMFAST CF-E530N
257   BOARDNAME := CF-E530N
258 endef
259 TARGET_DEVICES += cf-e530n
260
261 define Device/cpe505n
262   DEVICE_TITLE := P&W CPE505N
263   BOARDNAME := CPE505N
264   IMAGE_SIZE := 16000k
265   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
266 endef
267 TARGET_DEVICES += cpe505n
268
269 define Device/cpe830
270   $(Device/ap90q)
271   DEVICE_TITLE := YunCore CPE830
272   DEVICE_PACKAGES := rssileds
273   BOARDNAME := CPE830
274 endef
275 TARGET_DEVICES += cpe830
276
277 define Device/cpe870
278   DEVICE_TITLE := YunCore CPE870
279   DEVICE_PACKAGES := rssileds
280   BOARDNAME := CPE870
281   IMAGE_SIZE := 7936k
282   MTDPARTS := spi0.0:64k(u-boot)ro,64k(u-boot-env),7936k(firmware),64k(config)ro,64k(art)ro
283 endef
284 TARGET_DEVICES += cpe870
285
286 define Device/dragino2
287   BOARDNAME := DRAGINO2
288   CONSOLE := ttyATH0,115200
289   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
290   DEVICE_TITLE := Dragino 2 (MS14)
291   IMAGE_SIZE := 16000k
292   MTDPARTS := spi0.0:256k(u-boot)ro,16000k(firmware),64k(config)ro,64k(art)ro
293 endef
294 TARGET_DEVICES += dragino2
295
296 define Device/e1700ac-v2-16M
297   DEVICE_TITLE := Qxwlan E1700AC v2 (16MB flash)
298   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct kmod-usb-core \
299         kmod-usb2 kmod-usb-ledtrig-usbport
300   BOARDNAME := E1700AC-V2
301   SUPPORTED_DEVICES := e1700ac-v2
302   IMAGE_SIZE := 15936k
303   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(pri-data)ro,64k(art)ro,-(firmware)
304   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
305         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
306 endef
307 TARGET_DEVICES += e1700ac-v2-16M
308
309 define Device/e1700ac-v2-8M
310   $(Device/e1700ac-v2-16M)
311   DEVICE_TITLE := Qxwlan E1700AC v2 (8MB flash)
312   IMAGE_SIZE := 7744k
313 endef
314 TARGET_DEVICES += e1700ac-v2-8M
315
316 define Device/e558-v2-16M
317   DEVICE_TITLE := Qxwlan E558 v2 (16MB flash)
318   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -swconfig
319   BOARDNAME := E558-V2
320   SUPPORTED_DEVICES := e558-v2
321   IMAGE_SIZE := 15936k
322   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(pri-data)ro,64k(art),-(firmware)
323   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
324         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
325 endef
326 TARGET_DEVICES += e558-v2-16M
327
328 define Device/e558-v2-8M
329   $(Device/e558-v2-16M)
330   DEVICE_TITLE := Qxwlan E558 v2 (8MB flash)
331   IMAGE_SIZE := 7744k
332 endef
333 TARGET_DEVICES += e558-v2-8M
334
335 define Device/e600g-v2-16M
336   DEVICE_TITLE := Qxwlan E600G v2 (16MB flash)
337   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -swconfig
338   BOARDNAME := E600G-V2
339   SUPPORTED_DEVICES := e600g-v2
340   IMAGE_SIZE := 15936k
341   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(pri-data)ro,64k(art)ro,-(firmware)
342   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
343         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
344 endef
345 TARGET_DEVICES += e600g-v2-16M
346
347 define Device/e600g-v2-8M
348   $(Device/e600g-v2-16M)
349   DEVICE_TITLE := Qxwlan E600G v2 (8MB flash)
350   IMAGE_SIZE := 7744k
351 endef
352 TARGET_DEVICES += e600g-v2-8M
353
354 define Device/e600gac-v2-16M
355   DEVICE_TITLE := Qxwlan E600GAC v2 (16MB flash)
356   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9887-ct kmod-usb-core \
357         kmod-usb2 -swconfig
358   BOARDNAME := E600GAC-V2
359   SUPPORTED_DEVICES := e600gac-v2
360   IMAGE_SIZE := 15936k
361   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(pri-data)ro,64k(art)ro,-(firmware)
362   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
363         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
364 endef
365 TARGET_DEVICES += e600gac-v2-16M
366
367 define Device/e600gac-v2-8M
368   $(Device/e600gac-v2-16M)
369   DEVICE_TITLE := Qxwlan E600GAC v2 (8MB flash)
370   IMAGE_SIZE := 7744k
371 endef
372 TARGET_DEVICES += e600gac-v2-8M
373
374 define Device/e750a-v4-16M
375   DEVICE_TITLE := Qxwlan E750A v4 (16MB flash)
376   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -swconfig
377   BOARDNAME := E750A-V4
378   SUPPORTED_DEVICES := e750a-v4
379   IMAGE_SIZE := 15936k
380   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(pri-data)ro,64k(art),-(firmware)
381   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
382         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
383 endef
384 TARGET_DEVICES += e750a-v4-16M
385
386 define Device/e750a-v4-8M
387   $(Device/e750a-v4-16M)
388   DEVICE_TITLE := Qxwlan E750A v4 (8MB flash)
389   IMAGE_SIZE := 7744k
390 endef
391 TARGET_DEVICES += e750a-v4-8M
392
393 define Device/e750g-v8-16M
394   DEVICE_TITLE := Qxwlan E750G v8 (16MB flash)
395   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -swconfig
396   BOARDNAME := E750G-V8
397   SUPPORTED_DEVICES := e750g-v8
398   IMAGE_SIZE := 15936k
399   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(pri-data)ro,64k(art),-(firmware)
400   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
401         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
402 endef
403 TARGET_DEVICES += e750g-v8-16M
404
405 define Device/e750g-v8-8M
406   $(Device/e750g-v8-16M)
407   DEVICE_TITLE := Qxwlan E750G v8 (8MB flash)
408   IMAGE_SIZE := 7744k
409 endef
410 TARGET_DEVICES += e750g-v8-8M
411
412 define Device/ew-balin
413   DEVICE_TITLE := Embedded Wireless Balin Platform
414   DEVICE_PACKAGES := kmod-usb-core kmod-usb-chipidea
415   BOARDNAME := EW-BALIN
416   IMAGE_SIZE := 16000k
417   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
418 endef
419 TARGET_DEVICES += ew-balin
420
421 define Device/ew-dorin
422   $(Device/ew-balin)
423   DEVICE_TITLE := Embedded Wireless Dorin Platform
424   BOARDNAME := EW-DORIN
425   CONSOLE := ttyATH0,115200
426 endef
427 TARGET_DEVICES += ew-dorin
428
429 define Device/ew-dorin-router
430   $(Device/ew-dorin)
431   DEVICE_TITLE := Embedded Wireless Dorin Router Platform
432   BOARDNAME := EW-DORIN-ROUTER
433 endef
434 TARGET_DEVICES += ew-dorin-router
435
436 define Device/rme-eg200
437   DEVICE_TITLE := eTactica EG-200
438   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ledtrig-oneshot \
439         kmod-usb-serial kmod-usb-serial-ftdi \
440         kmod-usb-storage \
441         kmod-fs-ext4
442   BOARDNAME := RME-EG200
443   IMAGE_SIZE := 16000k
444   CONSOLE := ttyATH0,115200
445   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
446 endef
447 TARGET_DEVICES += rme-eg200
448
449 define Device/weio
450   DEVICE_TITLE := WeIO
451   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
452   BOARDNAME := WEIO
453   IMAGE_SIZE := 16000k
454   CONSOLE := ttyATH0,115200
455   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
456 endef
457 TARGET_DEVICES += weio
458
459 define Device/gl-ar150
460   DEVICE_TITLE := GL.iNet GL-AR150
461   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
462   BOARDNAME := GL-AR150
463   IMAGE_SIZE := 16000k
464   CONSOLE := ttyATH0,115200
465   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
466 endef
467 TARGET_DEVICES += gl-ar150
468
469 define Device/gl-ar300
470   DEVICE_TITLE := GL.iNet GL-AR300
471   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
472   BOARDNAME := GL-AR300
473   IMAGE_SIZE := 16000k
474   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
475 endef
476 TARGET_DEVICES += gl-ar300
477
478 define Device/gl-ar300m
479   DEVICE_TITLE := GL.iNet GL-AR300M
480   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
481   BOARDNAME := GL-AR300M
482   IMAGE_SIZE := 16000k
483   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
484 endef
485 TARGET_DEVICES += gl-ar300m
486
487 define Device/gl-ar750
488   DEVICE_TITLE := GL.iNet GL-AR750
489   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9887-ct kmod-usb-core \
490         kmod-usb2 kmod-usb-storage
491   BOARDNAME := GL-AR750
492   SUPPORTED_DEVICES := gl-ar750
493   IMAGE_SIZE := 16000k
494   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware)
495   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
496         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
497 endef
498 TARGET_DEVICES += gl-ar750
499
500 define Device/gl-ar750s
501   DEVICE_TITLE := GL.iNet GL-AR750S
502   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9887-ct kmod-usb-core \
503         kmod-usb2 kmod-usb-storage
504   BOARDNAME := GL-AR750S
505   SUPPORTED_DEVICES := gl-ar750s
506   IMAGE_SIZE := 16000k
507   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware)
508   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
509         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
510 endef
511 TARGET_DEVICES += gl-ar750s
512
513 define Device/gl-domino
514   DEVICE_TITLE := GL.iNet Domino Pi
515   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
516   BOARDNAME := DOMINO
517   IMAGE_SIZE := 16000k
518   CONSOLE := ttyATH0,115200
519   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
520 endef
521 TARGET_DEVICES += gl-domino
522
523 define Device/gl-mifi
524   DEVICE_TITLE := GL.iNet GL-MiFi
525   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
526   BOARDNAME := GL-MIFI
527   IMAGE_SIZE := 16000k
528   CONSOLE := ttyATH0,115200
529   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
530 endef
531 TARGET_DEVICES += gl-mifi
532
533 define Device/gl-usb150
534   DEVICE_TITLE := GL.iNet GL-USB150
535   DEVICE_PACKAGES := -swconfig
536   BOARDNAME := GL-USB150
537   IMAGE_SIZE := 16000k
538   CONSOLE := ttyATH0,115200
539   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
540   SUPPORTED_DEVICES := gl-usb150
541   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
542         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
543 endef
544 TARGET_DEVICES += gl-usb150
545
546 define Device/lan-turtle
547   $(Device/tplink-16mlzma)
548   DEVICE_TITLE := Hak5 LAN Turtle
549   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage \
550         -kmod-ath9k -swconfig -uboot-envtools -wpad-basic
551   BOARDNAME := LAN-TURTLE
552   DEVICE_PROFILE := LANTURTLE
553   TPLINK_HWID := 0x5348334c
554   CONSOLE := ttyATH0,115200
555   IMAGES := sysupgrade.bin
556 endef
557 TARGET_DEVICES += lan-turtle
558
559 define Device/lima
560   DEVICE_TITLE := 8devices Lima
561   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
562   BOARDNAME := LIMA
563   IMAGE_SIZE := 15616k
564   MTDPARTS := spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,256k(art)ro,-(firmware)
565 endef
566 TARGET_DEVICES += lima
567
568 define Device/mr12
569   DEVICE_TITLE := Meraki MR12
570   DEVICE_PACKAGES := kmod-spi-gpio
571   BOARDNAME := MR12
572   ROOTFS_SIZE := 13440k
573   IMAGE_SIZE := 15680k
574   MTDPARTS := spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,13440k(rootfs),2240k(kernel),64k(mac),128k(art)ro,15680k@0x80000(firmware)
575   IMAGE/kernel.bin := append-kernel
576   IMAGE/rootfs.bin := append-rootfs | pad-rootfs
577   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
578   IMAGES := kernel.bin rootfs.bin sysupgrade.bin
579 endef
580 TARGET_DEVICES += mr12
581
582 define Device/mr16
583   $(Device/mr12)
584   DEVICE_TITLE := Meraki MR16
585   BOARDNAME := MR16
586 endef
587 TARGET_DEVICES += mr16
588
589 define Device/dr342
590   DEVICE_TITLE := Wallys DR342
591   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -swconfig
592   BOARDNAME := DR342
593   IMAGE_SIZE := 16000k
594   MTDPARTS := spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(partition-table)ro,16000k(firmware),64k(art)ro
595 endef
596 TARGET_DEVICES += dr342
597
598 define Device/dr344
599   DEVICE_TITLE := Wallys DR344
600   BOARDNAME := DR344
601   KERNEL_SIZE := 1408k
602   ROOTFS_SIZE := 6336k
603   IMAGE_SIZE := 7744k
604   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6336k(rootfs),1408k(kernel),64k(nvram),64k(art)ro,7744k@0x50000(firmware)
605   IMAGE/sysupgrade.bin := append-rootfs | pad-rootfs | pad-to $$$$(ROOTFS_SIZE) | append-kernel | check-size $$$$(IMAGE_SIZE)
606 endef
607
608 define Device/dr531
609   DEVICE_TITLE := Wallys DR531
610   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
611   BOARDNAME := DR531
612   IMAGE_SIZE := 7808k
613   MTDPARTS := spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(partition-table)ro,7808k(firmware),64k(art)ro
614 endef
615 TARGET_DEVICES += dr531
616
617 define Device/wndr3700
618   DEVICE_TITLE := NETGEAR WNDR3700
619   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport kmod-leds-wndr3700-usb
620   BOARDNAME := WNDR3700
621   NETGEAR_KERNEL_MAGIC := 0x33373030
622   NETGEAR_BOARD_ID := WNDR3700
623   IMAGE_SIZE := 7680k
624   MTDPARTS := spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,7680k(firmware),64k(art)ro
625   IMAGES := sysupgrade.bin factory.img factory-NA.img
626   KERNEL := kernel-bin | patch-cmdline | lzma -d20 | netgear-uImage lzma
627   IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | netgear-squashfs | append-rootfs | pad-rootfs
628   IMAGE/sysupgrade.bin := $$(IMAGE/default) | check-size $$$$(IMAGE_SIZE)
629   IMAGE/factory.img := $$(IMAGE/default) | netgear-dni | check-size $$$$(IMAGE_SIZE)
630   IMAGE/factory-NA.img := $$(IMAGE/default) | netgear-dni NA | check-size $$$$(IMAGE_SIZE)
631 endef
632 TARGET_DEVICES += wndr3700
633
634 define Device/wndr3700v2
635   $(Device/wndr3700)
636   DEVICE_TITLE := NETGEAR WNDR3700 v2
637   NETGEAR_BOARD_ID := WNDR3700v2
638   NETGEAR_KERNEL_MAGIC := 0x33373031
639   NETGEAR_HW_ID := 29763654+16+64
640   IMAGE_SIZE := 15872k
641   MTDPARTS := spi0.0:320k(u-boot)ro,128k(u-boot-env)ro,15872k(firmware),64k(art)ro
642   IMAGES := sysupgrade.bin factory.img
643 endef
644 TARGET_DEVICES += wndr3700v2
645
646 define Device/wndr3800
647   $(Device/wndr3700v2)
648   DEVICE_TITLE := NETGEAR WNDR3800
649   NETGEAR_BOARD_ID := WNDR3800
650   NETGEAR_HW_ID := 29763654+16+128
651 endef
652 TARGET_DEVICES += wndr3800
653
654 define Device/wndr3800ch
655   $(Device/wndr3800)
656   DEVICE_TITLE := NETGEAR WNDR3800 (Ch)
657   NETGEAR_BOARD_ID := WNDR3800CH
658 endef
659 TARGET_DEVICES += wndr3800ch
660
661 define Device/wndrmac
662   $(Device/wndr3700v2)
663   DEVICE_TITLE := NETGEAR WNDRMAC
664   NETGEAR_BOARD_ID := WNDRMAC
665 endef
666 TARGET_DEVICES += wndrmac
667
668 define Device/wndrmacv2
669   $(Device/wndr3800)
670   DEVICE_TITLE := NETGEAR WNDRMAC v2
671   NETGEAR_BOARD_ID := WNDRMACv2
672 endef
673 TARGET_DEVICES += wndrmacv2
674
675 define Device/cap324
676   DEVICE_TITLE := PowerCloud Systems CAP324
677   BOARDNAME := CAP324
678   DEVICE_PROFILE := CAP324
679   IMAGE_SIZE := 16000k
680   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
681 endef
682 TARGET_DEVICES += cap324
683
684 define Device/cr3000
685   DEVICE_TITLE := PowerCloud Systems CR3000
686   BOARDNAME := CR3000
687   DEVICE_PROFILE := CR3000
688   IMAGE_SIZE := 7808k
689   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7808k(firmware),64k(art)ro
690 endef
691 TARGET_DEVICES += cr3000
692
693 define Device/cr5000
694   DEVICE_TITLE := PowerCloud Systems CR5000
695   DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb-core
696   BOARDNAME := CR5000
697   DEVICE_PROFILE := CR5000
698   IMAGE_SIZE := 7808k
699   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7808k(firmware),64k(art)ro
700 endef
701 TARGET_DEVICES += cr5000
702
703 define Device/packet-squirrel
704   $(Device/tplink-16mlzma)
705   DEVICE_TITLE := Hak5 Packet Squirrel
706   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 \
707         -kmod-ath9k -swconfig -uboot-envtools -wpad-basic
708   BOARDNAME := PACKET-SQUIRREL
709   DEVICE_PROFILE := PACKETSQUIRREL
710   TPLINK_HWID := 0x5351524c
711   CONSOLE := ttyATH0,115200
712   IMAGES := sysupgrade.bin
713 endef
714 TARGET_DEVICES += packet-squirrel
715
716 define Device/pqi-air-pen
717   DEVICE_TITLE := PQI Air Pen
718   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
719   BOARDNAME := PQI-AIR-PEN
720   IMAGE_SIZE := 7744k
721   CONSOLE := ttyATH0,115200
722   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(art)ro,64k(NVRAM)ro,7680k(firmware),64k(CONF)
723 endef
724 TARGET_DEVICES += pqi-air-pen
725
726 define Device/antminer-s1
727   $(Device/tplink-8mlzma)
728   DEVICE_TITLE := Antminer-S1
729   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-crypto-manager kmod-i2c-gpio-custom kmod-usb-hid
730   BOARDNAME := ANTMINER-S1
731   DEVICE_PROFILE := ANTMINERS1
732   TPLINK_HWID := 0x04440101
733   CONSOLE := ttyATH0,115200
734 endef
735 TARGET_DEVICES += antminer-s1
736
737 define Device/antminer-s3
738   $(Device/tplink-8mlzma)
739   DEVICE_TITLE := Antminer-S3
740   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-crypto-manager kmod-i2c-gpio-custom kmod-usb-hid
741   BOARDNAME := ANTMINER-S3
742   DEVICE_PROFILE := ANTMINERS3
743   TPLINK_HWID := 0x04440301
744   CONSOLE := ttyATH0,115200
745 endef
746 TARGET_DEVICES += antminer-s3
747
748 define Device/antrouter-r1
749   $(Device/tplink-8mlzma)
750   DEVICE_TITLE := Antrouter-R1
751   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
752   BOARDNAME := ANTROUTER-R1
753   DEVICE_PROFILE := ANTROUTERR1
754   TPLINK_HWID := 0x44440101
755   CONSOLE := ttyATH0,115200
756 endef
757 TARGET_DEVICES += antrouter-r1
758
759 define Device/el-m150
760   $(Device/tplink-8mlzma)
761   DEVICE_TITLE := EasyLink EL-M150
762   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
763   BOARDNAME := EL-M150
764   DEVICE_PROFILE := ELM150
765   TPLINK_HWID := 0x01500101
766   CONSOLE := ttyATH0,115200
767 endef
768 TARGET_DEVICES += el-m150
769
770 define Device/el-mini
771   $(Device/tplink-8mlzma)
772   DEVICE_TITLE := EasyLink EL-MINI
773   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
774   BOARDNAME := EL-MINI
775   DEVICE_PROFILE := ELMINI
776   TPLINK_HWID := 0x01530001
777   CONSOLE := ttyATH0,115200
778 endef
779 TARGET_DEVICES += el-mini
780
781 define Device/gl-inet-6408A-v1
782   $(Device/tplink-8mlzma)
783   DEVICE_TITLE := GL.iNet 6408
784   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
785   BOARDNAME := GL-INET
786   DEVICE_PROFILE := GLINET
787   TPLINK_HWID := 0x08000001
788   CONSOLE := ttyATH0,115200
789 endef
790 TARGET_DEVICES += gl-inet-6408A-v1
791
792 define Device/gl-inet-6416A-v1
793   $(Device/tplink-16mlzma)
794   DEVICE_TITLE := GL.iNet 6416
795   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
796   BOARDNAME := GL-INET
797   DEVICE_PROFILE := GLINET
798   TPLINK_HWID := 0x08000001
799   CONSOLE := ttyATH0,115200
800 endef
801 TARGET_DEVICES += gl-inet-6416A-v1
802
803 define Device/jwap230
804   DEVICE_TITLE := jjPlus JWAP230
805   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
806   BOARDNAME := JWAP230
807   IMAGE_SIZE := 16000k
808   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
809 endef
810 TARGET_DEVICES += jwap230
811
812 define Device/koala
813   DEVICE_TITLE := OCEDO Koala
814   BOARDNAME := KOALA
815   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
816   IMAGE_SIZE := 7424k
817   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),7424k(firmware),1536k(kernel2),5888k(rootfs2),1088k(data)ro,64k(id)ro,64k(art)ro
818 endef
819 TARGET_DEVICES += koala
820
821 define Device/r36a
822   DEVICE_TITLE := ALFA Network R36A
823   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport -swconfig
824   BOARDNAME := R36A
825   SUPPORTED_DEVICES := r36a
826   IMAGE_SIZE := 15872k
827   MTDPARTS := spi0.0:384k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware)
828   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
829         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
830 endef
831 TARGET_DEVICES += r36a
832
833 define Device/r602n
834   DEVICE_TITLE := P&W R602N
835   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
836   BOARDNAME := R602N
837   IMAGE_SIZE := 16000k
838   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,16000k(firmware),64k(art)ro
839 endef
840 TARGET_DEVICES += r602n
841
842 define Device/rut900
843   DEVICE_TITLE := Teltonika RUT900
844   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -uboot-envtools
845   BOARDNAME := RUT900
846   SUPPORTED_DEVICES := rut900
847   IMAGE_SIZE := 15552k
848   MTDPARTS := spi0.0:128k(u-boot)ro,64k(config)ro,64k(art)ro,15552k(firmware),576k(event-log)ro
849   TPLINK_HWID := 0x35000001
850   TPLINK_HWREV := 0x1
851   TPLINK_HEADER_VERSION := 1
852   KERNEL := kernel-bin | patch-cmdline | lzma | tplink-v1-header
853   KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | uImage lzma
854   IMAGES := sysupgrade.bin factory.bin
855   IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs |\
856         pad-rootfs | teltonika-fw-fake-checksum | append-string master |\
857         append-md5sum-bin | check-size $$$$(IMAGE_SIZE)
858   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
859         append-rootfs | pad-rootfs | append-metadata |\
860         check-size $$$$(IMAGE_SIZE)
861 endef
862 TARGET_DEVICES += rut900
863
864 define Device/mc-mac1200r
865   $(Device/tplink-8mlzma)
866   DEVICE_TITLE := Mercury MAC1200R
867   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
868   BOARDNAME := MC-MAC1200R
869   DEVICE_PROFILE := MAC1200R
870   TPLINK_HWID := 0x12000001
871 endef
872 TARGET_DEVICES += mc-mac1200r
873
874 define Device/minibox-v1
875   $(Device/tplink-16mlzma)
876   DEVICE_TITLE := GainStrong MiniBox V1.0
877   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
878   BOARDNAME := MINIBOX-V1
879   DEVICE_PROFILE := MINIBOXV1
880   TPLINK_HWID := 0x3C000201
881   CONSOLE := ttyATH0,115200
882   IMAGES := sysupgrade.bin
883 endef
884 TARGET_DEVICES += minibox-v1
885
886 define Device/minibox-v3.2
887   $(Device/tplink-16mlzma)
888   DEVICE_TITLE := Gainstrong MiniBox V3.2
889   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca9887-ct -swconfig
890   BOARDNAME := MINIBOX-V3.2
891   DEVICE_PROFILE := MINIBOXV32
892   TPLINK_HWID := 0x3C00010C
893 endef
894 TARGET_DEVICES += minibox-v3.2
895
896 define Device/oolite-v1
897   $(Device/minibox-v1)
898   DEVICE_TITLE := GainStrong Oolite V1.0
899   BOARDNAME := OOLITE-V1
900   DEVICE_PROFILE := OOLITEV1
901   TPLINK_HWID := 0x3C000101
902 endef
903 TARGET_DEVICES += oolite-v1
904
905 define Device/oolite-v5.2
906   $(Device/tplink-16mlzma)
907   DEVICE_TITLE := GainStrong Oolite V5.2
908   DEVICE_PACKAGES := ath10k-firmware-qca9887-ct kmod-ath10k-ct kmod-usb-core kmod-usb2
909   BOARDNAME := OOLITE-V5-2
910   DEVICE_PROFILE := OOLITEV52
911   TPLINK_HWID := 0x3C00010B
912   IMAGES := sysupgrade.bin
913 endef
914 TARGET_DEVICES += oolite-v5.2
915
916 define Device/oolite-v5.2-dev
917   $(Device/oolite-v5.2)
918   DEVICE_TITLE := GainStrong Oolite V5.2-Dev (development board)
919   BOARDNAME := OOLITE-V5-2-DEV
920   DEVICE_PROFILE := OOLITEV52DEV
921 endef
922 TARGET_DEVICES += oolite-v5.2-dev
923
924 define Device/omy-g1
925   $(Device/tplink-16mlzma)
926   DEVICE_TITLE := OMYlink OMY-G1
927   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
928   BOARDNAME := OMY-G1
929   DEVICE_PROFILE := OMYG1
930   TPLINK_HWID := 0x06660101
931 endef
932 TARGET_DEVICES += omy-g1
933
934 define Device/omy-x1
935   $(Device/tplink-8mlzma)
936   DEVICE_TITLE := OMYlink OMY-X1
937   BOARDNAME := OMY-X1
938   DEVICE_PROFILE := OMYX1
939   TPLINK_HWID := 0x06660201
940 endef
941 TARGET_DEVICES += omy-x1
942
943 define Device/onion-omega
944   $(Device/tplink-16mlzma)
945   DEVICE_TITLE := Onion Omega
946   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-i2c-core kmod-i2c-gpio-custom kmod-spi-bitbang kmod-spi-dev kmod-spi-gpio kmod-spi-gpio-custom kmod-usb-serial
947   BOARDNAME := ONION-OMEGA
948   DEVICE_PROFILE := OMEGA
949   TPLINK_HWID := 0x04700001
950   CONSOLE := ttyATH0,115200
951 endef
952 TARGET_DEVICES += onion-omega
953
954 define Device/sc1750
955   DEVICE_TITLE := Abicom SC1750
956   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
957   BOARDNAME := SC1750
958   IMAGE_SIZE := 15744k
959   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15744k(firmware),128k(APConfig),128k(kplog),64k(ART)
960 endef
961 TARGET_DEVICES += sc1750
962
963 define Device/sc300m
964   DEVICE_TITLE := Abicom SC300M
965   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
966   BOARDNAME := SC300M
967   IMAGE_SIZE := 15744k
968   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15744k(firmware),128k(APConfig),128k(kplog),64k(ART)
969 endef
970 TARGET_DEVICES += sc300m
971
972 define Device/sc450
973   DEVICE_TITLE := Abicom SC450
974   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
975   BOARDNAME := SC450
976   IMAGE_SIZE := 15744k
977   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),15744k(firmware),128k(APConfig),128k(kplog),64k(ART)
978 endef
979 TARGET_DEVICES += sc450
980
981 define Device/smart-300
982   $(Device/tplink-8mlzma)
983   DEVICE_TITLE := NC-LINK SMART-300
984   BOARDNAME := SMART-300
985   DEVICE_PROFILE := SMART-300
986   TPLINK_HWID := 0x93410001
987 endef
988 TARGET_DEVICES += smart-300
989
990 define Device/som9331
991   $(Device/tplink-8mlzma)
992   DEVICE_TITLE := OpenEmbed SOM9331
993   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage kmod-i2c-core kmod-i2c-gpio-custom kmod-spi-bitbang kmod-spi-dev kmod-spi-gpio kmod-spi-gpio-custom kmod-usb-serial
994   BOARDNAME := SOM9331
995   DEVICE_PROFILE := SOM9331
996   TPLINK_HWID := 0x04800054
997   CONSOLE := ttyATH0,115200
998 endef
999 TARGET_DEVICES += som9331
1000
1001 define Device/sr3200
1002   DEVICE_TITLE := YunCore SR3200
1003   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct
1004   BOARDNAME := SR3200
1005   IMAGE_SIZE := 16000k
1006   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
1007 endef
1008 TARGET_DEVICES += sr3200
1009
1010 define Device/xd3200
1011   $(Device/sr3200)
1012   DEVICE_TITLE := YunCore XD3200
1013   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
1014   BOARDNAME := XD3200
1015 endef
1016 TARGET_DEVICES += xd3200
1017
1018 define Device/t830
1019   DEVICE_TITLE := YunCore T830
1020   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
1021   BOARDNAME := T830
1022   IMAGE_SIZE := 16000k
1023   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),16000k(firmware),64k(art)ro
1024   SUPPORTED_DEVICES := t830
1025   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
1026         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
1027 endef
1028 TARGET_DEVICES += t830
1029
1030 define Device/tellstick-znet-lite
1031   $(Device/tplink-16mlzma)
1032   DEVICE_TITLE := TellStick ZNet Lite
1033   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-acm kmod-usb-serial kmod-usb-serial-pl2303
1034   BOARDNAME := TELLSTICK-ZNET-LITE
1035   DEVICE_PROFILE := TELLSTICKZNETLITE
1036   TPLINK_HWID := 0x00726001
1037   CONSOLE := ttyATH0,115200
1038 endef
1039 TARGET_DEVICES += tellstick-znet-lite
1040
1041 define Device/ts-d084
1042   $(Device/tplink-8mlzma)
1043   DEVICE_TITLE := PISEN TS-D084
1044   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
1045   BOARDNAME := TS-D084
1046   DEVICE_PROFILE := TSD084
1047   TPLINK_HWID := 0x07030101
1048   CONSOLE := ttyATH0,115200
1049 endef
1050 TARGET_DEVICES += ts-d084
1051
1052 define Device/n5q
1053   DEVICE_TITLE := ALFA Network N5Q
1054   DEVICE_PACKAGES := rssileds -swconfig
1055   BOARDNAME := N5Q
1056   SUPPORTED_DEVICES := n5q
1057   IMAGE_SIZE := 15872k
1058   MTDPARTS := spi0.0:384k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware)
1059   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
1060         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
1061 endef
1062 TARGET_DEVICES += n5q
1063
1064 define Device/NBG6616
1065   DEVICE_TITLE := ZyXEL NBG6616
1066   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb-storage kmod-rtc-pcf8563 kmod-ath10k-ct ath10k-firmware-qca988x-ct
1067   BOARDNAME := NBG6616
1068   KERNEL_SIZE := 2048k
1069   IMAGE_SIZE := 15323k
1070   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)
1071   CMDLINE += mem=128M
1072   RAS_BOARD := NBG6616
1073   RAS_ROOTFS_SIZE := 14464k
1074   RAS_VERSION := "$(VERSION_DIST) $(REVISION)"
1075   IMAGES := factory.bin sysupgrade.bin
1076   KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 boot/vmlinux.lzma.uImage
1077   IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | pad-to 64k | check-size $$$$(IMAGE_SIZE) | zyxel-ras-image
1078   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
1079   # We cannot currently build a factory image. It is the sysupgrade image
1080   # prefixed with a header (which is actually written into the MTD device).
1081   # The header is 2kiB and is filled with 0xff. The format seems to be:
1082   #   2 bytes:  0x0000
1083   #   2 bytes:  checksum of the data partition (big endian)
1084   #   4 bytes:  length of the contained image file (big endian)
1085   #  32 bytes:  Firmware Version string (NUL terminated, 0xff padded)
1086   #   2 bytes:  0x0000
1087   #   2 bytes:  checksum over the header partition (big endian)
1088   #  32 bytes:  Model (e.g. "NBG6616", NUL termiated, 0xff padded)
1089   #      rest: 0xff padding
1090   #
1091   # The checksums are calculated by adding up all bytes and if a 16bit
1092   # overflow occurs, one is added and the sum is masked to 16 bit:
1093   #   csum = csum + databyte; if (csum > 0xffff) { csum += 1; csum &= 0xffff };
1094   # Should the file have an odd number of bytes then the byte len-0x800 is
1095   # used additionally.
1096   # The checksum for the header is calcualted over the first 2048 bytes with
1097   # the firmware checksum as the placeholder during calculation.
1098   #
1099   # The header is padded with 0xff to the erase block size of the device.
1100 endef
1101 TARGET_DEVICES += NBG6616
1102
1103 define Device/c-55
1104   DEVICE_TITLE := AirTight Networks C-55
1105   DEVICE_PACKAGES := kmod-ath9k
1106   BOARDNAME := C-55
1107   KERNEL_SIZE := 2048k
1108   IMAGE_SIZE := 15872k
1109   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)
1110   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE)
1111 endef
1112 TARGET_DEVICES += c-55
1113
1114 define Device/hiwifi-hc6361
1115   DEVICE_TITLE := HiWiFi HC6361
1116   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage \
1117         kmod-fs-ext4 kmod-nls-iso8859-1 e2fsprogs
1118   BOARDNAME := HiWiFi-HC6361
1119   DEVICE_PROFILE := HIWIFI_HC6361
1120   IMAGE_SIZE := 16128k
1121   KERNEL := kernel-bin | patch-cmdline | lzma | uImageHiWiFi lzma
1122   CONSOLE := ttyATH0,115200
1123   MTDPARTS := spi0.0:64k(u-boot)ro,64k(bdinfo)ro,16128k(firmware),64k(backup)ro,64k(art)ro
1124 endef
1125 TARGET_DEVICES += hiwifi-hc6361
1126
1127 define Device/seama
1128   LOADER_TYPE := bin
1129   BLOCKSIZE := 64k
1130   KERNEL := kernel-bin | patch-cmdline | relocate-kernel | lzma
1131   KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | seama
1132   KERNEL_INITRAMFS_SUFFIX = $$(KERNEL_SUFFIX).seama
1133   SEAMA_MTDBLOCK := 1
1134   IMAGES := sysupgrade.bin factory.bin
1135
1136   # 64 bytes offset:
1137   # - 28 bytes seama_header
1138   # - 36 bytes of META data (4-bytes aligned)
1139   IMAGE/default := append-kernel | pad-offset $$$$(BLOCKSIZE) 64 | append-rootfs
1140   IMAGE/sysupgrade.bin := \
1141         $$(IMAGE/default) | seama | pad-rootfs | \
1142         check-size $$$$(IMAGE_SIZE)
1143   IMAGE/factory.bin := \
1144         $$(IMAGE/default) | seama | pad-rootfs | \
1145         seama-seal | check-size $$$$(IMAGE_SIZE)
1146   SEAMA_SIGNATURE :=
1147 endef
1148
1149 define Device/dir-869-a1
1150   $(Device/seama)
1151   DEVICE_TITLE := D-Link DIR-869 rev. A1
1152   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
1153   BOARDNAME := DIR-869-A1
1154   IMAGE_SIZE := 15872k
1155   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
1156   SEAMA_SIGNATURE := wrgac54_dlink.2015_dir869
1157   IMAGE/factory.bin := \
1158         $$(IMAGE/default) | pad-rootfs -x 64 | \
1159         seama | seama-seal -m "signature=$$$$(SEAMA_SIGNATURE)" | \
1160         check-size $$$$(IMAGE_SIZE)
1161 endef
1162 TARGET_DEVICES += dir-869-a1
1163
1164 define Device/mynet-n600
1165   $(Device/seama)
1166   DEVICE_TITLE := Western Digital My Net N600
1167   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
1168   BOARDNAME := MYNET-N600
1169   IMAGE_SIZE := 15808k
1170   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
1171   SEAMA_SIGNATURE := wrgnd16_wd_db600
1172 endef
1173 TARGET_DEVICES += mynet-n600
1174
1175 define Device/mynet-n750
1176   $(Device/seama)
1177   DEVICE_TITLE := Western Digital My Net N750
1178   DEVICE_PACKAGES := kmod-usb-core kmod-usb2
1179   BOARDNAME := MYNET-N750
1180   IMAGE_SIZE := 15808k
1181   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(devdata)ro,64k(devconf)ro,15872k(firmware),64k(radiocfg)ro
1182   SEAMA_SIGNATURE := wrgnd13_wd_av
1183 endef
1184 TARGET_DEVICES += mynet-n750
1185
1186 define Device/qihoo-c301
1187   $(Device/seama)
1188   DEVICE_TITLE := Qihoo C301
1189   DEVICE_PACKAGES :=  kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-ath10k-ct ath10k-firmware-qca988x-ct
1190   BOARDNAME := QIHOO-C301
1191   IMAGE_SIZE := 15744k
1192   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)
1193   SEAMA_SIGNATURE := wrgac26_qihoo360_360rg
1194 endef
1195 TARGET_DEVICES += qihoo-c301
1196
1197 define Device/dap-1330-a1
1198   DEVICE_TITLE := D-Link DAP-1330 rev. A1
1199   DEVICE_PACKAGES := rssileds
1200   BOARDNAME := DAP-1330-A1
1201   IMAGES := factory.img sysupgrade.bin
1202   IMAGE_SIZE := 7936k
1203   IMAGE/factory.img := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE) | mkdapimg2 917504
1204   MTDPARTS := spi0.0:64k(u-boot)ro,64k(art)ro,64k(mp)ro,64k(config)ro,7936k(firmware)
1205   DAP_SIGNATURE := HONEYBEE-FIRMWARE-DAP-1330
1206 endef
1207 TARGET_DEVICES += dap-1330-a1
1208
1209 define Device/dap-2695-a1
1210   DEVICE_TITLE := D-Link DAP-2695 rev. A1
1211   DEVICE_PACKAGES := ath10k-firmware-qca988x-ct kmod-ath10k-ct
1212   BOARDNAME := DAP-2695-A1
1213   IMAGES := factory.img sysupgrade.bin
1214   IMAGE_SIZE := 15360k
1215   IMAGE/factory.img := append-kernel | pad-offset 65536 160 | append-rootfs | wrgg-pad-rootfs | mkwrggimg | check-size $$$$(IMAGE_SIZE)
1216   IMAGE/sysupgrade.bin := append-kernel | pad-offset 65536 160 | mkwrggimg | append-rootfs | wrgg-pad-rootfs | check-size $$$$(IMAGE_SIZE)
1217   KERNEL := kernel-bin | patch-cmdline | relocate-kernel | lzma
1218   KERNEL_INITRAMFS := $$(KERNEL) | mkwrggimg
1219   MTDPARTS := spi0.0:256k(bootloader)ro,64k(bdcfg)ro,64k(rgdb)ro,64k(langpack)ro,15360k(firmware),448k(captival)ro,64k(certificate)ro,64k(radiocfg)ro
1220   DAP_SIGNATURE := wapac02_dkbs_dap2695
1221 endef
1222 TARGET_DEVICES += dap-2695-a1
1223
1224 define Device/wam250
1225   DEVICE_TITLE := Samsung WAM250
1226   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 -swconfig
1227   BOARDNAME := WAM250
1228   IMAGE_SIZE := 15872k
1229   MTDPARTS := spi0.0:256k(u-boot)ro,64k(u-boot-env),128k(nvram)ro,15872k(firmware),64k(art)ro
1230   SUPPORTED_DEVICES := wam250
1231   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) |\
1232         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
1233 endef
1234 TARGET_DEVICES += wam250
1235
1236 define Device/wifi-pineapple-nano
1237   $(Device/tplink-16mlzma)
1238   DEVICE_TITLE := Hak5 WiFi Pineapple NANO
1239   DEVICE_PACKAGES := kmod-ath9k-htc kmod-usb-core kmod-usb2 kmod-usb-storage \
1240         -swconfig -uboot-envtools
1241   BOARDNAME := WIFI-PINEAPPLE-NANO
1242   DEVICE_PROFILE := WIFIPINEAPPLENANO
1243   TPLINK_HWID := 0x4e414e4f
1244   CONSOLE := ttyATH0,115200
1245   IMAGES := sysupgrade.bin
1246 endef
1247 TARGET_DEVICES += wifi-pineapple-nano
1248
1249 define Device/wlr8100
1250   DEVICE_TITLE := Sitecom WLR-8100
1251   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport kmod-usb3 \
1252         kmod-ath10k-ct ath10k-firmware-qca988x-ct
1253   BOARDNAME := WLR8100
1254   IMAGE_SIZE := 15424k
1255   MTDPARTS := spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,15424k(firmware),256k(manufacture)ro,64k(backup)ro,320k(storage)ro,64k(art)ro
1256 endef
1257 TARGET_DEVICES += wlr8100
1258
1259 define Device/wpj-16m
1260   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
1261   MTDPARTS := spi0.0:192k(u-boot)ro,16128k(firmware),64k(art)ro
1262   IMAGE_SIZE := 16128k
1263 endef
1264
1265 define Device/wpj342
1266   $(Device/wpj-16m)
1267   DEVICE_TITLE := Compex WPJ342 (16MB flash)
1268   BOARDNAME := WPJ342
1269 endef
1270 TARGET_DEVICES += wpj342
1271
1272 define Device/wpj344
1273   $(Device/wpj-16m)
1274   DEVICE_TITLE := Compex WPJ344 (16MB flash)
1275   BOARDNAME := WPJ344
1276   SUPPORTED_DEVICES := wpj344
1277   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
1278         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
1279 endef
1280 TARGET_DEVICES += wpj344
1281
1282 define Device/wpj531
1283   $(Device/wpj-16m)
1284   DEVICE_TITLE := Compex WPJ531 (16MB flash)
1285   BOARDNAME := WPJ531
1286 endef
1287 TARGET_DEVICES += wpj531
1288
1289 define Device/wpj558
1290   $(Device/wpj-16m)
1291   DEVICE_TITLE := Compex WPJ558 (16MB flash)
1292   BOARDNAME := WPJ558
1293   SUPPORTED_DEVICES := wpj558
1294   IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
1295         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
1296 endef
1297 TARGET_DEVICES += wpj558
1298
1299 define Device/wpj563
1300   $(Device/wpj-16m)
1301   DEVICE_TITLE := Compex WPJ563 (16MB flash)
1302   BOARDNAME := WPJ563
1303 endef
1304 TARGET_DEVICES += wpj563
1305
1306 define Device/wrtnode2q
1307   DEVICE_TITLE := WRTnode2Q
1308   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
1309   BOARDNAME := WRTNODE2Q
1310   IMAGE_SIZE := 16064k
1311   MTDPARTS := spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(art)ro,16064k(firmware),16384k@0x0(fullflash)
1312 endef
1313 TARGET_DEVICES += wrtnode2q
1314
1315 define Device/AVM
1316   DEVICE_PACKAGES := fritz-tffs -uboot-envtools
1317   KERNEL := kernel-bin | patch-cmdline | lzma | eva-image
1318   KERNEL_INITRAMFS := $$(KERNEL)
1319   IMAGE/sysupgrade.bin := append-kernel | pad-to 64k | \
1320         append-squashfs-fakeroot-be | pad-to 256 | \
1321         append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
1322 endef
1323
1324 define Device/fritz300e
1325   $(call Device/AVM)
1326   DEVICE_TITLE := AVM FRITZ!WLAN Repeater 300E
1327   DEVICE_PACKAGES += rssileds -swconfig
1328   BOARDNAME := FRITZ300E
1329   SUPPORTED_DEVICES := fritz300e
1330   IMAGE_SIZE := 15232k
1331 endef
1332 TARGET_DEVICES += fritz300e
1333
1334 define Device/fritz4020
1335   $(call Device/AVM)
1336   DEVICE_TITLE := AVM FRITZ!Box 4020
1337   DEVICE_PACKAGES += kmod-usb-core kmod-usb2 kmod-usb-storage
1338   BOARDNAME := FRITZ4020
1339   SUPPORTED_DEVICES := fritz4020
1340   IMAGE_SIZE := 15232k
1341 endef
1342 TARGET_DEVICES += fritz4020
1343
1344 define Device/fritz450e
1345   $(call Device/AVM)
1346   DEVICE_TITLE := AVM FRITZ!WLAN Repeater 450E
1347   DEVICE_PACKAGES += -swconfig
1348   BOARDNAME := FRITZ450E
1349   SUPPORTED_DEVICES := fritz450e
1350   IMAGE_SIZE := 15232k
1351 endef
1352 TARGET_DEVICES += fritz450e