Methods, systems, and apparatuses for controlling surgical systems. In one aspect, a method includes obtaining, at a control subsystem associated with a surgical system, hardware configuration information from a first patient side subsystem that is communicatively coupled to and controlled by the control subsystem determining a software version to be used by the control subsystem and the first patient side subsystem, wherein determining the software version includes selecting the software version from among a plurality of software versions, and wherein each software version of the plurality of software versions is associated with a particular patient side subsystem instructing the first patient side subsystem to use the software version determining whether the software version is currently loaded on the control subsystem in response to determining that the software version is not currently loaded on the control subsystem, loading the software version on the control subsystem and initializing the surgical system.