LCDproc

From MythTV Official Wiki
Jump to: navigation, search

Fusion.jpg


LCDproc is the software used to drive either LCD or VFD Displays on your MythTV Case.

LCDproc consists of a server daemon called LCDd that drives the LCD/VFD, and a collection of client applications tells the server what to display. There are also a collection of driver stubs for different LCD/VFD's. The stubs talk to the driver for your specific display.

Many Home Theater PC Cases now include VFDs from SoundGraph's iMon family of VFD displays. These typically are connected to your system through a USB port.

The Driver for the SoundGraph iMon comes bundled with the latest LIRC package which most modern Linux distributions will have installers for. The driver name is lirc_imon.

Also check Imon for more info on imon.


Setting up LCDproc

First ensure that the hardware is set up correctly, The lsusb command should return a line like below:
$lsusb
...
Bus 001 Device 004: ID 15c2:0036 SoundGraph Inc. LC16M VFD Display/IR Receiver
...
If you do not see a similar line, then check your hardware installation

Red Hat Linux/Fedora/CentOS

Under more recent versions of Red Hat family Linux OSs, this package is available stock.

To Install:

# yum install lcdproc

The two configuration files (LCDd.conf & lcdproc.conf) live in /etc/lcdproc. You will find example files in the same directory. Once you have adjusted the config files to suite, you can enable the two services, LCDd lcdproc as follows:

# service LCDd enable
# service LCDd start
# service lcdproc enable
# service lcdproc start

This will also ensure that the services restart on reboot.

Generic Linux Instructions

The following assumes your home directory is /home/mythtv and uses the imon VFD driver as an example

You will need the following packages pre-installed on your version of Linux -GCC, Make, Automake, Autoconf,ncurses, lirc, kernel headers, cvs.

First download the source package from LCDproc Website into your home directory
Or follow the LCDproc CVS source install instructions for the latest CVS tree.

You will now have a directory called lcdproc-0.5.2. Now lets build the LCDproc package.


> cd lcdproc-0.5.4 
>./configure --enable-drivers=all
> make
> cd shared
> make
> cd ../server
> make
> # run next command as root
> # For mythbuntu do $sudo su -
> make install

Create a directory called "lcd" in your home directory and copy the imon driver and configuration file to it

> cd /home/mythtv 
> mkdir lcd
> cd /home/mythtv 
> cp lcdproc-0.5.4/server/drivers/imon.so lcd/imon.so
> cp lcdproc-0.5.4/LCDd.conf lcd/LCDd.conf

Edit the LCDd.conf file to specify your driver as well as the driver path. Here are the snippets from my LCDd.conf

# The following drivers are supported:
#   bayrad, CFontz, CFontz633, CFontzPacket, curses, CwLnx, EyeboxOne,
#   g15, glcdlib, glk, hd44780, icp_a106, imon, IOWarrior, irman,
#   joy, lb216,lcdm001, lcterm, lirc,MD8800, ms6931, mtc_s16209x,
#   MtxOrb, NoritakeVFD, pyramid, sed1330, sed1520, serialVFD,
#   sli, stv5730, svga, t6963, text, tyan, ula200, xosd
 Driver=imon
# Where can we find the driver modules ?
# IMPORTANT: Make sure to change this setting to reflect your
#            specific setup! Otherwise LCDd won't be able to find
#            the driver modules and will thus not be able to
#            function properly.
# NOTE: Always place a slash as last character !
DriverPath=/home/mythtv/lcd/

Now load the driver for the iMon and check that works (your driver might be called lirc_imon2)

> modprobe lirc_imon
> echo "Hello MythTV and good morning" > /dev/lcd0

"Hello MythTV and good morning" should now be on the display.


NOTE: This won't work for the Antec Fusion V2 Black which has a graphical LCD. If you have a recent version of lirc_imon try this:

> modprobe lirc_imon is_lcd=1

More recent versions may require the display_type option to be defined. Create /etc/modprobe.d/lirc_imon.conf with the following:

 options lirc_imon display_type=1

Where the value of display_type is 1 for VFD, 2 for LCD. Then reload the module.

If you try and echo text to /dev/lcd0 you should get "Invalid Argument". Then configure and run LCDd. Text should appear on the display.


Here is the dmesg output after the driver has loaded

lirc_dev: IR Remote Control driver registered, at major 61 
/usr/src/packages/BUILD/lirc-0.8.0/obj/default/lirc_imon//lirc_imon.c: Driver for Soundgraph iMON MultiMedian IR/VFD, v0.3
/usr/src/packages/BUILD/lirc-0.8.0/obj/default/lirc_imon//lirc_imon.c: Venky Raju <dev@venky.ws>
/usr/src/packages/BUILD/lirc-0.8.0/obj/default/lirc_imon//lirc_imon.c: imon_probe: found IMON device
lirc_dev: lirc_register_plugin: sample_rate: 0
/usr/src/packages/BUILD/lirc-0.8.0/obj/default/lirc_imon//lirc_imon.c: imon_probe: Registered iMON plugin (minor:0)
/usr/src/packages/BUILD/lirc-0.8.0/obj/default/lirc_imon//lirc_imon.c: imon_probe: iMON device on usb<1:3> initialized
usbcore: registered new driver lirc_imon


