I2C - Certain Slaves not Pulling the Lines down fully
I2C has a very relaxed idea of what can be received as a low signal. If a transmitter tries to exploit this and not drive down to the typically 0.5v that's easily possible with any normal driver, it might just get it wrong.

This 'sloppy low' is exploited in devices that are opto-isolated. It's used to avoid hanging the bus. If the device sees the line low, is it because the bus is being driven low, so it should be repeated into the device, or is the device driving it low, in which case it should not drive the bus? This can't be done from a state machine in the device, as the bus could go low at any time. The solution many devices adopt is to expect the bus to be driven down to a decent low voltage, but only drive the bus to a sloppy low, and to sense the difference carefully.

Obviously this approach slashes noise margins, and may not work with other devices that are technically compliant, but do not have generous over-design.

I've not put any specific voltages in here because, if you're going to try to understand or use this technique, you need to get the official specification and read it to the last footnote.