What happened to this SSD1306 display?

Hey there people. :wave:

Bought my first SSD1306 recently and been using it for maybe around a week. Did a few tests depleting my battery to zero in two days … twice. So display was always on for at least four days. This shouldn’t be a problem right? People use these for years …

It renders weird now. I don’t think I’ve changed any code related to the display and use the same library. But the visual difference is apparent. I’ve moved the text around and the “missing pixels” seem to be moving around with the text.

I use this with ESP32, PlatformIO, C++, U8g2 library for rendering. The only code that changed since I last seen this display was related to deep sleep …



This almost looks like lower resolution font TBH. But I’m pretty sure I didn’t change it.
Can the hardware glitch this way?
I understand the conditions aren’t exactly same on these photos but you should see how 5’s are rendered differently. With “power” line being cut off due to screen refreshing while I took video.
Anyone sees what this might be?


To me it looks more like a lower resolution display, rather than a different font. Like it has changed from a 64-line display to a 32-line. Have you recompiled the code? Is it possible the library got automatically updated and changed the default size of the display?



I definitely recompiled the code. While I see some recent commits to the library’s main branch, it seems release haven’t been done since 23 Jan. (Their recent change log is rather vague, but I found this version match PlatformIO in their tooling code …)

I’ve checked programmatically the width and height of the screen are reported as 128x64.

I will also probably be trying another library just in case. The fact that that “5” renders same way wherever I put it indicates that this is probably software.

It’s unfortunate that I didn’t init a git repo and can’t just revert :frowning: never make this mistake people.


Hi Rinat,

Welcome to the forum!!

Looks like an awesome project! OLEDs should last years if pixel burn-in is handled (I like the analogy of each pixel having health points and as you use it the HP goes down).

That looks very odd, if you have a Pico on hand I’d do a quick test with the example code: PiicoDev OLED Display Module (128x64) SSD1306 | Core Electronics Australia

Let us know how you go!


But is your code driving it like it’s 64x32? If the code assumes a default configuration and if the library has changed the default then that could happen. For instance, if the update made the library inaccessible for some reason, and the compiler loaded a different library.


Hey Jeff, thanks for your response!

This is basically the only place where I specify width/height anywhere.

I believe I’m using the right constructor. I understand that it could have changed internally. But it’s unlikely, considering that PlatformIO recorded the library version as below, at the moment I added it:

lib_deps = 

I definitely started my project after their last release date (23 Jan).

I’ve already tried different version (olikraus/U8g2@2.32.6 - 5 months old) of the same library with no luck but yet to try completely different library from Core Electronics and let you know how it goes. :+1:



@Liam I failed to notice that I need a special MCU for that example project.

I don’t have Pico on hand unfortunately.

So I tested with Adafruit SSD1306 C++ library and the results aren’t better. So on the photo below it says HELLO WORLD 10 times using font of 6px height (which actually looks like 3 pixels if we count the dots).

The text becomes legible and predictable (you don’t see some of the lines get squished) if I enable font scaling over y axis that this library allows you to do:

I get similar effect if I set height to 32 in the display constructor of this library.

I don’t think this is the code anymore. It was very humid recently and I’m thinking maybe this display just broke … If you look at H and compare horizontal density vs vertical density you will see holes in vertical axis and less of those in horizontal axis. :man_shrugging:

I’m thinking of ordering another one of these to compare.


@Liam can I use regular Raspberry Pi 4b to try that example code? Or do you think I could flash MicroPython on my ESP32 to try it?

1 Like

Hi Rinat,

Both are definitely options, the RPi 4 SBC has been tried and tested so to save time I’d go for that. I’ve done a couple of tests with other PiicoDev modules on different ESP32’s and they’ve worked but can’t confirm that the OLED works.


@Liam Thanks. I’ve tested the main.py with the counter. This is how it looks:

I think it’s the device. I’ve already ordered a replacement.


I don’t have one of these displays to check, but are you sure you’re passing the constructor parameters in the right order? The source of U8g2lib.h shows this…

  const u8g2_cb_t *rotation,
  uint8_t reset = U8X8_PIN_NONE,
  uint8_t clock = U8X8_PIN_NONE,
  uint8_t data = U8X8_PIN_NONE) : U8G2() { ... }

REF: https://raw.githubusercontent.com/olikraus/u8g2/master/cppsrc/U8g2lib.h


@Anthony164590 thanks! That’s a good find. I’m pretty sure copy-pasted it from somewhere :man_facepalming: I’ve corrected it … nothing changed in behavior :man_shrugging:

Anyway, the new display has arrived and works perfectly. Just hope that it won’t get to the same state and it’s due to high humidity …


Hi Rinat
If it is humidity that affects these displays a thin coat of a conformal coating as used to tropic proof boards may not go astray. I think such material is commercially available but if not a very thin coat of Araldite will probably do the job. I think that is what very early coatings were anyway. I nightmare to replace components back in the days when we had to do that but could be done with care. There were several techniques for that. The Marconi method used clean automotive grease, a very hot soldering iron and a stiff tooth brush. Very effective. Ahhh, weren’t those the days…
Not the display screen obviously.
Cheers Bob


Hi Rinat,

Glad to hear the new display is working! It sounds like there might have been an issue with the display, feel free to get in touch with us by replying to your order confirmation email!

PS: we stock some conformal coating here: https://core-electronics.com.au/search/?q=conformal+coating
I havent had the chance to tinker around with it just yet so wont be able to confirm its effectiveness.
Note that the main driving IC lives inside the black cover and the supporting components live on the PCB