The Linux Infrared Remote Control (LIRC) Project
Linux Infrared Remote Control (LIRC) allows you to use inexpensive
hardware to control your Linux PC with a TV remote control. Why would
you want to control your PC with a TV remote control? A number of
reasons are possible, the most obvious being MythTV, which
I wrote about
earlier for LJ.com. You might want to use LIRC for presentations,
so you can step out into the audience and still change slides on your
laptop. Or, LIRC can be used when you are keeping a machine out of the
way somewhere but still want to control it.
Some of the Options for Use with LIRC
As an example, an eatery not too far from me,
Linuxcaffe is planning to
set up a PC to run in-house displays. The box will
be hung just below the ceiling. Linuxcaffe owner David
Patrick wants the staff to be able to change displays on
the fly, without having to climb a ladder. With LIRC, this can be done.
Here, I am going to demonstrate how to build a LIRC system. For
hardware, you need an infrared receiver, which you might have already, and a
remote control. A small number of PCs come with an infrared receiver that
is supported by the LIRC software. Many laptops come with an IrDA standard
interface for doing infrared networking and some IrDA interfaces, but
not all of them work with LIRC. Many TV tuner cards come with an infrared
port that is supported by LIRC. In addition, Creative Labs used to produce
a series of CD-ROM drives that included an infrared port supported by
LIRC. If you don't already have an infrared port for your PC, however,
you need to look at other options, which I will get to shortly.
A small number of radio-based remote
controls have been made to work with LIRC, but
basically, LIRC is an infrared system. For remote
controls, almost any "universal" infrared remote
control can be made to work with LIRC. The only brand
of remote control that is notorious for its problems and
should be avoided is Bang & Olufsen.
Do give some thought as to how much control you want/need over your PC.
For example, if you are planning to do presentations for which your control
concerns amount to next/last slide, then a small remote you can
carry in your pocket may take priority over a remote with a lot of buttons.
If, on the other hand, you want to run a MythTV box, you probably want
all of the functions of a TV, DVD player and so on, meaning more buttons.
Thus, a larger remote is an acceptable trade-off. Either way, your options here
are wide.
The price for the remote can range from effectively free if you have an old VCR
remote up to a several hundred dollar color display screen remote that does
almost everything (see the Logitech Harmony series of remote controls). With
MythTV in mind, I got a factory refurbished RCA remote with batteries at an
electronics clearance shop for less than five dollars.
Assuming you don't already have an infrared detector, you have to buy or
build one. You can find plans for several infrared detectors on the
LIRC Web site, including plans
that use the serial port, a USB port or the parallel port. Here, I
walk-through building the simple serial port detector inside a DB9 hood. This serial port design
does not follow the RS-232 standard fully, but it is close enough for most
desktop PCs. When it comes to laptop computers, which often don't fully
follow the RS-232 standard themselves, this design may be problematic. The circuit
diagram is laid out in Figure 1. In Figure 2, you can see one possible
layout on perfboard.
Figure 1. Circuit Diagram Figure 2. Perfboard Layout
To build your own detector, you need a few parts:
- IC1 - SFH 5110-38 Infrared detector, or
compatible - IC2 - 78L05 voltage regulator
- D1 - 1N4148 diode
- R1 - 4.7 K ohm 0.25 watt carbon
resistor - C1 - 4.7 uF 16 volt electrolytic
capacitor - DB9 female solder connector
- DB9 hood
- Miscellaneous: perfboard, hookup wire, rosin core
solder, flux remover
You can expect that finding a suitable infrared detector will be
something of a pain. The rest of the parts are quite common and easy
to locate. The total cost for all of the above parts should be under $15.
Testing the Mystery Infrared IC
In my case, I had some infrared detector ICs
left over from a project I made several years ago. I no
longer had the data sheets, however, and the markings on the
ICs were not useful. So, I needed to be certain of the
pin-outs. On my local user group mailing list, Peter
L. Peres suggested setting up the circuit shown in
Figure 3 on a prototyping board. The idea behind this is you
can set up various possible connections with the
voltages involved set so low that there is little
chance the IC will be damaged. After setting up each
combination, fire a known good infrared remote control
at the sensor IC and see if the LED flickers. For the
test setup, you ideally want a 5 mA red LED; otherwise,
the flicker may be very faint. Regardless, you should
do these tests in a dimly lit room.
Figure 3. Test Setup
The pin-outs for my mystery infrared detectors are the
same as the Osram SFH-5110 series of detectors. The
layout of that series assumes a SFH-5110 or compatible
detector. This circuit can be made to work with dozens
of detectors, but not all have the same connection layout,
so do double check your own compatability.
In addition to the above parts, you need to have a few
tools available:
- Low wattage soldering iron (20-40 Watts)
- Soldering iron stand
- Wire cutter
- Wire stripper
- Small screwdriver
- Small saw
- Optional but recommended: clip-on heat sink, third-hand
parts holder, solder remover tool
When it comes to soldering irons, 100 and 200 watt versions are available
for people who do things such as make stained glass windows. The problem
with these high-power soldering irons is they get very hot very fast,
and computer parts can be destroyed with too much heat. Therefore,
don't use a soldering iron with more than 40 watts, and I recommend
using one closer to 25 watts. The "cold heat" soldering irons promoted on
television have their place for some jobs, but that place isn't here. Among
several problems they have, their tips are much too big for the sort of
small-work precision this project requires.
Heat is an issue throughout this project. As noted, the
parts in this project can be destroyed by too much
heat, yet we need enough heat to melt solder. People with a lot of experience
soldering could bond all of these parts together
quickly enough that heat doesn't build up, so they could get
away without using a heat sink. But as a hobbyist who solders
only occasionally, I find that a clip-on heat sink buys a lot of leeway
and saves a lot of parts from destruction.
Several Web sites are dedicated to explaining how to make good solder
joints. I suggest referring to
this
one
or
this
one.
Flux is a cleaner put into the middle of the
solder to help ensure good solder connections. Two kinds of
flux-containing solders are on the market, acid and rosin core solders.
Acid core solder is designed for things such as radiator repairs; it should
be avoided at all costs for electronic work.
Respect the things you are dealing with; if handled carelessly, the
soldering iron can burn. Most solders sold in North America contain
lead, a metal with known health issues, so you should try to limit your
exposure to it. Flux remover typically contains alcohol, so don't
use it near an open flame or other heat sources. Finally, the flux in the
solder burns off as you work, creating tiny wisps of smoke. So work
in a well-ventilated and well-lit area.
Do collect in advance the parts and tools you need for the project, as you see in
Figure 2. Because I was doing my work at the kitchen table, I laid out some
newspapers to protect the table surface.
The Hardware
It doesn't matter which way you install the resistor, but for all of the other
parts, position matters. The capacitor has a minus sign beside one of
the wires to identify which wire is which. The diode has a black line
at one end to identify which end is which. When looked at from above,
the 78L05 voltage regulator looks like a half moon, and where the wires
are relative to the flat sides matters. There is a lens on one side
of the infrared detector, and where the wires are relative to that
lens counts. Numbers should be molded beside the pins on the
DB9 connector.
The Tools and Parts Laid Out for Building a
Detector
Perforated board, or perfboard, is a wonder for hobbyist
electronics work. It is a thin piece of non-conductive, heat tolerant
plastic with holes drilled into it at 0.1" intervals. I use perfboard
that has small copper rings bound to the board around each
hole, which helps ensure the parts stay attached to the
board.
The first step is to cut a piece of perfboard down to
the right size. I used a small hacksaw for this job,
but a Dremel or other small
power-cutting tool can be used. We need a grid that is
4x5 holes, so cut along a line six holes in from one
edge and five holes in from the other edge.
The first step is to attach the perfboard to the
female DB9 connector. Place the board so that it is between
the top and bottom row of pins and the copper rings are
lined up with the solder cups for pins 6 through 9. Then, solder
pins 6, 8 and 9 to the copper rings on the board.
The Start of Construction with the
Perfboard Attached to the DB9
You need to thread the wire from the end of the diode that does not have
the black line on it through a hole (C1) in the perfboard and connect it
to pin 7 in the DB9 connector. Trim the diode wire so it fits into the
DB9 connector. When positioning the diode, remember that you don't have a lot
of space above the perfboard, so keep everything close to the board. Clip
the heat sink to the wire that goes into the diode and solder it into
the DB9 connector. Wait a minute for things to cool down, and then solder the
diode to hole C2. Run the wire from the black line end of the diode through
hole D1, up to hole D2 and trim off the excess wire. Reposition
the heat sink, solder hole D1 and then remove the heat sink.
The resistor goes in next. Place one end in hole D2 and the other in D3.
Remember that you need to keep the resistor close to the board, but
leave enough room for a wire to get into hole D4. The resistor has a high
heat tolerance, so I skipped using the heat sink for this part. Position
the resistor wire that comes in through hole D2 so that it ends by hole
C2, and trim the excess. The resistor wire that goes into hole D3 should
end by hole D4. Leave hole D3 alone for now, and solder hole D2.
Using a piece of wire trimmed from the diode, we make a little jumper. The wire
needs to be bent so that one end goes into pin 5 of the DB9 connector,
through hole B1 and then up, so it's just touching hole B4. Solder pin 5 in
the DB9 connector and hole B1.
Now, put the voltage regulator into holes A2, A3 and A4. Remember
to pay attention to the orientation of the regulator. Leave the wires
on the component side long enough that you can clip in the heat sink
and later fold the voltage regulator over, so it fits close to the
board. Clip on the heat sink, solder holes A2, A3 and A4 and then remove
the heat sink.
Part Way Through Construction with the
Heat Sink in Place
The next part is the capacitor. Pay attention to which wire is negative, and
leave enough space for the heat sink and to fold the capacitor over. Clip
on the heat sink, solder holes A3 and B3 and remove the heat sink.
Our second jumper comes next, made from a short piece of hook-up wire
about 0.75" (2 cm) long. Trim the insulation off both ends and
solder one end into pin 1 of the DB9 connector. The other end goes to
hole D4. It may be a tight fit, and you may need to shift the resistor
to fit things, which is why the resistor wasn't soldered earlier. Once
the jumper is in place, solder the resistor at hole D3.
Two Almost-Complete Infrared Detectors
Finally, we come to the infrared sensor. You are
going to have to do some test fittings to make sure that
the leads are long enough so the sensor is just
behind the hole in the plastic DB9 hood. This fitting
also may require that you push the capacitor slightly
to one side, out of the way. Once the length is
adjusted, bend the wire that goes in though hole C4 so
it goes across to hole D4. Clip on the heat-sink, solder holes A4, B4,
C4 and D4 and remove the heat-sink.
Now you might want to take a minute to clean up. Apply some flux remover,
per the manufacturer's instructions, to the solder side of the perfboard
to clean away any flux residue left from the assembly.
The last construction job is to assemble the DB9 hood
around the project. Once that's done, plug the interface into the
serial port on your computer and start the machine.
That finishes the hardware part of the project.
A Close-Up of a Completed DetectorThe Software
I cheated a little for the software and used a short cut
made possible by Jarod Wilson, who has done a great job of
documenting MythTV and
Fedora Core 4. After you have used up2date to bring your system
up to date with the latest security patches, start up a terminal session
and enter:
su <enter the root password> echo "export KVER=\`uname -r\`" >> /etc/profile.d/kver.sh cd /etc/yum.repos.d/ wget http://wilsonet.com/mythtv/atrpms.repo wget http://wilsonet.com/mythtv/freshrpms.repo yum install lirc-kmdl-$KVER yum install lirc-lib wget --no-check-certificate https://svn.wilsonet.com/svn/mythtvology/trunk/rc.sysinit-mm.diff patch /etc/rc.d/rc.sysinit < rc.sysinit-mm.diff yum install lirc
Assuming that you are connecting the detector to ttyS0,
put the following lines in file /etc/modprobe.conf:
install lirc_serial /bin/setserial /dev/ttyS0 uart none ; /sbin/modprobe --ignore-install lirc_serial alias char-major-61 lirc_serial options lirc_serial irq=4 io=0x3f8
If you are connecting the detector to ttyS1, enter the following
lines:
install lirc_serial /bin/setserial /dev/ttyS1 uart none ; /sbin/modprobe --ignore-install lirc_serial alias char-major-61 lirc_serial options lirc_serial irq=3 io=0x2f8
To test that you have a working infrared detector,
type mode2. Point a working remote
control at your detector and start pressing buttons. If
you see something like:
pulse 1187 space 596 pulse 598 space 623 pulse 553 space 643 pulse 630 space 603
you have a working detector. If not, it's time to open up the
hood and start troubleshooting. The first thing to check for
is cold solder joints, where the solder has not bonded properly
with the parts. Look for connections with a dull surface. Clip the
heat sink to the appropriate nearby part, reheat those
joints and remove the old solder with your solder remover. Then,
re-solder using fresh solder.
Two Fully Complete Detectors
Assuming things do work now, you need to start
configuring your system to work with the remote. But
that is another significant project, one for another article.
Colin McGregor works for a Toronto area charity, does
consulting on the side and has served as President of
the Toronto Free-Net. He also is secretary for and
occasional guest speaker at the Greater Toronto Area
Linux User Group meetings.










