XBMCbuntu ATI Remote Wonder Howto
I recently re-discovered my ATI Remote Wonder and decided to get it working under my Ubuntu Linux XBMC install.
First, install lirc. I selected the option to use the “ATI/NVidia/X10 I II RF Remote” with the kernel (Not userspace) driver, with no transmitter.
sudo apt-get install lirc
My /etc/lirc/lirc.conf file looks like:
include "/usr/share/lirc/extras/more_remotes/atiusb/lircd.conf.atiusb"
My /etc/lirc/hardware.conf was generated automatically by debconf during the lirc install. However, for reference it is:
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="ATI/NVidia/X10 I REMOTE="None" II RF Remote"
REMOTE_MODULES="lirc_dev lirc_atiusb"
REMOTE_DRIVER=""
REMOTE_DEVICE="/dev/lirc0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF="atiusb/lircd.conf.atiusb"
REMOTE_LIRCD_ARGS=""
#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""
#Enable lircd
START_LIRCD="true"
#Don't start lircmd even if there seems to be a good config file
START_LIRCMD="false"
#Try to load appropriate kernel modules
LOAD_MODULES="true"
# Default configuration files for your hardware if any
LIRCMD_CONF=""
#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn't have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
Restart the lirc daemon and run irw and ensure there is output produced:
sudo /etc/init.d/lirc restart
# * Starting remote control daemon(s) : LIRC
irw
# 000000144b760000 00 mouse-right_down SAPPHIRE_ATIUSB_5000023600
# 0000001446710000 00 mouse-right SAPPHIRE_ATIUSB_5000023600
Copy lirc & keymap configuration files into the user XBMC folder (If they do not exist).
#copy Lirc configuration file
cd ~/.xbmc/userdata
cp cp /usr/share/xbmc/system/Lircmap.xml .
#copy remote.xml keymap
cd ~/.xbmc/userdata/keymaps/
cp /usr/share/xbmc/system/keymaps/remote.xml .
Edit the XBMC LIRC Configuration File (Lircmap.xml) to contain the following key mappings, ensuring that the device matches the device output by irw.
<lircmap>
<remote device="SAPPHIRE_ATIUSB_5000023600">
<play>play</play>
<pause>pause</pause>
<stop>stop</stop>
<forward>forward</forward>
<reverse>rewind</reverse>
<left>left</left>
<left>mouse-left</left>
<right>right</right>
<right>mouse-right</right>
<up>up</up>
<up>mouse-up</up>
<down>down</down>
<down>mouse-down</down>
<select>ok</select>
<select>mouse_button_left</select>
<pageplus>chan-up</pageplus>
<pageminus>chan-down</pageminus>
<back>mouse_button_right</back>
<menu>dvd-root_menu</menu>
<title>a</title>
<info>launch_setup</info>
<skipplus>Skip</skipplus>
<skipminus>Replay</skipminus>
<display>max-window</display>
<start>Start</start>
<record>record</record>
<volumeplus>vol-up</volumeplus>
<volumeminus>vol-down</volumeminus>
<mute>mute</mute>
<power>power</power>
<myvideo>dvd</myvideo>
<mymusic>media_library</mymusic>
<mypictures>Pictures</mypictures>
<mytv>tv</mytv>
<one>1</one>
<two>2</two>
<three>3</three>
<four>4</four>
<five>5</five>
<six>6</six>
<seven>7</seven>
<eight>8</eight>
<nine>9</nine>
<zero></zero>
<star>Star</star>
<hash>Hash</hash>
<clear>Clear</clear>
<enter>Enter</enter>
<red>Red</red>
<green>Green</green>
<yellow>Yellow</yellow>
<blue>Blue</blue>
<teletext>c</teletext>
</remote>
</lircmap>
Restart XBMC and you should now have ATI Remote support.
I spent considerable effort attempting to get The Lirc Mouse support working. However, I had no success. I found that X would recognize the LIRC mouse, but wouldn’t find an appropriate driver for it. In the end, I assigned the mouse buttons to the navigation keys via Lircmap.xml.
For the curious I will post the process that I used to get X to the point where it would detect the remote (according to the Xorg log).
The default settings for the lircm daemon wern’t creating the appropriate /dev/lircm which, I believe, prevents X from locating the mouse, so I had to take an alternative approach using the uinput module. It seems that this method has had limited success with others so perhaps it is a system configuration issue with me.
First I configured my /etc/lirc/lircm.conf
file with the following contents (the button presses determined from examining the output of irw):
# To find out how to get a proper configuration file please read:
#
# /usr/share/doc/lirc/README.Debian
PROTOCOL IntelliMouse
ACCELERATOR 2 30 5
ACTIVATE * ATI
MOVE_N * mouse-up
MOVE_S * mouse-down
MOVE_W * mouse-left
MOVE_E * mouse-right
MOVE_NW * mouse-up-left
MOVE_NE * mouse-up-right
MOVE_SW * mouse-down-left
MOVE_SE * mouse-down-right
Next I ensured that the START_LIRCMD value is FALSE in /etc/lirc/hardware.conf:
START_LIRCMD="false"
#Make sure there isn't a trailing START_LIRCMD in your hardware.conf as there was in mine.
While experimenting I would load the uinput module manually, then start lircmd by hand – however, a working implementation would have uinput in /etc/modprobe.d so it loads automatically, and lircmd in something like rc.conf so it runs automatically.
#Make sure lircd is already running (see above)
#load the module and start lircmd for testing:
sudo modprobe uinput
sudo lircmd --uinput
At this point you’re able to restart X and have it detect the lircm mouse. However, I never got it to properly load the drivers.