Skip to content

Commit a4fe14e

Browse files
kevinelliottclaude
andcommitted
flasher: add 13 tier2/tier3 boards to 1.0.38-dev catalog
Adds the successfully-built tier2 + tier3 boards to the live flasher catalog (now 19 devices, 21 images): vendor (rk3588/rk356x): rock-5b-plus, nanopct6, nanopi-r6s, rock-5t, orangepi5-max, orangepi3b, radxa-zero3, rock-5c current (Amlogic/meson): odroidn2, odroidc4, lepotato, khadas-vim3, odroidc2 Images published to the 1.0.38-dev GitHub release; catalog regenerated from the real release assets (real url/size/downloadSha256). The remaining sunxi (orangepi*) and mainline-rockchip (rk3568/rk3399: rock-3a, odroidm1, nanopi-r4s, orangepi4-lts) boards are blocked at the pinned Armbian v26.2.1 by kernel patch drift (verisilicon AV1 + megous usb-gadget archive patches fail to apply; no prebuilt kernel in OCI cache). edge kernel hits the same failure, so they are omitted until the Armbian pin is bumped. gen-catalog.mjs: harden against GitHub's eventually-consistent release-asset listing (union assets across reads; retry sha256 sidecar download until every image has a hash) so the generated catalog is deterministic and complete. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 1448012 commit a4fe14e

2 files changed

Lines changed: 380 additions & 8 deletions

File tree

flasher/catalog.json

