Adesso ARC-1100

From MythTV Official Wiki
Revision as of 18:36, 16 July 2015 by SiliconFiend (talk | contribs) (Alternate Configuration: Fix broken partial udev rule, add note about remapping right click.)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


The Adesso ARC-1100 has two parts: an IR receiver with USB cable and a remote control that is like many other Media Center remotes. What distinguishes this product from other remote control solutions is it looks like a USB keyboard and mouse to the computer. As a result:

  • It can interact with a boot menu.
  • It is more responsive than LIRC based remote control solutions. Multiple key presses don’t get lost like they tend to with LIRC solutions, so you can more quickly navigate through lists using cursor and paging (Ch+/-) keys and increase fast forward and rewind speeds, for example.
  • If some dialog pops up when you least expect it, like Update Manager or a warning about pressing the eject button on your DVD burner, you can dismiss the dialog using the remote's keys, or you can raise Mythfrontend's window by clicking on it using the remote’s mouse functionality.
  • It is affordable. I got it on sale from newegg in October, 2009, along with a 10% off coupon, for less than $25 USD (that includes shipping).
  • It can be used to train a learning remote. I use the Sony RM-VL710 Universal Remote and RM-VL600, which replaced the 710. According to Sony’s web site, the 600 was retailing for $24.99 USD in November, 2009.

There are some drawbacks:

  • Configuring this remote is a little more complicated than configuring an LIRC based remote. That’s because you need to use two different mechanisms (xmodmap and editing MythTV key bindings) to get full use of the remote, as opposed to editing a single LIRC configuration file.
  • Some keys are duplicates of others, like Play and Pause.
  • Some keys are effectively duplicates because they generate Ctrl+Shift seqences and because MythTV ignores the Shift state.
  • You will lose your xmodmap configured keys if you plugin/unplug the IR receiver or a USB keyboard and will need to execute the xmodmap command to restore those keys.

If the pros outweigh the cons, as they do for me, keep reading.

Note: for an alternate setup using lirc, see VRC-1100 Ortek Technology MCE Clone Remote

My Setup

I have a MythTV backend/frontend system running Mythbuntu 9.04 (Jaunty) and a MythTV frontend running Mythbuntu 8.04 (Hardy). Both are running MythTV 0.21-fixes. The frontend only system is a 5 year old Thinkpad R51 with an ATI Mobility Radeon 9000 IGP. Jaunty doesn’t work with this IGP, but Hardy does. What surprised me was that the remote’s behavior is somewhat different on these two systems. I suspect it has to do with the version of X (xserver-xorg) provided by each distro. Hardy provides 7.3 whereas Jaunty provides 7.4. But the differences may also be due to the fact that one system is running on a Thinkpad and some of the Thinkpad-specific packages that were automatically installed. So you may want to double check how the remote behaves on your system using the X application, xev.

Since this page was first written, I have upgraded to MythTV 0.22 and 0.23. The instructions for Jaunty and 0.21 work for Karmic with MythTV 0.22 and Lucid with MythTV 0.23.

The Remote

The following table provides details for each key on the remote. The column headings are:

Key Function
The key’s function according to Adesso documentation.
Sony RM-VL600
How I have mapped the Adesso remote to my Sony remote.
Key sequence, keycode (KC), keysym
The key sequence and/or keycode and/or keysym generated when the remote’s key is pressed. This information was extracted using the X application, xev. Some keys behave as you might expect with MythTV, like the cursor keys, the OK key and the Ch+/Ch- keys. These keys can be used without any configuration, and can also be used to control your computer’s boot menu. Some keys generate key sequences, usueally Control + an alphabetic key. These can be supported by editing MythTV’s key bindings. Other keys generate some atypical keycodes. On Jaunty, these keys are mapped to keysyms defined for multimedia keyboards, like Volume Up/Down and Previous/Next track. On Hardy, they are not. Fortunately, on both Hardy and Jaunty, the multimedia keys can be mapped to keysyms that can be used in MythTV.
Shows which keys are configured using the X utility, xmodmap. Example files for hardy and jaunty are provided later.
MythTV Context, Action, Key binding
Shows MythTV key bindings. The three headings correspond to the headings provided in Mythweb’s Keybindings Editor. Only the key bindings shown in bold, or the context/action pairs shown in bold in the Notes column need to be changed if you are using MythTV’s default key bindings.
Should be self explanatory.
Key Function Sony RM-VL600 Key sequence, keycode (KC), keysym Xmodmap Context Action Key binding Notes
WWW Hardy: KC 178

