Skip to content

LCD and OLED displays: Hardware hacks

Dale Whinham edited this page Sep 27, 2022 · 1 revision

This page contains a collection of hardware hacks you can carry out to get various off-the-shelf display/control HATs working with mt32-pi.

⚠️ Note: These modifications are user-submitted and NOT endorsed, NOT encouraged, and NOT tested by the project maintainers. Any hardware modifications are performed AT YOUR OWN RISK. These modifications are provided as-is and purely for educational purposes. If you break something, you get to keep the pieces!

Waveshare 1.3" OLED HAT

The Waveshare 1.3" OLED HAT offers a nice control interface and display that fits the footprint of a Raspberry Pi Zero. This HAT uses an SH1106 display. Unfortunately, it requires some hardware modifications to work with mt32-pi.

  • First, move the 5 resistors to the IΒ²C positions shown on the table printed on the back of the HAT. The DIN, CLK, DC, CS and BS1 resistors all need to be repositioned.
  • You must also tie the reset pin high (VCC), otherwise the display will not work in IΒ²C mode.
  • Also, adding a pair of 4.7k pull up resistors will assure the functionality of the display flawlessly.
  • To get the buttons to work, you will need to cut the traces and rewire them to the correct pins according to the control surface page. This is because the HAT's original pinout conflicts with the IΒ²S signals used for audio.

Hacking the Waveshare 1.3" HAT Hacking the Waveshare 1.3" HAT

Configuration file settings

[lcd]
type = sh1106_i2c
width = 128
height = 64
i2c_lcd_address = 3c

Waveshare 2.23" OLED HAT

The Waveshare 2.23" OLED HAT offers a large 128x32 OLED display that fits the footprint of a Raspberry Pi Zero. The display is an SSD1305 OLED, which can be used with the ssd1306_i2c driver via the magic width value of 132.

You must modify the resistor positions on the back of the HAT to switch it to IΒ²C mode as shown below.

Hacking the Waveshare 1.3" HAT Hacking the Waveshare 1.3" HAT

Configuration file settings

[lcd]
type = ssd1306_i2c
width = 132
height = 32
i2c_lcd_address = 3c
Clone this wiki locally