<feed xmlns='http://www.w3.org/2005/Atom'>
<title>staging/stintel/scripts, branch master</title>
<subtitle>Staging tree of Stijn Tintel</subtitle>
<id>https://git.openwrt.org/openwrt/staging/stintel/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/openwrt/staging/stintel/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/'/>
<updated>2026-10-27T06:19:26Z</updated>
<entry>
<title>scripts: mkits-qsdk-ipq-image: strip path from description</title>
<updated>2026-10-27T06:19:26Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-10-07T07:28:31Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=9ec7903e371233ef913f1dee4e2aeb8872efff85'/>
<id>urn:sha1:9ec7903e371233ef913f1dee4e2aeb8872efff85</id>
<content type='text'>
The FIT description of the boot script image is derived from the
file name given on the command line. Take only the basename so that
the script can be passed by path while the description stays the
same.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>qualcommax: ipq50xx: add AVM FRITZ!Box 4050</title>
<updated>2026-10-18T11:14:19Z</updated>
<author>
<name>Leonard Anderweit</name>
</author>
<published>2026-05-18T19:10:23Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=8dcdd8fa0edcb5ef56b8aaf985a5900f93c12ea7'/>
<id>urn:sha1:8dcdd8fa0edcb5ef56b8aaf985a5900f93c12ea7</id>
<content type='text'>
Add support for AVM FRITZ!Box 4050, an IPQ5018 based WiFi 6 router.

Hardware
--------
SOC	: Qualcomm IPQ5018 2x A53
RAM	: 512MiB DDR3L Winbond W634GU6QB-11
Flash	: 128MiB Winbond W25N01GWZEIG
ETH	: 4x GbE
Switch	: Qualcomm QCA8337
WiFi	: IPQ5018, QCN6102
USB	: 1x USB 2.0
Buttons	: WLAN, DECT, WPS
LEDs	: Power, WLAN, DECT, WPS, Info green, Info red
DECT	: DCX81AC0CFAE3FNC
Power	: DC 12V 1.5A

UART
----
4 holes, vcc is square
gnd - rx - tx - vcc
3.3v

Installation
------------
1. Download scripts/flashing/eva_ramboot.py, initramfs image and sysupgrade.bin
2. Connect to lan1 and set host ip to 192.168.178.2
3. Power the device and run
   `./eva_ramboot.py --ramsize 0x20000000 --ramstart 0x40000000 192.168.178.1 &lt;initramfs image&gt;`
   when only the 'Power' led blinks
4. Set host ip to 192.168.1.2 and connect to LuCi on 192.168.1.1
5. Sysupgrade in LuCi

Revert to OEM firmware
----------------------
Follow the OEM guide: https://fritz.com/en/pages/recover
The recovery process also works on Linux using Wine.

MAC Addresses
-------------
WAN	: D4:24:DD:XX:XX:FF
LAN	: D4:24:DD:XX:XX:02 (label mac)
2.4GHz	: D4:24:DD:XX:XX:04
5GHz	: D4:24:DD:XX:XX:05

Not Supported
-------------
DECT
analog phone port

Signed-off-by: Leonard Anderweit &lt;leonard.anderweit@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25056
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>scripts: eva_ramboot: make memory addresses configurable</title>
<updated>2026-10-18T11:14:19Z</updated>
<author>
<name>Leonard Anderweit</name>
</author>
<published>2026-06-17T16:29:41Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=cb642c0818358972a31620f583627cd35aa354a1'/>
<id>urn:sha1:cb642c0818358972a31620f583627cd35aa354a1</id>
<content type='text'>
Add arguments --ramsize and --ramstart to make the hardcoded memory
addresses configurable. Use the previous addresses as the default.

Signed-off-by: Leonard Anderweit &lt;leonard.anderweit@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/25056
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>scripts/ext-tools.sh: refresh the stamps with a sub-second timestamp</title>
<updated>2026-10-06T00:05:39Z</updated>
<author>
<name>Hauke Mehrtens</name>
</author>
<published>2026-10-04T21:25:25Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=c459c71c4a778eac007f7e541cc9831fadde2a3c'/>
<id>urn:sha1:c459c71c4a778eac007f7e541cc9831fadde2a3c</id>
<content type='text'>
The GitHub CI spends 10 to 18 minutes rebuilding all host tools in most
"Check Kernel patches" jobs, although the tools container ships them
prebuilt. Before, the "Build tools" step took about 10 seconds.

The refresh sets all stamps to one time given to touch -t, which has a
resolution of a full second, so the fraction is zero. The CI job runs the
refresh about 0.2 seconds after actions/checkout finished, and git writes
the tools directory last. Its files therefore often get a timestamp in
the same second as the stamps, but after the full second. Since
timestamp.pl compares the fraction of a second, these source files are
newer than the stamps and every tool gets cleaned and built again.

Take the time from a freshly created temporary file and set all stamps
to it with touch -r. They still share one timestamp, but it now includes
the fraction and is always later than the checkout.