Jaunty: KC 180, XF86HomePage

Hardy: XF86HomePage

Jaunty: No change

Sleep Hardy: KC 223

Jaunty: KC 150. XF86Sleep

Hardy: XF86Sleep

Jaunty: No change



Ctrl-Shift+T Effectively the same as Live TV since MythTV (QT?) ignores Shift state
My Music


Menu Ctrl+M Global MENU M,Ctrl+M
My Pictures


Info Ctrl+I Global

TV Editing



My Videos


Sleep Ctrl+E qt

TV Frontend TV Playback Video



Record TV Recall Ctrl+O TV Frontend

TV Playback



Guide Guide Ctrl+G TV Frontend

TV Playback



S,Ctrl+G Must clear TV Playback, TOGGLECHANCONTROLS
Live TV Tools Ctrl+T TV Playback TOGGLEFILL W,Ctrl+T
DVD Menu Ctrl+Shift+M Effectively same as My Music since MythTV (QT?) ignores Shift state
Play Play Hardy: KC 162

Jaunty: KC 172, XF86AudioPlay

P TV Playback PAUSE P
Pause Same as Play
Reverse Ctrl+Shift+B TV Editing

TV Frontend TV Playback



,,<,Ctrl+B Must clear TV Playback, JUMPSTART
Forward Forward Ctrl+Shift+F TV Editing

TV Playback TV Frontend



Prev track Twin View Hardy: KC 144

Jaunty: KC 173, XF86AudioPrev

Q TV Editing

TV Playback





Next track Digital/


Hardy: KC 153

Jaunty: KC 171, XF86AudioNext

Z TV Editing

TV Playback



Stop Exit Hardy: KC 164

Jaunty: KC 174, XF86AudioStop

T TV Playback TOGGLECC T Since Clear key generates Escape, I use Stop to toggle closed captions, an important function for me.
Record Record Ctrl+R TV Frontend

TV Playback



Back Backspace TV Playback CLEAROSD Backspace
Information Same as Mouse Right
OK OK Return Global SELECT Return,Enter, Space
Up Up Up TV Playback

Teletext Menu Global



Down Down Down TV Playback

Global Teletext Menu



Left Left Left Global

Teletext Menu TV Frontend TV Playback



Right Right Right Teletext Menu

TV Frontend Global TV Playback



Mouse Left
Mouse Right
Mouse Pad
Vol+ Hardy: KC 164

Jaunty: KC 123, XF86AudioRaiseVolume

Hardy: XF86AudioRaiseVolume

Jaunty: No change

TV Frontend

TV Playback



],},F11,Volume Up X keysym, XF86AudioRaiseVolume, equals MythTV key, Volume Up
Vol- Hardy: KC 164

Jaunty: KC 122, XF86AudioLowerVolume

Hardy: XF86AudioLowerVolume

Jaunty: No change

TV Frontend

TV Playback



