IguanaIR

From MythTV Official Wiki
Revision as of 02:15, 23 April 2012 by Tmetro (Talk | contribs)

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

The IguanaIR is a serial- or USB-based IR Transceiver by Iguanaworks that works with LIRC.

The vendor maintains a wiki documentation site.

The IguanaIR requires a specific driver (at least for USB model). LIRC must also have support for that driver compiled-in, as noted on the vendor support site.

This entry (so far) only really addresses the install of USB iguanair in order to send signals to STBs.

Which USB Libs on Ubuntu to Compile?

dpkg -l | grep -i libusb

 libusb-0.1-4                         2:0.1.12-13                                userspace USB programming library
 libusb-1.0-0                         2:1.0.1-1                                  userspace USB programming library
 libusb-1.0-0-dev                     2:1.0.1-1                                  userspace USB programming library developmen
 libusb-dev                           2:0.1.12-13                                userspace USB programming library developmen

Important Vendor notes on Re-Compiling LIRC from Source Package on Ubuntu/Deb

http://iguanaworks.net/downloads.php?distro=deb

Be sure to hold back LIRC from further package updates

REMEMBER to use apt or dpkg or wajig to "hold" back the several lirc related libs/packages to prevent them from being re-installed by your package manager (WITHOUT the IguanaIR support you just compiled in!):

You want your 'apt-get dist-upgrade' to report

The following packages have been kept back:
 liblircclient-dev liblircclient0 lirc lirc-modules-source

Some Configuration Files

Example files from a working Mythbuntu 9.10 / Myth 0.23 / iguanaIR 4-channel USB

/etc/lirc/hardware.conf

# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="None"
REMOTE_MODULES=""
REMOTE_DRIVER=""
REMOTE_DEVICE=""
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS=""
DRIVER="iguanaIR"
DEVICE="/dev/iguanaIR/0"
#Chosen IR Transmitter
TRANSMITTER="My IguanaIR custom config"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER="iguanaIR"
TRANSMITTER_DEVICE="/dev/iguanaIR/0"
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF="pace/dct50x.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/lircd.conf

include "/usr/share/lirc/extras/transmitters/pace/dc50xv2.conf"
include "/usr/share/lirc/extras/transmitters/motorola/dct2244.conf"

/usr/share/lirc/extras/transmitters/pace/dc50xv2.conf (don't worry about the "v2" in the filename, that's local to my machine to keep some differences whilst I was testing)

# Please make this file available to others
#
# this config file was automatically generated
# using lirc-0.8.6-CVS(default) on Mon Jan 11 21:34:36 2010
#
# contributed by Kirk Bocek
#
# brand: Comcast Branded Motorola DTA100 and Pace DC50X
# model no. of remote control: Unknown, Comcast Label
# devices being controlled by this remote: Motorola DTA100 & Pace DC50X
#
# These are a couple of the cheap digital converters being provided by
# Comcast as part of their analog shutdown. DTA100 information here:
#
# http://www.motorola.com/Business/US-EN/Business+Product+and+Services/TV+Video+Distribution/Customer+Premises+Equipment+%28Set-tops%29/All-Digital+QAM+Set-tops/DTA100_US-EN
# 
# This remote also has power and volume buttons. You can program these
# to control your TV. But these DTAs *do* have internal volume and mute
# controls. The power button, however, is only for your TV and has no
# effect on the DTA.
#
# Because this remote use the XMP protocol, this config requires
# lirc 0.8.6 or later.
#
# Generated by starting with the generic XMP protocol configuration:
# http://lirc.sourceforge.net/remotes/generic/XMP
# and then using irrecord to add the keys.
#
# V.2 - Added Volume Up and Volume Down
# V.3 - Confirmed operation with Pace DC50X. Changed strings to
# conform with standard strings used in lirc 0.8.6.
#
begin remote
# name MotorolaDTA100-PaceDC50X
name dc50x
bits 24
flags XMP
eps 20
aeps 300
#
one 0 137
zero 250 710
ptrail 250
pre_data_bits 32
pre_data 0x170F443E
post_data_bits 8
post_data 0x0
pre 250 12921
gap 81698
toggle_bit_mask 0x0
#
begin codes
1 0x1E0001
2 0x1D0002
3 0x1C0003
4 0x1B0004
5 0x1A0005
6 0x190006
7 0x180007
8 0x170008
9 0x160009
0 0x1F0000
KEY_CHANNELDOWN 0x11000E
KEY_CHANNELUP 0x12000D
KEY_MUTE 0x13000C
KEY_VOLUMEDOWN 0x14000B
KEY_VOLUMEUP 0x15000A
KEY_LANGUAGE 0x150082
KEY_INFO 0x170026
KEY_ENTER 0x180025
KEY_LAST 0x190051
end codes
#
end remote


/usr/share/lirc/extras/transmitters/motorola/dct2244.conf (copy of dctxxxx.conf as supplied with LIRC on Ubuntu)

