<feed xmlns='http://www.w3.org/2005/Atom'>
<title>staging/xback/package/boot, branch master</title>
<subtitle>Staging tree of Koen Vandeputte</subtitle>
<id>https://git.openwrt.org/openwrt/staging/xback/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/openwrt/staging/xback/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/'/>
<updated>2026-06-24T11:28:59Z</updated>
<entry>
<title>mvebu: add support for Zyxel NAS326</title>
<updated>2026-06-24T11:28:59Z</updated>
<author>
<name>Robert Senderek</name>
</author>
<published>2026-02-09T12:07:06Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=1c8c05ca98ee9f7b67d8160a8cb059be3b2714a1'/>
<id>urn:sha1:1c8c05ca98ee9f7b67d8160a8cb059be3b2714a1</id>
<content type='text'>
-----
Hardware:
CPU: ARMADA 380 1x1332Mhz
RAM: 512MB DDR3
FLASH: 256MB MX30LF2G18AC
2x SATA III
2x USB3.0
1x USB2.0
i2c to control various states.
RTC with battery
1Gbit LAN (WoL capable)
9x LED
RESET button at back
Power button at front (gpio-poweroff)
Copy button at front

-----
Doesn't work
FAN control
buzzer

-----
UART connections

Connect UART to port J3 115200
+----+----+----+----+----+
|3.3V| TX | RX |    | GND|
+----+----+----+    +----+
Depend of UART adapter board can fail to boot when adapter is attached. (all leds are dimmed) .
In that case disconnect UART for an &lt; second and after that all leds should be white.
Stop u-boot by ctrl-c within 3s window. (bootdelay 7s or more helps)
setenv bootdelay 7
saveenv

-----
Instalation via UART

Boot initramfs-kernel.bin
setenv ethact egiga0
setenv serverip 192.168.1.11
setenv ipaddr 192.168.1.12
tftpboot 0x02000000 *initramfs-kernel.bin
bootm 0x02000000 -

Device is DHCP client by default ( as the other supported NAS)

do backup into safe space
/dev/mtd3 Kernel-1
/dev/mtd4 RootFS-1

use sysupgrade in console or via luci

-----
MAC addresses

mac stored in u-boot-env ethaddr
label mac = eth0 mac =  5c:6a:80:xx:xx:xx

-----
Setting up u-boot  dual boot

u-boot contain two banks contain two OEM copies
To boot OpenWrt from bank1
setenv next_bootfrom 1
saveenv

To boot OEM from bank2
setenv next_bootfrom 2
saveenv

-----
Configuration via i2c
install i2c-tools

Enable WoL
i2cset -y 0x0 0xa 0xa 0x0006 w

Disable WoL
i2cset -y 0x0 0xa 0xa 0x0306 w

Enable auto power on
i2cset -y 0x0 0x0a 0x0a 0x0107 w

Disable auto power on
i2cset -y 0x0 0x0a 0x0a 0x0007 w

Signed-off-by: Robert Senderek &lt;robert.senderek@10g.pl&gt;
Link: https://github.com/openwrt/openwrt/pull/23228
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>package: arm-trusted-firmware-tools: add proper patch header</title>
<updated>2026-06-23T10:17:00Z</updated>
<author>
<name>Shine</name>
</author>
<published>2026-06-22T13:35:33Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=0eb407c000276d500f792b64d6a01d659ff5c17b'/>
<id>urn:sha1:0eb407c000276d500f792b64d6a01d659ff5c17b</id>
<content type='text'>
A patch was added without proper header.
Add a header that explains what the patch does and its prerequisites.

Fixes: e42e9c8133fbd0dce7abfe1ec696383745448078
Signed-off-by: Shine &lt;4c.fce2@proton.me&gt;
Link: https://github.com/openwrt/openwrt/pull/23917
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>packages: arm-trusted-firmware-tools: fix build on musl host</title>
<updated>2026-06-21T09:18:45Z</updated>
<author>
<name>Shine</name>
</author>
<published>2026-02-02T22:06:44Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=e42e9c8133fbd0dce7abfe1ec696383745448078'/>
<id>urn:sha1:e42e9c8133fbd0dce7abfe1ec696383745448078</id>
<content type='text'>
Due to POSIX style ioctl() declaration in MUSL, arm-trusted-firmware-tools
fails to build on MUSL based hosts with -Werror and -pedantic GCC switches
enabled. Alpine Linux, for example, fixes this with an unconditional cast
to "int". This commit tries to apply this cast only for MUSL based build
hosts, while keeping the type as-is where the cast isn't needed. Maybe
overkill, but cleaner than an unconditional cast.

