VRC-1100 Ortek Technology MCE Clone Remote

From MythTV Official Wiki
Revision as of 05:59, 1 January 2015 by SiliconFiend (talk | contribs) (Added link to Adesso ARC-1100 wiki page)

Jump to: navigation, search
Vrc1100.jpg

The VRC-1100 Ortek Vista MCE Remote is an inexpensive media center remote control that is bought at various retailers online. This remote includes a built in mouse. Out of the box everything seems to functions except programming the buttons can be kind of a pain, as it is detected as a wireless keyboard and mouse and is not detected by lircd, if you want to get this remote detected in lircd then read on.

There are two sets of instructions here. The first set gets the remote control working using `lircd`, the second set makes use of `inputlircd`, which has some advantages / disadvantages. For an alternate setup which does not use lirc, see Adesso ARC-1100 which is a rebranded clone of the Ortek VRC-1100.

lircd setup

The pages that helped me get this remote working were from [1], [2], and [3]

I wrote this as the information to get this working was a little scattered and outdated, if you follow these instructions your ortek remote will be recognized by lircd and MythTv however a few buttons still dont work. See the issues at the bottom of this page.

Getting Lircd to see it

1. First we need a different version of lircd.conf so backup your original

sudo cp /etc/lirc/lircd.conf /etc/lirc/lircd.conf.backup

then download this version that has been made to work with devinput

wget http://lirc.sourceforge.net/remotes/devinput/lircd.conf.devinput

