MMDVM .96″ OLED Now Works!

It has really been bugging me. I’ve never been able to get a 0.96″ OLED to work on my Pi-star hotspots. The 1.3″ works okay. Why not the 0.96″. Here’s why:

The 1.3″ screen uses the SSD1306 controller. Adafruit uses this controller on all their OLED screens. The (cheap) Chineese OLED screens use an older SSD1106 controller.

Raspberry Pi uses the Adafruit OLED driver software, so Pi-star does also. Naturally Adafruit has no desire to support the SSD1106 as they don’t sell anything that uses it. In other words, the standard Pi-star distibution OLED driver doesn’t work with the SSD1106 .96″ displays.

What’s different? The SSD1106 has a slightly smaller refresh RAM array than the SSD1306. That causes each line of pixels to be off by 2 hence small valid text ends up looking like garbage. The graphics still look okay.

The solution is to replace the Adafruit driver with a modified version that supports the SSD1106. The driver is located at /usr/local/lib/ArduiPi_OLED.so.1. I have built a replacement driver with the SSD1106 support.

  1. SSH into your Pi-Star (can be done from the Expert screen).
  2. Switch to root with “sudo su”.
  3. Make the disk RW with the command “rpi-rw”
  4. Move to the directory where the driver is installed with “cd /usr/local/lib”.
  5. Copy the driver file from HamOperator with the command:
    “wget http://HamOperator.com/files/libArduiPi_OLED.so.1.0”.
  6. Change the permissions on the driver with the command:
    “chmod 777 /usr/local/lib/ArduiPi_OLED.so.1.0”.
    (I don’t know why ‘777’ ‘755’ should work but the original was ‘777’.
  7. Reboot
  8. The OLED type needs to be ‘3’ for the 0.96 display and ‘6’ for the 1.3″ display (set in Expert->MMDVM Host). The OLED must also be enabled from the configuration page

Thanks to Charles for doing the driver work!

If you want to download the file directly, you can do that here: libArduiPi_OLED.so.1.0