Hello—we regularly test Borons with SYSTEM_MODE(SEMI_AUTOMATIC) and Cellular.off() prior to claiming them. I am a university professor and teach lots of students how to get comfortable with the devices, writing/compiling/flashing code, etc., for weeks before I am comfortable claiming devices and allowing them to connect to the cloud/cell networks. I do this because I learned the hard way that it can be expensive to allow students to play with claimed devices at first!
We've been developing with our Device OS pegged at 4.2.0 for over a year and starting our scripts with SYSTEM_MODE(SEMI_AUTOMATIC) and Cellular.off() (the latter inside the setup() function) which keeps cell off and has the status LED breathing white. We have really benefitted from this option.
We recently began testing firmware compiled at 6.1.1 and flashed to a Boron running the same and the same starting code of SYSTEM_MODE(SEMI_AUTOMATIC) and Cellular.off() no longer makes the status LED breathe white (instead it blinks green, i.e., searching for a connection) and it will not proceed further in the firmware.
I just reproduced this on multiple Borons by toggling Device OS between 4.2.0 and 6.1.1 (and in both directions—there's no hysteresis: 4.2.0 has status LED breathe white and firmware proceeds; 6.1.1 has status LED blink green and firmware does not proceed).
Can anyone tell me when this functionality changed and if there is a new firmware solution that allows use of Borons without claiming? Thanks!
Thanks, @gusgonnet—I'll give that a shot tomorrow but doubt it's the solution because we have in fact been using SYSTEM_THREAD(ENABLED) explicitly in all our scripts, so the Device OS change to using that by default/under the hood shouldn't change anything in our firmware.
right, I didn't have a lot of faith in it.
I scanned the changes on this table but nothing rings the bell, so let's wait for the Particle team or other community members to comment.
How did you flash 6.1.1 to the device? Use the particle serial inspect CLI command or the device inspect tool to make sure all of the dependencies got flashed correctly.
If there are missing system dependencies the device will go into blinking green because it needs to go into safe mode so it can get the missing parts OTA before the user firmware can run.
Fascinating. I haven't seen this before. I flashed 6.1.1 both using the Device Restore USB web tool and by running Particle: Compile Application and Device OS (local) in VS Code/Workbench.
Running particle serial inspect in the CLI does show a missing dependency as you'd suggested.
Platform: 13 - Boron
Modules
Bootloader module #0 - version 3000
Size: 47.798 kB / MaxSize: 49.152 kB
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: PASS
System part module #1 - version 6101
Size: 538.948 kB / MaxSize: 671.744 kB
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: FAIL
Bootloader module #0 - version 3001
Radio stack module module #0 - version 202
User part module #2 - version 6
Size: 36.286 kB / MaxSize: 262.144 kB
UUID: ######
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: PASS
System part module #1 - version 6101
Radio stack module module #0 - version 202
Size: 0 kB / MaxSize: 192.512 kB
Integrity: PASS
Address Range: PASS
Platform: PASS
Dependencies: PASS
So, then, does this part of your answer suggest that there's no way to get the missing parts without the cellular connection (i.e., it must do it OTA)? Thanks for the help.
Answered that last question for myself. particle update did the trick. I'm still confused as to why the Device Restore USB web tool wouldn't have done it, but issue seems resolved. Thanks again!