Using multiple IR Blasters with only one (yes, that's 1) serial port
This site best viewed in FireFox

tyrstag !at! gmail.com

Return to main site

How did this come about?

The steps outlined here were the result of my wanting to be able to record one program while watching another in "LiveTV". Since I was using DishNetwork and had no cable connection, it wasn't as easy as I originally expected (is it ever?). I knew that I could get another PVR-250 and hook another receiver up to it, but how could I control both receivers independently?  At first I considered compiling 2 versions of Lirc, installing them on different serial ports and putting one of the receivers in a cabinet (silly huh?).

Then one day on Jim Sandoz's site there was a message about changing the remote ID on a DishNetwork box and that was the last piece of the puzzle. Most of the things I did were based on the notes from Mark (MarkRShirley !at! eaton.com) and the work of other people, I just modified them to my taste and my desire to keep my MythTV box looking like an A/V component.

Important Note: In order for this setup to work, the devices you intend to control MUST use different signalling protocols. If they all use the same protocol, then every action you take with the remote control will affect all devices which have an IR "stick on eye" on it.

FYI: It may be possible to change the remote codes on other devices besides DishNetwork receivers, I don't know and I have no way to test them. If you know about others, please send me the info and I'll add it here.

 

Where to begin?

The number one goal of this was to NOT break my existing configuration, and while I was at it, make my current IRblaster more attractive than an IR-LED hanging off the end of a piece of old Cat5 cable.

Because I had done some home automation installations, I knew about some devices that Russound makes (it didn't hurt that I was an authorized dealer). 2 parts in particular were of interest, the Russound 857 IR Hub and several Russound IR "stick on eyes". I wasn't sure if my serial port would drive the 857 Hub or not, so I called Russound tech support. After much explaining what I wanted to do and a couple of "I'll have to talk to an engineer" conversations, Russound finally said, "If you can control an IR device now, then it should work. But we won't guarantee it". That was good enough for me to give it a try. I purchased the 857 and a bunch of "Eyes".

The first unit I built was primarily for testing, so I didn't care how it looked. I took my old "IR-LED on a Wire", cut the LED off and mounted a 1/8" mini-plug. Plugged that into the 857 hub, plugged an "Eye" in and stuck it on my receiver and connected some power. Everything looked OK so I turned on my Myth box and the TV, changed the channel in the EPG and would you believe that it actually worked? Not only did it work, but it was better and more reliable than my old IRLED.

Now that I knew it would work, it was time to make it look nice and control an additional device.

Get on with it! Here's the steps.

1) Have a working LIRC serial controlling your current device. You can find the how-to for that here.

2) Make a serial "IRblaster" cable with a 1/8" mini-plug. I mounted the resistor and diode inside the DB9 shell to hide and protect the components.

Here's a picture of my serial "IRblaster" notice the diode and resistor mounted inside.

Here's the schematic from lirc.org

Simple transmitterGND

Replace the IRLED with an 1/8" MONO mini-plug.

DTR is pin 4 and GND is pin 5 on a 9 pin connector.

The resistor should be around 2Kohm.

Notice the direction of the diode, the black stripe is away from the plug end, it doesn't matter with the resistor.


3) Disassemble the 857 Hub and mount it in a floppy drive blank. I don't remember off-hand what size the drill bit is (mental note to get that info).

The holes for the jacks are exactly 1cm from center-to-center, I found the center of the blank from top to bottom, then decided how close to one side or the other I wanted the jacks.

I left room to mount my PVR-250 IR receiver on one side of the blank. (see pic.)

I did the drilling with a cordless electric drill. If you have access to a drill press, you will have a much easier time keeping them even than I did.


4) Power the IR Hub.

In this picture you can see the other end of the serial cable with the mini-plug attached.

You can also see the power connection.

On my power supply I had 4 floppy style power connectors, more than I was going to need. So, one was sacrificed to become the power source for my hub.

The yellow wire is +12VDC, and the black wire is GND

Notice the screw type connector on the hub, that whole piece is a plug in module. Makes it much easier to mount the power then plug it in.

The tape on the PVR receiver was holding it in place while the glue dried.

 

Here's another view from inside the case.

5) Mount the "Eyes" on the devices you want to control.

 Here's a pic with the eyes mounted on 2 DishNetwork receivers.

 

Yes, that's a LaserDisk player under them. I'm old school.

