Improved methods and arrangements are provided for updating software and
other data in managed devices. The methods and arrangements provide for a
failsafe upgrade to all of the code and any data in the managed device,
including any code or data used to provide such upgrades. For example, a
method for providing software to a device is provided that includes
identifying essential software within the device; essential software
including software necessary to operate the device and provide external
communications. The method further includes identifying remaining
portions of software within the device as non-essential software, and
downloading new essential software from an external source to the device
and storing the new essential software in memory by overwriting at least
a portion of the non-essential software. After downloading the new
essential software, the method further includes attempting to operate the
device and provide external communications using the new essential
software, and upon successfully operating the device and providing
external communications, using the new essential software to selectively
download new non-essential software and store the new non-essential
software in memory by overwriting at least a portion of the old essential
software.