Fixes: #13339
Signed-off-by: Shine &lt;4c.fce2@proton.me&gt;
Link: https://github.com/openwrt/openwrt/pull/21957
Signed-off-by: Jonas Jelonek &lt;jelonek.jonas@gmail.com&gt;
</content>
</entry>
<entry>
<title>mediatek: creatlentem clt-r30b1: add all-in-UBI layout</title>
<updated>2026-06-17T07:09:25Z</updated>
<author>
<name>Andrii Kuiukoff</name>
</author>
<published>2025-10-29T20:05:19Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=e414ca4fa6cbc8d1e95d59966b614a4129b5371f'/>
<id>urn:sha1:e414ca4fa6cbc8d1e95d59966b614a4129b5371f</id>
<content type='text'>
This commit introduces OpenWrt U-Boot all-in-ubi layout support
for the CreatLentem CLT-R30B1, enabling:
- Fully-featured U-Boot
- Effective recovery mechanisms
- Prolonged device lifetime by allocating most of the flash
  to UBI (which takes care of wear-leveling)
- Maximum available storage space for OpenWrt
- Unified firmware across different device variants

OpenWrt U-Boot UBI flash instructions
-------------------------------------

Using the installer image
-------------------------
To simplify the installation process, this method uses a fork
of Daniel Golle's (@dangowrt) UBI Installer
https://github.com/dangowrt/owrt-ubi-installer

1. Ensure your router is running the latest generic OpenWrt firmware.
   Upgrade it if necessary.
2. Obtain the installer image:
   Build the installer from source
   https://github.com/andros-ua/owrt-ubi-installer/tree/clt-r30b1
   or download a prebuilt image from the
   https://github.com/andros-ua/owrt-ubi-installer/releases
3. Flash the openwrt*creatlentem_clt-r30b1-ubi-initramfs-recovery-installer.itb
   image using sysupgrade.
4. Wait for installation: the green status LED will blink rapidly,
   indicating that the all-in-UBI installer is running.
5. Once the installation finishes,
   the status LED will turn solid white (lime) for 5 seconds.
6. After the device reboots, perform a final sysupgrade using the
   openwrt*creatlentem_clt-r30b1-ubi-squashfs-sysupgrade.itb image.

Return to stock layout
----------------------
1. Flash openwrt*creatlentem_clt-r30b1(-112m)-initramfs-kernel.bin
   via sysupgrade
2. Copy files to /tmp on the device via SCP:
   BL2.bin
   u-boot-env.bin
   Factory.bin
   FIP.bin
   openwrt*creatlentem_clt-r30b1(-112m)-squashfs-sysupgrade.bin
3. Restore stock MTD partitions:
   apk add kmod-mtd-rw
   insmod mtd-rw i_want_a_brick=1
   mtd write /tmp/BL2.bin BL2
   mtd write /tmp/u-boot-env.bin u-boot-env
   mtd write /tmp/Factory.bin Factory
   mtd write /tmp/FIP.bin FIP
