HowTo: lirc remote control including mouse emulation

Hi
I didn’t found any instructions for the mouse emulation so I wanted to share the outcome of reading different pages accross the internet.

Partially adapted from:
https://volumio.org/forum/how-installed-lirc-with-receiver-and-remote-volumio-t360.html

Volumio2 basic remote control and mouse emulation using lirc.

You need:

Any working remote,
TSOP4838 receiver or similiar,
100 Ohm resistor,
0,1µF capacitor ,
Volumio with Touchscreen plug-in installed on your RPi.

Prepare Hardware:
(Check datasheet for pinning of your TSOP first!!!)

  1. Connect one side of 100 Ohm to V+ of TSOP (TSOP4838 => Pin3).
  2. Connect other side of 100 Ohm to either 3.3V or 5V of RPi (should work both).
  3. Connect one side of capacitor to TSOP GND (Pin2) and other side to TSOP V+ (Pin3).
  4. Connect TSOP Data (Pin1) to any unused RPi GPIO. It can be any GPIO,
    but consider used pins of add-on boards such as sound cards etc. (see vendor
    documentation). Remember the logical GPIO number (!Not the physical pin
    of connetcor!).

Prepare volumio OS:

  1. Enable ssh via .local/dev/
  2. Login via ssh
    user: volumio
    pw: volumio
  3. Run
sudo apt-get update
sudo apt-get install lirc

Customize lirc:

  1. Edit /boot/config.txt:
sudo nano/boot/config.txt

Add the following lines at end of config.txt:

#...
dtoverlay=lirc-rpi
dtparam=gpio_out_pin=26
dtparam=gpio_in_pin=17
dtparam=gpio_in_pull=down

Important for receiving is the line dtparam=gpio_out_pin=…
Enter the GPIO number from section Prepare Hardware step (4.).
(In my case, I choosed pin 26 because it does not conflict
with my Hifiberry Amp+)

  1. Edit hardware.conf of lirc:
sudo nano /etc/lirc/hardware.conf

modify the file with the following content:

#...
LIRCD_ARGS="--uinput"
# Enable the lirc mouse deamon
START_LIRCMD=true
#...
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
# ...
# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF="/etc/lirc/lircmd.conf"

Setting of LIRCMD_CONF=… is only needed if you want to
enable lirc mouse emulation.

  1. Stop lirc deamon and learn commands of your favourite remote

sudo /etc/init.d/lirc stop irrecord -n -d /dev/lirc0 /home/volumio/lircd.conf
(follow instructions on screen, names of the keys can be your choice)

  1. Copy previously recorded lircd.conf to /etc/lirc
cp /home/volumio/lircd.conf /etc/lirc/lircd.conf
  1. Start lirc deamon:
sudo /etc/init.d/lirc start
  1. Check if remote works by runnig:
irw

…and press some buttons, it should print the button names
that you have given under step (2.)

  1. Create .lircrc in /home/volumio
nano /home/volumio/.lircrc

See content of my .lircrc:

begin
    prog = irexec
    button = power
    config = shutdown -h now
end

# volumio direct control

begin
    prog = irexec
    button = mute
    config = volumio volume toggle
end

begin
    prog = irexec
    button = volume_up
    config = volumio volume plus
end

begin
    prog = irexec
    button = volume_down
    config = volumio volume minus
end

begin
    prog = irexec
    button = seek_forward
    config = volumio seek plus
end

begin
    prog = irexec
    button = seek_backward
    config = volumio seek minus
end

begin
    prog = irexec
    button = windows
    config = volumio random
end

begin
    prog = irexec
    button = tv_recordings
    config = volumio repeat
end


begin
    prog = irexec
    button = play
    config = volumio play
end

begin
    prog = irexec
    button = stop
    config = volumio stop
end

begin
    prog = irexec
    button = pause
    config = volumio toggle
end

begin
    prog = irexec
    button = skip_forward
    config = volumio next
end

begin
    prog = irexec
    button = skip_backward
    config = volumio previous
end

begin
    prog = irexec
    button = channel_up
    config = volumio next
end

begin
    prog = irexec
    button = channel_down
    config = volumio previous
end

(the names for “button =” must match the names that you
provided in the irrecord session under step (2.)

  1. Add irexec to rc.local:
sudo nano /etc/rc.local

see my rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

(sleep 3;
sudo -u volumio irexec -d
)&
exit 0
  1. Reboot
    Now volumio should be able to be controlled by your remote.
    To enable the mouse emulation follow additional steps.
    My remote has arrow buttons for mouse movement
    and a center OK button for left click.
    Alternatively use your number buttons:
  • Center 5 for left click.
  • 2, 4, 6, 8 for North, West, East, South.
  • If you like: 1, 3, 7, 9 for diagonal movement such as NW, NE, SW, SE
  1. Edit /etc/lirc/lircmd.conf (again, log in via ssh):
sudo nano /etc/lirc/lircmd.conf

See my file:

[code]

To find out how to get a proper configuration file please read:

/usr/share/doc/lirc/README.Debian

lircmd config file

PROTOCOL IntelliMouse

ACCELERATOR start max multiplier

ACCELERATOR 2 30 5

#TOGGLE_ACTIVATE * ok

MOVE_N * up
#MOVE_NE * 3
MOVE_E * right
#MOVE_SE * 9
MOVE_S * down
#MOVE_SW * 7
MOVE_W * left
#MOVE_NW * 1
#MOVE_IN * CH+
#MOVE_OUT * CH-

#BUTTON1_TOGGLE * 5
#BUTTON1_TOGGLE * RADIO
#BUTTON2_TOGGLE * VOL+
#BUTTON3_TOGGLE * SOURCE

BUTTON1_CLICK * ok
#BUTTON1_CLICK * Asterix
#BUTTON3_CLICK * #

BUTTONx_CLICK, BUTTONx_UP, BUTTONx_DOWN are also possible[/code]

  • Again, after each “*” enter the name of the buttons
    from your irrecord session from step (2.).
  • “*” stands for any remote that is recognized by lirc.
  • TOGGLE_ACTIVATE: decide if you want to use a special
    button to enable/disable mouse emulation.
    In my case it is commented out and therefore always enabled.
  • Modify ACCELERATOR to adjust the behavior of movements to your needs.
  • You may comment in MOVE_NE etc. to enable diagonal movements.
  1. Modify X server configuration. Create a file:
sudo nano /usr/share/X11/xorg.conf.d/80-lircmouse.conf

(name of the file should start with a number and MUST end with .conf;
the rest is your choice)
See content of my file:

Section "InputDevice"
   Identifier  "LIRC-Mouse"
   Driver      "mouse"
   Option      "Protocol" "IntelliMouse"
   Option      "SendCoreEvents"
   Option      "Buttons" "5"
   Option      "ZAxisMapping" "4 5"
EndSection

(content from lirc.org)

  1. Reboot

The remote should now work as expected:

  • Basic remote control for volumio.
  • Mouse emulation

Have Fun!