I don't want to rain on @popells parade, but to set the record straight:
Euro 4 emission requirements where enforced in 2016. This required the engine to meet the emission standard for the first 20K km.
In order to make sure this worked, BMW introduced a self test on the O2 sensor, since the feedback from the O2 sensor is the backbone for proper fueling.
When cold, the O2 sensor emits no voltage, and represents close to infinite resistance, and when warmed up, the O2 sensor emits a voltage between 0 and 1 volt, depending on the amount of free oxygen in the exhaust. Hence, the self test must be performed when O2 sensor is in a 'non warmed up' condition. To BMW this means it was checked only after engine had been stopped for quite a while, and engine temperature was below a defined temperature (I think it is in the 40 - 50 degree range). ECU can only check for abnormal voltage measured on the O2 sensor input line at this stage. The ECU emits a bias voltage of ca 0,45V to the O2 sensor, and any deviation from this voltage when starting a cold engine is interpreted as a faulty O2 sensor, and a fault message is recorded, and engine will run in open loop mode only (meaning no consideration for feedback from the O2 sensor). Prior to modification, the AF-XIED emitted a 'too lean' voltage to the ECU prior to the O2 sensor warmup. This voltage triggered the ECU voltage check and generated a fault code.
Nightrider, after being notified of the problem, stopped the sales for a few months until they had come up with a cure. And this has made the 'after cure' AF-XIED working on all the 1200's.
.