Author Topic: How to add support for other remotes for Lirc ?  (Read 6784 times)

archived

  • Hello, I'm new here
  • Posts: 0
    • View Profile
How to add support for other remotes for Lirc ?
« on: July 16, 2005, 02:23:24 pm »
Hi,

I have lircd working with my remote, but non keystrokes are read by Pluto. Now I'd like to add my remote (Ati Remote Wonder) to Pluto system so others can use it too....

Can someone explain process of adding custom remotes support to Pluto ?

Thanks in advance,

regards,

Rob.

archived

  • Hello, I'm new here
  • Posts: 0
    • View Profile
How to add support for other remotes for Lirc ?
« Reply #1 on: July 28, 2005, 09:41:10 am »
Is the Ati Remote Wonder a LIRC remote?  If so, adding it means adding a DCE Device, and copying the LIRC configuration into the device data.  We have over 1,000 lirc remotes already in the database so you can see how it was done.  If it's not supported under LIRC, but rather some other software, then we'll need a DCE wrapper for that software.

archived

  • Hello, I'm new here
  • Posts: 0
    • View Profile
How to add support for other remotes for Lirc ?
« Reply #2 on: August 04, 2005, 11:57:38 am »
Quote from: "aaron.b"
Is the Ati Remote Wonder a LIRC remote?  If so, adding it means adding a DCE Device, and copying the LIRC configuration into the device data.  We have over 1,000 lirc remotes already in the database so you can see how it was done.  If it's not supported under LIRC, but rather some other software, then we'll need a DCE wrapper for that software.


Hi,

yes it's lirc remote. I'm just not sure how to do this properly, so I can make another template, so other Remote Wonder user can only select that template and have remote supported under Pluto....

Regards,

Rob.

archived

  • Hello, I'm new here
  • Posts: 0
    • View Profile
How to add support for other remotes for Lirc ?
« Reply #3 on: August 04, 2005, 12:04:53 pm »
There's now a section under "what can I do with pluto":
http://plutohome.com/support/index.php?section=document&docID=208

see Control Pluto using an Infrared remote and Add support for new remote controls

archived

  • Hello, I'm new here
  • Posts: 0
    • View Profile
How to add support for other remotes for Lirc ?
« Reply #4 on: August 25, 2005, 02:39:47 am »
Quote from: "aaron.b"
There's now a section under "what can I do with pluto":
http://plutohome.com/support/index.php?section=document&docID=208

see Control Pluto using an Infrared remote and Add support for new remote controls

Hi,

thanks for info. I've followed instructions but lirc seems not to be working.

I had previous manual installation, where lircd was started as Debian service, but I guess that after adding lirc remote devie to MD, lirc should be started by pluto....

I have few questions:
- I mistakenly generated two templates for ATI Remote Wonder - how to delete broken one ?

- do I have to add also infrared receiver to MD and if yes which one for lirc ?

- it seems that Remote Wonder device that I added to MD is not running (there is no log, but entry in DCE router log for starting device exists) . How to check why not ?

- how are different text descriptions across all remotes handled - is there any ultimate standard how keys should be named for Pluto ? What keys are currently used under pluto ?

Thanks in advance,

regards,

Rob.

archived

  • Hello, I'm new here
  • Posts: 0
    • View Profile
How to add support for other remotes for Lirc ?
« Reply #5 on: August 25, 2005, 04:48:20 pm »
This changed completely in .28.  Soon the following how-to will make it to the main website.  In the meantime, here are the instructions from the revised how-to page:

Programmer's guide

Be sure to read the How To Use It section above first. As you can see, Pluto provides a highly intelligent interpretation of infrared remote buttons, that automatically change their function based on what the user is doing, what type of remote control layout exists, and where the infrared codes are going. If you have ever worked with infrared remote controls, such as LIRC, you know that there is no standard, and all the remote controls have different buttons with different names. Therefore we had to create a database structure that allows for interpreting the different button names into commands which can change depending upon the context and the layout of the remote.

The DCE Devices (ie the Pluto binary that is run to handle i/r reception) are all of the category Peripherals, Infrared Receivers. In Pluto Admin choose Advanced, Device Templates, and you can see the categories and devices in them. There is a separate folder for the LIRC drivers. In addition to a device for the i/r receiver, there is also a device for the i/r remote. The remote controls are of the type Peripherals, Remote Controls. Since the definition of the infrared codes for a remote control is stored within the remote control device, and that definition varies depending upon the type of receiver, you will see there is a separate subcategory for each type of receiver. For example there is a folder "LIRC Remote Controls" that has all of the remote controls and definition files for the LIRC project. We also created our own DCE devices for other infrared receivers, such as IRTrans and Tira. Although these are supported within the lirc project, we found that we had better control and greater accuracy when we used the native SDKs for these receivers. So, for example, if you have an IRTrans receiver, and an XPMC remote, you have two possibilities. First you could add the LIRC receiver device, and the XPMC remote device that is within the LIRC remote category. In this case the remote control will be using an LIRC config file. Secondly you could add Pluto's native IRTrans receiver device, and then pick the XMPC remote device that is within the IRTrans remotes category, which stores the button codes in a different format, that is in IRTrans' native format. When you are adding your infrared receiver and remote control using the Pluto Admin Wizard/Devices/Media Directors page, the wizard automatically ensures that when you add a remote control it is the correct category.

For each remote control there is a device data "#59 Configuration" which has the remote controls configuration file, which defined all the infrared codes at each button will send and gives each code, or button, a name. So the XPMC remote within the LIRC category has a device data #59 that is the LIRC config file. The XPMC remote within the IRTrans category has a device data #59 that is the same buttons/codes, but in IRTrans format.