Here's a picture of the completed system.

6) Power it up and make sure that your original device still works!! You don't want to do all the work to make 2 devices work, just to find that you never tested to see if it would control one!  I can't stress this enough.

7) Add the config for your new device to your /etc/lircd.conf, I'm listing mine here in table format. Notice that they are all almost identical except for the second to last digit of the code. ID 1 is FF or EF, ID 6 is 7F or 6F and ID 9 is BF or AF. There are other ID's you can use, DishNetwork supports ID's 1 to 16. I didn't need that many and other people had already created these config's.

DishNetwork Remote ID 1 DishNetwork Remote ID 6 DishNetwork Remote ID 9
begin remote

  name  DISH_1
  bits           16
  flags SPACE_ENC|NO_HEAD_REP
  eps            30
  aeps          100

  header        350  6000
  one           324  2800
  zero          324  1700
  ptrail        324
  gap          6000
  min_repeat      1
  toggle_bit      0


      begin codes
          tv/video                 0x000000000000A3FF
          power                    0x000000000000F7FF
          menu                     0x000000000000D3FF
          page_up                  0x000000000000C3EF
          page_down                0x000000000000E3EF
          guide                    0x000000000000AFFF
          pointer_up               0x00000000000097FF
          pointer_left             0x0000000000008FFF
          pointer_right            0x0000000000009FFF
          pointer_down             0x00000000000087FF
          select                   0x000000000000BFFF
          recall                   0x00000000000093FF
          info                     0x000000000000FFFF
          view                     0x000000000000A7FF
          cancel                   0x000000000000B7FF
          sys_info                 0x0000000000006FFF
          record                   0x00000000000083FF
          1                        0x000000000000EFFF
          2                        0x000000000000EBFF
          3                        0x000000000000E7FF
          4                        0x000000000000DFFF
          5                        0x000000000000DBFF
          6                        0x000000000000D7FF
          7                        0x000000000000CFFF
          8                        0x000000000000CBFF
          9                        0x000000000000C7FF
          0                        0x000000000000BBFF
          *                        0x0000000000006BFF
          #                        0x00000000000067FF
      end codes

end remote
begin remote

  name  DISH_6
  bits           16
  flags SPACE_ENC|NO_HEAD_REP
  eps            30
  aeps          100

  header        350  6000
  one           324  2800
  zero          324  1700
  ptrail        324
  gap          6000
  min_repeat      1
  toggle_bit      0


      begin codes
          tv/video                 0x000000000000A37F
          power                    0x000000000000F77F
          menu                     0x000000000000D37F
          page_up                  0x000000000000C36F
          page_down                0x000000000000E36F
          guide                    0x000000000000AF7F
          pointer_up               0x000000000000977F
          pointer_left             0x0000000000008F7F
          pointer_right            0x0000000000009F7F
          pointer_down             0x000000000000877F
          select                   0x000000000000BF7F
          recall                   0x000000000000937F
          info                     0x000000000000FF7F
          view                     0x000000000000A77F
          cancel                   0x000000000000B77F
          sys_info                 0x0000000000006F7F
          record                   0x000000000000837F
          1                        0x000000000000EF7F
          2                        0x000000000000EB7F
          3                        0x000000000000E77F
          4                        0x000000000000DF7F
          5                        0x000000000000DB7F
          6                        0x000000000000D77F
          7                        0x000000000000CF7F
          8                        0x000000000000CB7F
          9                        0x000000000000C77F
          0                        0x000000000000BB7F
          *                        0x0000000000006B7F
          #                        0x000000000000677F
      end codes

end remote

begin remote

  name  DISH_9
  bits           16
  flags SPACE_ENC|NO_HEAD_REP
  eps            30
  aeps          100

  header        350  6000
  one           324  2800
  zero          324  1700
  ptrail        324
  gap          6000
  min_repeat      1
  toggle_bit      0


      begin codes
          tv/video                 0x000000000000A3BF
          power                    0x000000000000F7BF
          menu                     0x000000000000D3BF
          page_up                  0x000000000000C3AF
          page_down                0x000000000000E3AF
          guide                    0x000000000000AFBF
          pointer_up               0x00000000000097BF
          pointer_left             0x0000000000008FBF
          pointer_right            0x0000000000009FBF
          pointer_down             0x00000000000087BF
          select                   0x000000000000BFBF
          recall                   0x00000000000093BF
          info                     0x000000000000FFBF
          view                     0x000000000000A7BF
          cancel                   0x000000000000B7BF
          sys_info                 0x0000000000006FBF
          record                   0x00000000000083BF
          1                        0x000000000000EFBF
          2                        0x000000000000EBBF
          3                        0x000000000000E7BF
          4                        0x000000000000DFBF
          5                        0x000000000000DBBF
          6                        0x000000000000D7BF
          7                        0x000000000000CFBF
          8                        0x000000000000CBBF
          9                        0x000000000000C7BF
          0                        0x000000000000BBBF
          *                        0x0000000000006BBF
          #                        0x00000000000067BF
      end codes

