> So at the beginning of a new transfer, we should check if SDA (or SCL?) > is low and, if it's true, only then we should try recover the bus. Yes, this is the proper time to do it. Remember, I2C does not define a timeout.