Owut: OpenWrt Upgrade Tool

First observed just now. 100% reproducible on multiple devices of same model.

root@rerouter:~# owut check --verbose
owut - OpenWrt Upgrade Tool 2026.04.09~5d6760b5-r1 (/usr/bin/owut)
Reference error: left-hand side expression is null
In collect_build_info(), file /usr/bin/owut, line 1371, byte 32:
  called from function collect_overview (/usr/bin/owut:1487:21)
  called from function collect_all (/usr/bin/owut:1561:19)
  called from anonymous function (/usr/bin/owut:2340:15)

 `        ver_to = release.branches[b].latest;`
  Near here ---------------------------^

v25.12.3 may be coincidental.

Same issue here as well.

Blah, yeah, that's the cause. The upstream metadata is currently mangled due to the ongoing build (https://sysupgrade.openwrt.org/json/v1/overview.json contains no targets for 25.12). I thought I had caught all the weird permutations, but this one got through...

EDIT
Handled better in https://github.com/efahl/owut/commit/3979710893c235895116d1e6f08763c38ab65c04, but that doesn't do anyone any good right now...

6 Likes
Status:   Error: Impossible package selection
Progress:  21s total =   0s in queue +  21s in build

Build failed in  21s total =   0s in queue +  21s to build:
ASU server stderr =
Generate local signing keys...
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
read EC key
writing EC key
WARNING: opening /builder/packages/packages.adb: No such file or directory
Package list missing or not up-to-date, generating it.

Building package index...
ERROR: wget: exited with error 8
ERROR: libuclient20201210-2026.02.20~7a0aa2e4-r1: unexpected end of file
ERROR: wget: exited with error 8
ERROR: rpcd-mod-rpcsys-2025.12.03~ffb9961c-r1: unexpected end of file
make[2]: *** [Makefile:254: package_install] Error 2
make[1]: *** [Makefile:193: _call_manifest] Error 2
make: *** [Makefile:369: manifest] Error 2

Traceback (most recent call last):
File "/app/.venv/lib/python3.14/site-packages/rq/worker/base.py", line 1522, in perform_job
return_value = job.perform()
File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1342, in perform
self._result = self._execute()
~~~~~~~~~~~~~^^
File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1402, in _execute
result = self.func(*self.args, **self.kwargs)
File "/app/asu/build.py", line 494, in build
result = _build(build_request, job)
File "/app/asu/build.py", line 302, in _build
report_error(job, check_package_errors(job.meta["stderr"]))
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/asu/util.py", line 338, in report_error
raise RuntimeError(msg)
RuntimeError: Impossible package selection

ERROR: Build failed with status 500 (--version-to 25.12.3 --device mediatek/filogic:cudy_wr3000h-v1:squashfs)
The above errors are often due to the upgrade server lagging behind the
build server, first suggestion is to wait a while and try again.

Unable to update to v25.12.3 due to these errors. Announcement posted 34 mins ago

Same here for

ramips/mt76x8:glinet_gl-mt300n-v2:squashfs
root@MT300Nv2-OpenVPN:~# owut upgrade -v -v
owut - OpenWrt Upgrade Tool 2026.04.09~5d6760b5-r1 (/usr/bin/owut)
ASU-Server     https://sysupgrade.openwrt.org
Upstream       https://downloads.openwrt.org
Target         ramips/mt76x8
Profile        glinet_gl-mt300n-v2
Package-arch   mipsel_24kc
Root-FS-type   squashfs
Sys-type       sysupgrade
Version-from   25.12.2 r32802-f505120278 (kernel 6.12.74)
Version-to     25.12.3 r32912-6639b15f62 (kernel 6.12.85)
Build-commit   https://git.openwrt.org/?p=openwrt/openwrt.git;a=shortlog;h=6639b15f62
Build-FS-type  squashfs
Build-at       2026-05-04T22:30:45Z (~3 days ago)
Image-prefix   openwrt-25.12.3-ramips-mt76x8-glinet_gl-mt300n-v2
Image-URL      https://downloads.openwrt.org/releases/25.12.3/targets/ramips/mt76x8
Image-file     openwrt-25.12.3-ramips-mt76x8-glinet_gl-mt300n-v2-squashfs-sysupgrade.bin
Installed      241 packages
Top-level       60 packages
Default         31 packages
User-installed  35 packages (top-level only)