Fixes: 3cf47c5c17dc ("build: compare timestamps with a fraction of a second")
Assisted-by: Claude:claude-opus-5-5
Link: https://github.com/openwrt/openwrt/pull/25626
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</content>
</entry>
<entry>
<title>qualcommax: add support for TP-Link RE700X</title>
<updated>2026-10-03T18:17:43Z</updated>
<author>
<name>Eduard Hart</name>
</author>
<published>2026-06-29T17:43:57Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=a20047f6ee25725a97063af0517aa5c254931a8b'/>
<id>urn:sha1:a20047f6ee25725a97063af0517aa5c254931a8b</id>
<content type='text'>
TP-Link RE700X is a dual-band Wi-Fi 6 (AX3000) range extender based on
Qualcomm IPQ5018 (2.4 GHz) with a QCN6122 (5 GHz) companion radio.

Specifications:
- SoC: Qualcomm IPQ5018 (dual-core ARM Cortex-A53)
- RAM: 256 MiB
- Flash: 128 MiB SPI-NAND (ESMT F50D1G41LB)
- Wi-Fi: IPQ5018 2.4 GHz + QCN6122 5 GHz, both 802.11ax
- Ethernet: 1x Gigabit - IPQ5018 MAC1 (DWMAC) via SGMII/uniphy0 to a
  Realtek RTL8211F (MDIO1 addr 6). The SoC internal GE PHY (MAC0/gmac0)
  is not wired to any external port and stays disabled.
- LEDs: 5, Buttons: reset + WPS
- Power: 100-240 V AC, 50/60 Hz, 0.4 A (internal PSU, wall-plug)
- UART: 3.3 V serial console, 115200 8N1; on-board 4-pad header,
  pinout from top: TX, RX, GND, VCC

MAC addresses (factory_data UBI volume, file default-mac, mounted
read-only in preinit like on the EAP650):
- LAN (label MAC): default-mac
- 2.4 GHz: default-mac + 1
- 5 GHz: default-mac + 2

Calibration data is extracted from the 0:art partition (IPQ5018 at
0x1000, QCN6122 at 0x26800).

Installation:
- From OpenWrt (or after a RAM-boot of the initramfs via U-Boot/TFTP):
  sysupgrade.
- From the stock firmware: openwrt-...-squashfs-factory-webflash.bin via
  the TP-Link web UI (System -&gt; Firmware Upgrade).
  scripts/tplink-re700x-factory.py wraps the rootfs UBI into the stock
  "nvrammanager" upload container (the same "tplink2022"/safeloader
  family as scripts/tplink-mkimage-2022.py); the stock flasher writes it
  into the inactive dual-boot slot. This path has not been tested end to
  end (no unit on stock firmware was left), so keep UART at hand for a
  first install.

The stock U-Boot passes a slot-correct ubi.mtd= (rootfs / rootfs_1 per the
dual-boot index) but with an unmountable root=mtd:ubi_rootfs. The DTS /chosen
inherits ubi.mtd= and appends root=/dev/ubiblock0_1, so OpenWrt boots from
whichever slot the flasher wrote. Like on the EAP650, sysupgrade installs
into the inactive slot and then points tp_boot_idx at it, keeping the
running slot as a fallback; the U-Boot environment is on 0:appsblenv.

The QCN6122/IPQ5018 board-2.bin (BDF) data is supplied via
ipq-wifi-tplink_re700x (openwrt/firmware_qca-wireless).

Wi-Fi is disabled in the DTS for now: with the default ath11k DP ring
sizes both radios exhaust the 256 MiB of RAM. It will be enabled in a
follow-up together with the ath11k patch that selects smaller rings on
low-memory boards, once that has been accepted upstream.

Signed-off-by: Eduard Hart &lt;eduard.hart@etik.com&gt;
Link: https://github.com/openwrt/openwrt/pull/23982
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>package-metadata: drop self-referencing rank from depends-on gates</title>
<updated>2026-10-02T13:13:40Z</updated>
<author>
<name>Mario Andrés Pérez</name>
</author>
<published>2026-09-08T17:14:27Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=87215b42ce7cfd2f43a9423788184a74e09917f0'/>
<id>urn:sha1:87215b42ce7cfd2f43a9423788184a74e09917f0</id>
<content type='text'>
Based on:
- 218aad6e2fb604ec79deff99d1aebc87189f005a re-emit a provider's depends
- 38824a13516db2b51067e6851b763b9846209b90 fold the select condition onto re-emitted deps
- 47d6b05ad328e80e4ee05e48aa95462f3518c014 provides-based dep resolution(%vpackage/@vdeps machinery)
- 1fd50531cac9c41334d8f57e2dbc1f50c3572445 "&lt;" rank comparison on provider selection

The provider-selection rank ('A&lt;B', born in 1fd50531) is RHS-anchored
on the stanza owner. When a consumer +selects a provider of a PROVIDES
target served by &gt;=2 providers, the provider's dependencies are
re-emitted into the consumer's kconfig block under this rank. A bare
@() arch/feature dep folded under it becomes:

  depends on !(PACKAGE_librespeed-cli-rust&lt;PACKAGE_librespeed-common)
              || (aarch64||arm||i386||i686||loongarch64||mips||...)

