Skip to content

An Integro install stops at the BOOT exit, although the firmware was written #115

Closed

Description

@apremji

What happens

An install of an Integro package through the firmware-installation procedure sometimes ends failed, although the firmware was written:

the firmware was written; the device did not reach PRE-OP: could not reach INIT: the device reported BOOT rather than INIT

The drive is then off the bus or still in BOOT. A power cycle starts the new firmware, and the drive reports the new version. A failed install takes about 23 s, a good one about 42 s.

How often

On our desk Integro with alpha.91, in 4 of 25 installs between v5.6 builds, on 2026-10-19 and 2026-10-20. The firmware running when it failed was a different build each time, three builds in all, so it does not come from one firmware build.

Installs Failed at the BOOT exit
Two builds flashed in turn, 4 rounds 1
Two other builds flashed in turn, 8 rounds 1
Single installs 2 of 13

One more install ended with the drive in INIT and AL status code 0x0016 (Invalid mailbox configuration), and the drive came up at the next request.

Cause, from the source

Not measured on the wire yet, but the two sides do not fit:

  • MM leaves BOOT one step at a time. It gives the step to INIT kStateTimeout, 10 s, and expects the restart into the new firmware only at the step to PRE-OP, which gets kBootExitTimeout, 30 s (libs/node/somanet_procedures.cc, leaveBoot, at d83fb2f).
  • The Integro's netX restarts already at the step to INIT. When a com binary was written, its boot code answers the INIT request by asking the netX for an update reset in 500 ms (HIL_SYS_CONTROL_RESET_MODE_UPDATESTART), and only after that sets the AL status to INIT (somanet_software arm_application/Components/Boot/Sources/AppECS_Functions_Boot.c, Boot_Handle_ESM_AL_Control_Changed_Ind and Boot_RebootForFwUpdate).
  • When the reset comes first, the device leaves the bus before MM reads INIT. The restart also clears the station address, as NEXTGEN.md describes for the step to PRE-OP. MM gives up after 10 s.

Every package of ours carries a com binary, so every Integro install takes this path.

What should happen

An install of an Integro package ends at the requested state every time.

Possible fixes

  • MM gives the step from BOOT to INIT the same 30 s, and the same recovery of a lost station address, as the step to PRE-OP.
  • On the firmware side, the netX could set the AL status to INIT before it asks for the reset. We will look at that too, but drives in the field keep their current boot code.

Environment

  • PC: Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic, no real-time patch, Realtek NIC (r8169).
  • MM: 6.0.0-alpha.91. Not yet tried with alpha.93, whose leaveBoot is unchanged.
  • Drive: SOMANET Integro (ACTILINK-S), serial 9024-05-0000764-2550, key 2423, EtherCAT, v5.6 builds. One drive on the bus.
  • The installs ran through MMAF, which calls firmware-installation with finalState PRE-OP.

Activity

  1. markosankovic commented on Oct 21, 2026

    @markosankovic
    Contributor

    @apremji do you the Master Server log of a failed install from the alpha.91 run?

  2. markosankovic commented on Oct 21, 2026

    @markosankovic
    Contributor

    6000-05-2423-1

    Baseline, alpha.93 unchanged: 24 of 24 installs succeeded. Every round took the netX restart path, with the master reading INIT about 100 ms after the com write and the reset landing in the PRE-OP step. The failure did not reproduce.

  3. markosankovic commented on Oct 21, 2026

    @markosankovic
    Contributor

    alpha.91 crashed with the known NULL-buffer bug in ecx_mbxreceive (the one #113/#114 fixed) three seconds into the FoE write, leaving the drive stuck in BOOT mid-transfer. @apremji can you please try alpha.93

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions