Issue trying to connect I2C OLED display to Pixhawk

Hey there!

After reading about the possibility to connect a OLED to the Pixhawk to get flight data I got myself an 0.96 inch I2C OLED
But after connecting it all up and I get nothing.
The screen is not lighting up at all.

How can I troubleshoot this?

Hi, did you enable the correct value at NTF_Display_Type ?

see documentation Randy created at:

I bought an SSD1306 so I set it to the correct one.
I even tried to change to the other one to be sure.

I connected it to an arduino to make sure the display wasn’t faulty but it works fine.

Not all modules labeled SSD1306 really are so it might be worth trying a different one. I can tell you it does work I use them on all my aircraft. But I had a large failure rate and not all modules were as advertised.

I see. But it seems like it’s compatible with SSD1306 code on the arduino sice it works without an issue with it.

Can try ordering another one that is advertised to work with the Pixhawk

Be careful of the ID of the display and whether it clashes with any other I2C device.

Had some issues on a PH2.1 with external compass and display on the same I2C channel.
Had to switch the display to the other I2C channel to work.

Are you using an I2C extender, like
You may have a broken link on this extension board ?
Assuming you use a compass which is also connected to the I2C ?

@mboland That sounds like a good reason., how do I change the I2C channel?
Thanks in advance!

@Erik_Groeneveld Yes I use one, I have a compass that’s connected to it, and it works good.
Either I2C channel collision or a faulty power lear in the splitter since the compass gets power from the GPS module instead.

The first batch of displays I bought had no way to change ID.
The next batch had a solder pad on the back that allows a change between 2 ID’s.
On the PH2.1 I simply juggled the compasses (2), display, LED’s (2) around between the 2 buses until they worked.

In doing this I discovered what @Erik_Groeneveld mentioned, in that some of these I2C extenders are a bit suspect.
I am assuming a combination of fine traces on the boards, using led free solder, and the forces sometimes required to remove those dreaded plugs, results in failed, or worse, intermittent, connections on the extender sockets.

Suspect everything.

Are you absolutely sure that both SDA, and SCL is connected correctly ?
Did you try to swap these in the connector, as that’s probably easiest…

Obviously if power is available at the connector…

If you can’t change the I2C id at the OLED, maybe you can have a look at the possibility to change in the GPS?

That’s about what I would try…

Or try a New OLED, GPS combination…


Are confirmed working on both of my Hexacopters…
No ID’s to change in this case…

Gonna take out my multimeter and do some continuity testing on the splitter.

I also found a I2C address select pin on the back of the display, can be worth trying to change before doing another purchase


So now I’ve tested out all the leads both from Pixhawk and on the splitter and on the leads to the screen and everything works correct.
So I proceeded to try to change address on the screen by resolder a resistor on the backside.

I verified that the screen worked with my arduino and that the new address was registered and everything was fine.

But still no pivcture on the pixhawk…

I guess I cant win this fight and just have to buy a new once that is confirmed to work with it

Seems like the address select didnt work after all, it’s stuck on the old 0x3D adress as before I moved the resistor


I’m ordering a screen from banggood, since it seems like I can’t get this one to work, or change address

New OLED arrived today, thanks @Erik_Groeneveld for suggesting that screen.
It works now!

Good to hear that, it’s a very useful piece of HW to understand what’s going on when you run into the typical problems like : The drone isn’t arming when you expect it to work…

This one just worked out of the box for me:
It’s small and fits neatly on top of a Pixfalcon.
There’s a jumper on the back for changing the address, which I didn’t need to use.

I just got an oled display from BG today. Weirdly it works fine when the pixhawk 2.1 is powered by usb, but doesn’t light on when powering with my planes battery.

Works Great with Pixhawk2.1 Cube

I just wanted to report that I bought this one on Amazon:

I made a simple cable and plugged it into the I2C port on my Pixhawk2.1 Cube. In Mission Planner, I changed NTF_Display_Type to 1, rebooted, and it works great!!

I did not have to change the I2C address or anything else.

For about 2 Euro (inc shipping) you can get the ones which have the top line in yellow, and the rest of the screen in blue (AliExpres). This gives a great result for the MavLink status updates which scroll from right to left on the top-line.
And for that price, order a couple more, since they are known to fail, or are “dead on arrival”. Works for me, and worth the 2-3 weeks shipping from China to Europe.

I have put a small plexiglass screen on top of it, to protect the display. I broke one of my other display when trying to push it firmly into the doublesided tape, the bottom of the screen is not supported, and when you push it there, it cracks. Another 2 Euro down the drain :wink:

Before I hook up any I2C peripherals, I scan them with an Arduino for the I2C address. I write the address on the back of each sensor/peripheral. Just in case.



Dear all, my OLED only display “armed” but not all pre-arming information (says no, batt voltage, …). Do you have any idea?

Thank in advance

This is the intentional function of the display.
When you’re flying it is counter productive to be wasting processor cycles displaying data you cannot see.

When your craft is unarmed it will display the data you are asking about.