then copy this over the old version (make sure you back it up incase you need it latter on

sudo cp lircd.conf.devinput /etc/lirc/lircd.conf


2. Now your going to need to know what devices your remote uses, there should be two so in a console type

cat /proc/bus/input/devices

the output will be something like

I: Bus=0003 Vendor=05a4 Product=9881 Version=0110
N: Name="HID 05a4:9881"
P: Phys=usb-0000:00:04.0-1/input0
S: Sysfs=/devices/pci0000:00/0000:00:04.0/usb3/3-1/3-1:1.0/input/input3
U: Uniq=
H: Handlers=sysrq kbd event3
B: PROP=0
B: EV=120013
B: KEY=e080ffdf 1cfffff ffffffff fffffffe
B: MSC=10
B: LED=7 

I: Bus=0003 Vendor=05a4 Product=9881 Version=0110
N: Name="HID 05a4:9881"
P: Phys=usb-0000:00:04.0-1/input1
S: Sysfs=/devices/pci0000:00/0000:00:04.0/usb3/3-1/3-1:1.1/input/input4
U: Uniq=
H: Handlers=kbd mouse0 event4
B: PROP=0
B: EV=17
B: KEY=1f0000 0 2020000 3878 d801d001 1e0000 0 0 0
B: REL=103
B: MSC=10

you need to scroll the list looking for your remote this is identified by the ''N: Name="HID 05a4:9881"'' line.

If you cant find "05a4:9881" then type in a console

lsusb

and find your ortek remote mine is shown below

Bus 003 Device 002: ID 05a4:9881 Ortek Technology, Inc.

once your have the identifier number redo the ''cat /proc/bus/input/devices'' like above


3. Ok so once you have identified your devices from ''cat /proc/bus/input/devices'' you need to find the ''P: Phys='' line. From my example above the lines im looking for is

Phys=usb-0000:00:04.0-1/input0
Phys=usb-0000:00:04.0-1/input1

4. now we have are device phsical addess, now its time to configure our hardware.conf. If you are running ubuntu and installed lircd with apt-get then your hardware.conf will be located at '/etc/lirc/hardware.conf'

sudo nano /etc/lirc/hardware.conf

now you will need to make you hardware.conf look like the following but be sure to change the ''REMOTE_DEVICE='' line to reflect what you got from above

# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="None"
REMOTE_MODULES=""
REMOTE_DRIVER="devinput"
REMOTE_DEVICE="phys="usb-0000:00:04.0-1/input0""
REMOTE_SOCKET="/dev/lircd"
REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf"
REMOTE_LIRCD_ARGS=""

#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER="devinput"
TRANSMITTER_DEVICE="phys="usb-0000:00:04.0-1/input1""
TRANSMITTER_SOCKET="/dev/lircd"
TRANSMITTER_LIRCD_CONF="/etc/lirc/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"
START_LIRCMD=""

now restart lircd

sudo /etc/init.d/lirc restart

now type irw in a console, on some systems you might need to specify the socket ''/dev/lircd'' this will be in hardware.conf under the ''REMOTE_SOCKET= line

irw

or

irw /dev/lircd

Press some buttons on your remote and you should see some output

if not then something else is wrong with your setup, go back and make sure you have followed the instructions


5. So now if lirc has succefully recognized your remote (verified by using irw) all that is left to do is generate key mapping for mythtv

you could do this by running, but read below.

mythbuntu-lirc-generator

but it has some bugs (you should try mine below), it miss's some keys and makes duplicates

I tried this but then I ended up editing the completed file almost entirely, this is what I ended up with.

My lircrc file

This file needs to be placed in the file ''/.lirc/mythtv'' located in the home directory of the user that mythtv runs under. Just look around for a folder named ''.lirc'' (the period means its a hidden folder) that contains some files named mythtv, mplayer, xine, vlc, and so on, if you dont have a ''.lirc'' folder anywhere then create it. Then create the mythtv file inside of it(you can place application specific files within this folder) and paste in the contents below. You will need to add the following line to ~/.lircrc: ''include ~/.lirc/mythtv''. Create ~/.lircrc if it does not already exist.

Feel free to edit this file how ever you want it pretty simple, the remote = line is the driver listed in irw, the last part when you press a button button = is what key was pressed on the remote config = is what key to send to mythtc this can also contain combos like CTRL+R and ALT+Esc, besure to capitalize the CTRL and ALT parts


This file isnt 100% Please read the issues at the end, if you know how to fix any of these problem the please edit this wiki.

# LIRCRC Auto Generated by Mythbuntu Lirc Generator
# Author(s): Mario Limonciello, Nick Fox, John Baab
# Created for use with Mythbuntu
begin
   remote = devinput
   prog = mythtv
   button = KEY_KP0
   config = 0
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP1
   config = 1
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP2
   config = 2
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP3
   config = 3
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP4
   config = 4
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP5
   config = 5
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP6
   config = 6
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP7
   config = 7
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP8
   config = 8
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KP9
   config = 9
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_BACKSPACE
   config = Backspace
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_F4
   config = Escape
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_PAGEDOWN
   config = Down
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_PAGEUP
   config = Up
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_DOWN
   config = Down
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_ENTER
   config = Return
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_ESC
   config = Escape
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_F
   config = >
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_NEXTSONG
   config = N
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_HOMEPAGE
   config = M
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_LEFT
   config = Left
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_META
   config = M
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_MUTE
   config = |
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_PLAYPAUSE
   config = P
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_R
   config = R
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_B
   config = <
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_RIGHT
   config = Right
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_STOPCD
   config = S
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_UP
   config = Up
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_VOLUMEDOWN
   config = [
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_VOLUMEUP
   config = ]
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_PREVIOUSSONG
   config = B
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_O
   config = Q
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_T
   config = Z
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_M
   config = F
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_I
   config = Y
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_E
   config = T
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_SLEEP
   config = U
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_KPASTERISK
   config = O
   repeat = 0
   delay = 0
end

begin
   remote = devinput
   prog = mythtv
   button = KEY_G
   config = S
   repeat = 0
   delay = 0
end


Issues

A couple problems I'm still having with this remote is some of the buttons still don't work, although it is better than what it was before.

  1. Info button is not detected at all
  2. Some button cannot be assigned in mythtv because they send multiple keypress' to mythtv, button they have this problem are
    1. Start button
    2. Pound button
    3. Blue, Red, and Green

Example of issue When start button is pushed

000000008001007d 00 KEY_LEFTMETA devinput
0000000080010038 00 KEY_LEFTALT devinput
000000008001001c 00 KEY_ENTER devinput

each of these buttons are sent to lircd as if they where pushed individually


Note: For buttons which generate multiple keypresses, you can still get lircd to handle those and map them to single keyboard events - like this:

begin
   remote = devinput
   prog = mythtv
   button = KEY_CTRL
   button = KEY_SHIFT
   button = KEY_T
   config = ....

I did this for other programs rather than MythTV, but I think it should work the same in principle. There's also the inputlircd approach achieves this as well.

I do not take credit for this im just simply putting it somewhere that is easy to find, as it took me awhile to find this info, also this is my first wiki entry ever so please forgive any errors

XF86Audio<action> buttons

The XF86Audio buttons are not added at this point in time. These can be made available by using xmodmap. An example can be found in the Gyration-based MCE Remotes entry.


inputlircd setup

Comparison to lircd setup

I initially set up my MythBox to use lircd directly. This worked fairly well - however, I wanted to get the remote control working with XBMC following instructions here, which suggests using inputlirc. After experimenting with it for a bit, I decided that I preferred to use inputlircd instead.

Disadvantages? Using inputlircd seems to stop the mouse control button from working. I'm not sure there's anything that can be done about that.

Advantages? It combines multiple keypresses together (for the coloured keys, for example). The Info button also gets picked up (it generates the same event as the right mouse click button).

Configuration

You just need to follow these instructions; specifically the first two sections ("UDev rule" and "Lirc installation").

In my experience on getting this to work on my Xubuntu 11,10 box, there were a few differences from these instructions (YMMV):

  • lircd recognises my devices as /dev/input/irremote0 rather than irremote0. When you run "irw", you should be able to find out what name that "lircd" uses for it.
  • Restarting some services didn't work as expected initially - running irw seemed to fail initially, and I had to restart to then get it working.

I haven't got a full lircrc file which takes advantage of the extra buttons yet - you can still use the file mentioned above, and do a find/replace changing "devinput" to either "irremote0" or "/dev/input/irremote0" (which is what I'm currently doing). I'll add an updated lircrc file later.

Example configuration

This is a commented version of the lircrc file which describes all the buttons on the control in order. The keypresses defined in this file correspond to the event names emitted by inputlircd. I've laid out the configuration to make it easier to customise if you want to change what the keys map to.

#
#
#
# SECTION: Menu buttons at top.
#
#
#

# Browser button.
#begin
#   remote = /dev/input/irremote1
#   prog = mythtv
#   button = KEY_HOMEPAGE
#   config = 
#   repeat = 0
#   delay = 0
#end

# Power button.
#begin
#   remote = /dev/input/irremote1
#   prog = mythtv
#   button = KEY_SLEEP
#   config = 
#   repeat = 0
#   delay = 0
#end

# Yellow button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_SHIFT_KEY_T
   config = F4
   repeat = 0
   delay = 0
end

# Blue button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_KEY_M
   config = F5
   repeat = 0
   delay = 0
end

# Green button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_KEY_I
   config = F3
   repeat = 0
   delay = 0
end

# Red button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_KEY_E
   config = F2
   repeat = 0
   delay = 0
end

# TV button [dot].
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_KEY_O
   config = S
   repeat = 0
   delay = 0
end

# TV button [menu].
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_KEY_G
   config = O
   repeat = 0
   delay = 0
end

# TV button [wide].
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_KEY_T
   config = W
   repeat = 0
   delay = 0
end

# TV button [DVD].
#begin
#   remote = /dev/input/irremote0
#   prog = mythtv
#   button = CTRL_SHIFT_KEY_M
#   config = 
#   repeat = 0
#   delay = 0
#end

#
#
#
# SECTION: Forward / Rewind / Stop / Record buttons.
#
#
#

# Rewind button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_SHIFT_KEY_B
   config = <
   repeat = 0
   delay = 0
end

# Forward button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_SHIFT_KEY_F
   config = >
   repeat = 0
   delay = 0
end

# Fast Rewind button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = KEY_PREVIOUSSONG
   config = Home
   repeat = 0
   delay = 0
end

