Repository navigation
Description
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 getskBootExitTimeout, 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_softwarearm_application/Components/Boot/Sources/AppECS_Functions_Boot.c,Boot_Handle_ESM_AL_Control_Changed_IndandBoot_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
leaveBootis 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-installationwithfinalStatePRE-OP.
Activity
markosankovic commentedon Oct 21, 2026
@apremji do you the Master Server log of a failed install from the
alpha.91run?markosankovic commentedon Oct 21, 2026
6000-05-2423-1
Baseline,
alpha.93unchanged: 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.markosankovic commentedon Oct 21, 2026
alpha.91crashed 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 tryalpha.93fix(comm): wait for a late frame on the datagrams a state change depe…
test(tools): add the firmware install loop with an optional netem rule