Now Run the LCDd server as root with our config file

# /usr/local/sbin/LCDd -c /home/mythtv/lcd/LCDd.conf

You will now see the following message on your VFD

LCDproc.jpg

Starting LCD PROC from boot

Need some words on how to autoload the driver as well as how to start LCDd

Put the following line in the beginning of the init script below.

/usr/local/sbin/LCDd -c /home/mythtv/lcd/LCDd.conf

Now LCDd and LCDproc automaticly starting during boot.


Note: There are "init" files available in the source distributions "scripts" folder, for various different distros:

[user@host lcdproc-0.5.1]$ ls -al scripts/
total 72
drwxr-sr-x 3 1000 ftp 4096 Jan 17 14:24 .
drwxr-sr-x 9 1000 ftp 4096 Jan 17 14:24 ..
drwxr-sr-x 4 1000 ftp 4096 Oct 14 09:06 debian
-rw-r--r-- 1 root ftp 1157 Jan 17 14:22 init-LCDd.debian
-rw-r--r-- 1 1000 ftp 1134 Oct  7 00:02 init-LCDd.debian.in
-rw-r--r-- 1 root ftp 2265 Jan 17 14:22 init-LCDd.rpm
-rwxr-xr-x 1 1000 ftp 2237 Oct  6 00:02 init-LCDd.rpm.in
-rw-r--r-- 1 root ftp 1195 Jan 17 14:22 init-lcdproc.debian
-rw-r--r-- 1 1000 ftp 1172 Oct  7 00:02 init-lcdproc.debian.in
-rw-r--r-- 1 root ftp 2270 Jan 17 14:22 init-lcdproc.rpm
-rw-r--r-- 1 1000 ftp 2243 Oct  7 00:02 init-lcdproc.rpm.in
-rw-r--r-- 1 root ftp 8672 Jan 17 14:24 Makefile
-rwxr-xr-x 1 1000 ftp  222 Oct  6 00:02 Makefile.am
-rw-r--r-- 1 root ftp 8375 Jan 17 14:24 Makefile.in

You need to copy the appropriate file to your init folder. i.e. on Fedora you would (as root):

# Copy file to init folder:
[root@host lcdproc-0.5.1]# cp scripts/init-LCDd.rpm /etc/init.d/LCDd

# Make the script executable
[root@host lcdproc-0.5.1]# chmod 755 /etc/init.d/LCDd

# Add the script to chkconfig
[root@host lcdproc-0.5.1]# chkconfig LCDd --add

# Tell the machine to start on boot:
[root@host lcdproc-0.5.1]# chkconfig LCDd on

If you put your config file in a different directory other than the default ( /usr/local/etc/LCDd.conf ) such as /home/mythtv/lcd/LCDd.conf
Edit the location of the configuration file in /etc/init.d/LCDd

Edit the following line in /etc/init.d/LCDd
configfile=${etc}/LCDd.conf

Change it to match your new configuration directory
configfile=/home/mythtv/lcd/LCDd.conf


# Start the daemon now:
[root@host lcdproc-0.5.1]# service LCDd start

Now go and configure MythTV's LCD server Mythlcdserver

Starting lcdproc from boot under systemd

To tell systemd to start services automatically at boot, you must enable them. To start LCDd at boot, I used the enable command:

sudo systemctl enable LCDd
this created LCDd.service in /lib/systemd/system/

So that LCDd.service is not overwritten after upgrades:

sudo cp /lib/systemd/system/LCDd.service /etc/systemd/system/

I then amended /etc/systemd/system/LCDd.service so it ended up as:-

[Unit]
Description=LCDd display daemon
Documentation=man:LCDd(8) http://www.lcdproc.org/
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/sbin/LCDd -s 0 -f -c /home/lcdproc/lcd/LCDd.conf
User=lcdproc
TimeoutStopSec=1s
Restart=on-failure
RestartSec=5
StartLimitInterval=30
StartLimitBurst=5

[Install]
WantedBy=multi-user.target

and LCDd.conf as:-

[server]
DriverPath=/home/lcdproc/lcd/
Driver=vlsys_m428
NextScreenKey=Right
PrevScreenKey=Left
ReportToSyslog=yes
ToggleRotateKey=Enter
ServerScreen=no

Bind=127.0.0.1
Port=13666
Hello="  Mythbuntu"
WaitTime=5

[menu]
DownKey=Down
EnterKey=Enter
MenuKey=Escape
UpKey=Up

[vlsys_m428]
Device=/dev/ttyUSB0

To run LCDd as a dedicated unprivileged user account, create user lcdproc and add to group dialout for access to /dev/ttyUSB0

sudo useradd -d /home/lcdproc lcdproc
sudo usermod -a -G dialout lcdproc

Note:- After working fine under Ubuntu 20.04 I had to make changes to get 22.04 running with the same config files. LCDd.conf and vlsys_m428.so had to be moved to /home/lcdproc/lcd/ and the ExecStart line in LCDd.service and DriverPath in LCDd.conf changed to reflect that.

Now go and configure MythTV's LCD server Mythlcdserver

Associated articles