#
# this config file was automatically generated
# using lirc-0.6.6(serial) on Fri Mar 28 22:46:44 2003
#
# contributed by shane bradley
#
#
#
# brand:                       Motorola
# model no. of remote control: DCT2000
# devices being controlled by this remote:
#
begin remote
 name  DCT2244
 bits           16
 flags SPACE_ENC|CONST_LENGTH
 eps            30
 aeps          100
#
 header       9036  4424
 one           556  2185
 zero          556  4424
 ptrail        556
 gap          100025
 toggle_bit      0
#
     begin codes
         HELP                     0x000000000000B3F2
         POWER                    0x000000000000AFF9
         MUTE                     0x0000000000000FF7
         PAGE+                    0x000000000000A3F3
         PAGE-                    0x00000000000023FB
         LOCK                     0x00000000000097F6
         EXIT                     0x000000000000B7F4
         AUP                      0x000000000000D3F6
         ADOWN                    0x00000000000053FE
         ALEFT                    0x00000000000093F1
         ARIGHT                   0x00000000000013F9
         OK                       0x00000000000077F8
         GUIDE                    0x000000000000F3F4
         MENU                     0x00000000000067F9
         VOL+                     0x0000000000004FF3
         VOL-                     0x0000000000008FFB
         LAST                     0x00000000000037FC
         FAV                      0x00000000000057FA
         CH+                      0x0000000000002FF5
         CH-                      0x000000000000CFFD
         A                        0x00000000000017FE
         B                        0x0000000000001BF1
         C                        0x000000000000EBF9
         1                        0x0000000000007FF0
         2                        0x000000000000BFF8
         3                        0x0000000000003FF4
         4                        0x000000000000DFFC
         5                        0x0000000000005FF2
         6                        0x0000000000009FFA
         7                        0x0000000000001FF6
         8                        0x000000000000EFFE
         9                        0x0000000000006FF1
         0                        0x000000000000FFFF
         BYPASS                   0x000000000000D7F2
         MUSIC                    0x000000000000F7F0
         STOP                     0x00000000000063FD
         PAUSE                    0x00000000000007FF
         PLAY                     0x000000000000E3F5
         REW                      0x00000000000087F7
         REC                      0x00000000000073FC
         FFWD                     0x00000000000047FB
     end codes
#
end remote

See Lirc Channel Change script for a feature complete script that handles multiple IR channels and other more complex situations.

My channel change script for the dc50x /usr/local/bin/change-channel-lirc-dc50x_transmitter_1.pl

#!/usr/bin/perl
# make sure to set this string to
# the corresponding remote in /etc/lircd.conf
$remote_name = "dc50x";
sub change_channel {
        my($channel_digit) = @_;
        system ("irsend SEND_ONCE $remote_name $channel_digit");
        sleep .3;
}
system ("irsend set_transmitters 1");
$channel=$ARGV[0];
sleep .3;
if (length($channel) > 2) {
        change_channel(substr($channel,0,1));
        change_channel(substr($channel,1,1));
        change_channel(substr($channel,2,1));
} elsif (length($channel) > 1) {
        change_channel(substr($channel,0,1));
        change_channel(substr($channel,1,1));
} else {
        change_channel(substr($channel,0,1));
}
system ("rc SEND_ONCE $remote_name KEY_ENTER");


My channel change script for the DCT2244 /usr/local/bin/change-channel-lirc-dct2244_transmitter_2.pl

#!/usr/bin/perl
# make sure to set this string to
# the corresponding remote in /etc/lircd.conf
$remote_name = "dct2244";
sub change_channel {
        my($channel_digit) = @_;
#	print "$channel_digit";
        system ("irsend SEND_ONCE $remote_name $channel_digit");
        sleep 1;
}
system ("irsend set_transmitters 2");
$channel=$ARGV[0];
sleep .3;
if (length($channel) > 2) {
        change_channel(substr($channel,0,1));
        change_channel(substr($channel,1,1));
        change_channel(substr($channel,2,1));
} elsif (length($channel) > 1) { 
	change_channel("0");
        change_channel(substr($channel,0,1));
        change_channel(substr($channel,1,1));
} else {
	change_channel("0"); 
	change_channel("0");
        change_channel(substr($channel,0,1));
}
sleep .2;
# system ("rc SEND_ONCE $remote_name ENTER");

What does process list look like?

root      1327  0.0  0.0  22184   484 ?        Ss   Jun28   0:00 /usr/sbin/lircd --output=/var/run/lirc/lircd --driver=iguanaIR --device=/dev/iguanaIR/0
iguanair  2145  0.0  0.0  41140   524 ?        Ssl  Jun28   0:21 /usr/bin/igdaemon --log-level=0 --send-timeout=1000 --receive-timeout=1000 --driver-dir=/usr/lib64/iguanaIR --driver=libusb -l /var/log/iguanaIR.log