This week 5 lucky Members will receive a copy of The Official Ubuntu Server Book by Benjamin Mako Hill and Linux Journal's very own Kyle Rankin. No entry necessary. Check back here early next week to find out who the lucky Online Members are.




Comments
A minor detail, but it's
A minor detail, but it's called a DE9 connector, not a DB9 :)
Actually, it is called a DB9
Actually, it is called a DB9 connector... but again... minor point.
I'll jump in on this just
I'll jump in on this just because I can :)
http://en.wikipedia.org/wiki/D-subminiature
IR Detector
I Could not find where the software is to use with the IR Detector. Do I just download the mythtv software or is there a specific software for the IR detector. I just need the software for the IR detector. I do not plan to use the myth tv stuff.
IR Detector software
It's lirc. Go to http://www.lirc.org for more information.
For a better usage of the 5V regulator
The capacitor should be connected to the input pin of the regulator instead of the output pin.
This way, you'll get a much better 5V supply.
creative infra
Hi Did you manage to get it working with an creative infra drive. I have been struggling for the same for days now. It requires it to have the ide-scsi module loaded; and then use scsi inquiries to do the same. Would this work with oldish mother boards / very old Creative Infra drive ??
Actually, you need a cap at
Actually, you need a cap at both the input & the output for regulation and stabilty, respectively. A 1uF at the input and a 0.1uF at the output is fine for this.
Make me one!!
That serial device looks really cool. And while it appears to be simple enough, I was born with five thumbs on each hand and soldering irons hate me. Would there be any volunteers to make one for me? :) (How can someone contact me though? I left my valid email address but it won't show publically...)
maybe, i don't know, type it
maybe, i don't know, type it in the big comment box
Check out this one:
Check out this one: http://www.igalaxie.com/ltt/mp3/ir/index.html.
I added a little led, to blink when I receive some IR signal (this is great for debuging and every days job)
Why not radio?
IR is quite anitquated. It's cool for TV's and video where you have line of sight, but not much use for things like controlling music from another room.
Why not go radio? Or WiFi? Or Bluetooth? Linux should take the lead on some of these instead of just playing catchup.
RF remote with Lirc
I use an rf remote, the X10 Mp3Anywhere remote with Lirc.
Where do you get the appliances ?
1) Where do you get a 'radio' capable remote control ?
2) Where do you get a 'WiFi' capable remote control ?
3) Where do you get a 'Bluetooth' capable remote control ?
LIRCD allows you to interact with a Linux based computer using the same technology as you use to interact with your TV/VCR/DVD/Stereo/... equipment.
If you were to say use something like a Nokia 770 as your remote (hope the battery does not go flat) to control all your home AV equipment, then you need something to convert it's signals from Radio/WiFI/Bluetooth back to IR to allow you to interact with the end appliances.
IR may be old, but it's cheap, pervasive, reliable, secure, and proven to work.
Secure?
I think you might need to re-evaluate that statement:
www.hackaday.com/entry/1234000950059571/
www.schneier.com/blog/archives/2005/08/hacking_hotel_i.html
www.i-hacked.com/content/view/176/44/
A simple brute force attack reneders every "secure" ir system useless. For example, most garage door systems work off sending an 8 bit message to the reciever. If you brute force this, that means that you only have to send out 256 guesses ( do you know how fast your computer can count to 256). Furthermore, the most "secure" ir systems use 16 bits which can be brute forced with 64k attempts which at most will take about 3 mins to break. Just a little food for thought.
Antiquated but affordable
I suppose the problem is to find a device that will be able to send information to the PC via your preferred method. Currently, finding an infra-red remote is fairly easy, not to mention cheap.
Sure it's a great ID. I personnally love my UHF remote on my PVR, but finding those remotes is not easy, and I didn't even look for an appropriate receiver.
Post new comment