I've configured yet another front end but for space geometry issues, I was not able to use anothe Antec Fusion case so I ended up getting an Antec Veris Basic which fits into a spare 3.5" bay of, in my case, a Sonata 3.
The best thing about these IR detectors (Fusion & Veris) is that they can power on your system from cold. In effect the power button is daisy chained through the IR receiver before going to the Motherboard. So no more messing with BIOS settings etc.
While the Antec Fusion understands MCE remotes, Antec Veris understands the iMon remotes only. They are easiest to recognize by executing "lsusb" and looking for:
Code:
Bus 001 Device 003: ID 15c2:0043 SoundGraph Inc.
where the "15c2:0043" identifies this device. You will also see after updating lirc that both /dev/lirc0 & /dev/lirc1 exist.
While the Veris Basic only comes with a small remote control, the IR receiver actually understands the entire range. So in my case I use a Harmony 890 and use the setting of "SoundGraphRM200" which programs up the entire IR range. Not bad for C$42 device!
To support this device you will need lirc-0.8.5pre1 or later. This device actually shows up as TWO lirc devices (lirc0 and lirc1) so you will need a little more magic to combine these too.
In my config files, I tried not to modify the /home/mythtv/.mythtv/lircrc so that these config files would be as generic as possible (and help with inclusion in the build ) so I modified the lirc?.conf files to map into them. The only exception was the "tab" and "shift tab" options which I changed to "PreChapter" and "NextChapter". Modify either to suit.
In my case since I was using a Harmony remote, I also configured a separate "Power Off" button to allow the Harmony to shut down the PC when I am completely done and shutting the system down avoiding the need to suspend.
I have also label the Harmony labels in the lirc?.conf files in case you are trying to use that remote as well.
Enjoy!
Christ.
============
What you will require:
Installed KM with iMon remote (just puts most files in the right place)
lirc-0.8.5pre1 (or higher)
a custom /etc/init.d/lirc
-- this is needed to merge lirc0 & lirc1 into one socket for mythtv
lirc0.conf & lirc1.conf
-- my versions are below
PREPARING:
move the old lirc_imon.ko out of the way or it will interfere with loading the new one:
Code:
mv /lib/modules/2.6.23-chw-4/misc/lirc_imon.ko /lib/modules/2.6.23-chw-4/misc/lirc_imon.ko.old
In part as referenced in the how-to:
http://www.knoppmythwiki.org/index.php?page=LIRCHowToCode:
cd /usr/src
verify sources point to stable and update apt.
Code:
vi /etc/apt/sources.list
apt-get update
Now get rid of the old stuff:
Code:
apt-get remove lirc
Code:
m-a update
m-a prepare
You also need to link the headers to the linux directory:
Code:
ln -s linux-headers-2.6.23-chw-4 linux
Double check that no ".ko" or ".so" files exist for lirc_imon or imonlcd
Code:
find / -name lirc\_imon\* -print
If you find some, move them out of the way by adding say ".old" to the file name. But the above procedures should have removed anything.
LIRC:
-------
Get and unpack the latest lirc:
Code:
cd /usr/src
wget http://www.lirc.org/software/snapshots/lirc-0.8.5pre1.tar.bz2
tar jxvf lirc-0.8.5pre1.tar.bz2
cd lirc-0.8.5pre1
Configure it by executing the following and choose "Driver Configuration" then "USB Devices" then "Soundgraph iMON IR/LCD", then "Save configuration and exit".
Code:
./setup.sh
After you run "setup.sh" you need to do edit the file "configure.sh" and add the line "--prefix=/usr \" so that "configure.sh" looks something like this:
Code:
#! /bin/sh
./configure \
--with-moduledir=/lib/modules/2.6.18-chw-13/misc \
--with-tty=/dev/ttyUSB0 \
--with-x \
--with-driver=usb_uirt_raw \
--with-major=61 \
--with-port=none \
--with-irq=none \
--prefix=/usr \
"$@"
Now configure, make and install:
Code:
sh configure.sh
make
make install
Now you can copy the hardware.conf, lirc0.conf, and lirc1.conf files to:
Code:
/etc/lirc/hardware.conf
/etc/lirc/lirc0.conf
/etc/lirc/lirc1.conf
and modify them as you see fit.
You should also verify "/home/mythtv/.mythtv/lircrc" to ensure your key mappings are to your liking. I increased the direction keys' "repeat" to about 9 as the sensitivity was a bit high in my case.
Finally copy the "/etc/init.d/lirc" code to "/etc/init.d/lirc"
After all this, reboot your system and everything should be working other than some custom tweaking.
DEFAULT FILES:
-------------------
These are for reference, modify to suit.
/etc/lirc/hardware.conf:
Code:
# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="Soundgraph iMON IR/LCD"
REMOTE_MODULES="lirc_dev lirc_imon"
REMOTE_DRIVER="default"
REMOTE_DEVICE="/dev/lirc0"
REMOTE_LIRCD_CONF="/etc/lirc/lirc0.conf"
REMOTE_LIRCD_ARGS=""
#Chosen IR Transmitter
TRANSMITTER="Soundgraph iMON IR/LCD"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER="default"
TRANSMITTER_DEVICE="/dev/lirc1"
TRANSMITTER_LIRCD_CONF="/etc/lirc/lirc1.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=""
/etc/lirc/lirc0.conf: (** all new created with my Harmony remote **)
Code:
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.8.4(default) on Sat Oct 18 02:21:26 2008
#
# contributed by Jean-Yves Avenard
#
# brand: Antec Fusion Remote
# model no. of remote control: MX200
# devices being controlled by this remote:
#
begin remote
name rm200
bits 32
eps 30
aeps 100
one 0 0
zero 0 0
gap 195997
toggle_bit 0
begin codes
PadKeyUp 0x1008000 #Harmony labels this DirectionUp
PadKeyLeft 0x1000080 #Harmony labels this DirectionLeft
PadKeyRight 0x100007F #Harmony labels this DirectionRight
PadKeyDown 0x1007F00 #Harmony labels this DirectionDown
Select 0x2000028 #Harmony labels this Enter
Enter 0x200002C #Harmony labels this Select
Backspace 0x200002A
Menu 0x2000065 #Harmony labels this Menu (DropDown)
WindowsKey 0x2800000 #Harmony labels this Menu (Windows)
LClick 0x1010000
RClick 0x1020000
Esc 0x2000029 #Harmony labels this Escape
1 0x200001E
2 0x200001F
3 0x2000020
4 0x2000021
5 0x2000022
6 0x2000023
7 0x2000024
8 0x2000025
9 0x2000026
0 0x2000027
* 0x2200025 #Harmony labels this Left
# 0x2200020 #Harmony labels this Right
end codes
end remote
/etc/lirc/lirc1.conf: (** This is based on the default iMon lircd in KnoppMyth **)
Code:
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.7.1pre2(imon) on Tue Mar 1 23:15:44 2005
#
# brand: iMON-New
# model no. of remote control: iMON-PAD
# devices being controlled by this remote:
#
begin remote
name iMON-PAD
bits 32
eps 30
aeps 100
one 0 0
zero 0 0
gap 235965
min_repeat 1
toggle_bit 29
begin codes
AppExit 0x288195B7
Power 0x289115B7 #Harmony labels this Pwr
Record 0x298115B7
Play 0x2A8115B7
SlowMotion 0x29B195B7 #Harmony labels this Eject
Rewind 0x2A8195B7
Pause 0x2A9115B7
FastForward 0x2B8115B7
PrevChapter 0x2B9115B7 #Harmony labels this SkipBackward
Stop 0x2B9715B7
NextChapter 0x298195B7 #Harmony labels this SkipForward
Esc 0x2BB715B7 #Harmony labels this Escape
Eject 0x299395B7 #Harmony labels this Open/Close
AppLauncher 0x29B715B7
Computer 0x2AB195B7 #aka MultiMon on other iMon remotes
TaskSwitcher 0x2A9395B7
Mute 0x2B9595B7
Vol+ 0x28A395B7 #Harmony labels this VolumeUp
Vol- 0x28A595B7 #Harmony labels this VolumeDown
Ch+ 0x289395B7 #Harmony labels this ChannelUp
Ch- 0x288795B7 #Harmony labels this ChannelDown
Timer 0x2B8395B7
1 0x28B595B7
2 0x2BB195B7
3 0x28B195B7
4 0x2A8595B7
5 0x299595B7
6 0x2AA595B7
7 0x2B9395B7
8 0x2A8515B7
9 0x2AA115B7
0 0x2BA595B7
ShiftTab 0x28B515B7 #not on Harmony
Tab 0x29A115B7 #not on Harmony
MyMovie 0x2B8515B7 #Harmony labels this Red
MyMusic 0x299195B7 #Harmony labels this Green
MyPhoto 0x2BA115B7 #Harmony labels this Blue
MyTV 0x28A515B7 #Harmony labels this Yellow
Bookmark 0x288515B7
Thumbnail 0x2AB715B7
AspectRatio 0x29A595B7 #Harmony labels this Aspect
FullScreen 0x2AA395B7
MyDVD 0x29A295B7
MyDVD 0x29A395B7
Menu 0x2BA385B7
Menu 0x2BA395B7
Caption 0x298595B7
Language 0x2B8595B7
MouseKeyboard 0x299115B7 #Harmony labels this Mouse/Keyboard
SelectSpace 0x2A9315B7
MouseMenu 0x28B715B7
MouseRightClick 0x688481B7
Enter 0x28A195B7
MouseLeftClick 0x688301B7
WindowsKey 0x2B8195B7
Backspace 0x28A115B7
PadKeyUp 0x690281B7
PadKeyDown 0x688291B7
PadKeyLeft 0x6A8281B7
PadKeyRight 0x688A81B7
# cursor pad - GMC AVC-S7 case
KeyAVCenter 0x0000000F
KeyBack 0x00000017
KeyUp 0x00000012
KeyDown 0x00000013
KeyLeft 0x00000014
KeyRight 0x00000015
KeyOK 0x00000016
end codes
end remote
/etc/init.d/lirc: (** courtesy of JY Avenard **)
Code:
#! /bin/sh
### BEGIN INIT INFO
# Provides: lirc
# Required-Start: $syslog
# Required-Stop: $syslog
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts LIRC daemon.
# Description: LIRC is used to control different
# infrared receivers and transceivers.
### END INIT INFO
load_modules ()
{
local MODULES_MISSING=false
log_daemon_msg "Loading LIRC modules"
for mod in $*
do
if [ $mod = "udev" ]; then
log_end_msg 0
log_success_msg "Restarted via udev, don't reload modules"
break
else
modprobe -k $mod 2> /dev/null || MODULES_MISSING=true
fi
done
log_end_msg $?
if $MODULES_MISSING; then
log_failure_msg "Unable to load LIRC kernel modules. Verify your"
log_failure_msg "selected kernel modules in /etc/lirc/hardware.conf"
START_LIRCMD=false
START_LIRCD=false
fi
}
build_remote_args ()
{
local REMOTE_ARGS="$*"
#For remote only detection support, we need
#both REMOTE_DEVICE and TRANSMITTER_DEVICE undefined
if [ -z "$REMOTE_DEVICE" ] && [ -z "$TRANSMITTER_DEVICE" ]; then
for dev in /dev/lirc0; do
if [ -c $dev ]; then
REMOTE_DEVICE="$dev"
break
fi
done
fi
#If we have a REMOTE_DEVICE or REMOTE_DRIVER defined (either because no devices
#were defined, OR if we explicitly did), then populate REMOTE_ARGS
if [ ! -z "$REMOTE_DEVICE" ] || [ ! -z "$REMOTE_DRIVER" ]; then
if [ -n "$REMOTE_DEVICE" ] && [ "$REMOTE_DEVICE" != "none" ]; then
REMOTE_ARGS="--device=$REMOTE_DEVICE $REMOTE_ARGS"
fi
if [ -n "$REMOTE_DRIVER" ] && [ "$REMOTE_DRIVER" != "none" ]; then
REMOTE_ARGS="--driver=$REMOTE_DRIVER $REMOTE_ARGS"
fi
#Now, if we ALSO have a transmitter defined, add some args
#To make the first lircd listen up
if [ ! -z "$TRANSMITTER_DEVICE" ] || [ ! -z "$TRANSMITTER_DRIVER" ]; then
REMOTE_ARGS="$REMOTE_ARGS --output=/dev/lircd --listen"
fi
fi
echo $REMOTE_ARGS
}
build_transmitter_args ()
{
local TRANSMITTER_ARGS="$*"
#Transmitters must be explicitly be defined
if [ ! -z "$TRANSMITTER_DEVICE" ] || [ ! -z "$TRANSMITTER_DRIVER" ]; then
if [ -n "$TRANSMITTER_DEVICE" ] && [ "$TRANSMITTER_DEVICE" != "none" ]; then
TRANSMITTER_ARGS="--device=$TRANSMITTER_DEVICE $TRANSMITTER_ARGS"
fi
if [ -n "$TRANSMITTER_DRIVER" ] && [ "$TRANSMITTER_DRIVER" != "none" ]; then
TRANSMITTER_ARGS="--driver=$TRANSMITTER_DRIVER $TRANSMITTER_ARGS"
fi
#Now, if we ALSO have a remote defined, add some args
#To make the second lircd connect
if [ ! -z "$REMOTE_DEVICE" ] || [ ! -z "$REMOTE_DRIVER" ]; then
TRANSMITTER_ARGS="$TRANSMITTER_ARGS --output=/dev/lircd --connect=localhost:8765 --pidfile=/var/run/lircd1.pid"
fi
fi
echo $TRANSMITTER_ARGS
}
. /lib/lsb/init-functions
test -f /usr/sbin/lircd || exit 0
test -f /usr/sbin/lircmd || exit 0
START_LIRCMD=true
START_LIRCD=true
if [ -f /etc/lirc/hardware.conf ];then
. /etc/lirc/hardware.conf
fi
if [ ! -f /etc/lirc/lircd.conf ] \
|| grep -q "^#UNCONFIGURED" /etc/lirc/lircd.conf;then
if [ "$1" = "start" ]; then
log_success_msg "No valid /etc/lirc/lircd.conf has been found."
log_success_msg "Remote control support has been disabled."
log_success_msg "Reconfigure LIRC or manually replace /etc/lirc/lircd.conf to enable."
fi
START_LIRCD=false
START_LIRCMD=false
fi
if [ ! -f /etc/lirc/lircmd.conf ] \
|| grep -q "^#UNCONFIGURED" /etc/lirc/lircmd.conf;then
START_LIRCMD=false
fi
case "$1" in
start)
if [ "$LOAD_MODULES" = "true" ] && [ "$START_LIRCD" = "true" ]; then
load_modules $2 $REMOTE_MODULES $TRANSMITTER_MODULES $MODULES
fi
if $START_LIRCD; then
log_daemon_msg "Starting remote control daemon(s) : LIRC "
REMOTE_LIRCD_ARGS=`build_remote_args $REMOTE_LIRCD_ARGS $REMOTE_LIRCD_CONF`
TRANSMITTER_LIRCD_ARGS=`build_transmitter_args $TRANSMITTER_LIRCD_ARGS $TRANSMITTER_LIRCD_CONF`
#if we have a remote defined, it is primary process
if [ ! -z "$REMOTE_LIRCD_ARGS" ]; then
start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- $REMOTE_LIRCD_ARGS < /dev/null
log_end_msg $?
#now if we additionally have a transmitter defined, it is secondary process
if [ ! -z "$TRANSMITTER_LIRCD_ARGS" ]; then
/usr/sbin/lircd $TRANSMITTER_LIRCD_ARGS < /dev/null
fi
elif [ ! -z "$TRANSMITTER_LIRCD_ARGS" ]; then
start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- $TRANSMITTER_LIRCD_ARGS < /dev/null
else
log_end_msg 1
fi
fi
if $START_LIRCMD; then
log_daemon_msg "Starting remote control mouse daemon : LIRCMD "
start-stop-daemon --start --quiet --exec /usr/sbin/lircmd < /dev/null
log_end_msg $?
fi
;;
stop)
if $START_LIRCMD; then
log_daemon_msg "Stopping remote control mouse daemon: LIRCMD"
start-stop-daemon --stop --quiet --exec /usr/sbin/lircmd
log_end_msg $?
fi
if $START_LIRCD; then
log_daemon_msg "Stopping remote control daemon(s): LIRC"
start-stop-daemon --stop --quiet --exec /usr/sbin/lircd
log_end_msg $?
fi
;;
reload|force-reload)
if $START_LIRCD; then
start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircd
fi
if $START_LIRCMD; then
start-stop-daemon --stop --quiet --signal 1 --exec /usr/sbin/lircmd
fi
;;
restart)
$0 stop
#passes parameter $2 which is possibly our udev paramater
$0 start $2
;;
*)
echo "Usage: /etc/init.d/lircd {start|stop|reload|restart|force-reload}"
exit 1
esac
exit 0