Adafruit OLED 128x64 4Pin GPIO Help,

  • Hello,

    i have a SSD1306 Adafruit OLED 128x64 4pin GPIO

    But I didn't´get it to work.

    Can anyone help please?

    It is so complicated

    LibreELEC:~ # LCDd -c /storage/.config/LCDd.conf

    Could not open driver module /usr/lib/lcdproc/hd44780.so: /usr/lib/lcdproc/hd44780.so: cannot open shared object file: No such file or directory

    Driver [hd44780] binding failed

    Could not load driver hd44780

    There is no output driver

    Critical error while initializing, abort.

    LibreELEC:~ # i2cdetect -y 1

    0 1 2 3 4 5 6 7 8 9 a b c d e f

    00: -- -- -- -- -- -- -- -- -- -- -- -- --

    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    30: -- -- -- -- -- -- -- -- -- -- -- UU 3c -- -- --

    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

    70: -- -- -- -- -- -- -- --

    And here is my LCDd.conf

    ## Hitachi HD44780 driver ##

    [hd44780]

    # Select what type of connection. See documentation for availabe types.

    ConnectionType=i2c

    # I/O address of the LPT port. Usual values are: 0x278, 0x378 and 0x3BC.

    # For I2C connections this sets the slave address (usually 0x20).

    Port=0x3C

    # Device of the serial, I2C, or SPI interface [default: /dev/lcd]

    Device=/dev/i2c-1

    # Bitrate of the serial port (0 for interface default)

    Speed=0

    # If you have a keypad connected.

    # You may also need to configure the keypad layout further on in this file.

    Keypad=no

    # Set the initial contrast (bwctusb, lcd2usb, and usb4all)

    # [default: 800; legal: 0 - 1000]

    #Contrast=0

    # Set brightness of the backlight (lcd2usb and usb4all):

    # Brightness is the brightness while the backlight is set to 'on'.

    # [default: 800; legal: 0 - 1000]

    #Brightness=1000

    # OffBrightness is the brightness while the backlight is set to 'off'.

    # [default: 300; legal: 0 - 1000]

    #OffBrightness=0

    # If you have a switchable backlight.

    Backlight=yes

    # If you have the additional output port ("bargraph") and you want to

    # be able to control it with the lcdproc OUTPUT command

    OutputPort=no

    # Specifies if the last line is pixel addressable (yes) or it controls an

    # underline effect (no). [default: yes; legal: yes, no]

    #Lastline=yes

    # Specifies the size of the LCD.

    # In case of multiple combined displays, this should be the total size.

    Size=128x64

    # For multiple combined displays: how many lines does each display have.

    # Vspan=2,2 means both displays have 2 lines.

    #vspan=2,2

    # If you have an HD66712, a KS0073 or another controller with 'extended mode',

    # set this flag to get into 4-line mode. On displays with just two lines, do

    # not set this flag.

    # As an additional restriction, controllers with and without extended mode

    # AND 4 lines cannot be mixed for those connection types that support more

    # than one display!

    #ExtendedMode=yes

    # In extended mode, on some controllers like the ST7036 (in 3 line mode)

    # the next line in DDRAM won't start 0x20 higher. [default: 0x20]

    #LineAddress=0x10

    # Character map to to map ISO-8859-1 to the LCD's character set

    # [default: hd44780_default; legal: hd44780_default, hd44780_euro, ea_ks0073,

    # sed1278f_0b, hd44780_koi8_r, hd44780_cp1251, hd44780_8859_5, upd16314 ]

    # (hd44780_koi8_r, hd44780_cp1251, hd44780_8859_5 and upd16314 are possible if

    # compiled with additional charmaps)

    CharMap=hd44780_default

    # If your display is slow and cannot keep up with the flow of data from

    # LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4

    # to increase the delays. Default: 1.

    #DelayMult=2

    # Some displays (e.g. vdr-wakeup) need a message from the driver to that it

    # is still alive. When set to a value bigger then null the character in the

    # upper left corner is updated every <KeepAliveDisplay> seconds. Default: 0.

    #KeepAliveDisplay=0

    # If you experience occasional garbage on your display you can use this

    # option as workaround. If set to a value bigger than null it forces a

    # full screen refresh <RefreshDiplay> seconds. Default: 0.

    #RefreshDisplay=5

    # You can reduce the inserted delays by setting this to false.

    # On fast PCs it is possible your LCD does not respond correctly.

    # Default: true.

    DelayBus=true

    # If you have a keypad you can assign keystrings to the keys.

    # See documentation for used terms and how to wire it.

    # For example to give directly connected key 4 the string "Enter", use:

    # KeyDirect_4=Enter

    # For matrix keys use the X and Y coordinates of the key:

    # KeyMatrix_1_3=Enter

    KeyMatrix_4_1=Enter

    KeyMatrix_4_2=Up

    KeyMatrix_4_3=Down

    KeyMatrix_4_4=Escape

    #Additional PCF8574T settings

    i2c_line_RS=0x01

    i2c_line_RW=0x02

    i2c_line_EN=0x04

    i2c_line_BL=0x08

    i2c_line_D4=0x10

    i2c_line_D5=0x20

    i2c_line_D6=0x40

    i2c_line_D7=0x80

    BacklightInvert=yes

  • ok. I changed the driver path to .config where the driver is now I get this

    LibreELEC:~ # LCDd -c /storage/.config/LCDd.conf

    sock_create_inet_socket: cannot bind to port 13666 at address 127.0.0.1 - Address already in use

    sock_init: error creating socket - Address already in use

    Critical error while initializing, abort.

  • There are 2 possible issues for you:

    1. Driver hd44780 does not work for SSD1306. It is a different controller with different initialization command.

    You have to find a hd44780.so file compiled for your oled.

    See here as example (not using lcdproc, but still works) Adafruit customer service forums • View topic - 128x32 i2c OLED shows garbage on Odroid-C2, okay on RPi

    2. (Small chance) your driver path still is not good.

    From your command above it seams another instance of LCDd is running (address already in use).

    If you install lcdproc as addon, the correct path is DriverPath=/storage/.kodi/addons/http://service.lcdd/lib/lcdproc/. And LCDd.conf is on \\ip_adress\Userdata\addon_data\service.lcdd


    Do you use Rpi? Or what?