[mythtv-users] Need Help: HD-PVR IR Blaster [SOLVED....SORT OF]

Martin Lynch martin.lynch.toronto at gmail.com
Wed Jan 5 03:53:06 UTC 2011


>>> >  However if I replace:
>>> >
>>> >    name 0_26_KEY_0
>>> >      1703936
>>> >
>>> >  with
>>> >
>>> >    name 0_26_KEY_0
>>> >      2149187584
>>> >
>>> >  it fails ("2149187584" is the code corresponding to "name
>>> 1_26_KEY_0"):
>> Perhaps it is worth noting that 2149187584 is 0x801A0000 in hex, which
>> if stored as a signed number is -1703936 or so.  Perhaps something in
>> the code doesn't like negative numbers.
> Well, that's fascinating! If that's the case, would it have different
> implications on a 64 bit machine vs a 32 bit (ie is the decision made
> in the programming to make it either a 32 bit signed integer or a 64
> bit signed integer? Or is that automatically accounted for?)?
>
> Jarod: can you possibly shed some light on this? ie what happens to
> these numbers/are they converted/etc?
In case anyone is following this thread (and so it ends up on the 
record), here's how this played out:

Try as I might, I was unable to get the HD-PVR's IR Blaster to work. 
Michael Lynch very kindly sent me all his configuration files which were 
known to work, however upon inserting Michael's lircd.conf file to 
/etc/lirc, once again my system refused to recognize any lircd.conf 
which contained blaster codes with 10 digits - as soon as a single 10 
digit code was included anywhere, $irsend LIST "" "" would report nothing.

I began to suspect it was either a kernel issue or a 64 bit vs 32 bit 
issue, so I tested both: I went through the compile/copy files/etc 
procedure on 2.6.31-11-rt and also 2.6.32-27-generic; neither worked 
once the 10 digit codes were introduced. I also went through the 
procedure on a 32 bit laptop: likewise everything went swimmingly until 
a 10 digit code was introduced, then nothing.

I sent a private email to Jarod and posted my question above and signed 
up to the LIRC mailing list, none of which elicited any response, so 
having wasted a good 3 weeks on this, I gave up.

I instead bought a USB-UIRT IR receiver/blaster. The unit was around $60 
with tax. After perhaps another 8 hours of monkeying around with that, 
and attempting various lircd.conf and hardware.conf modifications, I 
finally got it working. I also reworked the channel changing script 
originally created by Daniel Kristjansson such that it will work for a 
Bell 9241 STB (which is identical to a Dish Network VIP612, both of 
which are made by Echostar). Lastly, I played around for quite some time 
to figure out the proper codes for this remote/STB via trial and error - 
I literally tried every code in steps of 100 and documented what the 
different frequencies do (if anything) in case anyone else needs this 
(because the remote that comes with this box uses IR for everything 
_except_ the STB, which uses RF, therefore I couldn't simply capture the 
codes via irw or irrecord. Luckily the box will accept an IR signal. Had 
it not, I think it may well have found itself hurtling down 32 stories 
in free fall...). You can find the codes in my lircd.conf file below - 
lots of them are pretty useless in a MythTV setup, but there they are 
nonetheless.

So, for all who may follow, here's my lircd.conf, my hardware.conf and 
my modified channel changing script (I've left some of the original 
stuff in the script and simply commented it out, in case it turns out 
useful to someone). Note that it is still sub-optimal, because one of 
the LIRC instances is running conflicting instructions on which device 
to use (it simultaneously reports "--device=/dev/lircd1" and "-d 
/dev/ttyUSB0") but I'm so utterly fed up spending my time on LIRC and 
ruing the day my firewire box left me that, since this works perfectly 
for me, I have zero intention of further monkeying with it. When I see 
the letters L-I-R-C these days my blood begins to boil and I have a 
distinctly better understanding of the mechanics involved when people 
lose it and go on homicidal rampages...LIRC is a ridiculous bunch of 
smoke and mirrors and voodoo and incantations, none of which, it seems, 
is documented in detail or firmly understood by _anyone_ (or certainly 
not by anyone willing to share the magic spells).

Please note too that, under the subject line, "HD-PVR Priming Script" I 
posted another (unresolved) question about unfreezing my constantly 
freezing HD-PVR. Well, as it turns out, since abandoning LIRC 
(grrrrr...) for the USB-UIRT, the HD-PVR has worked flawlessly - I've 
been recording virtually all day every day and the HD-PVR has captured 
every show. The channel changes via the USB-UIRT have worked flawlessly 
with my amended channel change script and the box has yet to freeze. 
That's great, because I was about to modify a power bar to allow control 
of it via a USB cable such that I could interrupt the power and thereby 
reset the HD-PVR. Now I can go back to enjoying, rather than struggling 
with, MythTV!

Thanks, sincerely, to Michael and Mark for their kind efforts to help me 
out - very much appreciated!

/etc/lirc/lircd.conf:

begin remote

   name dish
   bits           16
   flags SPACE_ENC
   eps            30
   aeps          100

   header        400  6100
   one           400  1700
   zero          400  2800
   ptrail        400
   gap          6200
   min_repeat      4
   toggle_bit      0

   frequency    40000

       begin codes
           power                    0x0000000000000800
           0                        0x0000000000004400
           1                        0x0000000000001000
           2                        0x0000000000001400
           3                        0x0000000000001800
           4                        0x0000000000002000
           5                        0x0000000000002400
           6                        0x0000000000002800
           7                        0x0000000000003000
           8                        0x0000000000003400
           9                        0x0000000000003800
           cancel                   0x0000000000004800
       menu             0x0000000000005000
       view_live_tv           0x0000000000005800
       right               0x0000000000006000
       up                   0x0000000000006800
       left               0x0000000000007000
       down               0x0000000000007800
       pause               0x0000000000008000
       unknown           0x0000000000008400
       page_up           0x0000000000008800
       system_info           0x0000000000009000
       format           0x0000000000009400
       search           0x0000000000009800
       select           0x0000000000004000
       end codes

end remote

***************************

/etc/lirc/hardware.conf:

# /etc/lirc/hardware.conf
#
#Chosen IR Transmitter
TRANSMITTER="USB-UIRT2 : Dish Receiver"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER="uirt2_raw"
TRANSMITTER_DEVICE=""
TRANSMITTER_LIRCD_CONF="/etc/lirc/lircd.conf"
TRANSMITTER_LIRCD_ARGS="-d /dev/ttyUSB0"

#Chosen Remote Control
REMOTE="USB-UIRT2"
REMOTE_MODULES="lirc_dev"
REMOTE_DRIVER="uirt2_raw"
REMOTE_DEVICE="/dev/lirc1"
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS="-d /dev/ttyUSB0"

#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=""

*************************

channel change script for Bell 9241/Dish Net VIP612 - make sure you make 
the file executable; place in /usr/local/bin, then point to it in the 
mythtv-setup screen (I think it's under 4. Inputs? My backend is very 
busy now so cannot check):

#!/bin/sh

# This script is provided without any warranty of fitness to whoever
# wishes to use it. It has been used by me for many months with the
# VIP211 receivers. -- Daniel Kristjansson (March 20th, 2008)
# Additional modifications by Martin Lynch to enable use with
# Bell 9241 and Dish Network VIP612. It will likely work with
# other VIP STBs too (Jan 2, 2011).

# If you have a separate IR reciever you will want to give it "/dev/lircd"
# and use something like "/dev/lircd1" for the transmitter.
# If the tranmitter is on a remote LIRC server, use the ip/hostname:port
# with -a to address it.

DEVICE="-d /dev/lircd"
#DEVICE="-d /dev/lircd1"
#DEVICE="-a hostname:port"

# Use dish1, dish2 .. dish16 depending on which id you are using
# Every dish receiver can be assigned a different remote code, so
# that you can have multiple receivers in one room, and controlled
# by the same LIRC transmitter.

REMOTE_NAME=dish

# This is the command passed in from MythTV.

cmd="$1"

# First, leave sleep mode..
# Note: I have commented this out as it did not function correctly and
# appears unnecessary - ML
#irsend $DEVICE SEND_ONCE $REMOTE_NAME select
#sleep 0.3

case $cmd in
     [0-9]*)
     # make sure we leave any encrypted channel..

     # Note: this IR send slows down MythTV LiveTV, if you want faster
     # channel changing in LiveTV remove it. However if someone ever
     # changes to a channel you don't get, either with this script or
     # manually, you need this "up" to leave that channel.

# I likewise commented this out - encrypted channels do not pose a
# problem for a component connection (they certainly do for firewire!) ML

#    irsend $DEVICE SEND_ONCE $REMOTE_NAME up
  #   sleep 0.3

     for digit in $(echo $1 | sed -e 's/./& /g'); do
         irsend $DEVICE SEND_ONCE $REMOTE_NAME $digit
         # If things work OK with sleep 1, try this for faster channel 
changes:
         #sleep 0.15

# I commented out the sleep 0.15 as channel changes did not work
# only the first digit made it through. Increased to 1 second. ML
     sleep 1.0
     done

     # Send a select so that this channel change takes immediately.
     irsend $DEVICE SEND_ONCE $REMOTE_NAME SELECT

     ;;

     *)
         irsend $DEVICE SEND_ONCE $REMOTE_NAME $cmd
         ;;
esac

-- 

Kind regards,

Martin



More information about the mythtv-users mailing list