2 # Copyright (C) 2008-2011 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 JFFS2_BLOCKSIZE
= 64k
128k
256k
10 include $(TOPDIR
)/rules.mk
11 include $(INCLUDE_DIR
)/image.mk
13 IMAGE_PROFILE
:=$(if
$(PROFILE
),$(PROFILE
),Default
)
15 KERNEL_LOADADDR
= 0x80060000
17 DEVICE_VARS
+= NETGEAR_KERNEL_MAGIC NETGEAR_BOARD_ID NETGEAR_HW_ID CMDLINE CONSOLE IMAGE_SIZE BOARDNAME LOADER_FLASH_OFFS LOADER_TYPE
23 define Build
/netgear-squashfs
24 rm -rf
$@.fs
$@.squashfs
26 cp
$@
$@.fs
/image
/uImage
27 $(STAGING_DIR_HOST
)/bin
/mksquashfs-lzma \
29 -noappend
-root-owned
-be
-b
65536 \
30 $(if
$(SOURCE_DATE_EPOCH
),-fixed-time
$(SOURCE_DATE_EPOCH
))
32 dd if
=/dev
/zero bs
=1k count
=1 >> $@.squashfs
34 -A mips
-O linux
-T filesystem
-C none \
35 -M
$(NETGEAR_KERNEL_MAGIC
) \
36 -a
0xbf070000 -e
0xbf070000 \
37 -n
'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
39 rm -rf
$@.squashfs
$@.fs
42 define Build
/netgear-uImage
43 $(call Build
/uImage
,$(1) -M
$(NETGEAR_KERNEL_MAGIC
))
46 define Build
/loader-common
48 $(MAKE
) -C lzma-loader \
49 PKG_BUILD_DIR
="$@.src" \
50 TARGET_DIR
="$(dir $@)" LOADER_NAME
="$(notdir $@)" \
51 BOARD
="$(BOARDNAME)" \
52 LZMA_TEXT_START
=0x80a00000 LOADADDR
=0x80060000 \
53 $(1) compile loader.
$(LOADER_TYPE
)
54 mv
"$@.$(LOADER_TYPE)" "$@"
58 define Build
/loader-okli-compile
59 $(call Build
/loader-common
,FLASH_OFFS
=$(LOADER_FLASH_OFFS
) FLASH_MAX
=0 KERNEL_CMDLINE
="$(CMDLINE)")
62 define Build
/loader-kernel
63 $(call Build
/loader-common
,LOADER_DATA
="$@")
66 define Build
/loader-kernel-cmdline
67 $(call Build
/loader-common
,LOADER_DATA
="$@" KERNEL_CMDLINE
="$(CMDLINE)")
70 define Build
/loader-okli
71 dd if
=$(KDIR
)/loader-
$(1).gz bs
=7680 conv
=sync of
="$@.new"
76 define Build
/copy-file
82 DEVICE_PROFILE
= $$(BOARDNAME
)
83 PROFILES
= Default Minimal
$$(DEVICE_PROFILE
)
85 IMAGES
:= sysupgrade.bin
87 FILESYSTEMS
= $(filter-out jffs2-
%,$(TARGET_FILESYSTEMS
)) jffs2-
$$(BLOCKSIZE
)
88 CONSOLE
= ttyS0
,115200
89 CMDLINE
= $$(if
$$(BOARDNAME
),board
=$$(BOARDNAME
)) $$(if
$$(MTDPARTS
),mtdparts
=$$(MTDPARTS
)) $$(if
$$(CONSOLE
),console
=$$(CONSOLE
))
90 KERNEL
:= kernel-bin | patch-cmdline | lzma | uImage lzma
92 IMAGES
:= sysupgrade.bin
93 IMAGE
/sysupgrade.bin
= append-kernel
$$$$(BLOCKSIZE
) | append-rootfs | pad-rootfs | check-size
$$$$(IMAGE_SIZE
)
99 CONSOLE
= ttyATH0
,115200
100 MTDPARTS
= spi0.0
:128k
(u-boot
)ro
,64k
(u-boot-env
)ro
,16128k
(firmware
),64k
(art
)ro
102 TARGET_DEVICES
+= bsb
104 define Device
/carambola2
105 BOARDNAME
= CARAMBOLA2
107 CONSOLE
= ttyATH0
,115200
108 MTDPARTS
= spi0.0
:256k
(u-boot
)ro
,64k
(u-boot-env
)ro
,16000k
(firmware
),64k
(art
)ro
110 TARGET_DEVICES
+= carambola2
112 define Device
/cf-e316n-v2
113 BOARDNAME
= CF-E316N-V2
115 CONSOLE
= ttyS0
,115200
116 MTDPARTS
= spi0.0
:64k
(u-boot
)ro
,64k
(art
)ro
,16192k
(firmware
),64k
(nvram
)ro
118 TARGET_DEVICES
+= cf-e316n-v2
123 CONSOLE
= ttyATH0
,115200
124 MTDPARTS
= spi0.0
:256k
(u-boot
)ro
,64k
(u-boot-env
)ro
,16000k
(firmware
),64k
(art
)ro
126 TARGET_DEVICES
+= weio
128 define Device
/gl-ar150
131 CONSOLE
= ttyATH0
,115200
132 MTDPARTS
= spi0.0
:256k
(u-boot
)ro
,64k
(u-boot-env
)ro
,16000k
(firmware
),64k
(art
)ro
134 TARGET_DEVICES
+= gl-ar150
136 define Device
/gl-ar300
139 CONSOLE
= ttyS0
,115200
140 MTDPARTS
= spi0.0
:256k
(u-boot
)ro
,64k
(u-boot-env
)ro
,16000k
(firmware
),64k
(art
)ro
142 TARGET_DEVICES
+= gl-ar300
144 define Device
/gl-domino
147 CONSOLE
= ttyATH0
,115200
148 MTDPARTS
= spi0.0
:256k
(u-boot
)ro
,64k
(u-boot-env
)ro
,16000k
(firmware
),64k
(art
)ro
150 TARGET_DEVICES
+= gl-domino
152 define Device
/wndr3700
154 NETGEAR_KERNEL_MAGIC
= 0x33373030
155 NETGEAR_BOARD_ID
= WNDR3700
157 MTDPARTS
= spi0.0
:320k
(u-boot
)ro
,128k
(u-boot-env
)ro
,7680k
(firmware
),64k
(art
)ro
158 IMAGES
:= sysupgrade.bin factory.img factory-NA.img
159 KERNEL
:= kernel-bin | patch-cmdline | lzma
-d20 | netgear-uImage lzma
160 IMAGE
/default
= append-kernel
$$$$(BLOCKSIZE
) | netgear-squashfs | append-rootfs | pad-rootfs
161 IMAGE
/sysupgrade.bin
= $$(IMAGE
/default
) | check-size
$$$$(IMAGE_SIZE
)
162 IMAGE
/factory.img
= $$(IMAGE
/default
) | netgear-dni | check-size
$$$$(IMAGE_SIZE
)
163 IMAGE
/factory-NA.img
= $$(IMAGE
/default
) | netgear-dni NA | check-size
$$$$(IMAGE_SIZE
)
166 define Device
/wndr3700v2
168 NETGEAR_BOARD_ID
= WNDR3700v2
169 NETGEAR_KERNEL_MAGIC
= 0x33373031
170 NETGEAR_HW_ID
= 29763654+16+64
172 MTDPARTS
= spi0.0
:320k
(u-boot
)ro
,128k
(u-boot-env
)ro
,15872k
(firmware
),64k
(art
)ro
173 IMAGES
:= sysupgrade.bin factory.img
176 define Device
/wndr3800
178 NETGEAR_BOARD_ID
= WNDR3800
179 NETGEAR_HW_ID
= 29763654+16+128
182 define Device
/wndr3800ch
184 NETGEAR_BOARD_ID
= WNDR3800CH
187 define Device
/wndrmac
189 NETGEAR_BOARD_ID
= WNDRMAC
192 define Device
/wndrmacv2
194 NETGEAR_BOARD_ID
= WNDRMACv2
197 TARGET_DEVICES
+= wndr3700 wndr3700v2 wndr3800 wndr3800ch wndrmac wndrmacv2
201 DEVICE_PROFILE
:= CAP324
203 MTDPARTS
= spi0.0
:256k
(u-boot
),64k
(u-boot-env
)ro
,15296k
(firmware
),640k
(certs
),64k
(nvram
),64k
(art
)
206 TARGET_DEVICES
+= cap324
208 define Device
/cap324-nocloud
210 DEVICE_PROFILE
:= CAP324
212 MTDPARTS
= spi0.0
:256k
(u-boot
),64k
(u-boot-env
)ro
,16000k
(firmware
),64k
(art
)
215 TARGET_DEVICES
+= cap324-nocloud
219 DEVICE_PROFILE
:= CR3000
221 MTDPARTS
= spi0.0
:256k
(u-boot
),64k
(u-boot-env
)ro
,7104k
(firmware
),640k
(certs
),64k
(nvram
),64k
(art
)
224 TARGET_DEVICES
+= cr3000
226 define Device
/cr3000-nocloud
228 DEVICE_PROFILE
:= CR3000
230 MTDPARTS
= spi0.0
:256k
(u-boot
),64k
(u-boot-env
)ro
,7808k
(firmware
),64k
(art
)
233 TARGET_DEVICES
+= cr3000-nocloud
237 DEVICE_PROFILE
:= CR5000
239 MTDPARTS
= spi0.0
:256k
(u-boot
),64k
(u-boot-env
)ro
,7104k
(firmware
),640k
(certs
),64k
(nvram
),64k
(art
)
242 TARGET_DEVICES
+= cr5000
244 define Device
/cr5000-nocloud
246 DEVICE_PROFILE
:= CR5000
248 MTDPARTS
= spi0.0
:256k
(u-boot
),64k
(u-boot-env
)ro
,7808k
(firmware
),64k
(art
)
251 TARGET_DEVICES
+= cr5000-nocloud
253 define Device
/antminer-s1
254 $(Device
/tplink-8mlzma
)
255 BOARDNAME
:= ANTMINER-S1
256 DEVICE_PROFILE
:= ANTMINERS1
257 TPLINK_HWID
:= 0x04440101
258 CONSOLE
:= ttyATH0
,115200
261 define Device
/antminer-s3
262 $(Device
/tplink-8mlzma
)
263 BOARDNAME
:= ANTMINER-S3
264 DEVICE_PROFILE
:= ANTMINERS3
265 TPLINK_HWID
:= 0x04440301
266 CONSOLE
:= ttyATH0
,115200
269 define Device
/antrouter-r1
270 $(Device
/tplink-8mlzma
)
271 BOARDNAME
:= ANTROUTER-R1
272 DEVICE_PROFILE
:= ANTROUTERR1
273 TPLINK_HWID
:= 0x44440101
274 CONSOLE
:= ttyATH0
,115200
277 define Device
/el-m150
278 $(Device
/tplink-8mlzma
)
280 DEVICE_PROFILE
:= ELM150
281 TPLINK_HWID
:= 0x01500101
282 CONSOLE
:= ttyATH0
,115200
285 define Device
/el-mini
286 $(Device
/tplink-8mlzma
)
288 DEVICE_PROFILE
:= ELMINI
289 TPLINK_HWID
:= 0x01530001
290 CONSOLE
:= ttyATH0
,115200
292 TARGET_DEVICES
+= antminer-s1 antminer-s3 antrouter-r1 el-m150 el-mini
294 define Device
/gl-inet-6408A-v1
295 $(Device
/tplink-8mlzma
)
297 DEVICE_PROFILE
:= GLINET
298 TPLINK_HWID
:= 0x08000001
299 CONSOLE
:= ttyATH0
,115200
302 define Device
/gl-inet-6416A-v1
303 $(Device
/tplink-16mlzma
)
305 DEVICE_PROFILE
:= GLINET
306 TPLINK_HWID
:= 0x08000001
307 CONSOLE
:= ttyATH0
,115200
309 TARGET_DEVICES
+= gl-inet-6408A-v1 gl-inet-6416A-v1
311 define Device
/rnx-n360rt
313 BOARDNAME
:= TL-WR941ND
314 DEVICE_PROFILE
:= RNXN360RT
315 TPLINK_HWID
:= 0x09410002
316 TPLINK_HWREV
:= 0x00420001
318 TARGET_DEVICES
+= rnx-n360rt
320 define Device
/mc-mac1200r
321 $(Device
/tplink-8mlzma
)
322 BOARDNAME
:= MC-MAC1200R
323 DEVICE_PROFILE
:= MAC1200R
324 TPLINK_HWID
:= 0x12000001
326 TARGET_DEVICES
+= mc-mac1200r
328 define Device
/minibox-v1
329 $(Device
/tplink-16mlzma
)
330 BOARDNAME
:= MINIBOX-V1
331 DEVICE_PROFILE
:= MINIBOXV1
332 TPLINK_HWID
:= 0x3C000201
333 CONSOLE
:= ttyATH0
,115200
335 TARGET_DEVICES
+= minibox-v1
338 $(Device
/tplink-16mlzma
)
340 DEVICE_PROFILE
:= OMYG1
341 TPLINK_HWID
:= 0x06660101
345 $(Device
/tplink-8mlzma
)
347 DEVICE_PROFILE
:= OMYX1
348 TPLINK_HWID
:= 0x06660201
350 TARGET_DEVICES
+= omy-g1 omy-x1
352 define Device
/onion-omega
353 $(Device
/tplink-16mlzma
)
354 BOARDNAME
:= ONION-OMEGA
355 DEVICE_PROFILE
:= OMEGA
356 TPLINK_HWID
:= 0x04700001
357 CONSOLE
:= ttyATH0
,115200
359 TARGET_DEVICES
+= onion-omega
361 define Device
/smart-300
362 $(Device
/tplink-8mlzma
)
363 BOARDNAME
:= SMART-300
364 DEVICE_PROFILE
:= SMART-300
365 TPLINK_HWID
:= 0x93410001
367 TARGET_DEVICES
+= smart-300
369 define Device
/tellstick-znet-lite
370 $(Device
/tplink-16mlzma
)
371 BOARDNAME
:= TELLSTICK-ZNET-LITE
372 DEVICE_PROFILE
:= TELLSTICKZNETLITE
373 TPLINK_HWID
:= 0x00726001
374 CONSOLE
:= ttyATH0
,115200
376 TARGET_DEVICES
+= tellstick-znet-lite
379 $(Device
/tplink-16mlzma
)
380 BOARDNAME
:= GS-OOLITE
381 DEVICE_PROFILE
:= OOLITE
382 TPLINK_HWID
:= 0x3C000101
383 CONSOLE
:= ttyATH0
,115200
385 TARGET_DEVICES
+= oolite
388 define Device
/NBG6616
392 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
)
394 IMAGES
:= sysupgrade.bin
395 KERNEL
:= kernel-bin | patch-cmdline | lzma | uImage lzma | jffs2 boot
/vmlinux.lzma.uImage
396 IMAGE
/sysupgrade.bin
= append-kernel
$$$$(KERNEL_SIZE
) | append-rootfs | pad-rootfs | check-size
$$$$(IMAGE_SIZE
)
397 # We cannot currently build a factory image. It is the sysupgrade image
398 # prefixed with a header (which is actually written into the MTD device).
399 # The header is 2kiB and is filled with 0xff. The format seems to be:
401 # 2 bytes: checksum of the data partition (big endian)
402 # 4 bytes: length of the contained image file (big endian)
403 # 32 bytes: Firmware Version string (NUL terminated, 0xff padded)
405 # 2 bytes: checksum over the header partition (big endian)
406 # 32 bytes: Model (e.g. "NBG6616", NUL termiated, 0xff padded)
409 # The checksums are calculated by adding up all bytes and if a 16bit
410 # overflow occurs, one is added and the sum is masked to 16 bit:
411 # csum = csum + databyte; if (csum > 0xffff) { csum += 1; csum &= 0xffff };
412 # Should the file have an odd number of bytes then the byte len-0x800 is
414 # The checksum for the header is calcualted over the first 2048 bytes with
415 # the firmware checksum as the placeholder during calculation.
417 # The header is padded with 0xff to the erase block size of the device.
420 TARGET_DEVICES
+= NBG6616
422 ifeq ($(SUBTARGET
),generic
)
427 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
)
428 IMAGE
/sysupgrade.bin
= append-kernel
$$$$(KERNEL_SIZE
) | append-rootfs | pad-rootfs | check-size
$$$$(IMAGE_SIZE
)
431 TARGET_DEVICES
+= c-55
433 endif # ifeq ($(SUBTARGET),generic)
435 ifeq ($(SUBTARGET
),nand
)
437 define Build
/MerakiNAND
438 -$(STAGING_DIR_HOST
)/bin
/mkmerakifw \
448 CONSOLE
= ttyS0
,115200
449 MTDPARTS
= ar934x-nfc
:512k
(nandloader
)ro
,8M
(kernel
),8M
(recovery
),113664k
(ubi
),128k@
130944k
(odm-caldata
)ro
450 IMAGES
:= sysupgrade.
tar
451 KERNEL
:= kernel-bin | patch-cmdline | MerakiNAND
452 KERNEL_INITRAMFS
:= kernel-bin | patch-cmdline | MerakiNAND
453 IMAGE
/sysupgrade.
tar := sysupgrade-nand
455 TARGET_DEVICES
+= mr18
457 endif # ifeq ($(SUBTARGET),nand)
459 $(eval
$(call BuildImage
))