I am developing a custom OpenWrt 24.10 (aarch64_cortex-a53) build for the Gateworks Venice platform and have run into a persistent flashing issue.
The Problem: When flashing a new firmware.gz via sysupgrade -n (or via the LuCI flash interface), the firmware revision does not update. It takes exactly two consecutive flashes for the new image to actually "take" and show the updated logic on the board.
Environment:
Hardware: Gateworks Venice (GW7100-00)
OS: OpenWrt 24.10
Flash Method: sysupgrade -n /tmp/image.gz
Observations:
Even with the -n flag, the old /overlay or older version of the SquashFS seems to persist after the first flash.
Manual changes to built packages are only visible after the second flash (confirmed by checking the revision number of the built package using opkg info)
This suggests a potential issue with the partition mapping or the sysupgrade hook for the Venice target not correctly identifying the active rootfs partition.
Has anyone else seen this "Double Flash" requirement on Venice or other aarch64 targets using partname based sysupgrade?
Thank you
Adding to this, here are the the logs from sysupgrade -v
root@fa42:~# cd te[J/tmp
root@fa42:/tmp# sysupgrade -v -n -F ./
root@fa42:/tmp# sysupgrade -v -n -F ./firmware-squashfs-img.gz e[J
Thu Jan 1 03:48:59 UTC 1970 upgrade: Commencing upgrade. Closing all shell sessions.
[ 293.813190] gretap0: left allmulticast mode
Command failed: Connection failed[ 293.817419] erspan0: left allmulticast mode
[ 293.824505] morse0: left allmulticast mode
[ 293.828628] br-lan: left allmulticast mode
[ 293.828640] morse_usb 3-1:1.0 mesh0: left allmulticast mode
Watchdog handover: fd=3
- watchdog -
Watchdog does not have CARDRESET support
Thu Jan 1 03:49:00 UTC 1970 upgrade: Sending TERM to remaining processes ...
Thu Jan 1 03:49:00 UTC 1970 upgrade: Sending signal TERM to S96multicast-ro (6912)
Thu Jan 1 03:49:00 UTC 1970 upgrade: Sending signal TERM to wpa_supplicant_ (7173)
Thu Jan 1 03:49:00 UTC 1970 upgrade: Sending signal TERM to sleep (8120)
Thu Jan 1 03:49:00 UTC 1970 upgrade: Sending signal TERM to sleep (8146)
Thu Jan 1 03:49:04 UTC 1970 upgrade: Sending KILL to remaining processes ...
[ 304.404116] stage2 (8162): drop_caches: 3
Thu Jan 1 03:49:11 UTC 1970 upgrade: Switching to ramdisk...
[ 305.594368] Unable to handle kernel access to user memory outside uaccess routines at virtual address 0000000000000070
[ 305.605076] Mem abort info:
[ 305.607866] ESR = 0x0000000096000005
[ 305.611616] EC = 0x25: DABT (current EL), IL = 32 bits
[ 305.616927] SET = 0, FnV = 0
[ 305.619978] EA = 0, S1PTW = 0
[ 305.623119] FSC = 0x05: level 1 translation fault
[ 305.627996] Data abort info:
[ 305.630875] ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
[ 305.636357] CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[ 305.641407] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[ 305.646720] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000106935000
[ 305.653160] [0000000000000070] pgd=0800000101196003, p4d=0800000101196003, pud=0800000101196003, pmd=0000000000000000
[ 305.663775] Internal error: Oops: 0000000096000005 [#1] SMP
[ 305.669347] Modules linked in: ath9k(O) ath9k_htc(O) ath9k_common(O) qcserial pppoe ppp_async option nft_fib_inet nf_flow_table_inet iwlmvm(O) iwldvm(O) ipw ebtable_nat ebtable_filter ebtable_broute cdc_mbim carl9170(O) brcmfmac(O) batman_adv(O) ath9k_hw(O) ath6kl_usb(O) ath6kl_core(O) ath5k(O) ath11k_pci(O) ath11k(O) ath10k_pci(O) ath10k_core(O) ath(O) usb_wwan usb_serial_simple ti_usb_3410_5052 sr9700 snd_usb_audio smsc95xx sierra_net sierra rndis_host qmi_wwan pppox ppp_generic plusb pl2303 oti6858 nrc(O) nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_numgen nft_nat nft_masq nft_log nft_limit nft_hash nft_flow_offload nft_fib_ipv6 nft_fib_ipv4 nft_fib nft_ct nft_compat nft_chain_nat nf_tables mos7840 mos7720 morse(O) mct_u232 mcs7830 mac80211(O) keyspan kalmia iwlwifi(O) iptable_raw iptable_nat iptable_mangle iptable_filter ipt_REJECT ipt_ECN ip_tables io_edgeport huawei_cdc_ncm garmin_gps ftdi_sio ebtables ebt_vlan ebt_stp ebt_snat ebt_redirect ebt_pkttype ebt_mark_m ebt_mark
[ 305.669534] ebt_limit ebt_ip ebt_dnat ebt_arpreply ebt_arp ebt_among ebt_802_3 dot11ah(O) dm9601 cypress_m8 cp210x ch341 cfg80211(O) cdc_subset cdc_ncm cdc_ether cdc_eem belkin_sa ax88179_178a ath3k asix ark3116 xt_time xt_tcpudp xt_tcpmss xt_string xt_statistic xt_state xt_recent xt_quota xt_pkttype xt_owner xt_nat xt_multiport xt_mark xt_mac xt_limit xt_length xt_hl xt_helper xt_ecn xt_dscp xt_conntrack xt_connmark xt_connlimit xt_connbytes xt_comment xt_cgroup xt_bpf xt_addrtype xt_TEE xt_TCPMSS xt_REDIRECT xt_NETMAP xt_MASQUERADE xt_LOG xt_LED xt_HL xt_DSCP xt_CT xt_CLASSIFY x_tables visor vhci_hcd vcan usbserial usbnet usbip_host usbip_core usbhid ums_usbat ums_sddr55 ums_sddr09 ums_karma ums_jumpshot ums_isd200 ums_freecom ums_datafab ums_cypress ums_alauda ts_fsm ts_bm st_lsm6dsx_i2c st_lsm6dsx spidev spi_ft232h(O) snd_usbmidi_lib smsc slhc slcan sky2 sch_cake rtl8150 rtc_ds1672 rfcomm r8152 qrtr_mhi qrtr qmi_helpers(O) pegasus nfnetlink nf_reject_ipv6 nf_reject_ipv4 nf_nat_tftp nf_nat_snmp_basic nf_nat_sip
[ 305.759598] nf_nat_pptp nf_nat_irc nf_nat_h323 nf_nat_ftp nf_nat_amanda nf_nat nf_log_syslog nf_flow_table nf_dup_ipv4 nf_conntrack_tftp nf_conntrack_snmp nf_conntrack_sip nf_conntrack_sane nf_conntrack_pptp nf_conntrack_netbios_ns nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp nf_conntrack_broadcast ts_kmp nf_conntrack_amanda nf_conncount mhi mcp251x mc libcrc32c lan743x kaweth ipheth hso hidp hid_generic hci_uart flexcan ezusb e1000e dmx_usb(O) crc7 crc_ccitt compat(O) cdc_wdm cdc_acm can_raw can_gw can_dev can_bcm can btusb btrtl btmtk btintel btbcm brcmutil(O) bnep bluetooth_6lowpan bluetooth ax88796b at24 act_connmark nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 sch_tbf sch_ingress sch_htb sch_hfsc em_u32 cls_u32 cls_route cls_matchall cls_fw cls_flow cls_basic act_skbedit act_mirred act_gact configs 6lowpan hid evdev st_accel_i2c st_accel st_sensors_i2c st_sensors industrialio_triggered_buffer kfifo_buf industrialio usb_f_acm u_serial usb_f_mass_storage usb_f_hid usb_f_ecm u_ether libcomposite
[ 305.849639] ledtrig_usbport ppdev parport ledtrig_tty ledtrig_pattern ledtrig_oneshot ledtrig_activity cryptodev(O) nfsv4 nfsv3 nfs bonding ip_gre gre e1000 ifb oid_registry ip_tunnel tun snd_rawmidi snd_seq_device snd_pcm_oss snd_mixer_oss snd_hwdep snd_compress snd_pcm snd_timer snd soundcore ntfs lockd sunrpc grace configfs dns_resolver nls_utf8 nls_iso8859_1 rfkill vxlan udp_tunnel ip6_udp_tunnel crypto_user algif_skcipher algif_rng algif_hash algif_aead af_alg michael_mic md5 des_generic cmac uleds leds_pca963x leds_pca955x leds_gpio dwc2 uhci_hcd ohci_platform ohci_hcd ledtrig_transient ahci libahci fsl_mph_dr_of ehci_platform ehci_fsl igb i2c_algo_bit gpio_button_hotplug(O) vfat fat exfat button_hotplug(O) gsc_hwmon gateworks_gsc pps_gpio realtek microchip
[ 306.006243] CPU: 3 PID: 8162 Comm: busybox Tainted: G O 6.6.109 #0
[ 306.013814] Hardware name: Gateworks Venice GW71xx-2x i.MX8MP Development Kit (DT)
[ 306.021381] pstate: 204000c5 (nzCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 306.028342] pc : percpu_counter_add_batch+0x1c/0xd8
[ 306.033230] lr : folio_account_cleaned+0x9c/0xb8
[ 306.037849] sp : ffffffc0823d38f0
[ 306.041161] x29: ffffffc0823d38f0 x28: ffffffffffffffff x27: fffffffffffffffe
[ 306.048300] x26: 0000000000000000 x25: ffffffc080974710 x24: ffffffc0823d3a10
[ 306.055442] x23: ffffffffffffffff x22: 0000000000000000 x21: 0000000000000000
[ 306.062580] x20: ffffffffffffffff x19: 0000000000000060 x18: 0000000000000014
[ 306.069723] x17: 00000000bf86bd98 x16: ffffffc080a33de0 x15: ffffff80c0cd56f8
[ 306.076862] x14: 0000000000000004 x13: ffffffc080d37d60 x12: 0000000000000000
[ 306.084002] x11: ffffffc080c9e15e x10: 0000000000000000 x9 : 0000000000000000
[ 306.091143] x8 : 0000000000000000 x7 : ffffffc080c9e15a x6 : ffffff80ff7a815a
[ 306.098284] x5 : ffffffffffffffff x4 : 000000000000001d x3 : 0000000000000004
[ 306.105422] x2 : 0000000000000018 x1 : ffffffffffffffff x0 : 0000000000000060
[ 306.112565] Call trace:
[ 306.115010] percpu_counter_add_batch+0x1c/0xd8
[ 306.119544] folio_account_cleaned+0x9c/0xb8
[ 306.123815] __folio_cancel_dirty+0xb8/0x10c
[ 306.128086] truncate_cleanup_folio+0xac/0xd4
[ 306.132445] truncate_inode_pages_range+0xc8/0x3d8
[ 306.137240] truncate_inode_pages_final+0x78/0x8c
[ 306.141947] evict+0x248/0x28c
[ 306.145004] dispose_list+0x5c/0x88
[ 306.148494] evict_inodes+0x144/0x19c
[ 306.152158] generic_shutdown_super+0x40/0x15c
[ 306.156602] kill_block_super+0x18/0x38
[ 306.160438] deactivate_locked_super+0x50/0x164
[ 306.164972] deactivate_super+0x68/0x7c
[ 306.168810] cleanup_mnt+0x94/0x124
[ 306.172301] __cleanup_mnt+0x10/0x18
[ 306.175876] task_work_run+0xa0/0xe4
[ 306.179451] do_notify_resume+0x4dc/0x72c
[ 306.183466] el0_svc+0x40/0x4c
[ 306.186525] el0t_64_sync_handler+0x118/0x124
[ 306.190880] el0t_64_sync+0x150/0x154
[ 306.194548] Code: aa0003f3 a9025bf5 d53b4235 d50343df (f9400803)
[ 306.200640] ---[ end trace 0000000000000000 ]---
[ 306.205258] Kernel panic - not syncing: Oops: Fatal exception
[ 306.211002] SMP: stopping secondary CPUs
[ 306.214926] Kernel Offset: disabled
[ 306.218413] CPU features: 0x0,00000000,00000000,1000400b
[ 306.223724] Memory Limit: none
[ 306.226778] Rebooting in 3 seconds..
Also, as a note, these are my dev boards and have been flashed hundreds of times during the course of development. But this issue only showed up recently.
Hostle
February 27, 2026, 4:43pm
4
possibly some to do with the new option introduce here ...
base-files: sysupgrade: Add new option -s to perform upgrade on current partition
this doesn't provided much to go on. there has been oodles of changes ..recently
Thank you for your reply. I'm doing some digging on this and it might be related to my hardware. Can I ask, what commands does the luci interactive flash image dialog use? Is it a direct call of sysupgrade? If the user deselects all options (see screenshot) what sysupgrade flags does that correspond to?
I ran some tests on a third board that I haven't flashed as often and the issue did not appear and sysupgrade -n ./firmware.gz worked as expected. I will post back here with a solution when I figure how to defrag/factory reset the two problem boards.
Hostle
March 2, 2026, 6:55pm
7
WPA_petitioner:
Thank you for your reply. I'm doing some digging on this and it might be related to my hardware. Can I ask, what commands does the luci interactive flash image dialog use? Is it a direct call of sysupgrade? If the user deselects all options (see screenshot) what sysupgrade flags does that correspond to?
this is all handled in fwtool.sh ..
Keeping this thread alive. Still working on a solution. This is almost certainly due to me having flashed these devices hundreds of times. I have not yet had time to focus on this and provide a comprehensive solution but it's worth keeping this thread alive for future reference.
My current workaround (which works 100% of the time) is flashing via uboot and TFTP over ethernet. In case anyone is facing this issue, that's a good place to start.
1 Like