# Fast Forward button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = KEY_NEXTSONG
   config = End
   repeat = 0
   delay = 0
end

# Stop button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = KEY_STOPCD
   config = S
   repeat = 0
   delay = 0
end

# Play and Pause button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = KEY_PLAYPAUSE
   config = P
   repeat = 0
   delay = 0
end

# Record button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = CTRL_KEY_R
   config = R
   repeat = 0
   delay = 0
end

#
#
#
# SECTION: Direction + OK buttons.
#
#
#

# Backspace button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_BACKSPACE
   config = Backspace
   repeat = 0
   delay = 0
end

# Info button and right mouse button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = BTN_RIGHT
   config = I
   repeat = 0
   delay = 0
end

# Up button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_UP
   config = Up
   repeat = 0
   delay = 0
end

# Down button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_DOWN
   config = Down
   repeat = 0
   delay = 0
end

# Left button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_LEFT
   config = Left
   repeat = 0
   delay = 0
end

# Right button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_RIGHT
   config = Right
   repeat = 0
   delay = 0
end

# OK button and Enter button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_ENTER
   config = Return
   repeat = 0
   delay = 0
end

# Left mouse button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = BTN_MOUSE
   config = Return
   repeat = 0
   delay = 0
end

# Right mouse button is the same as the Info button.



#
#
#
# SECTION: Volume / channel buttons.
#
#
#

# Volume up button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = KEY_VOLUMEUP
   config = ]
   repeat = 0
   delay = 0
end

# Volume down button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = KEY_VOLUMEDOWN
   config = ]
   repeat = 0
   delay = 0
end

# Mute button.
begin
   remote = /dev/input/irremote1
   prog = mythtv
   button = KEY_MUTE
   config = |
   repeat = 0
   delay = 0
end

# Channel up button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_PAGEUP
   config = Up
   repeat = 0
   delay = 0
end

# Channel down button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_PAGEDOWN
   config = Down
   repeat = 0
   delay = 0
end

# Start button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = ALT_META_KEY_ENTER
   config = M
   repeat = 0
   delay = 0
end

#
#
#
# SECTION: Keypad keys at bottom.
#
# For all of these keys, the controller actually sends:
#  KEY_NUMLOCK
#  KEY_KP* (whatever the corrresponding event is)
#  KEY_NUMLOCK
#
#
#

# Key 1
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP1
   config = 1
   repeat = 0
   delay = 0
end

# Key 2
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP2
   config = 2
   repeat = 0
   delay = 0
end

# Key 3
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP3
   config = 3
   repeat = 0
   delay = 0
end

# Key 4
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP4
   config = 4
   repeat = 0
   delay = 0
end

# Key 5
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP5
   config = 5
   repeat = 0
   delay = 0
end

# Key 6
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP6
   config = 6
   repeat = 0
   delay = 0
end

# Key 7
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP7
   config = 7
   repeat = 0
   delay = 0
end

# Key 8
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP8
   config = 8
   repeat = 0
   delay = 0
end

# Key 9
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP9
   config = 9
   repeat = 0
   delay = 0
end

# Key 0
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_KP0
   config = 0
   repeat = 0
   delay = 0
end

# Asterisk (*)
#begin
#   remote = /dev/input/irremote0
#   prog = mythtv
#   button = KPAsterisk
#   config = *
#   repeat = 0
#   delay = 0
#end

# Hash (#)
# This is actually sent as two keypresses - ALT_KEY_KP3 and ALT_KEY_KP5.
#
#begin
#   remote = /dev/input/irremote0
#   prog = mythtv
#   button = ALT_KEY_KP3
#   config =
#   repeat = 0
#   delay = 0
#end

#
#
#
# SECTION: Bottom 3 buttons (close / clear / enter).
#
#
#

# Close button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = ALT_KEY_F4
   config = Escape
   repeat = 0
   delay = 0
end

# Clear button.
begin
   remote = /dev/input/irremote0
   prog = mythtv
   button = KEY_ESC
   config = Escape
   repeat = 0
   delay = 0
end

# Enter button is the same as the OK button.