Package version changes:
  base-files                          1699~f505120278                1705~6639b15f62
  ca-bundle                           20250419-r2                    20260223-r1
  kmod-cfg80211                       6.12.74.6.18.7-r1              6.12.85.6.18.7-r1
  kmod-crypto-aead                    6.12.74-r1                     6.12.85-r1
  kmod-crypto-ccm                     6.12.74-r1                     6.12.85-r1
  kmod-crypto-cmac                    6.12.74-r1                     6.12.85-r1
  kmod-crypto-crc32c                  6.12.74-r1                     6.12.85-r1
  kmod-crypto-ctr                     6.12.74-r1                     6.12.85-r1
  kmod-crypto-gcm                     6.12.74-r1                     6.12.85-r1
  kmod-crypto-geniv                   6.12.74-r1                     6.12.85-r1
  kmod-crypto-gf128                   6.12.74-r1                     6.12.85-r1
  kmod-crypto-ghash                   6.12.74-r1                     6.12.85-r1
  kmod-crypto-hash                    6.12.74-r1                     6.12.85-r1
  kmod-crypto-hmac                    6.12.74-r1                     6.12.85-r1
  kmod-crypto-kpp                     6.12.74-r1                     6.12.85-r1
  kmod-crypto-lib-chacha20            6.12.74-r1                     6.12.85-r1
  kmod-crypto-lib-chacha20poly1305    6.12.74-r1                     6.12.85-r1
  kmod-crypto-lib-curve25519          6.12.74-r1                     6.12.85-r1
  kmod-crypto-lib-poly1305            6.12.74-r1                     6.12.85-r1
  kmod-crypto-manager                 6.12.74-r1                     6.12.85-r1
  kmod-crypto-null                    6.12.74-r1                     6.12.85-r1
  kmod-crypto-rng                     6.12.74-r1                     6.12.85-r1
  kmod-crypto-seqiv                   6.12.74-r1                     6.12.85-r1
  kmod-crypto-sha3                    6.12.74-r1                     6.12.85-r1
  kmod-crypto-sha512                  6.12.74-r1                     6.12.85-r1
  kmod-fs-ext4                        6.12.74-r1                     6.12.85-r1
  kmod-gpio-button-hotplug            6.12.74-r5                     6.12.85-r5
  kmod-leds-gpio                      6.12.74-r1                     6.12.85-r1
  kmod-lib-crc-ccitt                  6.12.74-r1                     6.12.85-r1
  kmod-lib-crc16                      6.12.74-r1                     6.12.85-r1
  kmod-lib-crc32c                     6.12.74-r1                     6.12.85-r1
  kmod-mac80211                       6.12.74.6.18.7-r1              6.12.85.6.18.7-r1
  kmod-mt76-core                      6.12.74.2026.03.19~39c960c3-r2 6.12.85.2026.03.19~39c960c3-r2
  kmod-mt7603                         6.12.74.2026.03.19~39c960c3-r2 6.12.85.2026.03.19~39c960c3-r2
  kmod-nf-conntrack                   6.12.74-r1                     6.12.85-r1
  kmod-nf-conntrack6                  6.12.74-r1                     6.12.85-r1
  kmod-nf-flow                        6.12.74-r1                     6.12.85-r1
  kmod-nf-log                         6.12.74-r1                     6.12.85-r1
  kmod-nf-log6                        6.12.74-r1                     6.12.85-r1
  kmod-nf-nat                         6.12.74-r1                     6.12.85-r1
  kmod-nf-reject                      6.12.74-r1                     6.12.85-r1
  kmod-nf-reject6                     6.12.74-r1                     6.12.85-r1
  kmod-nfnetlink                      6.12.74-r1                     6.12.85-r1
  kmod-nft-core                       6.12.74-r1                     6.12.85-r1
  kmod-nft-fib                        6.12.74-r1                     6.12.85-r1
  kmod-nft-nat                        6.12.74-r1                     6.12.85-r1
  kmod-nft-offload                    6.12.74-r1                     6.12.85-r1
  kmod-nls-base                       6.12.74-r1                     6.12.85-r1
  kmod-ppp                            6.12.74-r1                     6.12.85-r1
  kmod-pppoe                          6.12.74-r1                     6.12.85-r1
  kmod-pppox                          6.12.74-r1                     6.12.85-r1
  kmod-scsi-core                      6.12.74-r1                     6.12.85-r1
  kmod-slhc                           6.12.74-r1                     6.12.85-r1
  kmod-tun                            6.12.74-r1                     6.12.85-r1
  kmod-udptunnel4                     6.12.74-r1                     6.12.85-r1
  kmod-udptunnel6                     6.12.74-r1                     6.12.85-r1
  kmod-usb-common                     6.12.74-r1                     6.12.85-r1
  kmod-usb-core                       6.12.74-r1                     6.12.85-r1
  kmod-usb-ehci                       6.12.74-r1                     6.12.85-r1
  kmod-usb-ohci                       6.12.74-r1                     6.12.85-r1
  kmod-usb-storage                    6.12.74-r1                     6.12.85-r1
  kmod-usb-storage-uas                6.12.74-r1                     6.12.85-r1
  kmod-usb2                           6.12.74-r1                     6.12.85-r1
  kmod-wireguard                      6.12.74-r1                     6.12.85-r1
  luci                                26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-app-attendedsysupgrade         26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-app-commands                   26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-app-firewall                   26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-app-openvpn                    26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-app-package-manager            26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-app-wol                        26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-base                           26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-compat                         26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-lib-base                       26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-lib-ip                         26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-lib-jsonc                      26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-lib-nixio                      26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-lib-uqr                        26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-light                          26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-lua-runtime                    26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-mod-admin-full                 26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-mod-network                    26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-mod-status                     26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-mod-system                     26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-proto-ipv6                     26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-proto-ppp                      26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-proto-wireguard                26.101.22673~0c81d2d           26.124.63982~650a6ca
  luci-theme-bootstrap                26.101.22673~0c81d2d           26.124.63982~650a6ca
  oniguruma5                          6.9.10-r1                      missing to-version
  openvpn-openssl                     2.6.19-r1                      2.7.4-r1
  wireless-regdb                      2026.02.04-r1                  2026.03.18-r1
