TL;DR
Weirdness with random USB <-> SATA adapter. Booting once with disk attached somehow reset/cleared the issue and it now sleeps/resumes as expected.
Not worth anyone elses brainpower to dig deeper into root issue, so marked as solved.
Finally got around to poking at this in a more organized way.
The hardware that triggers the bug turns out to be a USB SATA adapter (JMicron JMS578 based).
No onboard SATA sockets on this SBC, just NVME, so I use this to plug in an ancient spare SATA SSD to do occasional full disk image block-based backup snapshots with Clonezilla - more frequent when I'm futzing around with LE nightlies. I usually leave the adapter plugged in and only stick the SSD on the end when I want to trigger a backup.
(Script detects SSD volume being mounted, runs efibootmgr --bootnext 3; to select the SSD at next boot instead of the default NVME device with LE on it, reboots, runs an automated Clonezilla session from the SSD, saves the backup locally to a dedicated partition on the SSD, then reboots again, once done, from the default NVME boot device, back into LE.)
Aaaaaanyway - systematically going through the various bits of installed hardware, the hang on resume-after-sleep went away after unplugging/boot/replugging/boot of the JMicron SATA adapter (without and disk attached).
Puzzling - I saw that lsusb / dmsg only listed the JMicron device when it had a disk attached. I unmounted the disk and unplugged, leaving USB adapter in place and rebooted ... and now the sleep resume test worked just fine, as it did with LE12.x stable.
Huh.
Now I can't recreate the hang condition.
Maaaaybe there's only power running through the adapter's chipset when there's a SATA device attached, completing a circuit?
Maaaaybe booting with a SATA disk attached reset/cleared some non-volatile state register in UEFI ?
Maaaaybe some change to S3 sleep parameters/implementation was buried in the depths of one of the kernel releases ?
Maaaaybe it's just ghosts ?
![]()
This seems like a bizarre edge case of circumstances and hardware unlikely to ever affect anyone else, and ultimately not worth wasting any of the LibreELEC team's time on, so I'll close this and we can all move on with our lives ![]()