4. Install the system:
   sysupgrade /tmp/*sysupgrade.bin

Recovery
--------
Use mtk_uartboot to recover corrupted BL2 or FIP via UART:
https://github.com/981213/mtk_uartboot

Stock layout
----------------------------------------
| dev:    size   erasesize  name       |
| mtd0: 00100000 00020000 "BL2"        |
| mtd1: 00080000 00020000 "u-boot-env" |
| mtd2: 00200000 00020000 "Factory"    |
| mtd3: 00200000 00020000 "FIP"        |
| mtd4: 07000000 00020000 "ubi"        |
----------------------------------------

OpenWrt U-Boot UBI layout
----------------------------------
| dev:    size   erasesize  name |
| mtd0: 00100000 00020000 "BL2"  |
| mtd1: 07f00000 00020000 "ubi"  |
----------------------------------

Signed-off-by: Andrii Kuiukoff &lt;andros.ua@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/20666
Signed-off-by: Jonas Jelonek &lt;jelonek.jonas@gmail.com&gt;
</content>
</entry>
<entry>
<title>zynq: add Bitmain Antminer S9 control board support</title>
<updated>2026-06-16T18:19:24Z</updated>
<author>
<name>Zoltan HERPAI</name>
</author>
<published>2026-06-14T17:37:54Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=e050bb79462219a535018c0e8022a9bcbd58b791'/>
<id>urn:sha1:e050bb79462219a535018c0e8022a9bcbd58b791</id>
<content type='text'>
This board is the control board for the Antminer S9 miners.

SoC:     Xilinx XC7Z010 - dual-core Cortex-A9 with FPGA stack
Memory:  512Mb DDR3
NIC:     1Gbit ethernet (BCM B50612E PHY)
Flash:   256Mb NAND (Micron MT29F2G08ABAEAWP)
Storage: SD-card slot
Other:   control pins available via FPGA stack

Admittedly, there is a limited number of use cases available
for these boards outside of the miners and the lack of FPGA
tooling in OpenWrt. However, for one, they are easily and cheaply
available, for two, the reason for adding this is to provide an
easy addition to the boardfarm for continuous testing of this target.

Notes: For u-boot, an additional patch is required to support
  booting from SD-cards. This is because EXTRA_ENV_SETTINGS is
  already defined in the board's u-boot config, which is the same
  place where the zynq-common.dtsi defines the required envvars.

Signed-off-by: Zoltan HERPAI &lt;wigyori@uid0.hu&gt;
</content>
</entry>
<entry>
<title>uboot-zynq: fix boot process on MMC</title>
<updated>2026-06-16T18:19:24Z</updated>
<author>
<name>Zoltan HERPAI</name>
</author>
<published>2026-06-14T17:33:28Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=fa55634872674a4c951db902771c472180106e37'/>
<id>urn:sha1:fa55634872674a4c951db902771c472180106e37</id>
<content type='text'>
A regression was introduced when upgrading to 2019.07, whereas
the bootloader did not proceed to load the FIT image. A fix
was reported but not upstreamed here [1]. Patch the uEnv file
to bring back these boards to an operational state.

[1] https://forum.openwrt.org/t/bugreport-regression-in-zynq-cpu-platform-not-bootiing-any-more-zedboard-zybo/182609/7

Fixes: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=5ca243153b110ceddffecb70ba8a8cd0e33c8f0b
Signed-off-by: Zoltan HERPAI &lt;wigyori@uid0.hu&gt;
</content>
</entry>
<entry>
<title>ipq806x: add apboot package for AP-32x</title>
<updated>2026-06-16T14:08:11Z</updated>
<author>
<name>Lukas Stockner</name>
</author>
<published>2026-06-12T15:05:20Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=68ef94cb25d8aa97ca04bda93befe4b0c87b590c'/>
<id>urn:sha1:68ef94cb25d8aa97ca04bda93befe4b0c87b590c</id>
<content type='text'>
This is unfortunately needed to disable the signature verification
in the stock bootloader.

Co-authored-by: Paul Spooren &lt;mail@aparcar.org&gt;
Signed-off-by: Lukas Stockner &lt;lukas@lukasstockner.de&gt;
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</content>
</entry>
<entry>
<title>ipq806x: add support for Aruba AP-32x</title>
<updated>2026-06-16T14:08:08Z</updated>
<author>
<name>Lukas Stockner</name>
</author>
<published>2025-11-05T22:41:57Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=d2a75029a5f8e54e1fd2f252f73b9a430a030116'/>
<id>urn:sha1:d2a75029a5f8e54e1fd2f252f73b9a430a030116</id>
<content type='text'>
This is a dual-radio 802.11a/b/g/n/ac access point with
dual Gigabit Ethernet.

There are two closely related models: The AP-324, which has external
antenna connectors, and the AP-325, which has internal antennas.
The board appears to be identical, and the same image works on both.
Additionally, the Siemens Scalance W1750D is an OEM variant using
the same board, so the image also works on that.

Unfortunately the factory APBoot bootloader enforces cryptographic
signatures on the firmware before booting, so a modified version
must be flashed via the serial port. See [^1] for details.

Specifications
==============
* Device:       Aruba AP-325 / AP-324
* SoC:          Qualcomm IPQ8068 2x1.4GHz ARMv7-A
* RAM:          512MiB (2x Winbond W632GU6MB-12)
* SPI flash:    4MiB Macronix MX25U3235F
* NAND flash:   128MiB Winbond W29N01HZBINF
* WiFi:         2x Qualcomm QCA9990 (one 2.4G, one 5G)
* Ethernet:     2x 1000BASE-T (Marvell 88E1514 PHY), both PoE-capable
* Power:        PoE 802.3at or 12V DC jack
* LEDs:         Red/Amber/Green status LED, Amber/Green WiFi LED
* Buttons:      1x, behind hole next to DC jack
* Console:      RJ45 connector, Cisco pinout
* USB:          1x USB 2.0 Type A, 1x internal to BLE, SoC has USB 3.0
                host but board is only wired for 2.0
* BLE:          TI CC2540 SoC, connected to USB and UART, unpopulated
                debug header on PCB
* TPM:          Atmel AT97SC3205T

How to install
==============
The stock bootloader APBoot appears to be vendor fork of U-Boot, which
disables much of the usual functionality and comes with its own booting
and firmware upgrade logic.

Unfortunately, this logic enforces RSA signatures on images,
even for the default boot from NAND.

Therefore, a patched bootloader is needed, which is built as a package.
In addition to the signature check removal, this also changes
the serial baudrate to 115200.

Luckily, the stock firmware does not disable the `sf` command
(it just hides it until you run `diag`), so the patched bootloader
can be fetched via TFTP and then flashed via console.

Flashing patched APBoot
-----------------------
* Build OpenWrt, or download `openwrt-ipq806x-generic-aruba_ap-32x-apboot.mbn`
* Connect serial cable and wired ethernet
* Access stock APBoot console at Baud 9600
* Flash patched bootloader:
```
setenv serverip &lt;your TFTP server IP&gt;
setenv autostart n
netget 44000000 openwrt-ipq806x-generic-aruba_ap-32x-apboot.mbn
sf probe 0
sf erase 220000 100000
sf write 44000000 220000 100000
reset
```

Booting OpenWrt
---------------
* Connect serial cable and wired ethernet
* Access patched APBoot console at Baud 115200
* Run `setenv serverip &lt;your TFTP server IP&gt;`
* Run `tftpboot openwrt-ipq806x-generic-aruba_ap-32x-initramfs.ari`

Installing OpenWrt
------------------
* Connect serial cable and wired ethernet
* Access patched APBoot console at Baud 115200
* Consider backing up stock firmware(s) (UBI volumes `aos0` and/or `aos1`)
  by booting into OpenWrt via initramfs (see above) and dumping them
* Wipe and repartition NAND flash (see below for explanation):
```
nand device 0
nand erase.chip
reset
ubi part ubifs
ubi remove ubifs
ubi create ubifs 1
ubi create rootfs_data
```
* Follow steps above to boot OpenWrt via initramfs
* From OpenWrt, persist installation via sysupgrade

Reverting to stock FW
---------------------

The patched bootloader remains compatible with the original firmware,
so you can just wipe the NAND, let APBoot recreate the partitions,
and flash back the `aos0`/`aos1` backup from above.

Current status
==============

Tested and working
------------------

* Console
* Wired GbE (both ports)
* WiFi (both 2.4G and 5G)
* LEDs
* Restart Button
* USB port
* External watchdog
* TPM
* BLE SoC

Future work
-----------

* GPIOs for:
  * power source (8 indicates DC jack, 59 indicates 802.3at)
  * reset source (64 for warm reset, 65 for watchdog)
  * USB overcurrent (63)
* BLE SoC reflashing
  * CC2540 comes with Aruba-specific FW out of the box
  * Debug header is exposed on PCB (pinout GND-VCC-Clock-Data-Reset),
    but that requires disassembly
  * Stock BLE FW appears to support reflashing via UART, but protocol
    would need to be reverse-engineered
* ramoops/pstore
  * It appears that APBoot clears the RAM on boot, might be something
    we can patch out as well
* Porting a modern U-Boot

Flash layout
============

SPI flash
---------

```
0x000000-0x020000 sbl1
0x020000-0x040000 mibib
0x040000-0x080000 sbl2
0x080000-0x100000 sbl3
0x100000-0x110000 ddrconfig
0x110000-0x120000 ssd
0x120000-0x1a0000 tz
0x1a0000-0x220000 rpm
0x220000-0x320000 appsbl
0x320000-0x330000 appsblenv
0x330000-0x370000 art
0x370000-0x380000 panicdump
0x380000-0x390000 certificate
0x390000-0x3a0000 mfginfo
0x3a0000-0x3b0000 flashcache
0x3b0000-0x400000 aosspare
```

Factory NAND flash
------------------
* 32MiB MTD partition `aos0`, formatted as UBI
  * 32MiB UBI volume `aos0`
    * contains kernel+initrd of the primary firmware,
      initrd contains the entire root FS
* 32MiB MTD partition `aos1`, formatted as UBI
  * 32MiB UBI volume `aos1`
    * contains kernel+initrd of the secondary firmware,
      initrd contains the entire root FS
* 64MiB MTD partition `ubifs`, formatted as UBI
  * 64MiB UBI volume `ubifs`
    * Contains UBIFS, overlay-mounted on top of the initrd,
      shared between firmware slots

APBoot understands UBI, and will read the kernel from the
`aos0` or `aos1` volume (depending on `os_partition`)
with fallback to the other one in case a check fails.

Kernels are expected to have a vendor-specific header, the included
script will add that header with the correct checksum but no signature.

OpenWrt NAND flash
------------------

OpenWrt assumes separate UBI volumes for kernel and rootfs,
as well as a volume that must be named `rootfs_data` for the UBIFS.

Unfortunately, APBoot actively checks the UBI volumes at boot, and will
repartition if it doesn't find the volumes that it expects (listed above).

Luckily, it doesn't check their size, only their existence. Therefore,
we can use the following layout:

* 32MiB MTD partition `aos0`, formatted as UBI
  * 32MiB UBI volume `aos0`
    * contains OpenWrt kernel+initrd
* 32MiB MTD partition `aos1`, formatted as UBI
  * 32MiB UBI volume `aos1`
    * contains OpenWrt root squashfs
* 64MiB MTD partition `ubifs`, formatted as UBI
  * small (single-LEB) UBI volume `ubifs`
    * Dummy volume, only there to satisfy APBoot
  * almost 64MiB UBI volume `rootfs_data`
    * contains UBIFS, overlay-mounted on top of the rootfs

[^1]: https://github.com/lukasstockner/ap325-apboot-openwrt

Signed-off-by: Lukas Stockner &lt;lukas@lukasstockner.de&gt;
Link: https://github.com/openwrt/openwrt/pull/20738
Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</content>
</entry>
<entry>
<title>Revert "ipq806x: add support for Aruba AP-32x"</title>
<updated>2026-06-16T14:05:13Z</updated>
<author>
<name>Paul Spooren</name>
</author>
<published>2026-06-16T14:04:22Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=b85b7fd14cb34953966bbeda4ca5712391fb8e8d'/>
<id>urn:sha1:b85b7fd14cb34953966bbeda4ca5712391fb8e8d</id>
<content type='text'>
This reverts commit e912d6aeb4c017a30b86acd3a8cf4ec4b53b87a8.
Wrong Signed-off-by line was used, reverting and re-applying.

Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</content>
</entry>
<entry>
<title>Revert "ipq806x: add apboot package for AP-32x"</title>
<updated>2026-06-16T14:05:08Z</updated>
<author>
<name>Paul Spooren</name>
</author>
<published>2026-06-16T14:03:24Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/xback/commit/?id=eccf49c9f896721894d1c684449dba50ef55849c'/>
<id>urn:sha1:eccf49c9f896721894d1c684449dba50ef55849c</id>
<content type='text'>
This reverts commit 0823ad47ff3068476da4e5035575b4923bcc1fec.
Wrong Signed-off-by line was used, reverting and re-applying.

Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</content>
</entry>
</feed>