91 packages are out-of-date

Default package analysis:
  Default                             Provided-by
  nftables                            nftables-json

There are currently package build failures for 25.12.3 mipsel_24kc:
  Feed: packages
    dockerd                           Thu May  7 11:49:29 2026 - not installed
    domoticz                          Thu May  7 12:52:24 2026 - not installed
    fatresize                         Thu May  7 11:34:05 2026 - not installed
    gost_engine                       Thu May  7 12:07:38 2026 - not installed
    qemu                              Thu May  7 11:38:14 2026 - not installed
    rtklib                            Thu May  7 11:02:30 2026 - not installed
  Feed: telephony
    asterisk-chan-sccp                Thu May  7 13:26:21 2026 - not installed
  Feed: video
    assimp                            Thu May  7 11:05:52 2026 - not installed
    glslang                           Thu May  7 10:21:56 2026 - not installed
    qt5base                           Thu May  7 13:15:27 2026 - not installed
    qt5quick                          Thu May  7 13:15:29 2026 - not installed
    qt5quick-controls                 Thu May  7 13:15:42 2026 - not installed
    qt5script                         Thu May  7 13:15:30 2026 - not installed
    qt5svg                            Thu May  7 13:15:31 2026 - not installed
    qt5translations                   Thu May  7 13:43:29 2026 - not installed
    qt5virtualkeyboard                Thu May  7 13:43:29 2026 - not installed
    vkmark                            Thu May  7 13:09:25 2026 - not installed
17 package build failures don't affect this device, details at
  https://downloads.openwrt.org/releases/faillogs-25.12/mipsel_24kc/

Request:
  Version 25.12.3 r32912-6639b15f62 (kernel 6.12.85)
Request hash:
  28edbfa5dec7440b70c9f51dc169957cf1303de7fbfc86675340d0a9daaa88df
--
Status:   Error: Impossible package selection
Progress:   0s total =   0s in queue +   0s in build

Build failed in   0s total =   0s in queue +   0s to build:
ASU server stderr =
Generate local signing keys...
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
read EC key
writing EC key
WARNING: opening /builder/packages/packages.adb: No such file or directory
Package list missing or not up-to-date, generating it.

Building package index...
ERROR: wget: exited with error 8
ERROR: urandom-seed-3: unexpected end of file
make[2]: *** [Makefile:254: package_install] Error 1
make[1]: *** [Makefile:193: _call_manifest] Error 2
make: *** [Makefile:369: manifest] Error 2

