I found the bug in jetson-io.py and implemented a workaround.
In the Jetson subdirectory, there’s another python source called board.py.
This bit of code here incorrectly computes the partition name to look for:
#Finding the active partition in case of redundant rootfs flash.
activepart = syscall.call_out('nvbootctrl get-current-slot')
if activepart[0] == '0':
mountpart = "APP"
else:
mountpart = "APP_b"
I hacked it to set mountpart to “APP”. That worked, and everything’s going again.
This QA snafu cost me a lot of time. You might want to write an app note somewhere to spare others this frustration.