Lines changed: 352 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,101 @@
11
{
22
"schema": 1,
33
"name": "Airwaves OS",
4-
"updated": "2026-06-19T04:11:11Z",
4+
"updated": "2026-06-19T11:15:58Z",
55
"channels": [
66
"stable",
77
"beta",
88
"dev"
99
],
1010
"devices": [
11+
{
12+
"id": "nanopct6",
13+
"name": "FriendlyELEC NanoPC-T6",
14+
"description": "RK3588 board with dual 2.5GbE and M.2.",
15+
"icon": "sbc",
16+
"arch": "arm64",
17+
"vendor": "FriendlyELEC",
18+
"tags": [
19+
"supported"
20+
]
21+
},
22+
{
23+
"id": "nanopi-r6s",
24+
"name": "FriendlyELEC NanoPi R6S",
25+
"description": "RK3588S router/feeder with dual 2.5GbE + GbE.",
26+
"icon": "sbc",
27+
"arch": "arm64",
28+
"vendor": "FriendlyELEC",
29+
"tags": [
30+
"supported"
31+
]
32+
},
33+
{
34+
"id": "odroidc2",
35+
"name": "Hardkernel Odroid C2",
36+
"description": "Classic Amlogic S905 board.",
37+
"icon": "sbc",
38+
"arch": "arm64",
39+
"vendor": "Hardkernel",
40+
"tags": [
41+
"supported"
42+
]
43+
},
44+
{
45+
"id": "odroidc4",
46+
"name": "Hardkernel Odroid C4",
47+
"description": "Amlogic S905X3 board, low-cost and efficient.",
48+
"icon": "sbc",
49+
"arch": "arm64",
50+
"vendor": "Hardkernel",
51+
"tags": [
52+
"supported"
53+
]
54+
},
55+
{
56+
"id": "odroidn2",
57+
"name": "Hardkernel Odroid N2/N2+",
58+
"description": "Amlogic S922X board, a long-time favourite.",
59+
"icon": "sbc",
60+
"arch": "arm64",
61+
"vendor": "Hardkernel",
62+
"tags": [
63+
"supported"
64+
]
65+
},
66+
{
67+
"id": "khadas-vim3",
68+
"name": "Khadas VIM3",
69+
"description": "Amlogic A311D board with NPU and eMMC.",
70+
"icon": "sbc",
71+
"arch": "arm64",
72+
"vendor": "Khadas",
73+
"tags": [
74+
"supported"
75+
]
76+
},
77+
{
78+
"id": "lepotato",
79+
"name": "Libre Computer Le Potato",
80+
"description": "Amlogic S905X board, very low cost.",
81+
"icon": "sbc",
82+
"arch": "arm64",
83+
"vendor": "Libre Computer",
84+
"tags": [
85+
"supported"
86+
]
87+
},
88+
{
89+
"id": "orangepi3b",
90+
"name": "Orange Pi 3B",
91+
"description": "RK3566 board, a strong-value feeder.",
92+
"icon": "orangepi",
93+
"arch": "arm64",
94+
"vendor": "Orange Pi",
95+
"tags": [
96+
"supported"
97+
]
98+
},
1199
{
12100
"id": "orangepi5",
13101
"name": "Orange Pi 5",
@@ -19,6 +107,17 @@
19107
"supported"
20108
]
21109
},
110+
{
111+
"id": "orangepi5-max",
112+
"name": "Orange Pi 5 Max",
113+
"description": "Top-end RK3588 board with 2.5GbE.",
114+
"icon": "orangepi",
115+
"arch": "arm64",
116+
"vendor": "Orange Pi",
117+
"tags": [
118+
"supported"
119+
]
120+
},
22121
{
23122
"id": "orangepi5-plus",
24123
"name": "Orange Pi 5 Plus",
@@ -64,6 +163,50 @@
64163
"supported"
65164
]
66165
},
166+
{
167+
"id": "rock-5b-plus",
168+
"name": "Radxa ROCK 5B Plus",
169+
"description": "RK3588 board with onboard eMMC and PoE option.",
170+
"icon": "rock",
171+
"arch": "arm64",
172+
"vendor": "Radxa",
173+
"tags": [
174+
"supported"
175+
]
176+
},
177+
{
178+
"id": "rock-5c",
179+
"name": "Radxa ROCK 5C",
180+
"description": "RK3588S2 board, compact and efficient.",
181+
"icon": "rock",
182+
"arch": "arm64",
183+
"vendor": "Radxa",
184+
"tags": [
185+
"supported"
186+
]
187+
},
188+
{
189+
"id": "rock-5t",
190+
"name": "Radxa ROCK 5T",
191+
"description": "RK3588 board with dual 2.5GbE.",
192+
"icon": "rock",
193+
"arch": "arm64",
194+
"vendor": "Radxa",
195+
"tags": [
196+
"supported"
197+
]
198+
},
199+
{
200+
"id": "radxa-zero3",
201+
"name": "Radxa ZERO 3W",
202+
"description": "Tiny RK3566 board, Pi-Zero form factor.",
203+
"icon": "rock",
204+
"arch": "arm64",
205+
"vendor": "Radxa",
206+
"tags": [
207+
"supported"
208+
]
209+
},
67210
{
68211
"id": "rpi4b",
69212
"name": "Raspberry Pi 3 / 4",
@@ -78,6 +221,102 @@
78221
}
79222
],
80223
"images": [
224+
{
225+
"id": "odroidc2-dev-1.0.38",
226+
"device": "odroidc2",
227+
"channel": "dev",
228+
"osVersion": "1.0.38",
229+
"codename": "Sideband",
230+
"name": "Airwaves OS 1.0.38 (Odroid C2)",
231+
"released": "2026-06-18",
232+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
233+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-1448012_Odroidc2_trixie_current_6.18.35_minimal.img.xz",
234+
"compression": "xz",
235+
"downloadSize": 515052816,
236+
"downloadSha256": "3d3fc51f7465a3cbb4b70aff2f6004500be6d3b87ef44e83cbd7ec44ff70988d",
237+
"minStorageBytes": 4294967296,
238+
"latest": true
239+
},
240+
{
241+
"id": "orangepi3b-dev-1.0.38",
242+
"device": "orangepi3b",
243+
"channel": "dev",
244+
"osVersion": "1.0.38",
245+
"codename": "Sideband",
246+
"name": "Airwaves OS 1.0.38 (Orange Pi 3B)",
247+
"released": "2026-06-18",
248+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
249+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-1448012_Orangepi3b_trixie_vendor_6.1.115_minimal.img.xz",
250+
"compression": "xz",
251+
"downloadSize": 489548736,
252+
"downloadSha256": "2e054c3196393afaa538101fda672b40e76782214b884888e8e08f07d956aab3",
253+
"minStorageBytes": 4294967296,
254+
"latest": true
255+
},
256+
{
257+
"id": "orangepi5-max-dev-1.0.38",
258+
"device": "orangepi5-max",
259+
"channel": "dev",
260+
"osVersion": "1.0.38",
261+
"codename": "Sideband",
262+
"name": "Airwaves OS 1.0.38 (Orange Pi 5 Max)",
263+
"released": "2026-06-18",
264+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
265+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-1448012_Orangepi5-max_trixie_vendor_6.1.115_minimal.img.xz",
266+
"compression": "xz",
267+
"downloadSize": 572206716,
268+
"downloadSha256": "c8b6a44e5839cef77796d79a03c4f915a90a13100fb33c37d8c3a19d504df3b3",
269+
"minStorageBytes": 4294967296,
270+
"latest": true
271+
},
272+
{
273+
"id": "radxa-zero3-dev-1.0.38",
274+
"device": "radxa-zero3",
275+
"channel": "dev",
276+
"osVersion": "1.0.38",
277+
"codename": "Sideband",
278+
"name": "Airwaves OS 1.0.38 (Radxa ZERO 3W)",
279+
"released": "2026-06-18",
280+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
281+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-1448012_Radxa-zero3_trixie_vendor_6.1.115_minimal.img.xz",
282+
"compression": "xz",
283+
"downloadSize": 576316232,
284+
"downloadSha256": "c3c7808d05dea5989141c31a0accdf4e823d9a2d14417cbd7e59d4b8d4f315b0",
285+
"minStorageBytes": 4294967296,
286+
"latest": true
287+
},
288+
{
289+
"id": "rock-5c-dev-1.0.38",
290+
"device": "rock-5c",
291+
"channel": "dev",
292+
"osVersion": "1.0.38",
293+
"codename": "Sideband",
294+
"name": "Airwaves OS 1.0.38 (ROCK 5C)",
295+
"released": "2026-06-18",
296+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
297+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-1448012_Rock-5c_trixie_vendor_6.1.115_minimal.img.xz",
298+
"compression": "xz",
299+
"downloadSize": 577633808,
300+
"downloadSha256": "16484fee8ac5466c86de1e1e9b49e68f749232482d5b69f538f73316e4b04a6d",
301+
"minStorageBytes": 4294967296,
302+
"latest": true
303+
},
304+
{
305+
"id": "rock-5t-dev-1.0.38",
306+
"device": "rock-5t",
307+
"channel": "dev",
308+
"osVersion": "1.0.38",
309+
"codename": "Sideband",
310+
"name": "Airwaves OS 1.0.38 (ROCK 5T)",
311+
"released": "2026-06-18",
312+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
313+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-1448012_Rock-5t_trixie_vendor_6.1.115_minimal.img.xz",
314+
"compression": "xz",
315+
"downloadSize": 490209868,
316+
"downloadSha256": "a10491c3f3fd9de94f727dfc25002f787ae79544e3294cba9dde16d78a5888a6",
317+
"minStorageBytes": 4294967296,
318+
"latest": true
319+
},
81320
{
82321
"id": "orangepi5-plus-dev-1.0.38",
83322
"device": "orangepi5-plus",
@@ -174,6 +413,118 @@
174413
"minStorageBytes": 4294967296,
175414
"latest": true
176415
},
416+
{
417+
"id": "khadas-vim3-dev-1.0.38",
418+
"device": "khadas-vim3",
419+
"channel": "dev",
420+
"osVersion": "1.0.38",
421+
"codename": "Sideband",
422+
"name": "Airwaves OS 1.0.38 (Khadas VIM3)",
423+
"released": "2026-06-18",
424+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
425+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-d9ab176_Khadas-vim3_trixie_current_6.18.35_minimal.img.xz",
426+
"compression": "xz",
427+
"downloadSize": 513290316,
428+
"downloadSha256": "a1e4ef0e05bf4d4587a9c5eb67533c14f0a57bf26cbb8a2c2c5d17816962fbe9",
429+
"minStorageBytes": 4294967296,
430+
"latest": true
431+
},
432+
{
433+
"id": "lepotato-dev-1.0.38",
434+
"device": "lepotato",
435+
"channel": "dev",
436+
"osVersion": "1.0.38",
437+
"codename": "Sideband",
438+
"name": "Airwaves OS 1.0.38 (Le Potato)",
439+
"released": "2026-06-18",
440+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
441+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-d9ab176_Lepotato_trixie_current_6.18.35_minimal.img.xz",
442+
"compression": "xz",
443+
"downloadSize": 514891316,
444+
"downloadSha256": "7aec8c18362c6a3ab8ffe9842a30db050071af9bd4fe895cd8ee9c3bedee8a47",
445+
"minStorageBytes": 4294967296,
446+
"latest": true
447+
},
448+
{
449+
"id": "nanopct6-dev-1.0.38",
450+
"device": "nanopct6",
451+
"channel": "dev",
452+
"osVersion": "1.0.38",
453+
"codename": "Sideband",
454+
"name": "Airwaves OS 1.0.38 (NanoPC-T6)",
455+
"released": "2026-06-18",
456+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
457+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-d9ab176_Nanopct6_trixie_vendor_6.1.115_minimal.img.xz",
458+
"compression": "xz",
459+
"downloadSize": 490144268,
460+
"downloadSha256": "6c6b3d55280d0c98ff580cb76edd67d33f031e7d8fc9723605bc0e37848cfc0d",
461+
"minStorageBytes": 4294967296,
462+
"latest": true
463+
},
464+
{
465+
"id": "nanopi-r6s-dev-1.0.38",
466+
"device": "nanopi-r6s",
467+
"channel": "dev",
468+
"osVersion": "1.0.38",
469+
"codename": "Sideband",
470+
"name": "Airwaves OS 1.0.38 (NanoPi R6S)",
471+
"released": "2026-06-18",
472+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
473+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-d9ab176_Nanopi-r6s_trixie_vendor_6.1.115_minimal.img.xz",
474+
"compression": "xz",
475+
"downloadSize": 487686720,
476+
"downloadSha256": "522f9227dcadc2adc356a591b3194920148c4905d78c3bfca0d613f8421102fa",
477+
"minStorageBytes": 4294967296,
478+
"latest": true
479+
},
480+
{
481+
"id": "odroidc4-dev-1.0.38",
482+
"device": "odroidc4",
483+
"channel": "dev",
484+
"osVersion": "1.0.38",
485+
"codename": "Sideband",
486+
"name": "Airwaves OS 1.0.38 (Odroid C4)",
487+
"released": "2026-06-18",
488+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
489+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-d9ab176_Odroidc4_trixie_current_6.18.35_minimal.img.xz",
490+
"compression": "xz",
491+
"downloadSize": 515875352,
492+
"downloadSha256": "54c799c5fda4495721dfc41048c41e8ae2f89f999ea5bba414dc8c64c6321c38",
493+
"minStorageBytes": 4294967296,
494+
"latest": true
495+
},
496+
{
497+
"id": "odroidn2-dev-1.0.38",
498+
"device": "odroidn2",
499+
"channel": "dev",
500+
"osVersion": "1.0.38",
501+
"codename": "Sideband",
502+
"name": "Airwaves OS 1.0.38 (Odroid N2)",
503+
"released": "2026-06-18",
504+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
505+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-d9ab176_Odroidn2_trixie_current_6.18.35_minimal.img.xz",
506+
"compression": "xz",
507+
"downloadSize": 515168480,
508+
"downloadSha256": "1b0be7e6ffafb0f127c5342dd1f2deaf18ef8b8b23619e08a267a3383d774f47",
509+
"minStorageBytes": 4294967296,
510+
"latest": true
511+
},
512+
{
513+
"id": "rock-5b-plus-dev-1.0.38",
514+
"device": "rock-5b-plus",
515+
"channel": "dev",
516+
"osVersion": "1.0.38",
517+
"codename": "Sideband",
518+
"name": "Airwaves OS 1.0.38 (ROCK 5B+)",
519+
"released": "2026-06-18",
520+
"notesUrl": "https://github.com/airframesio/airwaves-os/releases/tag/1.0.38-dev",
521+
"url": "https://github.com/airframesio/airwaves-os/releases/download/1.0.38-dev/Airwaves_OS_1.0.38-d9ab176_Rock-5b-plus_trixie_vendor_6.1.115_minimal.img.xz",
522+
"compression": "xz",
523+
"downloadSize": 490713108,
524+
"downloadSha256": "9375ed8c3cf3835a77c403679963202bbff170791be8551b0f903ae6927458f1",
525+
"minStorageBytes": 4294967296,
526+
"latest": true
527+
},
177528
{
178529
"id": "rock-5b-stable-1.0.37",
179530
"device": "rock-5b",

0 commit comments

Comments
 (0)