Archive:Gyration USB remote in Ubuntu for XBMC using Lirc: Difference between revisions
>Gsgleason |
>Gsgleason No edit summary |
||
Line 1: | Line 1: | ||
This is a configuration for using a Gyration USB media remote reviewed [http://reviews.cnet.com/keyboards/gyration-media-center-pc/4505-3134_7-32331445.html here]. | This is a configuration for using a Gyration USB media remote reviewed [http://reviews.cnet.com/keyboards/gyration-media-center-pc/4505-3134_7-32331445.html here]. | ||
This method uses two instances of lircd that are manually configured to start using /etc/rc.local. The files that are affected are: | This method uses two instances of lircd that are manually configured to start using /etc/rc.local. The files that are affected are: | ||
/etc/rc.local | /etc/lirc/lircd.conf | ||
~usernamerunningxbmc/.xbmc/userdata/Keymap.xml | /etc/rc.local | ||
~usernamerunningxbmc/.xbmc/userdata/Lircmap.xml | ~usernamerunningxbmc/.xbmc/userdata/Keymap.xml | ||
~usernamerunningxbmc/.xbmc/userdata/Lircmap.xml | |||
Credit goes to the random anonymous bits and pieces I've found on the Interwebs along with my own experimentation using hexdump -C to look at the character device files while pressing buttons. | Credit goes to the random anonymous bits and pieces I've found on the Interwebs along with my own experimentation using hexdump -C to look at the character device files while pressing buttons. |
Revision as of 14:04, 8 June 2010
This is a configuration for using a Gyration USB media remote reviewed here. This method uses two instances of lircd that are manually configured to start using /etc/rc.local. The files that are affected are:
/etc/lirc/lircd.conf /etc/rc.local ~usernamerunningxbmc/.xbmc/userdata/Keymap.xml ~usernamerunningxbmc/.xbmc/userdata/Lircmap.xml
Credit goes to the random anonymous bits and pieces I've found on the Interwebs along with my own experimentation using hexdump -C to look at the character device files while pressing buttons.
First, install the lirc package.
sudo apt-get install lirc
We do not want to use Ubuntu's init scripts and config files, therefore we need to tell it not to start up automatically. Here is the command which changes the symbolic link in /etc/rc2.d/:
sudo update-rc.d lirc disable 2
Back up your old files that we are about to overwrite:
mkdir ~/backupfiles for a in /etc/rc.local /etc/lirc/lircd.conf ~/.xbmc/userdata/Lircmap.xml ~/.xbmc/userdata/Keymap.xml ; do cp $a ~/backupfiles/; done
Put these lines in /etc/rc.local:
/usr/sbin/lircd --driver=devinput --device=/dev/input/by-id/usb-Gyration_Gyration_RF_Technology_Receiver-event-mouse --output=/dev/lircd1 --pidfile=/var/run/lircd1.pid --listen /usr/sbin/lircd --driver=devinput --device=/dev/input/by-id/usb-Gyration_Gyration_RF_Technology_Receiver-event-kbd --output=/dev/lircd --pidfile=/var/run/lircd.pid --connect=localhost:8765
Here is /etc/lirc/lircd.conf
#This configuration has been automatically generated via #the Ubuntu LIRC package maintainer scripts. # #It includes the default configuration for the remote and/or #transmitter that you have selected during package installation. # #Feel free to add any custom remotes to the configuration #via additional include directives or below the existing #Ubuntu include directives from your selected remote and/or #transmitter. # # lircd.conf # for Gyration MCE remote(s). Could almost certainly be expanded to work for their keyboard as well. # # Composed by Marc Randolph based upon # initial lircd.conf by Modulok (https://bugs.launchpad.net/mythbuntu/+bug/156494/comments/6) # with help from the Linux MCE wiki (http://wiki.linuxmce.org/index.php/Gyration-GYR3101US-codes) # # Notes: # Star and Hash keys produce two key sequences: 0x002A followed by either 8 for star, or 3 for hash # # Revision history # 2.3 - Marc Randolph - Renamed camera to pictures and video to videos. Added alternative mappings # 2.2 - Marc Randolph - Added untested DVDMenu entry # 2.1 - Marc Randolph - StarHash comment was wrong # 2.0 - Marc Randolph - Special codes should be correct, or at least, very close to correct # 1.0 - Marc Randolph - added missing codes and changed names to match up the mceusb remote # - Some of the more special codes have not been verified (Pictures, LiveTV, etc) # 0.1 - Modulok - Initial revision # # begin remote name gyration bits 16 eps 30 aeps 100 one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 135997 toggle_bit_mask 0x0 begin codes Home 0x0066 # AKA "Windows button" Up 0x0067 Left 0x0069 Right 0x006A Down 0x006C Mute 0x0071 VolDown 0x0072 VolUp 0x0073 Power 0x008e Pause 0x0077 More 0x0082 # AKA "Info" or Help Back 0x009E Skip 0x00A3 Replay 0x00A5 Stop 0x00A6 RecTV 0x00A7 #Not "recorded TV", but "record current show on TV" Rewind 0x00A8 Play 0x00CF Forward 0x00D0 Pictures 0x00D4 # not on Dell remote RecordedTV 0x00E2 # aka KEY_MEDIA Guide 0x016A LiveTV 0x016E # aka KEY_PVR DVD 0x0185 Music 0x0187 # not on Dell remote # aka KEY_MP3 Videos 0x0189 # not on Dell remote ChanUp 0x0192 ChanDown 0x0193 DVDMenu 0x019A # untested. not on Dell remote Clear 0x0001 One 0x0002 Two 0x0003 Three 0x0004 Four 0x0005 Five 0x0006 Six 0x0007 Seven 0x0008 Eight 0x0009 Nine 0x000A Zero 0x000B Enter 0x001C StarHash 0x002A # Star=0x2a and 0x08; Hash = 0x2a and 0x03 a 0x001E end codes end remote # Alternative mappings to try if some of the above don't work # (please report any findings back to http://www.mythtv.org/wiki/Gyration-based_MCE_Remotes) # Up 0x0062 # Left 0x0064 # Right 0x0066 # Down 0x0068 # Pause 0x0075 # Power 0x008E # Halt 0x019C # Lights 0x0111 # Clear 0x0016 # Enter 0x0024 # DVDMenu 0x0029
Here is ~/.xbmc/userdata/Keymap.xml
<!-- This file contains the mapping of keys (gamepad, remote, and keyboard) to actions within XBMC --> <!-- The <global> section is a fall through - they will only be used if the button is not --> <!-- used in the current window's section. Note that there is only handling --> <!-- for a single action per button at this stage. --> <!-- For joystick/gamepad configuration under linux/win32, see below as it differs from xbox --> <!-- gamepads. --> <!-- The format is: --> <!-- <device> --> <!-- <button>action</button> --> <!-- </device> --> <!-- To map keys from other remotes using the RCA protocol, you may add <universalremote> blocks --> <!-- In this case, the tags used are <obc#> where # is the original button code (OBC) of the key --> <!-- You set it up by adding a <universalremote> block to the window or <global> section: --> <!-- <universalremote> --> <!-- <obc45>Stop</obc45> --> <!-- </universalremote> --> <!-- To find out the OBC's of your remote, try enabling the <displayremotecodes> tag in AdvancedSettings.xml --> <!-- Note that the action can be a built-in function. --> <!-- eg <B>XBMC.ActivateWindow(MyMusic)"</B> --> <!-- would automatically go to My Music on the press of the B button. --> <!-- Joysticks / Gamepads: --> <!-- See the sample PS3 controller configuration below for the format. --> <!-- --> <!-- Joystick Name: --> <!-- Do 'cat /proc/bus/input/devices' or see your xbmc log file to find the names of --> <!-- detected joysticks. The name used in the configuration should match the detected name. --> <!-- --> <!-- Button Ids: --> <!-- 'id' is the button ID used by SDL. Joystick button ids of connected joysticks appear --> <!-- in xbmc.log when they are pressed. Use your log to map custom buttons to actions. --> <!-- --> <!-- Axis Ids / Analog Controls --> <!-- Coming soon. --> <keymap> <global> <remote> <three>VolumeUp</three> <six>VolumeDown</six> <nine>Mute</nine> <play>Play</play> <pause>Pause</pause> <stop>Stop</stop> <forward>FastForward</forward> <reverse>Rewind</reverse> <left>Left</left> <right>Right</right> <up>Up</up> <down>Down</down> <select>Select</select> <pageplus>PageUp</pageplus> <pageminus>PageDown</pageminus> <back>ParentDir</back> <menu>PreviousMenu</menu> <title>ContextMenu</title> <info>Info</info> <skipplus>SkipNext</skipplus> <skipminus>SkipPrevious</skipminus> <display>FullScreen</display> <start>PreviousMenu</start> <record>Screenshot</record> <volumeplus>VolumeUp</volumeplus> <volumeminus>VolumeDown</volumeminus> <mute>Mute</mute> <power>XBMC.ShutDown()</power> <myvideo>XBMC.ActivateWindow(MyVideos)</myvideo> <mymusic>XBMC.ActivateWindow(MyMusic)</mymusic> <mypictures>XBMC.ActivateWindow(MyPictures)</mypictures> <mytv>XBMC.ActivateWindow(Home)</mytv> </remote> </global> </keymap>
Here is ~/.xbmc/userdata/Lircmap.xml
<!-- This file contains the mapping of LIRC keys to XBMC keys used in Keymap.xml --> <!-- --> <!-- How to add remotes --> <!-- <remote device="name_Lirc_calls_the_remote"> --> <!-- --> <!-- For the commands the layout following layout is used --> <!-- <XBMC_COMMAND>LircButtonName</XBMC_COMMAND> --> <!-- --> <!-- For a list of XBMC_COMMAND's check out the <remote> sections of keymap.xml --> <lircmap> <remote device="gyration"> <select>Enter</select> <pause>Pause</pause> <stop>Stop</stop> <forward>Forward</forward> <reverse>Rewind</reverse> <left>Left</left> <right>Right</right> <up>Up</up> <down>Down</down> <select>OK</select> <pageplus>ChanUp</pageplus> <pageminus>ChanDown</pageminus> <back>Back</back> <menu>PreviousMenu</menu> <title>Play</title> <info>More</info> <skipplus>Skip</skipplus> <skipminus>Replay</skipminus> <display>Teletext</display> <start>Home</start> <record>Record</record> <volumeplus>VolUp</volumeplus> <volumeminus>VolDown</volumeminus> <mute>Mute</mute> <power>Power</power> <myvideo>Videos</myvideo> <mymusic>Music</mymusic> <mypictures>Pictures</mypictures> <mytv>TV</mytv> <one>One</one> <two>Two</two> <three>Three</three> <four>Four</four> <five>Five</five> <six>Six</six> <seven>Seven</seven> <eight>Eight</eight> <nine>Nine</nine> <zero>Zero</zero> <mytv>Red</mytv> <mymusic>Green</mymusic> <mypictures>Yellow</mypictures> <myvideo>Blue</myvideo> </remote> </lircmap>
Testing
We use the irw command to test. It comes with the lirc package. This is me pressing various buttons, then holding the volume up. Notice that the repeating key shows incrementing numbers. You should get a blank line that will print the key name as configured in lircd.conf when that button is pressed.
sudo irw /dev/lircd 00000000800100a6 00 Stop gyration 00000000800100a7 00 RecTV gyration 0000000080010073 00 VolUp gyration 0000000080010073 00 VolUp gyration 0000000080010073 01 VolUp gyration 0000000080010073 02 VolUp gyration 0000000080010073 03 VolUp gyration 0000000080010073 04 VolUp gyration 0000000080010073 05 VolUp gyration 0000000080010073 06 VolUp gyration 0000000080010073 07 VolUp gyration 0000000080010073 08 VolUp gyration 0000000080010073 09 VolUp gyration 0000000080010073 0a VolUp gyration 0000000080010073 0b VolUp gyration 0000000080010073 0c VolUp gyration 0000000080010073 0d VolUp gyration