end remote

 

8) The next step is to change your receiver to match the code you are using. For Most DishNetwork receivers.

1. Open the Important System Information screen. . For most receiver models which use this remote, press the SYS INFO button on the receiver front panel. The Important System Information screen shows a Remote Address.

2. Press and hold the SAT mode button about three seconds, until all the mode buttons light up, and then let go of the SAT button. The SAT mode button will blink.

3. Use the number buttons to enter 1, 6 or 9 depending on which receiver code you want to use. The SAT mode button goes out after you enter each digit, and then lights up again.

4. Press the POUND (#) button. If you entered the address correctly, the SAT mode button will flash three times.

5. Press the RECORD button. You must point the remote control at the receiver while pressing the RECORD button.

6. Make sure the Remote Address on the Important System Information screen now is the same as the one you entered in step

3. If it isnt, the remote cant control the receiver.

7. To check the remote control address, press and hold the SAT mode button for three seconds. Then, let go of the SAT button, and press the POUND (#) button twice. The SAT mode button flashes the same number of times as the address you entered in step 3.

8. Press the SELECT button to close the Important System Information screen.

 

9) Create channel change scripts for your MythTV box to use. I use one like this:

#!/bin/sh
REMOTE_NAME=DISH_1  # Define my remote name here
for digit in $(echo $1 | sed -e 's/./& /g'); do # Accept input from MythTV
irsend --device=/dev/lircd1 SEND_ONCE $REMOTE_NAME $digit # Send the output to Lirc
sleep 0.4 # note, you may have to tweak the interdigit delay up a bit # Wait for next digit
done # got last digit from MythTV
irsend --device=/dev/lircd1 SEND_ONCE $REMOTE_NAME select # Add a select to speed up channel changing.
sleep 0.4
irsend --device=/dev/lircd1 SEND_ONCE $REMOTE_NAME cancel # Get the Dish OSD off the screen, it annoys me and I don't want it on my recordings.
 

I saved my script as change_1.sh and made it executable. Now that you have one script done you can make another copy of it and name it change_6.sh modify to REMOTE_NAME=DISH_6 and save it. Make it executable and now your second script is done. If you need a third script just do it again.

 

10) Run mythtvsetup and add your external channel change scripts to your new inputs. Make sure that you use the script that matches the receiver that's connected to that input. ie:

Card1 is connected to receiver with remote ID 1 and uses change_1.sh

Card2 is connected to receiver with remote ID 6 and uses change_6.sh

and so on.

 

11) Do some testing by changing channels on all your inputs, try PIP and try watching LiveTV while recording something else.

 

12) If you're happy, I'm happy  :)  Enjoy!!



 

13) Changelog

v0.05 (02/17/05)
-Moved site (again). Andy did a great job of moving everything and setting up the original site - Andy
-URL is now http://www.lircsetup.com/lirc/multi - Andy
-Added info about changing DishNetwork remote codes - Pete
-Changed table fonts so they would fit better - Pete
-Added info on setting up multiple cards - Pete
-Fixed a bunch of typo's and bad grammar - Pete
-Changed BBClone's config so I'm not counting myself as hits - Pete
-Changed BBClone's timezone to my local - Pete

ToDo:
-Add ColorCoding to match Andy's page
-Design an "Entry" page
-Come up with a Logo or header design

14) Kudo's

To:
Andy Long - For turning my notes into the original how-to
Mark Shirley - For putting together the info on changing Dish Id's
Christoph Bartelmus - For answering numerous dumb questions

Return to main site

Last updated 02/17/2005

L10 Web Stats Reporter 3.15 LevelTen Hit Counter - Free PHP Web Analytics Script
LevelTen dallas web development firm - website design, flash, graphics & marketing