A method of securely updating software in a remote device includes copying
selected portions of program code in the remote device to a memory,
downloading software to the remote device, and upon detecting an
unsuccessful download, reinstalling the selected portions of program
code.