When the framework starts an IR receiver device, iIn general this device will first scan for all sister devices within the category remote control, and write out a configuration file. So, for example, when LIRC_DCE runs it finds all LIRC remote controls on that machine, grabs the device data "#59 Configuration" for every one of them and writes that out to a lirc.conf file, and then starts LIRC.

All the logic is in a base class called IRReceiverBase. All of Pluto's infrared receiver devices use this same base class. So the actual code that is specific to each type of receiver is very small, usually around 20 lines. It only needs to write out the configuration file at start up, and then call the member function ReceivedCode within IRReceiverBase when a button is pushed. This function takes the name of the button as a parameter, and converts this into a message.

Since all of the receivers use a common base class to handle the logic, that also means that all of the translation between buttons and actions is also in a shared database. It does not matter whether you are using LIRC or some other infrared receiver, the translation is the same. There is no unified standard for what the buttons are called. The button "SkipFwd" may be called "Fwd", "Skip+", "Jump->", etc. The table RemoteMapping in the main mysql database, pluto_main, has a field Mapping which lists all the button aliases, followed by the command to be executed when any of those buttons is pushed. For example: chup;skipfwd;ChanUp;SkipNext;|0 -106 1 65 5 +1

Whenever any infrared receiver reports any of those button presses, the message "0 -106 1 65 5 +1" gets fired. The format of the message is the same as if you typed it with the MessageSend utility: ie from device, to device message type, message id, followed by parameters.

So if the user presses a button called ChanUp, a message will be sent to device -106 (media plugin) of type 1 (command) id 65 (Jump Position In Playlist) with parameter 5 (Value To Assign) set to "+1". This table is shared amongst all Pluto users, and is updated every time your system upgrades versions. If you make your own manual changes to this table then the next time your core upgrades it will not upgrade the rows in that table that you modified, because SQL CVS does not, by default, overwrite your local changes with global ones. Therefore, if you have a new remote control with some new buttons that we have not yet mapped, it is recommended that you e-mail us or post us a message in the forum, with the button name and the message and then we can add it to our master database and then your system can remain in sync with other users enhancements. If you want to do some mapping that is just for you, you can change the table and know your changes will not be overwritten.

You'll note that the RemoteMapping table has 2 optional fields: ScreenType and RemoteLayout. When the IRReceiverBase base class is deciding what message to send in response to button press, it first looks for a more specific entry where the screen type matches the type of screen currently visible on the orbiter, and the remote layout matches the layout. The on-screen orbiters regularly send messages to the infrared receiver telling them what type of screen is currently visible, using the following codes: M=Main Menu, m=other menu, R=Pluto Remote, r=Non-pluto remote, F=File Listing. This allows for buttons to behave differently depending upon what type of screen is visible. For example when the main menu is visible, the arrows on a remote control should send a message to the on-screen orbiter to move the highlight pointer around on the screen. However when the user is controlling an external piece of AV equipment, like a DVD player, the arrows should pass through to the DVD player so the user can control its own on-screen menu. Also the type of functionality can vary depending upon the layout of the remote. For example, Bang & Olufsen remotes are quite simple, there is only a single up/down/left/right buttons which are used both to navigate on-screen menus as well as to handle rewind fast-forward and skip. Other remotes have dedicated arrows and media navigation buttons. So one remote layout can be created for Bang & Olufsen-style remote, where the arrows control the menu when there is a menu on screen, and adjust the media when there is not. The remote layout is a device data "#110 Remote Layout" stored with the remote control

When IRReceiverBase looks for a mapping it first looks for records that match the current screen type and remote layout, and then revert to standard records (ie ScreenType and RemoteLayout are null) only if there are no matching results.

archived

  • Hello, I'm new here
  • Posts: 0
    • View Profile
Adding support for new remotes
« Reply #6 on: November 04, 2005, 06:11:35 pm »
Hi,

I'm trying to add support for a new remote (this is an old sony dvd remote) for what I get remote codes via the IRTrans utility. I've followed instructions above and added remote configuration commands mapping for my remote in #59 configuration String. I've added the remote control in the Media Director Wizard specifying the right remote in "Infrared remote controls you will use".

After reebot I have the following error message in pluto.log :

Child device (88) was configured but the startup script (RMTD115P) is not available in /usr/pluto/bin

And in XX_IRTrans.newlog, when I try to toggle one command, say 'play' I get this :


23d9400000000000[0.0] play rmt-d115p
01      11/04/05 17:15:37.347           Got command play from unknown remote rmt-d115p
10      11/04/05 17:15:45.896           UpdateDisp
01      11/04/05 17:15:45.896           UpdateDisp
01      11/04/05 17:15:45.896           UpdateDisp 3
01      11/04/05 17:15:45.896           UpdateDisp 4
01      11/04/05 17:15:45.896           UpdateDisp 5
01      11/04/05 17:15:45.896           DispDate
05      11/04/05 17:15:45.896           setting display to:
  4 November 2005                              17:15
Netcommand: 15
LCD:   4 November 2005                              17:15
LCD-LEN: 2
10      11/04/05 17:15:45.909           Sleeping 60


Of course, nothing appears to move on my orbiter. What do I miss ? If I understand, I can at least have the cursor move on screen when I push on remote arrows (or anything else).

Need help..

P.S. I can send IR commands from ITRans to some A/V equipments so this let me believe I'm not too far..

Regards