SSD1306 doesn't come up

FC: Pixhawk 1 clone
FW: AC 3.5.5 (27229c83)
Display: Generic 0.96" SSD1306, I²C address 0x3C

Problem: Display doesn’t come up - stays black

Debugging done:

  • Verified NTF_DISPLAY_TYPE is set to 1
  • Rebooted FC several times
  • Tested with 2 different displays
  • Tested displays with Arduino - both work and are at address 0x3C
  • Tested direct connection and connection via I²C hub - no success
  • Measured voltage at display connector - 4.3V
  • Monitored I²C bus with logic analyser at display connector - see writes to 0x3C
  • Other I²C devices (compass, external LED, …) work fine


  • Tested NTF_DISPLAY_TYPE=2 for SH1106 - no success.

Does anybody have ANY idea what else to check to get this work?

Many of those so called SSD1306 modules are mis-labeled. Some don’t have the same chip. Try setting NTF_Display_TYPE to 2 in case it is really a SH1106.

I tested the displays with an Arduino with the SSD1306 library, so I’m fairly sure they are SSD1306 :D. But I tried NTF_DISPLAY_TYPE 2 also. Forget to write it in my OP, sorry.

You need to reboot after changing settings.

Jep. Rebooted every time…

I have a number of them working fine. I added them a long time ago so I don’t remember the correct address but if it was wrong they would not work on Ardupilot but might work on your Arduino.
Got correct power on your I2C extender?
I have had a lot of just defective modules.
Out of ideas.

At least in the current code on Github, copter does expect the display to be at 0x3C - which they are (verified with the Arduino test setup). The I²C sniff also shows the write setups to 0x3C. And I also tried connecting the displays directly, i.e. without hub. Yeah, I’m also out of ideas, hence the forum post :smiley: :smiley: :smiley:

Swapped the data wires ?? Just in case…

Jup, swapped SDA and SCL too…