[mythtv-users] Remote and blaster without LIRC?

Stephen Worthington stephen_agent at jsw.gen.nz
Tue Jun 4 04:50:58 UTC 2019

On Mon, 3 Jun 2019 15:52:10 -0400, you wrote:

>This should be working, but it's not; MythTv responds to none of the 
>button presses from the remote.
>Using lirc-setup, when picking mceusb hardware, it pretty much forces  
>the driver to default, so, I ended up using default. Testing with irw, 
>it works fine, and returns string  that match the strings in 
>/etc/lirc/lircd.conf.d/mceusb.lircd.conf.  If I change a string in 
>mceusb.lircd.conf and retest, I can see the changes in irw.
>Testing with ircat, it looks like it's working, but I'm not sure where 
>the strings are config from.  Some buttons match the contents of 
>/etc/lirc/lircd.conf.d/mythtv.lircrc, and some don't.  If I change a 
>string in mythtv.lirc and retest, nothing changes.  I suspect ircat is 
>getting strings from somewhere else.
>Below are the the contents of lircd_options_conf and a couple of 
>examples; any suggestions on what to look for next?
>*Contents of "lircd_options_conf":*
># Generated by lirc-setup
>nodaemon = False
>driver = default
>device = /dev/lirc0
>output = /var/run/lirc/lircd
>pidfile = /var/run/lirc/lircd.pid
>plugindir = /usr/lib/x86_64-linux-gnu/lirc/plugins
>permission = 666
>allow-simulate = No
>repeat-max = 600
>lircd_conf = mceusb.lircd.conf
>uinput = False
>nodaemon = False
>code = echo lirc > /sys/class/rc/rc0/protocols
>*example 1:*
>don at johnny:~$ irw
>000000037ff07be0 00 KEY_DOWN mceusb
>000000037ff07be0 01 KEY_DOWN mceusb
>000000037ff07be1 00 KEY_UP mceusb
>000000037ff07be1 01 KEY_UP mceusb
>don at johnny:~$
>don at johnny:~$ ircat mythtv
>*example 2:*
>don at johnny:~$ irw
>000000037ff07bdc 00 KEY_BACK mceusb
>000000037ff07bdc 01 KEY_BACK mceusb
>don at johnny:~$ ircat mythtv
>*example 3:*
>don at johnny:~$ irw
>000000037ff07bdd 00 KEY_OK mceusb
>000000037ff07bdd 01 KEY_OK mceusb
>don at johnny:~$
>don at johnny:~$ ircat mythtv
>don at johnny:~$

From the irw output above, the "default" driver setting is actually
using a driver named "mceusb".  The IRW output looks OK, but the arrow
keys are not the best ones to use as an example as they also tend to
work even without LIRC due to how the other paths for processing IR
input work.  The KEY_BACK example though is a key that normally does
not work without the LIRC setup being right, so that looks good.

The "ircat mythtv" command should be looking at ~/.lircrc for its
config file.  On a normal MythTV system, that file is just a set of
include commands to read other files.  Here is mine from

stephen at mypvr:~$ cat .lircrc
#Custom lircrc generated via mythbuntu-lirc-generator
#All application specific lircrc files are within ~/.lirc
include ~/.lirc/mythtv
include ~/.lirc/mplayer
include ~/.lirc/xine
include ~/.lirc/vlc
include ~/.lirc/xmame
include ~/.lirc/xmess
include ~/.lirc/totem
include ~/.lirc/elisa
include ~/.lirc/irexec

You need to run ircat from the same user as mythfrontend is run from,
in order for it to find the correct .lircrc file.  From the above, it
looks like you are doing that, but I can not be completely sure.

In the files included from .lircrc, the convention is that each of
those files will have the settings for the program that matches the
file's name.  So all the settings for mplayer will be in the mplayer
file and all the settings for mythtv will be in the mythtv file.
However, the way LIRC works is that what matters is what is in each
individual setting, so if you get something in a different file that
has the settings for mythtv, it will work.  And it could override a
valid earlier setting that you have made with a later invalid one.  So
you need to watch out for that.  If you are not using any programs
other than mythtv with LIRC, and you want to absolutely rule out any
problems like that, you can just comment out all the other includes in
the .lircrc file by putting a # character at the start of the line.