[,{,F10,Volume Down X keysym, XF86AudioLowerVolume, equals MythTV key, Volume Down
Mute Hardy: KC 160

Jaunty: KC 121, XF86AudioMute

Hardy: XF86AudioMute

Jaunty: No change

TV Frontend

TV Playback



|,\\,F9,Volume Mute X keysym, XF86AudioMute, equals MythTV key, Volume Mute
Windows Start Key Pause Super+Alt+Return TV Playback PLAY Ctrl+P, Alt+Return X treats the Windows Start key as a type of shift key called Super. MythTV (QT?) ignores its state.
Ch+ Ch+ Next TV Playback

Global TV Editing



PgUp X keysym, Next, equals MythTV key, PgUp
Ch- Ch- Prior TV Playback

TV Editing Global



PgDown X keysym, Prior, equals MythTV key, PgDown
0 0 0 Global 0 0
1 1 1 Global 1 1
2 2 2 Global 2 2
3 3 3 Global 3 3
4 4 4 Global 4 4
5 5 5 Global 5 5
6 6 6 Global 6 6
7 7 7 Global 7 7
8 8 8 Global 8 8
9 9 9 Global 9 9
Asterisk Dot * TV Playback ARBSEEK *
Number Sign Ent Hardy: Alt+3 Alt+5

Jaunty: #

TV Frontend

TV Playback





Close Key XF86Close? Closes active window. Myth will prompt:

Do you really want to exit MythTV?

Clear Key Stop Escape Global ESCAPE Esc
Enter Key Return Same as OK

Xmodmap Configuration

To configure keys with xmodmap, you need a configuration file. I have provided two examples that work on my Hardy and Jaunty systems. Hopefully, one of them will work for you without change. At least they should serve as a starting point to get the multimedia keys working on your system.

Copy the following text to $HOME/xmodmap.hardy

keycode 160 = XF86AudioMute NoSymbol XF86AudioMute NoSymbol XF86AudioMute
keycode 174 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
!keycode 153 = XF86AudioNext NoSymbol XF86AudioNext NoSymbol XF86AudioNext
keycode 153 = Z
!keycode 162 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
keycode 162 = P
!keycode 144 = XF86AudioPrev NoSymbol XF86AudioPrev NoSymbol XF86AudioPrev
keycode 144 = Q
!keycode 164 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject XF86AudioStop XF86Eject
keycode 164 = T
! Internet Explorer key
keycode 178 = XF86HomePage NoSymbol XF86HomePage NoSymbol XF86HomePage
! Power/Standby key
keycode 223 = XF86Sleep NoSymbol XF86Sleep NoSymbol XF86Sleep

On Hardy, use the command:

xmodmap $HOME/xmodmap.hardy

Copy the following text to $HOME/xmodmap.jaunty

!keycode 121 = XF86AudioMute NoSymbol XF86AudioMute NoSymbol XF86AudioMute
!keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
!keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
!keycode 171 = XF86AudioNext NoSymbol XF86AudioNext NoSymbol XF86AudioNext
keycode 171 = Z
!keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
keycode 172 = P
!keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev NoSymbol XF86AudioPrev
keycode 173 = Q
!keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject XF86AudioStop XF86Eject
keycode 174 = T
! Internet Explorer key
!keycode 180 = XF86HomePage NoSymbol XF86HomePage NoSymbol XF86HomePage
! Power/Standby key
!keycode 150 = XF86Sleep NoSymbol XF86Sleep NoSymbol XF86Sleep

On Jaunty, use the command:

xmodmap $HOME/xmodmap.jaunty

Once you’ve got a working configuration, you can automatically execute the appropriate command whenever the X server starts by adding it to the file, $HOME/.xprofile. This method works nicely with Mythbuntu distros and the Xfce desktop environment. You may need to use a different mechanism for other distros and/or desktop environments.

Closing Thoughts

Sometimes, the X server forgets the xmodmap configuration. I’m sure this happens when you plug in and/or unplug the Adesso IR receiver. It may happen when you plug/unplug any USB keyboard/mouse or any device for which the X server supports hotplugging. If you find the multimedia keys aren’t working, chances are executing the appropriate xmodmap command will restore functionality.

It may be possible that configuration of multimedia keys would persist, regardless of hotplugging input devices, if I had used an approach based on xkb configuration files. Since xmodmap works well enough for me. I welcome someone else to explore a solution based on xkb.


Adesso ARC-1100 product page
Review of the Sony RM-VL600
Xev man page
Xmodmap man page
How to further enhance XKB configuration
Extending the X keyboard map with xkb

Alternate Configuration

This remote behaves as an HID therefore it can work without the MCE kernel module. The HID Remotes page may be helpful. For my configuration, I chose to remap the Clear button (maps to Escape) and Back button (maps to Backspace), and also remap the Info and Mouse Right Click buttons to "M" (for Myth's menu). I used a udev rule to remap the keys using ir-keytable, and also add symlinks for the keyboard and mouse inputs.


KERNEL=="event*",SUBSYSTEM=="input",ATTRS{idVendor}=="05a4",ATTRS{idProduct}=="9881",IMPORT{program}="input_id %p"
KERNEL=="event*",SUBSYSTEM=="input",ATTRS{idVendor}=="05a4",ATTRS{idProduct}=="9881",ENV{ID_INPUT_KEYBOARD}=="1",ACTION=="add",SYMLINK="input/irremote0", \
    RUN+="/usr/bin/ir-keytable --set-key=0x70029=KEY_BACKSPACE,0x7002a=KEY_ESC --device /dev/input/irremote0"
KERNEL=="event*",SUBSYSTEM=="input",ATTRS{idVendor}=="05a4",ATTRS{idProduct}=="9881",ENV{ID_INPUT_MOUSE}=="1",ACTION=="add",SYMLINK="input/irremote1", \
    RUN+="/usr/bin/ir-keytable --set-key=0x90002=KEY_M --device /dev/input/irremote1"

Note: The backslash to split the long line is mostly for readability. For best compatibility with all versions of udev the rule should be on one line.