The MiHome light requires a bit more of the transmit architecture to be fleshed out, so that it is possible for the device classes to pass radio parameters down the transmit pipeline. The MiHome light requires a longer transmit burst to guarantee that it sees the transmit message. Testing in the lab has show that parameters (OUTER_TIMES=1, OUTER_DELAY=0, INNER_TIMES=75) is a good parameter that leads to good reliability. It is not yet possible for the OOK transmit pipeline between the device class and the radio module to pass forward these parameters. Devices.py/LegacyDevice/send_message() needs to read the radio config parameters from it's most concrete instance, and use these to send to the air_interface (which is actually ook_interface, which is a OnAir.TwoBitAirInterface instance). OnAir.TwoBitAirInterface.send() then needs to read out these radio config parameters and override the defaults passed to radio.transmit() - defaults are presently outer_times=1, inner_times=8, outer_delay=0, modulation=ook. Also see the note in OnAir.TwoBitInterface.send() about having default radio parameters that are overriden by any radio parameters passed into it (so that if no parameters are provided, sensible defaults are used). This will then allow any device class to configure any of the lower level parameters of the radio to best suit that specific device classes radio receive performance characteristics. Note also that when radio transmit parameters are changed, this changes the amount of time that the radio is in transmit mode (and therefore alters the amount of time it is in receive mode, and ultimately how wide or narrow the receive window is). There will eventually need to be some way for the radio module to pass back up the chain how long a certain set of parameters will leave the receive window closed, so that a deterministic message scheduler can be written that schedules messages into known transmit and receive slots. No need to implement that yet, but we need to allow for it in the future.