The Infrared-HOWTO provides an introduction to Linux andinfrared devices and how to use the software provided by the Linux/IrDAproject. This package uses IrDA(TM) compliant standards. IrDA(TM) is anindustrial standard for infrared wireless communication, and most laptops madeafter January 1996 are equipped with an IrDA(TM) compliant infraredtransceiver. Infrared ports let you communicate with printers, modems, faxmachines, LANs, and other laptops or PDAs. Speed ranges from 2400bps to 4Mbps.
The Linux/IrDA stack supports IrLAP, IrLMP, IrIAS, IrIAP, IrLPT, IrCOMM, IrOBEX, and IrLAN. Several of the protocols are implemented as both clients and servers. There is also support for multiple IrLAP connections, via several IrDA(TM) devices at once. The Linux/IrDA project started at the end of 1997 and its status is still experimental, so please don't expect every feature working straight. AFAIK Linux/IrDA is the _only_ open source IrDA implementation currently available.
Remote Control (RC) via infrared is the aim of the Linux Infrared Remote Control - LIRC project, and also described in this HOWTO.
Copyright (c) 2000-2003 Werner Heuser.For all chapters permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being "Preface" and "Credits", with the Front-Cover Texts being "Linux Infrared HOWTO", and with the Back-Cover Texts being the section "About the Document and the Author". A copy of the license is included in the section entitled "GNU Free Documentation License".
Better red, than dead.
This document is based on the
The document is included in the
The latest version of this document is available at
Mathieu Arnold provides an earlier version of the
Please feel free to contact me for comments or questions about the HOWTO. I know this material is not finished or perfect, but I hope you find it useful anyway. For other questions and current information about Linux/IrDA please ask in the Linux/IrDA mailing list as explained below.
The latest kernel I used is 2.4.19 and the latest irda-utils version is 0.9.15. I tried to check all information but I don't have all the necessary infrared hardware yet, so if something doesn't work for you, please don't blame me.
Former kernel and
I have included all the changes to be in sync with the 2.4.x kernel series and the latest Linux/IrDA development now. Therefore some testing and proof-reading has still to be done. So please don't expect anything working straight out of the box.
The project started at the end of 1997 with the name Linux/IrDA. Due to some troubles with the name IrDA, which is trademarked by the Infrared Data Association IrDA , the name was changed to Linux/IR. At the end of 1998 the the relationship between both became better and the name was changed to Linux/IrDA again. Since February 1999 the project is an official member of IrDA .
Companies and developers which are interested in joining these efforts should contact the at Linux/IrDA Project or me at <wehe_at_tuxmobil.org>.
The Linux/IrDA project has undertaken some changes in the program code, which you should know to understand some possible confusions with older documentation, which you shouldn't use anyway.
For 2.0.x kernels Linux/IrDA support worked in a totally other way (only user-land programs) and is no longer supported by the Linux/IrDA project. Since 2.1.131 and 2.2.0 it is part of the kernel.
Some caveats in the documentation have been caused by changes of the following parameters. I hope I have got them alright now, they confused me sometimes, too. The new style stuff works from Kernel 2.2.15 / 2.4.0. You should always use current Kernel, irda-utils and documentation.
the major device number of the irda device changed from 61 to 161 (as far as I remember there was also a major number 60 around, too), also there have been different and now obsolete minor device numbers around, see the list of current device numbers below
the
the module name
the device names
IrLPT is handled by IrCOMM now. So all references to
From irda-utils 0.9.15 the behaviour of the
The commands provided by the irda-utils package are the basic set of tools to get a working IrDA connection. The other tools (e-Squirt, IrNET, ..) are optional. Since version 0.9.15 manual pages are included. Most current manual pages are at
Use the latest source of irda-utils available at Linux/IrDA Project. Also recommended is the glibc library. You may find out the current version with
Untar the package with
Do a
Do a
Do a
Sometimes, when you compile the IrDA stack or some various IrDA package, you may have the compiler complaining the things such as IRLMP_HINT_MASK_SET or IRDAPROTO_ULTRA are not defined. This is because of a mess related to kernel headers and the way most distributions deal with it. If youhave the 2.4.X kernel source lying around, the fix is simple. Just copy the header irda.h from the kernel to your include directory
NOKUBI Takatsugu provides an irda-utils Debian package . This package is part of the Potato Debian release. Also Mandrake since 6.1, Redhat since 6.1 and SuSE since 6.1 contain RPM packages of the irda-utils. Some caveat with precompiled packages might be some incompatibilities between kernel version and appropriate package version.
If you are one of the lucky people which have a FIR chipset that is supported, then you don't need to use irattach anymore. Now you just have to modprobe the driver.
A program that displays all the frames sent, and received on the infrared link.
One advantage of implementing IrDA device drivers as network device drivers is that you should be able to attach sniffers to the device (or actually the packet type). That way, it is possible to use a really handy utility called irdadump (instead of tcpdump). This will make debugging MUCH easier. Linux-2.2 implements the BPF (Berkeley Packet Filter), so its possible to filter out exactly the frames you want to see.
Note: You probably have to be root for using
Here is a sample output of a small session between Linux and a Palm III. This log shows that the local irobex layer is not responding, so the Palm III sends a disc frame.
Makes it possible to try and ping a remote device using IrDA test frames. Not all devices implements support for test frames. This is a program similar to ping(8). It sends IrDA test frames (added some userdata which contains the frame number and the time the frame was sent). You can also change the size of the frame by using the -s option. You must supply an IrDA device address, and not an IP address. You have to be able to get that device address by using irdadump.
Here is one output sample (pinging an ACTiSYS IR-100M):
From : Christian Gennerat I use an alias which does not use any parameter (in $HOME/.bashrc):
Implements support for the mouse and keyboard protocol as used by the Tekram IR-660 infrared docking station. For details on how to use external keyboards with Linux PDAs see below.
Tries to find out which FIR IrDA chipset your machine is using. Try out findchip -v to check it out. For other methods to detect the chipset see below.
A collection of programs which uses IrDA sockets.
File transfer program for exchanging files with your Psion PDA.
This directory contains the configuration files, e.g. for the serial port of the SIR driver
The overall goal of the
This
Please read the Kernel-HOWTO to get more information about the compilation process. Get the latest patches from
You'll find the Linux/IrDA Kernel code in:
/usr/src/linux/net/irda (protocol stuff)
/usr/src/linux/drivers/net/irda (device drivers)
/usr/src/linux/include/net/irda (header files)
Make sure you use kernel 2.4.x sources. If unsure about your kernel version try
Get the latest kernel patch from the Linux/IrDA project . Or from the Alan Cox kernel series . Put it into For latest drivers maybe experimental support has to be enabled CONFIG_EXPERIMENTAL.
Enable sysctl in "General Setup" CONFIG_SYSCTL.
You should have proc file system support CONFIG_PROC_FS.
Also serial support for the SIR features CONFIG_SERIAL.
I am not sure whether there has to be printer support for using a printer with Linux/IrDA CONFIG_PRINTER. But I assume this feature is not necessary.
Networking support _must_ be enabled CONFIG_NET.
Make sure you have module support CONFIG_MODULES in your kernel! Test it e.g. with
Also kerneld support CONFIG_KERNELD. But kmod (CONFIG_KMOD) also works. A monolithic kernel seems to work, too. But modules are highly recommended!
To use irdadump you probably have to set CONFIG_PACKET.
If you only apply the Linux/IrDA patch, you should not have to do a make clean, so that should save you some time. I suggest you do something like this:
The following is from
CONFIG_IRDA Say Y here if you want to build support for the IrDA (TM) protocols. The Infrared Data Associations (tm) specifies standards for wireless infrared communication and is supported by most laptops and PDA's.
To use Linux support for the IrDA (tm) protocols, you will also need some user-space utilities like irattach . For more information, see the file Documentation/networking/irda.txt. You also want to read the InfraRed-HOWTO, available at
This support is also available as a module called irda.o. If you want to compile it as a module, say M here and read Documentation/modules.txt.
IrDA Cache last LSAP
CONFIG_IRDA_CACHE_LAST_LSAP Say Y here if you want IrLMP to cache the last LSAP used. This makes sense since most frames will be sent/received on the same connection. Enabling this option will save a hash-lookup per frame.
If unsure, say Y.
IrDA Fast RR's
CONFIG_IRDA_FAST_RR Say Y here is you want IrLAP to send fast RR (Receive Ready) frames when acting as a primary station. This will make IrLAP send out a RR frame immediately when receiving a frame if its own transmit queue is currently empty. This will give a lot of speed improvement when receiving much data since the secondary station will not have to wait the max. turn around time before it is allowed to transmit the next time. If the transmit queue of the secondary is also empty the primary will back off waiting longer for sending out the RR frame until the timeout reaches the normal value. Enabling this option will make the IR-diode burn more power and thus reduce your battery life.
If unsure, say N.
IrDA Debug
CONFIG_IRDA_DEBUG Say Y here if you want the IrDA subsystem to write debug information to your syslog. You can change the debug level in
If unsure, say Y (since it makes it easier to find the bugs).
IrLAP Compression support
CONFIG_IRDA_COMPRESSION Compression is _not_ part of the IrDA(tm) protocol specification, but it's working great! Linux is the first to try out compression support at the IrLAP layer. This means that you will only benefit from compression if you are running a Linux <-> Linux configuration.
If you say Y here, you also need to say Y or M to a compression protocol below.
IrLAP Deflate Compression Protocol (EXPERIMENTAL)
CONFIG_IRDA_DEFLATE Say Y here if you want to build support for the Deflate compression protocol. The deflate compression (GZIP) is exactly the same as the one used by the PPP protocol.
If you want to compile this compression support as a module, say M here and read Documentation/modules.txt. The module will be called irda_deflate.o.
IrLAN Protocol But currently the IrLAN protocol is no longer maintained by the Linux/IrDA core team.
CONFIG_IRLAN Say Y here if you want to build support for the IrLAN protocol. If you want to compile it as a module (irlan.o), say M here and read Documentation/modules.txt. IrLAN emulates an Ethernet and makes it possible to put up a wireless LAN using infrared beams.
The IrLAN protocol can be used to talk with infrared access points like the HP NetbeamIR, or the ESI JetEye NET. You can also connect to another Linux machine running the IrLAN protocol for ad-hoc networking!
IrCOMM Protocol
CONFIG_IRCOMM Say Y here if you want to build support for the IrCOMM protocol. If you want to compile it as a module (you will get
IrTTY IrDA Device Driver
CONFIG_IRTTY_SIR Say Y here if you want to build support for the IrTTY line discipline. If you want to compile it as a module (irtty.o), say M here and read Documentation/modules.txt. IrTTY makes it possible to use Linux's own serial driver for all IrDA ports that are 16550 compatible. Most IrDA chips are 16550 compatible so you should probably say Y to this option. Using IrTTY will however limit the speed of the connection to 115200 bps (IrDA SIR mode)
If unsure, say Y.
IrPORT IrDA Device Driver
CONFIG_IRPORT_SIR Say Y here if you want to build support for the IrPORT IrDA device driver. If you want to compile it as a module (irport.o), say M here and read Documentation/modules.txt. IrPORT can be used instead of IrTTY and sometimes this can be better. One example is if your IrDA port does not have echo-canceling, which will work OK with IrPORT since this driver is working in half-duplex mode only. You don't need to use
If unsure, say Y.
Winbond W83977AF IrDA Device Driver
CONFIG_WINBOND_FIR Say Y here if you want to build IrDA support for the Winbond W83977AF super-io chipset. This driver should be used for the IrDA chipset in the Corel NetWinder. The driver supports SIR, MIR and FIR (4Mbps) speeds.
If you want to compile it as a module, say M here and read Documentation/modules.txt. The module will be called w83977af_ir.o.
NSC PC87108 IrDA Device Driver
CONFIG_NSC_FIR Say Y here if you want to build support for the NSC PC87108 and PC87338 IrDA chipsets. This driver supports SIR, MIR and FIR (4Mbps) speeds.
If you want to compile it as a module, say M here and read Documentation/modules.txt. The module will be called nsc-ircc.o.
Toshiba Type-O IR Port Device Driver
CONFIG_TOSHIBA_FIR Say Y here if you want to build support for the Toshiba Type-O IR chipset. This chipset is used by the Toshiba Libretto 100CT, and many more laptops. If you want to compile it as a module, say M here and read Documentation/modules.txt. The module will be called toshoboe.o.
SMC IrCC (Experimental)
CONFIG_SMC_IRCC_FIR Say Y here if you want to build support for the SMC Infrared Communications Controller. It is used in the Fujitsu Lifebook 635t and Sony PCG-505TX. If you want to compile it as a module, say M here and read Documentation/modules.txt. The module will be called smc-ircc.o.
ALi M5123 FIR Controller Driver (Experimental)
CONFIG_ALI_FIR Say Y here if you want to build support for the ALi M5123 FIR Controller. The ALi M5123 FIR Controller is embedded in ALi M1543C, M1535, M1535D, M1535+, M1535D South Bridge. This driver supports SIR, MIR and FIR (4Mbps) speeds.
If you want to compile it as a module, say M here and read Documentation/modules.txt. The module will be called ali-ircc.o.
Serial dongle support
CONFIG_DONGLE Say Y here if you have an infrared device that connects to your computer's serial port. These devices are called dongles. Then say Y or M to the driver for your particular dongle below.
Note that the answer to this question won't directly affect the kernel: saying N will just cause this configure script to skip all
ESI JetEye PC Dongle
CONFIG_ESI_DONGLE Say Y here if you want to build support for the Extended Systems JetEye PC dongle. If you want to compile it as a module, say M here and read Documentation/modules.txt. The ESI dongle attaches to the normal 9-pin serial port connector, and can currently only be used by IrTTY. To activate support for ESI dongles you will have to start irattach like this:
ACTiSYS IR-220L and IR220L+ dongle
CONFIG_ACTISYS_DONGLE Say Y here if you want to build support for the ACTiSYS IR-220L and IR220L+ dongles. If you want to compile it as a module, say M here and read Documentation/modules.txt. The ACTiSYS dongles attaches to the normal 9-pin serial port connector, and can currently only be used by IrTTY. To activate support for ACTiSYS dongles you will have to start irattach like this:
Tekram IrMate 210B dongle
CONFIG_TEKRAM_DONGLE Say Y here if you want to build support for the Tekram IrMate 210B dongle. If you want to compile it as a module, say M here and read Documentation/modules.txt. The Tekram dongle attaches to the normal 9-pin serial port connector, and can currently only be used by IrTTY. To activate support for Tekram dongles you will have to start
Greenwich GIrBIL dongle
CONFIG_GIRBIL_DONGLE Say Y here if you want to build support for the Greenwich GIrBIL dongle. If you want to compile it as a module, say M here and read Documentation/modules.txt. The Greenwich dongle attaches to the normal 9-pin serial port connector, and can currently only be used by IrTTY. To activate support for Greenwich dongles you will have to insert
Parallax Litelink dongle
CONFIG_LITELINK_DONGLE Say Y here if you want to build support for the Parallax Litelink dongle. If you want to compile it as a module, say M here and read Documentation/modules.txt. The Parallax dongle attaches to the normal 9-pin serial port connector, and can currently only be used by IrTTY. To activate support for Parallax dongles you will have to start irattach like this
Old Belkin dongle
CONFIG_OLD_BELKIN_DONGLE Say Y here if you want to build support for the Adaptec Airport 1000 and 2000 dongles. If you want to compile it as a module, say M here and read Documentation/modules.txt. The module will be called old_belkin.o. Some information is contained in the comments at the top of drivers/net/irda/old_belkin.c.
Note:
This survey of module options was generated with the
There might be some other device number necessary if you want to use the
First you should put your IrDA devices in range. Though it might be possible that the Linux/IrDA service detects every new device automagically I only have good experience with the devices in range during the configuration process.
Keep your infrared devices together in a range below one meter and an angle of 30 degree. There has to be a direct line of sight between them. If this is not possible, you may use a mirror (an unused M$ CD should work quite good).
Add the following lines to your Then do a
Note: With Debian GNU/Linux however you shouldn't edit
Have a look into the files in
Make sure your infrared port is enabled in the BIOS and check what interrupt and port address it uses. With some laptops it seems necessary to have Microsoft-Windows installed to be able to set BIOS parameters.
I have got reports, that connected to a docking station the infrared port was disabled on some laptops.
Please decide first whether you want to set up Irda either in SIR or in FIR mode. It is recommended to start with SIR.
Choose the ttySx according to your SIR port. Hint:
To get the SIR "serial" device have a look into the BIOS. Then run
If you don't succeed with SIR (which seems a rare case) you may try FIR. First look up the BIOS. To avoid some conflicts with serial devices you should do
From Florian Lohoff You should also set "port 0x0 irq 0" otherwise you will see interestingeffects if there is suddenly a different S1 e.g. by insertinga modem PCMCIA card. The serial driver will then touchthe OLD ports without having acquired those which will causethe irda stuff to die/hang. This is a bug i havent been ableto find in the serial driver but it definitlyexists (Put a printk into the serial_out serial_in stuff).
Is some cases IRQ conflicts may occur, especially conflicts with sound, PCMCIA or the hotplug system have been reported. Check
Most important, you must sync your disks!!! Maybe you have to reboot your machine. Have you read the disclaimer?
There are three sorts of low level drivers: SIR, FIR and dongle for machines without an in-built InfraRed port. To start with Linux/IrDA I recommend to use the SIR method.
Load the modules
On the "server" side do pppd /dev/ircomm0 LOCAL_IP:REMOTE_IP On the "client" side do pppd /dev/ircomm0 .
You may now test the connection with
There are three sorts of low level drivers: SIR, FIR and dongle.
Try to find out which serial port is used by the IR device. You may do so by watching the output of If this is not the case, you either don't have infrared support enabled in the BIOS or the SIR mode of your infrared device is not detected by the kernel. Currently I know only two laptop models with this effect, the HP OmniBook 800 and the Toshiba Libretto models. I am not sure whether PnP support effects the detection of the IR port. If you are unsure try it out and let me know the results. Maybe you can use FIR mode if SIR doesn't work.
In some situations you may have to use
If you don't use
Do
A look into /var/log/messages should show the entry "Serial connection established" now.
Give
Even more information you can get with
The IrDA(TM) standard knows three kinds of speeds:
SIR = Standard IrDA, up to 115kbps IrDA,
MIR = Medium Speed IrDA,
FIR = Fast IrDA (4Mbps),
VFIR = Very Fast IrDA(16Mbps), seems to become a future standard
Up to 115.200bps (SIR) many (probably all) infrared controllers work like a serial port and use a RZI (return to zero, inverted) modulation. Not every infrared controller supports 4Mps (FIR), up to 4Mbps they have to use 4PPM (4 pulse position) modulation technique. Currently there are two FIR chips supported: NationalSemiConductor NSC PC87108 e.g. used in IBM Thinkpad 560X and Winbond W83977AF (IR) FIR chip e.g. used in the Corel Netwinder PC. You may start the FIR service by loading the according module. Linux/IrDA will probe your hardware then. More drivers are under development.
So what speeds can you expect? Using SIR, you should be able to get about 10 Kbytes/s. Using FIR (4Mbps) you can get over 300 Kbytes/s (if you are lucky).
The currently supported dongles are the Extended Systems Inc. ESI-9680 JetEye, the Tekram IRmate 210B, the ACTiSYS IR220L and 220L+, the Greenwich GIrBIL. dongle.
Dag Brattli wrote (modified by wh): "To use dongles you have to do something like this: PS: I would not try to turn the two dongles against each other, since I really don't know how the stack would react :-) ... Since I don't have any of these new ACTiSYS 220L+ dongles, I'm not able to test it. Since the new dongle has support for one extra speed (38400bps), you must specify the dongles differently with The current implementation of dongle support does not have any state associated with it, so its not possible to use both ACTiSYS dongles (220L and 220L+) at the same time (connected to two serial ports) for now. If someone needs to be able to do so, please mail me (Dag Brattli) and I will think about it!"
Note: When I tried to use an infrared modem (Swissmod 56Ki, manufactured by Telelink AG) connected to my laptop (IrDA works with Window$95 only, due to non standard hardware) I had to remove the infrared support in the BIOS to get it working!
Dag Brattli: "It is now possible to use
Alvin Loh: "Anyone with a ESI 9680C can use both parallax's and ESI's signalling scheme, meaning they can use Parallax's driver with ESI9680C to work. "
Not every USB dongle does work. For details see the dedicated chapter below IrDA and USB.
Support for the ACTiSYS IR2000 dongle has been implemented in a file called pc87108 which you can either compile into the kernel or
From James I have this description about setting up the hardware: There are two configurations, a five pin in line connector and a 6 pin DIL (at the end of a 18 pin DIL header). Basically any IrDA conpatible transceiver will work (I have a stack of old IRM3001 these are now obselete) you need to hook a capacitor (use a tantalum about ~1uF) between 5V and 0V near the transceiver and then connect everthing else up (RX->RX, TX->TX, 5V->5V, and 0V-0V). If you don't like soldering irons, lots of companies do sell IR modules for the 5 pin connectors that fit into a hole in your case.
Prepare Linux/IrDA as described above. Especially check for the existence of
The
With the To get a list of paths to your ppd files use
Of course other printing systems will also work, e.g. you may edit
The better way is to change your
For easy printer setup you may use a printing software like APSFILTER, MagicFilter EZ-Magic (with RedHat there should also be a GUI for this purpose). Make a copy of
Example for APSFILTER with a HP 6P (non-postscript, HP 6MP is with postscript). The two relevant questions are: "Do you have a (s)serial or a (p)arallel printer interface?" Answer "p" "What's the device name for your parallel printer interface?" Answer "/dev/irlpt0"
Restart the print daemon with kill -HUP <PID of lpd>. If you use another print daemon choose the according command.
You might connect your Linux box using IrLAN to another network device such as a Linux box with IrLAN, a HP NetBeamer or a Microsoft-Windows95 box with Infrared Network Device support. But currently this protocol is no longer maintained by the Linux/IrDA core team.
As far as I know this device uses IrLAN. But currently this protocol is no longer maintained by the Linux/IrDA core team.
PPP Rui Oliveira wrote: "This is just to let you know that with the latest IrCOMM patch (050998) of Takahide Higuchi, I managed to HotSync and establish a PPP connection between my Palm III and my Linux box. I'm using IRLink (from IsComplete) to redirect the serial port to ir. Communication with Over the PPP connection I used ping, ssh, and http. Strange is however the fact that discovery must be enabled (maybe obsolete) . Otherwise, even with an active IrCOMM connection, the link goes down due to a IrLAP disconnect. The pilot-link tools (used for Linux/Palm synchronization) also ran flawlessly over IrCOMM via
IrCOMM Jon Howell wrote: "I thought I'd try IrCOMM, since the Palm III can be made to reroute serial info to the IR port (using IrLink from IS/Complete, available at
Wessel de Roode wrote: The Palmpilot is default locked on 57k. You can however if you write your own software for the Pilot, use the 115k line settings. I quote a part from the irlib.h: Peter Pregler reported: If the Palm enters the range of the irda-device a popup appears with the text "Transmission: waiting for sender"
Ron Choy answered: There is a software called
by Chris Morris on Linux/IrDA list: In addition to using IrDA to hotsync my Handspring Visor I got my Handspring visor to work as a Linux text terminal via infrared last night. My computer is a Dell Inspiron 3800 (BTW I wracked my brains for weeks trying to get IR to work. The whole problem was caused by Linux looking at the wrong IRQ for ttyS3 . ). I am using Beam Sync for Visor V1.0b2 by
Andrew Chadwick wrote: A nifty way to check that the baud rates for SIR are set up properly (if you have a Psion Series 5) is to point the S5 at your Linux box's IR window and try to beam a file. While the beamer dialog's on the screen, the S5 will try to make an IrDA connection (even when it claims it can't find another IR machine). You should be able to do a cat > /dev/ttyS3 and if the serial parameters are right on both machines, you should see the words "Symbian EPOC" (machine ident) scroll past amidst the spew.
Fons Botman wrote: " Maybe someone with a Psion 5 would like to test this program. It emulates the protocol for the Psion 5 IR send and receive command for files on linux. You can now exchange files with simple commands. The transfer rate is 9.7 KBytes/sec on a 115KB SIR link for big files which is not bad methinks. It is beta, so be sure to backup the Psion first, I did get a soft reset once (no data loss). ;-)" I have put the source into the appendix.
Submitted by Arthur Tyde and Bryan Abshier of Linuxcare Inc.
This will tell you how to set up a masqueraded PPP connection via. IrDA from WinCE to a Linux based notebook computer. Once you are IP connected, the rest is up to you. We put this together as a guide for Sony notebook users with Casio E-100/105 PDA's, though the procedure should work for any WinCE 2.11 device with infrared capabilities talking to any notebook. Do all the Linux side testing signed on as root, standard warnings apply.
Configure WinCE Configure a network connection for your WinCE device. Go into "Connections" and create a "Direct Connection" Name it something meaningful, for device select "Infrared Port". Go into settings and change the baud rate to 115200, this is the max for WinCE. Go to TCP/IP settings and check "Use server-assigned IP address," and "Use software compression," and "Use IP header compression" Make sure "Use Slip," is unchecked. For Name Servers, make sure "Use server-assigned addresses" is checked. Go to Start, Settings, Communications, Identification and enter something for the Device Name. (I used "cetoy") You most likely already have these values set if you have synced with a Win9x desktop using Activesynch.
Configure Linux/IrDA Set up IrDA support on your notebook (described elsewhere) and get to the point where your notebook will discover an IrDA compliant device. A good sign is the irda0 device will show up when you execute ifconfig. It will not have an IP address, this is ok.
Setup the Connection Test the discovery by setting an IrDA device in range of your IR port, wait 5 seconds, and;
For example, the Ericsson I888 World Phone with IR port enabled should immediately show something like this;
Your WinCE machine will not be discovered unless it's actively looking for a connection. So, if you want to test with WinCE position your device and double tap on the network icon you created in step 2, you should see something like this:
The name displayed will be whatever value you have entered into the Start, Settings, Communications, Identification as the Device Name. At this point, with basic IrDA functioning- we can move on to establishing a PPP connection for WinCE. These scripts can also be used for serial cable connects. Create the following files and copy them into the directory indicated.
Because Microsoft likes to break standards, you need the following chat script. This will feed WinCE the proper ASCII keywords it wants before allowing a PPP connection.
The following file will allow you to specify the IP addresses, IR (or serial port if using a cable) device, DNS and so forth. I do not recommend you change the 192.IP addresses below. WinCE really has an affection for 192.168.55.100 because all the MS synch tools seem to have it hardcoded. DNS can be whatever you normally use.
/etc/ppp/peers/cebox
Testing the connection Ok, now you can test the connection to make sure it all works. Reboot your machine, run irattach /dev/ttyS2 -s (/dev/ttyS2 being the serial port your BIOS sees the IR device as, if irattach is not running, start it) Align the IR ports, at the Linux command prompt type /usr/sbin/cebox.sh, and simultaneously press return to start cebox and double tap your connection icon in WinCE. You should get a happy message from WinCE reporting Connecting to Host, Device Connected, Authenticating User, User Authenticated and finally Connected. You should see something like this when you are connected: The following script sets up IrDA, establishes a ppp connection with WinCE, and then sets up IP masquerading. It is provided as an example of how you can tie this all together. This is more or less a manual approach. You can get creative, start irattach at boot and stick a line in inittab to constantly look for a WinCE connection on the IR port. This will however, run down your batteries and limit your ability to access other IR gadgets. I just use the script below. Position the device, run wince and start communications on your PDA when the script tells you to.
This chapter is a courtesy of Stanislav Sokolov.
This section covers how to connect a PocketPC device to a Linux box. The information provided in section "Connecting from Linux to WinCE" (found also at
Here is the system I used:
Compaq iPAQ with PocketPC Version 3.0.9348 (I don't know if this would work for PocketPC 2002 as Microsoft likes changing standards from version to version).
On the Linux side was a Compaq LTE5250 laptop with Slackware Linux 7.1.
Kernel 2.4.19
PPP 2.4.1 (PPP must not be older than 2.4.0 when used with kernel 2.4.x)
On the PocketPC side go to Start -> Settings -> Connection -> Modem. Make a new connection, call it something meaningful (I use Linux-m), choose "Generic IrDA modem", set baud rate to 115200. Tap "Advanced". In "Port Settings" select 8-N-1-Hardware and check "Enter dialing commands manually". This is done so as PocketPC would not try to dial a phone number as we do not want it. The other two boxes should remain unchecked. In TCP/IP select "Use server-assigned IP address" uncheck "Use Slip", but check "Use software compression" and "Use IP header compression". In "name Servers" select "Use server-assigned addresses". Tap "ok" and "Next". You should not be asked for telephone number (if you are, just enter 1 and doublecheck that you actually selected manual dialing commands box in advanced section). Make sure that "Cancel call..." and "Wait for dial tone..." boxes are unchecked. We are now done with the PocketPC part.
On Linux we must first make sure that all the necessary modules are loaded. Here are the modules that were loaded and in use during a successful communication session: Make sure that Start irattach
Now we have to enable a login terminal on the IrDA port. I used save the file and activate it by restarting Also prepare the following shell script that will perform the second phase of connection:
Now the connection itself: Align the IR ports and on the PocketPC go to Start -> Programs -> Connections and tap the connection that you created (Linux-m). In the "Connect To" dialog that shows up leave everything unfilled and just tap on "Connect". "Manual Dialing Terminal" will show up. There you should see the login prompt for your Linux-box (If the login prompt does not show up at once, bring up the virtual keyboard and tap 'enter'). You do not need to login (though it is a bonus - speaking of the ultimate remote controller :)
On the Linux-box execute the And PocketPC should show a dialog with "Status: Connected". You can run RTT will depend on the distance and lighting conditions. When you tap "Disconnect" something like that will show up:
Now, if not all went that well, check the following:
"Enter dialing commands manually" is checked. PocketPC should not attempt to dial any number!
You have async PPP support in kernel.
As far as I know some cellular phones use the IrCOMM standard, e.g. Ericsson SH888 and NOKIA 6110 (I'm not sure about the NOKIA 8110). Some cellular phones (Ericsson T68) use the IrOBEX standard or IrMC. For more and general information about Linux and cell phones see
This chapter describes how to connect your mobile phone via IrDA with your Linux box. It is based on a report by Matthias Schmidt. It was tested with the following mobiles:
Ericsson T39m
Siemens S25
Siemens S35i
Siemens ME45
Nokia 6110
Nokia 6210
Configure the IrDA basics as described above (kernel configuration, /etc/modules.conf, irattach, PPP) (for detailed information about PPP see also the
There are several ways to connect to your ISP. The easiest (and sometimes the only) way is to use a terminal program like
If you prefer more comfort, you can use
Problems with wvdial (see explanation above)? IMHO the best way is to use the standard
Example files for PPP with a connection named
If you get your mobile working via infrared, you can do some nice stuff with it. You can get informations, save your phonebook or your SMS, send SMS, put new logos (BMP format) on it, save the old logo to your harddisk and do the same with your ringtone (MIDI). To do all this nice things, you'll need the following:
a OBEX capable mobile phone, e.g. a Siemens mobile-phone
a working infrared connection
the
gscmxx (optional)
Bind your mobile phone to IrDA services
Check the connection
Show informations about your mobile phone
Save your phonebook to disk
Show your SMS (here in slot 3)
Save your current logo to disk
Save your current ringtone to disk
See the OpenOBEX chapter below. Detailed information about OBEX connections to mobile phones will follow hopefully soon. See also the Palm III section for information about setting up a connection.
Michael McConnell has posted an initial version of a guide to get the Motorola Timeport GSM phone and Linux-IrDA talking on
Note for T39 users (maybe for T300, too). Please check the web page of
1. Configuration To start a communication session with Probably you may use
Benny Amorsen wrote: The SH888 emulates an IRDA-port when you connect it using the serial cable. Why someone would think up something weird like that is beyond me, but that is the way you get it to work in Windows. Not that I ever managed to make it work in Windows, though.
Ales Dryak has send this survey (looks like a Debian/GNU Linux distribution, please modify your configuration accordingly). Mobile Ericsson SH888
2. /etc/conf.modules: 3. /etc/irda/drivers: irattach /dev/ttyS0 -s # (IrDA port in SIR mode) 4. /etc/chatscripts/sh888 5. /etc/ppp/peers/sh888
A few seconds (app. 30) after executing
Gerhard Gonter reported: Several members of the list are successfully using the Ericsson mobile phone SH888 with the Linux-IrDA software, usually to use it as a modem. The software is also quite useful to access other parts of the phone using AT commands. The built-in phonebook is an interesting target.
After A quick research on the Internet (FreshMeat, Deja, YAHOO), I did not find any phonebook tool for Linux (or another Unix). To solve that problem, I wrote a small Perl script and a related module. Since this now works acceptably well for me, I decided to wrap that up and release it at this early stage of development. The tarball can be retrieved
In the mailing list
The specifications for SMS messages and phone books can be downloaded free (of charge, not FSF free ;-) from ETSI. Search for GSM 07.07 (you might also want GSM 07.05). You have to register before downloading it. The standards are in Acrobat PDF format. The S25 supported commands are available on the Siemens websites as a PDF for free.
A survey of the AT commands for the SH888 is at
Carlos Vidal wrote: Correct me if I'm wrong, but it seems to me that Nokia telephones do not contain a genuine hardware modem, but something which is similar in principle to WinModems for PC. Whenever Nokia writes about modem communication, they use the name "Windows software modem" (or something similar). Which is actually backed up by the need to use special Nokia software for Windows (called Nokia Cellular Data Suite).
Joonas Lehtinen wrote: This is true with 61xx models. Models: 8810, 9000(i) and 9110 should work fine. (They have inbuilt modem). My Nokia 9000 reports IrCOMM with linux.
Some suggestion by Carlos Vidal carlos_at_tarkus.se : "I'm doing some tests trying to see how far can I get with my Nokia 6110 on Linux. I've just compiled gnokii-0.2.4 [
Nokia 6110 <-- Nokia Cable --> PC/Linux <-- Null-modem cable --> PC/W95
In the PC/Linux I run the program snooper (by Jun-ichiro itojun Itoh , sorry couldn't find an URL maybe some other sniffer will do it also, e.g. sniffit, see also appendix about serial sniffers, WH) with small modifications in order to configure the serial port correctly.
Normally, if snooper has the correct baud rate, the phone and the PC/W95 should communicate as if there was no snooper in between. This worked pretty well when I cracked the protocol of my Minolta camera. The problem here is that the phone doesn't answer or hangs after a while.
It seems that the timing is quite important during the initial phase of the communication. The log I obtain is:
0 is the PC/95 and 1 is the phone. The communication starts with a stream of 'U' (0x55) and with DSR/DTR on. The phone answers with '0x18 0x00 ...'. This dialog continues for a while as if both were deaf and finally the phone crashes and the only way to reset it is to remove the batteries!
I guess that what happens is that the phone is trying to find the correct baud-rate and fails because of the delays introduced by snooper. This probably has to do with some IrDA protocol used with also with the infrared connection."
Wessel de Roode "I managed to get the Discovery IR hint bits (with my Palm Pilot):
I also managed to query the PNP device of the Nokia. It has one PNP device. It's PNPC100 which equalt a 9600 baud modem. I deleted the query, if somene can send me a hint to restore it. was somthing like IrDA:<dunno>:PNP:Comp#01 The same query with IrDA:<dunno>:PNP:CompCnt gives the number of PNP-devices are available in the Nokia. Which is here only one."
There are also reports about gsmlib for sending and receiving sms messages, updating address books etc). These functions are working, except for minor charset problems.
Configuration By Florian Lohoff: "Do it step by step - Get your irda working
Now load ircomm and ircomm-tty and normally(tm) you should be able to connect to the correct /dev/ircomm and you can easily dial and load/backup the phonebook etc ...", e.g. with minicom.
Timo Felbinger describes the connection between a Toshiba and a Siemens S25:
kernel 2.2.12 and patch-2.2.12-irda3, IrDA support in the kernel, ircomm and ircomm-tty as a module
start irattach with modprobe toshoboe in the start section of /etc/irda/drivers . Note: don't load toshoboe before the irattach, this may cause device or resource busy
after
After term the S25 behaves like the usual Hayes modem and can be used with the AT commands.
dial-out with pppd works out of the box.
A note to German e-plus users:
Every e-plus contract (except Free&Easy) contains a PPP conncetion to the WWW (no separate registration necessary). This service is available around Germany under the phone number 123100. This worked also out of the box.
pppd configuration: