The only changes were to (1) fine-tune timing in the I2C transactions, and (2) locking around I2C to prevent two threads from trying to use it simultaneously. From the evidence (other thread), it appears that (2) is what broke it. Weird.

I'll just have to revert the lot and leave the I2C code "as was" in the next release.