Kconfig treats any occurrence of a symbol in a dependency edge as an
edge, even negated under '!() ||', so PACKAGE_librespeed-common lands
in its own dir_dep: a recursive dependency self-loop.

The self-reference reaches the owner's stanza through any re-emitted
dependency emitted as depends-on: provider '@()' arch gates, plain
deps on a second virtual that '||'-expand, and plain deps on ordinary
packages inheriting the rank-bearing parent. Rank is therefore
generated only for select emission: it is built into a separate
variable and folded into the select gate alone, while re-emission
carries the pre-rank negation instead (!OTHER / !(A||B) over all
leftovers, exactly as before 1fd50531). Within a stanza no depends-on
gate can therefore self-reference, except for self-providing
consumers (provide and depend on the same name), which keep
historical behavior; user conditions, parent conditions and all
select arbitration remain untouched.

Fixes: 1fd50531cac9 ("metadata: ensure one dependency provider to be y if a package is y")
Signed-off-by: Mario Andrés Pérez &lt;mapb_@outlook.com&gt;
</content>
</entry>
<entry>
<title>scripts: add Mercusys fwup image generator</title>
<updated>2026-10-02T09:09:30Z</updated>
<author>
<name>Johan Alvarado</name>
</author>
<published>2026-08-26T16:30:43Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=b5a84a3323584b47f4dd7a7ebf1bae73630a3af0'/>
<id>urn:sha1:b5a84a3323584b47f4dd7a7ebf1bae73630a3af0</id>
<content type='text'>
Mercusys devices whose stock web UI expects an fwup container reject the
tplink-image-2022 container: the loader picks its verification algorithm
from the fw-type string at offset 0x14, which that container does not
write.

Build the container the loader accepts, with the fw-type string, the
support list and the MD5 placeholder digest in place.

This is a separate script rather than a flag on tplink-mkimage-2022.py
because only the first 0x14 bytes match, the BE length and the salted MD5
over file[4:]. That script writes 0xff filler up to 0x1014, a table there
(&gt;2I rootfs_size/num_items, then &gt;I32s2I entries), data at a fixed 0x1814
base, the rootfs first and a packed &gt;4B1I2I soft version. The fwup
container has no table: 0x2c records of name[32] + &gt;III base, next_off,
size, each followed by its own data and chained through next_off until 0,
the rootfs appended after the last record, and the soft version as ASCII
soft_ver: in an ordinary record.

Signed-off-by: Johan Alvarado &lt;contact@c127.dev&gt;
Link: https://github.com/openwrt/openwrt/pull/24919
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>build: remove the AUDIO_SUPPORT and DISPLAY_SUPPORT symbols</title>
<updated>2026-09-29T14:29:43Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-26T20:41:59Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=da6323e54c9cb75479eb5be5c83d43a15d5c3c34'/>
<id>urn:sha1:da6323e54c9cb75479eb5be5c83d43a15d5c3c34</id>
<content type='text'>
Nothing tests either symbol any more. AUDIO_SUPPORT was also selected by
PCI_SUPPORT and USB_SUPPORT, which stood for "a sound card could be
plugged in here": audio hardware sits behind MMC, SPI, a Bluetooth UART
or an SoC PCM block just as often, so the inference never held. The
display feature was derived from a literal CONFIG_VGA_CONSOLE or CONFIG_FB
in a kernel fragment, which misses every target whose fbdev came from DRM
emulation.

Delete both symbols, the two selects, the feature translations and the
derivation.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>build: order the Hardware support menu before Base system</title>
<updated>2026-09-29T14:29:43Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-27T18:08:43Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=6e638524eed4c7ca316043a9c2d8309282369fca'/>
<id>urn:sha1:6e638524eed4c7ca316043a9c2d8309282369fca</id>
<content type='text'>
Categories other than Base system are emitted in alphabetical order, so
a category describing the hardware a device has would land halfway down
the package menu among unrelated ones. Emit Hardware support first
instead, ahead of Base system, since which device classes an image
supports is the first thing to choose and everything else follows from
it.

print_package_config_category() returns early for a category no package
uses, so this has no effect until such a package exists.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>build: gate the VM image formats on their target features</title>
<updated>2026-09-24T21:33:28Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-21T13:37:28Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=ad1b1f2d36aacf13e3f983a1bdf4d699ef929ae3'/>
<id>urn:sha1:ad1b1f2d36aacf13e3f983a1bdf4d699ef929ae3</id>
<content type='text'>
The x86 and armsr targets declare the vdi, vmdk and vhdx features, but
VDI_IMAGES, VMDK_IMAGES and VHDX_IMAGES depend on a hardcoded target
list instead, so the features select nothing and a target opting in has
to edit config/Config-images.in.

Give them USES_VDI, USES_VMDK and USES_VHDX in the same shape as the
other image formats and depend on those. The set of targets offering
each format is unchanged.

Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
</feed>
