Wiring View
Commands
The firmware I2C controller implements scan to check every valid address and print devices that ACK. The first time you enter I2C mode, Bit Pirate opens the configuration prompts automatically for SDA GPIO, SCL GPIO and frequency.
Result
What success looks like
Found device at 0x3C and Found device at 0x68 mean two targets acknowledged on the bus. Those addresses are common for OLED displays and RTC/IMU parts, but the scan is not full identification. It tells you where to probe next.
Troubleshooting
If the scan prints I2C Scan: No I2C devices found., do not jump straight to “dead board”. Check shared ground, swapped SDA/SCL, wrong voltage, missing pull-ups, and whether another controller is holding the bus. The I2C wiki also documents recover, which attempts to release SDA by clocking the bus.
- SDA and SCL are swapped.
- Ground is not shared between the module and Bit Pirate.
- The module needs pull-ups that are not present on the board.
- The target board is holding SDA low after a failed transaction.
I2C scan FAQ
Does a scan identify the exact I2C chip?
No. A scan only tells you that a device acknowledged a 7-bit address. It narrows the search, but you still need markings, module documentation, safe register reads or the Bit Pirate identify helper before treating the target as a known part.
What does a successful I2C scan prove?
A successful scan proves that at least one device acknowledges a 7-bit address on the bus. It does not prove the register map, command set, memory size or voltage tolerance of that device.
Should I use 7-bit or 8-bit I2C addresses?
Use the 7-bit address printed by the scan, for example 0x3C or 0x50. Some datasheets also show shifted 8-bit read/write values, but Bit Pirate commands in this recipe expect the normal 7-bit address form.