Aliexpress OLED 16x02 not working/WS0012

I've already wasted a lot of time and can't get any further-my OLED (16x02) is this one:
The Chipset is RS0012/WS0012 - unfortunately I can't find a library for 8 or 4 bit Modus.
My question: does anyone know a working library ?
I asked this question for the first time in the German Forum:

Thanks for the help and best regards

There seems to be no one that put a tutorial online how to connect that display to a Arduino board and which code to use for it. I think you are on your own. Do you even know if the display works at all ?

If you want a OLED display, why didn't you buy one ? Adafruit tests everything they sell, they provide a tutorial, they have a forum to answer questions.

It looks pretty straightforward to me.

The link says that the controller is : AIP31066 / WS0012

So you Google for the AIP31066 datasheet. And code accordingly.

From a brief glance at the PDF it obeys the same set of User Commands as HD44780. But you need to follow the datasheet initialisation sequence 2) 4-bit interface-mode (condition fosc = 270KHZ) on page 25.

If you are not very experienced it is much safer to buy the "popular displays" that are supported by Arduino libraries.

Mind you, I bet that Googling "AIP31066 / WS0012" should get you some example code.


Thank,s for the answer.
AIP31066 is a LCD Controller.
Librarys with Support for WS0012 (OLED) i have too testing- the Display stay black.
I can not believe, that that Display is Scrap or defektive.
There may be other ideas - thanks

Your biggest problem is identifying the ribbon signals and connecting to the ribbon.

I suspect that they follow the same pinout as 16x2 LCDs. But you need to check first.
Oh, companies like Newhaven may cost more but they provide example code. They have examples for a UC2066 controller.

I don't have your hardware. If you post photos of your ribbon wiring and links to any libraries you are using we can probably help.


p.s. RS0010 is probably similar to AIP31066 / WS0010. You need to compare the datasheets very carefully. I would start with Character printing before trying graphics.

Attached the Datasheet and the Application Note.
REX001602BBPP5N00000.pdf (1.4 MB)
OLED application note.pdf (1.3 MB)
I have changed and testing this Code:
Arduino_Demo.ino (4.9 KB)

I have this OLED acording this wiring connected - Port D is Data Bit 0-7 and Port B is RW/E/RS.
Its used a Arduino Nano

Connecting Ports_Nano

  • no Result (connected in 8bit mode)
    What is wrong - i have no Idea.


Thanks for the links.

Please be accurate.
Say which signal you have connected to which pin
e.g. LCD_RW to Digital #8 (PB0)
e.g. LCD_E to Digital #9 (PB1)
e.g. LCD_RS to Digital #10 (PB2)

Then attach or link to the original (un-edited) Arduino_Demo.ino

Your current Arduino_Demo.ino has many problems.


Edit. this looks like working code from CrystalFontz

My Code is from the Web - I don't know where from anymore.
I have changed the Portassignment:

LCD_RS to Pin Digital 8 (PB0)
LCD_E to Pin Digital 9 (PB1)
LCD_RW to Pin Digital 10 (PB2)

Thanks for the Link-i will testing this tomorow.
One Questions: my OLED used the RS0010-is it really compatible with WS0010 ?
I have testing many Examples/Librarys for the WS0010 unfortunately without success.

thank you for your help

There are some issues in that datasheet and some inconsistencies between the datasheet and the examples.

Things like

  • the initialization sequence in flow charts doesn't match what is in the code
  • the first part of the 4 bit initialization sequence is different than the 8 bit
    The first part of a hd44780 initialization sequence should be identical for 4 bit and 8 bit mode since it is responsible for getting the host and the LCD to be able to communicate. The first part of the initialization sequence is about reliably getting the LCD into known state which means getting it into 8 bit mode. This is true regardless of whether using the device with 8 data pins or only 4 data pins.
    This will be same for this LCD.
    Once reliably in 8 bit mode, the host can start sending instructions to configure the device for whatever mode (8 bit or 4 bit) you really want to use.
  • it says after the "magic" reset sequence (not part of the hd44780 instruction set) is used to reset the LCD that the lower nibble of the next instruction is expected. That can't be true as the high nibble of the instruction byte is normally sent first.
    But if the proper initialization sequence is used, you should never need to use this magic multi sequence of 5 zero instructions to "reset" the LCD.
  • the datasheet mixes up bits and nibbles in few places.

