[INFO] Understanding LIRC & XBMC
#1
Understanding LIRC and XBMC


You push a button on your remote (lircd.conf), That button is seen by the XBMC translator (Lircmap.xml), XBMC starts the requsted command (remote.xml)


Lets trace it backwards.

<play>Play</play> The one in RED is the remote.xml command

<play>KEY_GO</play> is the Lircmap.xml Translated name that points to lircd.conf KEY_GO button

KEY_GO is the actual button name on the remote in lircd.conf



XBMC performs a command Play (remote.xml)

The lower case play in the angle brackets is the (Lircmap.xml) translated name

Then we go to the Lircmap.xml to see what Lirc button holds the value of the lowercase play above.

So we expect to see <play>*******</play> with some value in between the angle brackets.

Whatever value is there is the REAL name of our button on the remote as defined in lircd.conf. Remember, we can map any button to any function.
The actual name of the button could be STOP if we wanted to (kinda dumb but it could be) The REAL button name on the remote is NOT required to have anything to logically do with the name of the command you want to perform

Just to illustrate we called it the KEY_GO button

So to sum it up

XBMC sent a command (Remember we are going in reverse) called Play

That Play command is tied to the Lircmap.xml <play></play>

That Lircmap.xml <play></play> is tied to the real button on the remote that is called KEY_GO in lircd.conf


remote.xml

Code:
<keymap>
  <global>
    <remote>
      <play>Play</play>
          </remote>
</global>
</keymap>

Lircmap.xml

Code:
<lircmap>
    
<remote device=""My-Remote-Name">
                
    <play>KEY_GO</play>
                
</remote>

</lircmap>

lircd.conf

Code:
begin remote

  name  "My-Remote-Name"
  bits            5
  flags RC6|CONST_LENGTH
  eps            30
  aeps          100

  header       2662   836
  one           452   429
  zero          452   429
  pre_data_bits   32
  pre_data       0x1BFF83DF
  gap          106001
  toggle_bit_mask 0x8000
  rc6_mask    0x100000000

      begin codes
          KEY_GO             0x0F
                    
      end codes

end remote


Clear as MUD? Tongue
Reply
#2
These are great. Mind if I copy your remote tutorials to the wiki? Wiki is Creative Commons SA-BY 3, if that's okay.
Reply
#3
Sure

I dont mess with wiki's much

So thanks.
Reply
#4
I'm trying to understand how to use LIRC and XBMC (Frodo 12.3) on a Raspberry Pi using a JVC DVD Player remote.
Previously I was using the remote via USB and FLIRC (call it method 1), now I'm attempting to set it up via GPIO and LIRC (call this method 2) and want its keys to perform similar function as method 1. I have set up the lircd.conf for this remote and most keys do work as in method 1. To test keys I did the following (per Dilligaf in http://forum.stmlabs.com/showthread.php?tid=5549). I turned on logging and ran "tail -F /home/pi/.xbmc/temp/xbmc.log | grep OnKey" via putty.

example (remote key = SCAN >>)
method 1 gives ---> 08:07:03 T:3040280576 DEBUG: OnKey: f (f046) pressed, action is FastForward
method 2 gives ---> 03:59:14 T:3040497664 DEBUG: OnKey: sleep (df) pressed, action is SkipNext

for method 1, "f" is in keyboard.xml with action as FastForward. "f" is not in remote.xml
for method 2, "sleep" is not in remote.xml. "sleep' is in keyboard.xml as <sleep>ActivateWindow(shutdownmenu)</sleep> under <global><keyboard> but not with action of SkipNext as the log shows.

When I understand LIRC and XBMC I want to use LIRC so my remote will perform some keyboard actions such as F = FastForward, I = Info, W = Mark as watched/unwatched etc
Reply
#5
(2014-03-19, 06:39)FishOil Wrote: Sure

I dont mess with wiki's much

So thanks.

Awesome, much appreciated!
Reply
#6
A bump for the people with LIRC questions lately.

Messing with Lirc and not understanding this relationship will only piss you off.

Lirc is the easiest way to configure any IR remote with a standard IR receiver.
Reply

Logout Mark Read Team Forum Stats Members Help
[INFO] Understanding LIRC & XBMC0