This guide covers various approaches for dealing with issues that arise when I2C devices use clock stretching on a Raspberry Pi.
Keep in mind that clock stretching is a feature of I2C. It's not unique to Raspberry Pi's. The issue is simply how Pi's handle (or don't) I2C clock stretching.
The same guide linked above discusses this. It's a known hardware issue with a lot of history. The articles referenced in that guide are linked again here for convenience:
- Raspberry Pi I2C clock-stretching bug - Written in August, 2013, this blog post is the most often cited and linked. It contains lots of technical details.
- RPI forums I2C clock stretching - Discussion circa 2012 about this issue. There are 70 posts to the thread!
- I2C Broadcom bug workaround - An old issue thread from 2013. There are 73 posts to the thread!
- I2C clock-stretching bug - A more recent issue thread specific to the Pi 4. The saga continues!