A remote download of microprocessor code for an irrigation controller is provided. A microprocessor, on an irrigation controller, is executing program code (in volatile memory) and receives a remote download of updated program code, which it stores into non-volatile random access memory, e.g., flash memory. The microprocessor is configured to receive the updated program code, via a communication port, and to store the updated program code into the non-volatile flash memory. Optionally, the updated program code is received at multiple controllers via a global transmission on a communication bus. The microprocessor receives a communication causing it to re-start. In response to the re-start communication, the microprocessor fetches the updated program code stored in the non-volatile flash memory into the program memory RAM to replace the original program code, and begins execution of the updated program code in the program memory RAM. A device is also provided for directing the download of program code to irrigation controllers. Options provide for global download of entirely new program code, global and / or individual download of particular pages of updated program code, and global downloads to controllers grouped by communication speed.