Traceback (most recent call last):
  File "/app/.venv/lib/python3.14/site-packages/rq/worker/base.py", line 1522, in perform_job
    return_value = job.perform()
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1342, in perform
    self._result = self._execute()
                   ~~~~~~~~~~~~~^^
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1402, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/app/asu/build.py", line 494, in build
    result = _build(build_request, job)
  File "/app/asu/build.py", line 302, in _build
    report_error(job, check_package_errors(job.meta["stderr"]))
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/asu/util.py", line 338, in report_error
    raise RuntimeError(msg)
RuntimeError: Impossible package selection

ERROR: Build failed with status 500 (--version-to 25.12.3 --device ramips/mt76x8:glinet_gl-mt300n-v2:squashfs)
The above errors are often due to the upgrade server lagging behind the
build server, first suggestion is to wait a while and try again.

I will retry tomorrow, 5 other devices (glinet_gl-ar300m-nor and glinet_gl-ar150) upgraded successfully.

Besides, I also (still) noticed this line:
oniguruma5 6.9.10-r1 missing to-version

Yeah, sorry, I still need to figure that out...

1 Like

Hi, using owut to try and update a raspberry pi 5 currently at 25.12.2 to 25.12.3. Both owut and attended-sysupgrade failing. below is tail of owut upgrade process:

Image saved : /tmp/firmware.bin
Manifest    : /tmp/firmware-manifest.json
Verifying   : /tmp/firmware.bin (48158684 bytes) against /tmp/firmware.sha256sums
  Saved sha256 matches
ERROR: sysupgrade validation failed:
stderr =
Unable to determine upgrade device
Image check failed.

hope we get a resolution…thanks for the owut tool been extremely usefull to me in the past..

Now that's a new one, I don't think I've see this before.

owut deleted the image when it saw that error, but we can fetch it from the cache, using owut download --keep (with any other options you specified). That should put it in /tmp, so we can dump its contents with fwtool:

$ fwtool -i - /tmp/firmware.bin
{  "metadata_version": "1.1", "compat_version": "1.0",   "supported_devices":["raspberrypi,500","raspberrypi,5-compute-module","raspberrypi,5-model-b"], "version": { "dist": "OpenWrt", "version": "25.12.3", "revision": "r32912-6639b15f62", "target": "bcm27xx/bcm2712", "board": "rpi-5" } }

Then dump out the board name and we can compare them to see what's up, probably looks like this (I hope):

$ cat /tmp/sysinfo/board_name
rpi-5

here are the outputs of those commands:

fwtool -i - /tmp/firmware.bin
{  "metadata_version": "1.1", "compat_version": "1.0",   "supported_devices":["raspberrypi,500","raspberrypi,5-compute-module","raspberrypi,5-model-b"], "version": { "dist": "OpenWrt", "version": "25.12.3", "revision": "r32912-6639b15f62", "target": "bcm27xx/bcm2712", "board": "rpi-5" } }

cat /tmp/sysinfo/board_name
raspberrypi,5-model-b

thanks…

Yeah, that's all fine. Digging through sysupgrade, it looks like something we dealt with a month ago on x86. Since the all rpi and x86 share those parts of sysupgrade, this should tell us something: Upgrade error on generic x64 - #25 by efahl Give the script in that reply a try, and let's see if it enlightens us.

ok, output of script below…pls note my rootfs is set to 512MB with ext4 fs.

rootpart = PARTUUID=1cb97b6c-6912-440f-9b4b-58147e595435
major = 
minor = 
diskdev = 
partitions =
cat: can't open '/tmp/partmap.bootdisk': No such file or directory
awk: fatal: cannot open file `/tmp/partmap.bootdisk' for reading: No such file or directory
awk: fatal: cannot open file `/tmp/partmap.bootdisk' for reading: No such file or directory
Syntax error: Expecting expression
In line 1, byte 2:

 ` * 512 / 1024.0 / 1024`
   ^-- Near here


sh: invalid number ''
0 @ 512 = 0 bytes =  MiB

Ah, this looks very much like the same issue as on that x86 thread. How did you get your 512 rootfs size, using owut or did you gparted/fdisk/whatever it? If the latter, see if the rest of that thread gives you any hints here.

yes, reading through the thread it does look similar. I will research further and validate.

to set rootfs to 512MB i used imagebuilder and change the .config file. I think the problem is probably due to setting partition type to GPT instead of MBR. I needed that because i have a big hard disk that caters for all openwrt services and needed >4 partitions, i.e. dlna, NAS (samba), ADGH etc…

