1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2009-2013 OpenWrt.org
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
KERNEL_LOADADDR:=0x8000
# Some info about Ctera firmware:
# 1. It's simple tar file (GNU standard), but it must have ".firm" suffix.
# 2. It contains two images: kernel and romdisk. Both are required.
# 3. Every image has header and trailer file.
# 4. The struct of tar firmware is: header kernel trailer header romdisk trailer
# 5. In header file are some strings used to describe image. It was decoded from
# factory image.
# 6. Version format in header file is restricted by Original FW.
# 7. Trailer file contains MD5 sum string of header and image file.
# 8. Firmware file must have <=24MB size.
define Build/ctera-firmware
mkdir -p $@.tmp
# Prepare header and trailer file for kernel
echo "# CTera firmware information file" > $@.tmp/header
echo "image_type=kernel" >> $@.tmp/header
echo "arch=Kirkwood" >> $@.tmp/header
echo "board=Any" >> $@.tmp/header
echo "version=3.1.22.30669" >> $@.tmp/header
echo "kernel_cmd=console=ttyS0,115200 earlyprintk" >> $@.tmp/header
echo "date=$$(date $(if $(SOURCE_DATE_EPOCH),-d@$(SOURCE_DATE_EPOCH)))" \
>> $@.tmp/header
cp $@ $@.tmp/kernel
echo "MD5=$$(cat $@.tmp/header $@.tmp/kernel | $(MKHASH) md5)" \
> $@.tmp/trailer
tar $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
-H gnu -C $@.tmp -cf $@.tar header kernel trailer
# Prepare header and trailer file for fake romdisk
echo "# CTera firmware information file" > $@.tmp/header
echo "image_type=romdisk" >> $@.tmp/header
echo "initrd=yes" >> $@.tmp/header
echo "arch=Kirkwood" >> $@.tmp/header
echo "board=Any" >> $@.tmp/header
echo "version=3.1.22.30669" >> $@.tmp/header
echo "date=$$(date $(if $(SOURCE_DATE_EPOCH),-d@$(SOURCE_DATE_EPOCH)))" \
>> $@.tmp/header
rm -f $@
touch $@
$(call Build/append-uImage-fakehdr, ramdisk)
cp $@ $@.tmp/romdisk
echo "MD5=$$(cat $@.tmp/header $@.tmp/romdisk | $(MKHASH) md5)" \
> $@.tmp/trailer
tar $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
-H gnu -C $@.tmp -rf $@.tar header romdisk trailer
mv $@.tar $@
rm -rf $@.tmp
endef
define Device/kernel-size-migration
DEVICE_COMPAT_VERSION := 2.0
DEVICE_COMPAT_MESSAGE := Partition design has changed compared to \
older versions (up to 21.02) due to kernel size restrictions. \
Upgrade via sysupgrade mechanism is not possible, so new \
installation via factory style image is required.
endef
define Device/Default
PROFILES := Default
DEVICE_DTS = kirkwood-$(lastword $(subst _, ,$(1)))
KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
KERNEL := kernel-bin | append-dtb | uImage none
KERNEL_NAME := zImage
KERNEL_SUFFIX := -uImage
KERNEL_IN_UBI := 1
PAGESIZE := 2048
SUBPAGESIZE := 512
BLOCKSIZE := 128k
IMAGES := sysupgrade.bin factory.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
IMAGE/factory.bin := append-ubi
endef
define Device/checkpoint_l-50
DEVICE_VENDOR := Check Point
DEVICE_MODEL := L-50
DEVICE_PACKAGES := kmod-ath9k kmod-gpio-button-hotplug kmod-mvsdio \
kmod-rtc-s35390a kmod-usb-ledtrig-usbport wpad-basic-mbedtls
IMAGES := sysupgrade.bin
endef
TARGET_DEVICES += checkpoint_l-50
define Device/cisco_on100
DEVICE_VENDOR := Cisco Systems
DEVICE_MODEL := ON100
KERNEL_SIZE := 5376k
KERNEL_IN_UBI :=
UBINIZE_OPTS := -E 5
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
DEVICE_PACKAGES := kmod-mvsdio
SUPPORTED_DEVICES += on100
endef
TARGET_DEVICES += cisco_on100
define Device/cloudengines_pogoe02
DEVICE_VENDOR := Cloud Engines
DEVICE_MODEL := Pogoplug E02
DEVICE_DTS := kirkwood-pogo_e02
SUPPORTED_DEVICES += pogo_e02
endef
TARGET_DEVICES += cloudengines_pogoe02
define Device/cloudengines_pogoplugv4
DEVICE_VENDOR := Cloud Engines
DEVICE_MODEL := Pogoplug V4
DEVICE_DTS := kirkwood-pogoplug-series-4
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-mvsdio kmod-usb3 \
kmod-gpio-button-hotplug
endef
TARGET_DEVICES += cloudengines_pogoplugv4
define Device/ctera_c200-v1
DEVICE_VENDOR := Ctera
DEVICE_MODEL := C200
DEVICE_VARIANT := V1
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-gpio-button-hotplug \
kmod-hwmon-lm63 kmod-rtc-s35390a kmod-usb-ledtrig-usbport
KERNEL := kernel-bin | append-dtb | uImage none | ctera-firmware
KERNEL_IN_UBI :=
KERNEL_SUFFIX := -factory.firm
IMAGES := sysupgrade.bin
endef
TARGET_DEVICES += ctera_c200-v1
define Device/endian_4i-edge-200
DEVICE_VENDOR := Endian
DEVICE_MODEL := 4i Edge 200
DEVICE_ALT0_VENDOR := Endian
DEVICE_ALT0_MODEL := UTM Mini Firewall
DEVICE_PACKAGES := kmod-ath9k kmod-mvsdio wpad-basic-mbedtls
KERNEL_SIZE := 4096k
IMAGES := sysupgrade.bin
endef
TARGET_DEVICES += endian_4i-edge-200
define Device/globalscale_sheevaplug
DEVICE_VENDOR := Globalscale
DEVICE_MODEL := Sheevaplug
DEVICE_PACKAGES := kmod-mvsdio
endef
TARGET_DEVICES += globalscale_sheevaplug
define Device/iom_iconnect-1.1
DEVICE_VENDOR := Iomega
DEVICE_MODEL := Iconnect
DEVICE_DTS := kirkwood-iconnect
SUPPORTED_DEVICES += iconnect
endef
TARGET_DEVICES += iom_iconnect-1.1
define Device/iom_ix2-200
DEVICE_VENDOR := Iomega
DEVICE_MODEL := StorCenter ix2-200
DEVICE_DTS := kirkwood-iomega_ix2_200
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
kmod-gpio-button-hotplug kmod-hwmon-lm63
PAGESIZE := 512
SUBPAGESIZE := 256
BLOCKSIZE := 16k
KERNEL_SIZE := 3072k
KERNEL_IN_UBI :=
UBINIZE_OPTS := -E 5
IMAGE_SIZE := 31744k
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
check-size
endef
TARGET_DEVICES += iom_ix2-200
define Device/iom_ix4-200d
DEVICE_VENDOR := Iomega
DEVICE_MODEL := StorCenter ix4-200d
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
kmod-gpio-button-hotplug kmod-gpio-nxp-74hc164 \
kmod-hwmon-adt7475 kmod-mvsdio kmod-spi-gpio
PAGESIZE := 512
SUBPAGESIZE := 256
BLOCKSIZE := 16k
KERNEL_SIZE := 3072k
KERNEL_IN_UBI :=
UBINIZE_OPTS := -E 5
IMAGE_SIZE := 31744k
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
check-size
endef
TARGET_DEVICES += iom_ix4-200d
define Device/iptime_nas1
DEVICE_VENDOR := ipTIME
DEVICE_MODEL := NAS1
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
kmod-gpio-button-hotplug kmod-gpio-pca953x kmod-hwmon-drivetemp \
kmod-hwmon-gpiofan kmod-usb-ledtrig-usbport -uboot-envtools
KERNEL := $$(KERNEL) | iptime-naspkg nas1
BLOCKSIZE := 256k
IMAGE_SIZE := 15872k
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | \
check-size | append-metadata
endef
TARGET_DEVICES += iptime_nas1
define Device/linksys
DEVICE_VENDOR := Linksys
DEVICE_PACKAGES := kmod-mwl8k wpad-basic-mbedtls kmod-gpio-button-hotplug
KERNEL_IN_UBI :=
UBINIZE_OPTS := -E 5
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
endef
define Device/linksys_e4200-v2
$(Device/linksys)
$(Device/kernel-size-migration)
DEVICE_MODEL := E4200
DEVICE_VARIANT := v2
KERNEL_SIZE := 3072k
SUPPORTED_DEVICES += linksys,viper linksys-viper
endef
TARGET_DEVICES += linksys_e4200-v2
define Device/linksys_ea3500
$(Device/linksys)
$(Device/kernel-size-migration)
DEVICE_MODEL := EA3500
PAGESIZE := 512
SUBPAGESIZE := 256
BLOCKSIZE := 16k
KERNEL_SIZE := 3072k
SUPPORTED_DEVICES += linksys,audi linksys-audi
endef
TARGET_DEVICES += linksys_ea3500
define Device/linksys_ea4500
$(Device/linksys)
$(Device/kernel-size-migration)
DEVICE_MODEL := EA4500
KERNEL_SIZE := 3072k
SUPPORTED_DEVICES += linksys,viper linksys-viper
endef
TARGET_DEVICES += linksys_ea4500
define Device/netgear_readynas-duo-v2
DEVICE_VENDOR := NETGEAR
DEVICE_MODEL := ReadyNAS Duo
DEVICE_VARIANT := v2
DEVICE_DTS := kirkwood-netgear_readynas_duo_v2
KERNEL_IN_UBI :=
IMAGES := sysupgrade.bin
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
kmod-gpio-button-hotplug kmod-hwmon-g762 kmod-rtc-rs5c372a kmod-usb3
endef
TARGET_DEVICES += netgear_readynas-duo-v2
define Device/raidsonic_ib-nas62x0
DEVICE_VENDOR := RaidSonic
DEVICE_MODEL := ICY BOX IB-NAS62x0
DEVICE_DTS := kirkwood-ib62x0
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4
SUPPORTED_DEVICES += ib62x0
endef
TARGET_DEVICES += raidsonic_ib-nas62x0
define Device/seagate_blackarmor-nas220
DEVICE_VENDOR := Seagate
DEVICE_MODEL := Blackarmor NAS220
DEVICE_PACKAGES := kmod-hwmon-adt7475 kmod-fs-ext4 kmod-ata-marvell-sata \
mdadm kmod-gpio-button-hotplug
PAGESIZE := 512
SUBPAGESIZE := 256
BLOCKSIZE := 16k
UBINIZE_OPTS := -e 1
endef
TARGET_DEVICES += seagate_blackarmor-nas220
define Device/seagate_dockstar
DEVICE_VENDOR := Seagate
DEVICE_MODEL := FreeAgent Dockstar
SUPPORTED_DEVICES += dockstar
endef
TARGET_DEVICES += seagate_dockstar
define Device/seagate_goflexnet
DEVICE_VENDOR := Seagate
DEVICE_MODEL := GoFlexNet
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4
SUPPORTED_DEVICES += goflexnet
endef
TARGET_DEVICES += seagate_goflexnet
define Device/seagate_goflexhome
DEVICE_VENDOR := Seagate
DEVICE_MODEL := GoFlexHome
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4
SUPPORTED_DEVICES += goflexhome
endef
TARGET_DEVICES += seagate_goflexhome
define Device/zyxel_nsa310b
DEVICE_VENDOR := ZyXEL
DEVICE_MODEL := NSA310b
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-r8169 kmod-fs-ext4 \
kmod-gpio-button-hotplug kmod-hwmon-lm85
SUPPORTED_DEVICES += nsa310b
endef
TARGET_DEVICES += zyxel_nsa310b
define Device/zyxel_nsa310s
DEVICE_VENDOR := ZyXEL
DEVICE_MODEL := NSA310S
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 kmod-gpio-button-hotplug
endef
TARGET_DEVICES += zyxel_nsa310s
define Device/zyxel_nsa325
DEVICE_VENDOR := ZyXEL
DEVICE_MODEL := NSA325
DEVICE_VARIANT := v1/v2
DEVICE_PACKAGES := kmod-ata-marvell-sata kmod-fs-ext4 \
kmod-gpio-button-hotplug kmod-rtc-pcf8563 kmod-usb3
SUPPORTED_DEVICES += nsa325
endef
TARGET_DEVICES += zyxel_nsa325
$(eval $(call BuildImage))
|