Described herein are several embodiments relating to modular irrigation controllers. In many implementations, methods of implementing irrigation control are provided that detect a presence of a first module coupled with a control unit of an irrigation controller, the control unit operating in accordance with a bootloader set of code and a first set of code to implement irrigation control, identify that the first module stores a second set of code, and activate the bootloader set of code to replace the first set of code with the second set of code. Also described are various different types of modular controllers, expansion modules that may be coupled to the modular controller, having as variety of functions and features, as well as related methods of use and configuration of the controller and these modules in the controller.