thanks for your help.. you’ve set me on the right track..

For one Xiaomi AX3000T:

  • first, I’ve problem to check :
# v="25.12.3"
# owut check --verbose --version-to ${v}
owut - OpenWrt Upgrade Tool 2026.04.09~5d6760b5-r1 (/usr/bin/owut)
ERROR: Failed to connect
ERROR: Response status (null) while downloading
  https://downloads.openwrt.org/releases/25.12.3/targets/mediatek/filogic/profiles.json
ERROR: Unsupported target 'mediatek/filogic'

I retried with success few minutes later. (same difficult on OpenWRT One, solved later)

  • 2d, I had ā€œStatus: Error: Impossible package selectionā€:
Status:   Error: Impossible package selection
Progress:  23s total =   0s in queue +  23s in build

Build failed in  23s total =   0s in queue +  23s to build:
ASU server stderr =
Generate local signing keys...
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
read EC key
writing EC key
WARNING: opening /builder/packages/packages.adb: No such file or directory
Package list missing or not up-to-date, generating it.

Building package index...
ERROR: wget: exited with error 8
ERROR: apk-mbedtls-3.0.5-r3: unexpected end of file
make[2]: *** [Makefile:254: package_install] Error 1
make[1]: *** [Makefile:193: _call_manifest] Error 2
make: *** [Makefile:369: manifest] Error 2

Traceback (most recent call last):
  File "/app/.venv/lib/python3.14/site-packages/rq/worker/base.py", line 1522, in perform_job
    return_value = job.perform()
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1342, in perform
    self._result = self._execute()
                   ~~~~~~~~~~~~~^^
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1402, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/app/asu/build.py", line 494, in build
    result = _build(build_request, job)
  File "/app/asu/build.py", line 302, in _build
    report_error(job, check_package_errors(job.meta["stderr"]))
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/asu/util.py", line 338, in report_error
    raise RuntimeError(msg)
RuntimeError: Impossible package selection

ERROR: Build failed with status 500 (--version-to 25.12.3 --device mediatek/filogic:xiaomi_mi-router-ax3000t:squashfs)
The above errors are often due to the upgrade server lagging behind the
build server, first suggestion is to wait a while and try again.

I’ll retry later :wink:


On OpenWRT One, upgrade runs with success!

Edit @:9:30: Process ended with success on AX3000T!

Owut upgrade –version-to 25.12.3 gives the following error:

1 packages missing in target version, cannot upgrade

The issue is this package:

kmod-lib-crc32c 6.12.77-r1 missing to-version

How to fix that without flashing the sysupgrade-image?

Do a owut check --verbose --verbose to see more details.

Might be a build failure for that package for your platform.

What target and device? I'm seeing it on ath79/generic, x86/64 and mediatek/filogic:

$ owut check -v -a kmod-lib-crc32c | grep crc32c
  kmod-crypto-crc32c        6.12.74-r1        6.12.85-r1
  kmod-lib-crc32c           6.12.74-r1        6.12.85-r1

I got the same error as yesterday, but only for owut. I was able to get a working image with attended sysupgrade in LuCI only seconds after my owut upgrade failed with "RuntimeError: Impossible package selection" again.

Is there some caching of negative builds, too? I tried that on ramips/mt76x8:glinet_gl-mt300n-v2:squashfs and on a TP-Link TL-WR902AC v3. It was the same there, owut failed and attended sysupgrade succeeded. Both are the same build target but different devices. Is there some reason I am missing? All other targets of mine upgraded without problems.

Yes, failures are kept for 1h by default, since the probability of the same error happening is assumed to be quite high (see https://github.com/openwrt/asu/blob/main/asu/config.py#L115).

The two successive build requests no doubt have different signatures, due to the differences in the data that owut and LuCI ASU send in the request. That initiates a new build, even though they are grossly the same build (biggest difference is that owut sends the package list with expected versions for each, while LuCI just says "give me whatever you've got").

1 Like

This is what I get when running owut check -v -a kmod-lib-crc32c | grep crc32c

kmod-crypto-crc32c 6.12.77-r1 6.18.26-r1
kmod-lib-crc32c 6.12.77-r1 missing to-version
ERROR: Checks reveal errors, do not upgrade

Platform is mediatek/filogic.