It would take some playing with a real device to get some code working with it.
I'm assuming that it will work as expected when using the "normal" hd44780 pre-initialization sequence, which is what the 8 bit example code does.

If someone would send me one, I'd be happy to add support for it to the hd44780 library.

--- bill

This is a shot in the dark but....
I have this interface board for an LCD display. However your post showing the data lines seem very familiar.
You might want to look into this board to see if it will work with your OLED.

Thank you for the many Answers.
This OLED work with Crystalfonts Lib (according to manufacturer information with RS0010 / WS0010 Driver):

Not working this OLED- should be with WS0012:


RS0012(1).pdf (2.3 MB)

Does anyone have still an idea ?


Your title says RS0010.
Your link in #3 says AIP31066 / WS0012

RS0010, WS0010, AIP31068 all seem to be the same.

I can't find a WS0012 datasheet.
You just have to compare AIP31066 datasheet with the WS0010 datasheet. And then look at the CrystalFontz WS0010 example code.

I would bet that the AIP31066 / WS0012 will work immediately in 8-bit parallel from power-up. Just like most other Character Displays.

It only becomes complicated when you want to select 4-bit parallel.


The Datasheet is in my Post #12 - RS0012
I have the Titel changed in RS0012 - should be compatible with WS0012.
Raystar and Winstar is the same Manufacturer and the PCB is equal.
Even in 8bit Modus is the Display without Function.
I have das big Display exange the smal Display - simply replaced of the Breadboard (the Wiring ist 1:1).
In the next days i will change this CrystalFonts Exampel - mayby works the Display finally.

I have modified the CrystalFonts Datei:
WS0012.ino (13.2 KB)
According the Datasheet is this die Initialization (Sheet 31):

I have connected the Display im 8 Bit Mode.
But, the Display not working- stay black.
Anny Ideas ?


Yes, it looks as if you have implemented the RS0012 sequence from page 31 of the RS0012 datasheet.

However the sequence from page 21 of the RS0010 datasheet checks the BUSY flag.

So I would be inclined to add a _delay_ms(2) for each command. Well certainly the Function_Set and Display_On_Off commands.

Or why not check the BUSY flag yourself ?

No, I don't have a WS0012 display. If you are in the USA you could send a display to Bill Perry. (PM him first)


Thanks - how can i contact Bill?
Under what name is he registered here in the forum?
I would send the display to the USA.
For the time he's wasted, I'll give Bill the display.

The person who posted reply #9.

PM bperrybap. He has already contributed to this thread in #9.

You click on his Username. And select a private Message.
This new Forum software is a bit horrible.

Unread PMs appear as numbers on the Top Right of your screen. I have a big D for david. You probably have an M. Click on the M and you will see an envelope icon as well as your recent forum messages.

i have Bill contacted - thanks.

I will try to work with @maik_s offline to try to get something working with the hd44780 library.

But before that, can I get some clarification on which datasheet is for this display?
There are multiple datasheets posted and they are all different for different displays.

If this is the display indicated in OLED application note, then the existing hd44780 library can be used by simple configuring it to extend the instruction times since according to that datasheet the display device is VERY slow for the clear instruction and perhaps slower for the other instructions. (The timing for the other instructions is not indicated)
But instruction times are configurable using the hd44780 library.

If the display is as indicated by the RS0012 datasheet, then there may some additional things that need to be addressed.

So which datasheet is the one for this device?

--- bill