Difference between revisions of "How to make use of IrDA"
m (→Serial IR (SIR)) |
(remove some old crud) |
||
Line 23: | Line 23: | ||
== Fast IR (FIR) == | == Fast IR (FIR) == | ||
− | FIR is the preferred mode of IrDA operation and operates at a bandwidth of 4 Mbps | + | FIR is the preferred mode of IrDA operation and operates at a maximum bandwidth of 4 Mbps |
− | + | On modern distributions this should all be automatically handled by simply starting the idra service | |
===Kernel configuration=== | ===Kernel configuration=== | ||
Line 31: | Line 31: | ||
alias irda0 nsc-ircc | alias irda0 nsc-ircc | ||
− | |||
− | |||
Make sure that setserial is in right directory (e.g not in /usr/bin/setserial).After that if irdadump still gives nothing try: | Make sure that setserial is in right directory (e.g not in /usr/bin/setserial).After that if irdadump still gives nothing try: | ||
echo 1 > /proc/sys/net/irda/discovery | echo 1 > /proc/sys/net/irda/discovery | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Known problems == | == Known problems == |
Revision as of 11:48, 11 March 2009
The purpose of this document is to get the IrDA hardware in your ThinkPad operational, setting up communication to other devices is not covered. However, the external links section can prove useful for this. |
Serial IR (SIR)
SIR is limited to serial datarates up to 115.2Kb/s
On modern distributions all configuration might be taken care of automatically by starting the irda service # service irda start
. If not try the following;
To use it, run # irattach /dev/ttyS1 -s; modprobe ircomm-tty
Then turn on your IrDA-capable device and put it within range, and point your software (e.g., minicom) to /dev/irda0.
Kernel configuration
Edit /etc/modprobe.conf and add the following lines
alias tty-ldisc-11 irtty-sir alias char-major-161 ircomm-tty
Fast IR (FIR)
FIR is the preferred mode of IrDA operation and operates at a maximum bandwidth of 4 Mbps
On modern distributions this should all be automatically handled by simply starting the idra service
Kernel configuration
Edit /etc/modprobe.conf and add the following lines
alias irda0 nsc-ircc
Make sure that setserial is in right directory (e.g not in /usr/bin/setserial).After that if irdadump still gives nothing try:
echo 1 > /proc/sys/net/irda/discovery
Known problems
- If the FIR mode is not activated, attempts to load the nsc-ircc module will result in an error in syslog of "Wrong chip version ff".
- After suspend the nsc-ircc module needs to be manually reloaded
- If module reloading does not work after a suspend, try reactivating the IrDA port as well:
rmmod nsc_ircc echo disable > /sys/devices/pnp0/00\:0d/resources echo activate > /sys/devices/pnp0/00\:0d/resources modprobe nsc_ircc
- The value pnp0/00\:0d can vary - look for a id file containing IBM0071 or PNP0511, or for a resources file containing the appropriate irq/dma/io values, e.g., using
# grep 0x2f8 /sys/devices/pnp*/*/resources
.
- If you read something like "ttyS1: LSR safety check engaged!" and "irattach: tcgetattr: Input/output error" in the system log, try limiting the FIR max baud rate (echo 57600 > /proc/sys/net/irda/max_baud_rate). This did the trick for me when I was trying to synchronize my Ericsson T39m with my Thinkpad R51 (multisync, evolution-2.8, KDE 3.5.5, openSUSE 10.2).
Some other things you might want to do with IrDA
- add fast PPP support:
# modprobe irnet
- if needed, limit further the size of the transmit window
# echo 1 > /proc/sys/net/irda/max_tx_window
- set the connection speed to 4Mbit in FIR mode:
# echo 4000000 > /proc/sys/net/irda/max_baud_rate
LIRC and IrDA
Usually, IrDA ports are not compatible with LIRC, but you may have luck using lirc_sir. For some Laptops it is important, that you never try to load the nsc-ircc. Even when loading fails or you unload the module mode2 will not work.
If loading the lirc_sir module shows something like the following in # dmesg
output, you are lucky and can use LIRC with the IrDA port to remote control your ThinkPad.
lirc_sir: I/O port 0x02f8, IRQ 3. lirc_sir: Installed.
You might need to force the io and irq settings. For instance, if in your BIOS your Infrared IO is 0x03f8 and IRQ is 4, do the following when inserting the module:
modprobe lirc_sir io=0x03f8 irq=4
If it fails with "Device or resource busy", you may want to install the setserial tool and run it with # setserial /dev/ttyS0 uart none
or # setserial /dev/ttyS1 uart none
. After that lirc_sir should be loadable.
On a Thinkpad R40 running Ubuntu Feisty, I had to disable the nsc-ircc driver to give lirc first access to the IR port. I created a file in /etc/modprobe.d with
blacklist nsc-ircc install lirc_sir /bin/setserial /dev/ttyS1 uart none port 0 irq 0; \ /sbin/modprobe --ignore-install lirc_sir
You might also need to # modprobe actisys-sir
, # modprobe tekram-sir
, and # modprobe lirc-sir
if you are using the SIR on the thinkpad (modules are from kernel 2.6).
Also, do not forget to start the lirc daemon, otherwise no output will be given (you better try running it not as a daemon first, so you can see the output).
lircd -d /dev/lirc0 /etc/lircd.conf --nodaemon
You should see:
lircd: lircd(serial) ready
This means you are good to start # irrecord
or # xmode2
and check for input.
Once that shows a good output you can configure your remote control. then use it in applications like mplayer, xine, or KDE's remote controls server.
External Sources
- Linux-IrDA Project (External)
- Linux PCMCIA Project (External)
- tpctl homepage (External)
- Linux Infrared Remote Control (External)