First, sorry this may be a duplicate with the sysupdate official thread, but I wanted to isolate the issue in its own thread since the answer there was that the image is corrupted somehow, but this happens every time I try to upgrade. Basically I am trying to upgrade to latest firmware, but both from UI and command line, but it fails and I do not know what's wrong, it is saying the image has no metadata. Here is the output of the command line:
root@OpenWrt:~# owut upgrade --verbose
owut - OpenWrt Upgrade Tool 2026.01.13~2526d84b-r1 (/usr/bin/owut)
ASU-Server https://sysupgrade.openwrt.org
Upstream https://downloads.openwrt.org
Target x86/64
Profile generic
Package-arch x86_64
Root-FS-type ext4
Sys-type combined-efi
Version-from 25.12.1 r32768-b21cfa8f8c (kernel 6.12.74)
Version-to 25.12.2 r32802-f505120278 (kernel 6.12.74)
Build-commit https://git.openwrt.org/?p=openwrt/openwrt.git;a=shortlog;h=f505120278
Build-FS-type ext4
Build-at 2026-03-25T20:09:53Z (~7 days ago)
Image-prefix openwrt-25.12.2-x86-64-generic
Image-URL https://downloads.openwrt.org/releases/25.12.2/targets/x86/64
Image-file openwrt-25.12.2-x86-64-generic-ext4-combined-efi.img.gz
Installed 294 packages
Top-level 166 packages
Default 44 packages
User-installed 123 packages (top-level only)
Package version changes:
base-files 1696~b21cfa8f8c 1699~f505120278
kmod-ovpn-dco-v2 6.12.74.0.2.20250801-r1 6.12.74.0.2.20251017-r1
2 packages are out-of-date
Default package analysis:
Default Provided-by
nftables nftables-json
There are currently package build failures for 25.12.2 x86_64:
Feed: packages
domoticz Wed Apr 1 09:13:07 2026 - not installed
pigeonhole Wed Apr 1 09:23:26 2026 - not installed
python-constantly Wed Apr 1 09:02:16 2026 - not installed
python-flask-httpauth Wed Apr 1 09:13:38 2026 - not installed
python-gevent Wed Apr 1 09:11:18 2026 - not installed
python-psycopg2 Wed Apr 1 09:03:15 2026 - not installed
python-pyodbc Wed Apr 1 09:11:51 2026 - not installed
python-ubus Wed Apr 1 09:03:40 2026 - not installed
tvheadend Wed Apr 1 08:52:49 2026 - not installed
Feed: telephony
asterisk-chan-sccp Wed Apr 1 09:47:07 2026 - not installed
Feed: video
assimp Wed Apr 1 07:48:12 2026 - not installed
glslang Wed Apr 1 07:22:47 2026 - not installed
qt5base Wed Apr 1 09:41:25 2026 - not installed
qt5quick Wed Apr 1 09:41:16 2026 - not installed
qt5quick-controls Wed Apr 1 09:41:33 2026 - not installed
qt5script Wed Apr 1 09:41:18 2026 - not installed
qt5svg Wed Apr 1 09:41:27 2026 - not installed
qt5translations Wed Apr 1 10:09:37 2026 - not installed
qt5virtualkeyboard Wed Apr 1 10:09:37 2026 - not installed
vkmark Wed Apr 1 09:35:47 2026 - not installed
20 package build failures don't affect this device, details at
https://downloads.openwrt.org/releases/faillogs-25.12/x86_64/
Request:
Version 25.12.2 r32802-f505120278 (kernel 6.12.74)
Request hash:
f20434f8d8f54f15c03e8d9733e3a710ac923e1a2d85c30a6decc7ce307fe912
--
Status: queued - 0 ahead of you
Progress: 0s total = 0s in queue + 0s in build
--
Status: init
Progress: 1s total = 0s in queue + 1s in build
--
Status: validate_manifest
Progress: 36s total = 0s in queue + 36s in build
--
Status: building_image
Progress: 187s total = 0s in queue + 187s in build
--
Status: done
Progress: 190s total = 0s in queue + 190s in build
Build succeeded in 190s total = 0s in queue + 190s to build:
version_number = 25.12.2
version_code = r32802-f505120278 (requested r32802-f505120278)
kernel_version = 6.12.74
rootfs_size_mb = default
init-script = no-init-script
Image source: https://sysupgrade.openwrt.org/store/f20434f8d8f54f15c03e8d9733e3a710ac923e1a2d85c30a6decc7ce307fe912/openwrt-25.12.2-03946b7704e2-x86-64-generic-ext4-combined-efi.img.gz
Image saved : /tmp/firmware.bin
Manifest : /tmp/firmware-manifest.json
Verifying : /tmp/firmware.bin (22829954 bytes) against /tmp/firmware.sha256sums
Saved sha256 matches
ERROR: sysupgrade validation failed:
stderr =
Wed Apr 1 14:04:27 EEST 2026 upgrade: Image metadata not present
Wed Apr 1 14:04:27 EEST 2026 upgrade: Unable to determine upgrade device
Image check failed.
Any ideas why? This is a Hyper-V machine (I converted the original generic image to a VHDX upon first install) and I have resized /dev/sda2 to 1TB.
I do not unzip anything by hand. I just run that command line owut upgrade or use the UI's Attended Sysupgrade and click "Install" directly, no download (though I tried to download and manually upgrade to that image with same results).
Should work, or maybe 1008? In any case, make sure to keep a backup in case the config is lost... Oh, and report back whether your config got deleted or not, I'm keeping track.
I still don't pass above this error, no mater how many builds I do:
/dev/null is a character device as it should, so I do not know what else to look for...
As soon as I can upgrade, I will let you know if the partition was resized or not. 1 MB up or down is irrelevant for me, so I will go with rounded down. I have put the value in the config file, so it should be taken automatically.
You could try to wget the image from the link that owut spits out at the end. Make sure to put it in /tmp so there's enough room for it (that's where sysupgrade will want it, in any case).
Something like this. Then check the file size of firmware.bin, and verify it with sysupgrade.
root@OpenWrt:~# sysupgrade -v --test /tmp/firmware.bin
Sat Apr 4 12:30:20 EEST 2026 upgrade: Image metadata not present
Sat Apr 4 12:30:20 EEST 2026 upgrade: Unable to determine upgrade device
I also tried to force it and all it did was to reboot... but it did not flashed anything, I am still on 25.12.1...
root@OpenWrt:~# sysupgrade -v -F /tmp/firmware.bin
Sat Apr 4 12:32:12 EEST 2026 upgrade: Image metadata not present
Sat Apr 4 12:32:12 EEST 2026 upgrade: Unable to determine upgrade device
Image check failed but --force given - will update anyway!
Sat Apr 4 12:32:12 EEST 2026 upgrade: Saving config files...
etc/config/attendedsysupgrade
etc/config/dhcp
etc/config/dropbear
...
etc/uhttpd.key
Sat Apr 4 12:32:13 EEST 2026 upgrade: Commencing upgrade. Closing all shell sessions.
Command failed: Connection failed
root@OpenWrt:~# Connection to openwrt closed by remote host.
Connection to openwrt closed.
and it seems to be a valid EFI drive as I could see in it:
However, this suggest that firmware.bin was ungzipped by wget... not sure if that is an issue.
Edit 2:
there is this file in /tmp/ but is it 0 bytes and it is creadted when sysupgrade is run: sysupgrade.meta, could that be linked to the issue?
Downtime? Prone to errors? Clients that call you at midnight that a service is not running?
It is a whole can of worms... Reinstalling and reconfiguring everything every time a new release is out... is out of question, dumb and a real no-go... 10 NICs, tons of port forwardings, routing and firewall rules etc. make this a no viable option.
My only real option in this state (rebuild everything with each release) is to stay on current version or to install pfsense / opensense and work with that...
So "the issue" is that this is not a real upgrade option, but a "build again a new VM".
Edit: oh... and then it is a game of unplugging wires and plugging the laptop to each of the ports until I find out which one is the LAN port (because it changes...), assign port VLANs to laptop for each before I could copy back any config file. It is not as "easy" as it is made believe... install packages from where if there is no WAN connection? When I installed it, it was just a machine inside LAN behind another functional router and had no VLANs and random ports assigned to LAN/WAN. So yea, there is more than an "issue" with that approach...
It seems like that image is corrupt somehow, so you should rerun the build and get new image (with a different hash). If that build hasn't already timed out of the cache (test with owut download, which will download immediately if it's still cached, but take a few minutes if it's a new build), then force it.
To force a rebuild you can use a different package list or a dummy init script (the contents of init scripts are included in the job hash calculations). Fake init scripts are easiest:
I have tried many builds, from UI and from command line (owut) but all builds behave the same. I did few builds today (they were forced by package changes)...
No idea why this happens, somehow the tool does not recognize the disk layout....
Pardon me again but maybe you should not offer your service as an paid offer then. Sorry but not feeling sorry. Do your homework or look for another job.
Disclaimer. I'm a network engineer at day time.
Use the image builder locally and include all packages and config. No need for the online build server and tools. So your downtime is as usual for an upgrade but no extra steps needed.
I have the same issue as the OP
and the fact is although there are other ways to upgrade Attended Sysupgrade is not working
and we need to know why this is the case
Its the reason why i went over to a x86 build on a small pc so that i could update easy and quickly without all the steps .