OLED Screen showing gibberish

I recently got my AirGradient and it worked right away. I followed the instructions to flash it for ESPHome, allowing me to get readings in Home Assistant. This also worked right away. However, after flashing it the OLED screen displays a bunch of gibberish. So, the sensors are working and reporting results to HA, but the screen is useless. Any idea what to do?

I have a similar problem with the two units I built. Both are are ok on power up, then a week or few weeks after, the OLED display starts being corrupted with solid blocks and the temperature and humidity values stop updating in Home Assistant. A quick power cycle fixes everything until next time. This has been happening for months, across ESPHome and Home Assistant versions so I don’t think it’s an issue with the software? I’ve reflowed the solder to hopefully fix any cold solder joints and I don’t see any obvious issues.

I’m running ESPHome 2022.10.2 and Home Assistant 2022.11.1

Screen Shot 2022-11-03 at 11.57.43 PM

[23:54:31][E][ssd1306_i2c:036]: Communication with SSD1306 failed!

and

[23:54:30][C][i2c.arduino:038]: I2C Bus: [23:54:30][C][i2c.arduino:039]: SDA Pin: GPIO4 [23:54:30][C][i2c.arduino:040]: SCL Pin: GPIO5 [23:54:30][C][i2c.arduino:041]: Frequency: 50000 Hz [23:54:30][C][i2c.arduino:050]: Recovery: failed, SDA is held low on the bus [23:54:30][I][i2c.arduino:054]: Results from i2c bus scan: [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x08 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x09 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x0A [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x0B [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x0C [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x0D [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x0E [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x0F [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x10 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x11 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x12 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x13 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x14 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x15 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x16 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x17 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x18 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x19 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x1A [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x1B [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x1C [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x1D [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x1E [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x1F [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x20 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x21 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x22 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x23 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x24 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x25 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x26 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x27 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x28 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x29 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x2A [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x2B [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x2C [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x2D [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x2E [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x2F [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x30 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x31 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x32 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x33 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x34 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x35 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x36 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x37 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x38 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x39 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x3A [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x3B [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x3C [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x3D [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x3E [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x3F [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x40 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x41 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x42 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x43 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x44 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x45 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x46 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x47 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x48 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x49 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x4A [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x4B [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x4C [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x4D [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x4E [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x4F [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x50 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x51 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x52 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x53 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x54 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x55 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x56 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x57 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x58 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x59 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x5A [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x5B [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x5C [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x5D [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x5E [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x5F [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x60 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x61 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x62 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x63 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x64 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x65 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x66 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x67 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x68 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x69 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x6A [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x6B [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x6C [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x6D [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x6E [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x6F [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x70 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x71 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x72 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x73 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x74 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x75 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x76 [23:54:30][E][i2c.arduino:062]: Unknown error at address 0x77 [23:54:30][D][pmsx003:270]: Got PM2.5 Concentration: 3 µg/m^3, Temperature: 0.0°C, Humidity: 0.0% [23:54:30][D][sensor:126]: 'Particulate Matter <2.5µm Concentration': Sending state 3.00000 µg/m³ with 0 decimals of accuracy

Does this also happen with the official AirGradient Arduino code or only the ESPHome version?

I also get random display corruption with ESPHome code and like mentioned, a quick reboot resolves it.

I installed the original AirGradient code and it’s been three weeks, but it happened… 0% humidity and 0.00ºC. And a power on/off fixed the issue. I put the sensor on a switched USB hub so I made sure not to touch it to eliminate the variable of a broken wire or something.

I think the next thing to do is to remove the OLED display and run ESPHome to see what Home Assistant will log.

Have you had any success resolving this issue? I have two pre-soldered pro kits running ESPHome with the same problem.