So all the LIRC settings for program "mythtv" should be in
~/.lirc/mythtv.  Settings for program "mythtv" are identified by a
"prog = mythtv" line.  Here is my Escape / Back button:

    remote = devinput
    prog = mythtv
    button = KEY_BACK
    config = Escape
    repeat = 0
    delay = 0

What that says is when LIRC receives an input from the "devinput"
driver, and is attached to program "mythtv", it should translate any
"KEY_BACK" signals it receives into the keystroke "Escape" and send
that to program "mythtv".  MythTV has settings in mythfrontend that
tell it what to do with the keystroke "Escape" when received from

MariaDB [mythconverg]> select * from keybindings where keylist like
| context     | action     | description                | keylist | hostname |
| Global      | ESCAPE     | Escape                     | Esc     | mypvr    |
| Main Menu   | EXITPROMPT | Display System Exit Prompt | Esc     | mypvr    |
| Global      | ESCAPE     | Escape                     | Esc     | savaidh  |
| Main Menu   | EXITPROMPT | Display System Exit Prompt | Esc     | savaidh  |
| TV Playback | BACK       | Exit or return to DVD menu | Esc     | savaidh  |
| Global      | ESCAPE     | Escape                     | Esc     | gt70     |
| Main Menu   | EXITPROMPT | Display System Exit Prompt | Esc     | gt70     |
| TV Playback | BACK       | Exit or return to DVD menu | Esc     | gt70     |
8 rows in set (0.00 sec)

If you are looking for keys in the database, as well as the
"keybindings" table for ordinary key bindings that work only from the
specified context, you need to search the "jumppoints" table for the
global jump points that work from anywhere (any context) in
mythfrontend.  And note that the "keylist" field is a comma separated
list of keys, not just a single key.

The action in MythTV depends on the context, and the hostname.  Each
frontend in the database is identified by its hostname, and the
settings can be different for each frontend.  And you can see that in
the MythTV settings, the LIRC keystroke "Escape" is spelled "Esc",
just to confuse things further.  In mythfrontend GUI, you can find
those settings at Setup > Edit Keys.

So in your case, to get the Escape / Back remote button to work, you
would want this in your ~/.lirc/mythtv file:

    remote = mceusb
    prog = mythtv
    button = KEY_BACK
    config = Escape
    repeat = 0
    delay = 0

Note the change in the "remote =" line to "remote = mceusb", as that
is the driver name that irw is showing for your setup.  So take a look
at your ~/.lirc/mythtv file.  It likely has more than one set of
settings in it for "prog = mythtv", each set of setting having a
different "remote =" value.  What you need is a full set of those
settings, with "remote = mceusb".  Here is what I had in my original
~/.lirc/mythtv file:

stephen at mypvr:~/.lirc$ grep "remote =" mythtv.original | uniq
    remote = mceusb_hauppauge
    remote = vista_mce
    remote = mceusb

So it is not unlikely that you have a set of "remote = mceusb"
settings in your ~/.lirc/mythtv file.  I have long since renamed my
original ~/.lirc/mythtv file to ~/.lirc/mythtv.original, and edited a
copy of it to suit my system, so I now only have "remote = devinput"
settings in it.  I would recommend that you do the same, but only have
"remote = mceusb" in your ~/.lirc/mythtv file.  Then you need to go
through all the keys on your remote, checking what is output by "ircat
mythtv" against that file, and then changing either the Mythfrontend
setting for the key to match the file, or the file setting in the
"config =" line to match Mythfrontend.  I recommend keeping the
Mythfrontend settings and changing the "config =" settings, as the
Mtyhfrontend settings are also what you use from a real keyboard, and
the defaults work well from a keyboard.  If you have a remote key that
does not produce output in ircat, you will need to create a new
begin/end block with the appropriate settings for it, with a "button
=" value that matches its irw output.  Each time you change something
in ~/.lirc/mythtv, you will need to restart ircat at least, so it will
read the new settings.  I am not sure if you also need to restart

sudo systemctl restart lircd

I think that is unnecessary, but check to see if you need to.

Once you have a set of "remote = mcuusb" settings that work, you can
consider the "repeat =" and "delay =" settings for them.  Those
control whether a key autorepeats, and how quickly it repeats,
respectively.  I have my arrow keys, the channel and volume keys, and
PgUp and PgDown set to "repeat = 1" and "delay = 1".  All other keys
do not autorepeat.  The "delay = 1" gives the fastest possible
autorepeat rate.  But those are just my personal preferences.

More information about the mythtv-users mailing list