[Howto] LCD HD44780

Sure thing @GnF, although just so we’re clear 100% of the credit needs to go to @mcobit. I am simply repeating what he told me.

Agreed @szalay someone definitely needs to fork this off into a “[Howto] LCD HD44780 on Rpi2 model B” tutorial, but I’m definitely not the man for the job as I am just parroting what greater minds have told me. I’m standing on the shoulders of giants lol.

This is what I learnt from mcobit. Basically you can follow all the steps that szalay lays out in this thread but you need to make the following changes afterwards in order for it to work with Pi2:

Firstly make sure your connections match this:

Then swap out the existing HD4470.so driver in /usr/lib/arm-linux-gnueabihf/lcdproc/ for this one:
http://sourceforge.net/p/lcdproc/patches/_discuss/thread/4c659fe3/b8f3/attachment/hd44780.so

Then edit the /etc/LCDd.conf file to look like this:

## This file was written by cme command.
## You can run 'cme edit <application>' to modify this file.
## Run 'cme list' to get the list of applications available on your system
## You may also modify the content of this file with your favorite editor.

#Driver=hd44780


#DriverPath=/usr/lib/arm-linux-gnueabihf/lcdproc/

## Hitachi HD44780 driver ##
[hd44780]
ConnectionType=raspberrypi
D7=18
D6=23
D5=24
D4=25
RS=7
EN=8
Size=16x2

# LCDd.conf
#
# This file contains the configuration for the LCDd server.
#
# The format is ini-file-like. It is divided into sections that start at
# markers that look like [section]. Comments are all line-based comments,
# and are lines that start with '#' or ';'.
#
# The server has a 'central' section named [server]. Further each driver
# has a section which defines how the driver acts.
#
# The drivers are activated by specifiying them in a driver= line in the
# server section, like:
#
#   Driver=curses
#
# This tells LCDd to use the curses driver. The first driver that is
# loaded and is capable of output becomes 'the' output driver.
# All extra drivers can only serve as input.
# The default driver to use is curses.
#
# The drivers can read their own options from the config file, but most of
# them don't do this yet. They expect 'command-line'-format parameters that
# were previously placed on the command line. These parameters can be
# given to the driver in the following way:
#
#   Arguments="place arguments here"
#
# The arguments between the quotes are passed to the driver.
# As said before these are the same arguments that the driver would have
# been passed under the old command line format of
#
#   -d <driver> "<driverargs>"
#
# Note that the -d option still works, but not allows driverargs anymore.
# If -d is specified on the command line, the Driver= options in the
# config file are ignored.


[server]
# Server section with all kinds of settings for the LCDd server

#Driver=none
#Driver=curses
Driver=hd44780
DriverPath=/usr/lib/arm-linux-gnueabihf/lcdproc/
#Driver=lcdm001
#Driver=MtxOrb
#Driver=CFontz
#
# Tells the server to load the given drivers. Multiple lines can be given.
# NOTE: You may activate several input (input only) drivers but only ONE output
#       driver, which should be the first.

Bind=127.0.0.1
# Tells the driver to bind to the given interface

Port=13666
# Listen on this specified port; defaults to 13666.

#ReportLevel=5
# Sets the reporting level; defaults to 2 (warnings and errors only).
# ReportLevel=0 means NO DEBUG. This will avoid a flood of syslog ...

ReportToSyslog=no
# Should we report to syslog instead of stderr ? Default: no

WaitTime=5
# Sets the default time in seconds to displays a screen.

User=nobody
# User to run as.  LCDd will drop its root priviledges,
# if any, and run as this user instead.

ServerScreen=no
# Enables the built-in server screen [Default: no]
# yes      : always,
# no       : when there are no other screens active.

Foreground=no
# The server will stay in the foreground if set to true.
# Otherwise the server will fork to background and report
# to syslog

# TIP: The following options can also be modified from the
#      server menu (which requires a driver that supports input)

Heartbeat=open
# The server has serveral heartbeat modes
#   on    Stays on all the time
#   off   Stays off all the time
#   slash Rotating slash all the time
#   open  Can be controlled by all clients

InitialHeartbeat=on
# This sets the initial heartbeat state if the heartbeat mode is "open"
# Affects the server screen only ;)
#   on    Heartbeat activated
#   off   Heartbeat disabled
#   slash Heartbeat replaced with a rotating slash

Backlight=open
# The server has serveral backlight modes
#   on    Stays on all the time
#   off   Stays off all the time
#   open  Can be controlled by all clients

InitialBacklight=on
# This sets the initial backlight state if the backlight mode is "open"
# Affects the server screen only ;)

BacklightBrightness=255
# This sets the backlight brightness in state "on"
# NOTE: Not all drivers/devices support setting the brightness this
#       way. Some don't support switching the backlight on/off at all,
#       some can switch the backlight on or off only. If the latter is
#       the case BacklightBrightness must be > 0.


BacklightOffBrightness=0
# This sets the backlight brightness in state "off"
# NOTE: Not all drivers/devices support setting the brightness this
#       way. Some don't support switching the backlight on/off at all,
#       some can switch the backlight on or off only. If the latter is
#       the case BacklightBrightness must be = 0.


[input]
# Input section with settings that are related to input handling
# NOTE: Not all drivers have input functionality

# keypad settings
# Keyname      Function
#              Normal context              Menu context
# -------      --------------              ------------
#
# PauseKey     Pause/Continue              Enter/select
# BackKey      Back(Go to previous screen) Up/Left
# ForwardKey   Forward(Go to next screen)  Down/Right
# MainMenuKey  Open main menu              Exit/Cancel

#FreePauseKey=yes
# If set to yes, this prevents LCDd from handling the PauseKey itself

#FreeBackKey=yes
# If set to yes, this prevents LCDd from handling the BackKey itself

#FreeForwardKey=yes
# If set to yes, this prevents LCDd from handling the ForwardKey itself

#FreeMainMenuKey=no
# If set to yes, this prevents LCDd from handling the MainMenuKey itself
# TIP: Even if you "free" the above keys, you can still use the menu
#      provided you set FreeMainMenuKey=no

Then you should:

sudo /etc/init.d/LCDd restart

Then reboot the pi.

Then it should all work :smile: Just to reiterate, I’m not taking credit for any of this, I’m just repeating what others have told me. I hope this works for you @GnF, let me know how you get on. Also folks please feel free to chip in with corrections if you feel I’ve put anything down wrong. Peace.

1 Like