Systronix Java IrDA Project IrDA Basics

IrDA and IrDA Specifications

IrDA is the Infrared Data Association. Originally started by Hewlett-Packard, who owns the patents on the physical layer of IrDA. HP has licensed the patents to IrDA, and license fees are paid by hardware component manufacturers. There are no additional user fees to utilize IrDA hardware in a design. is the official IrDA web site, you can download the complete IrDA specification, application notes, and white papers there.

There are actually a number of IrDA specifications optimized for digital images, control devices such as keyboards, watches, etc.

IrDA Tutorial at

IrDA 1.0 (IrDA-SIR)

IrDA 1.0 is a simple embellishment of asynchronous, half-duplex serial I/O at up to 115200 baud. All IrDA links start at 9600 baud and negotiate up, or down. IrDA can go as slow as 2400 baud. IrDA1.0 is what current palmtop PCs use, and is what TINI can support without adding a lot of hardware.

Since there is no optical isolation between IR transmitter and receiver, IrDA is half-duplex. There can be up to 10 msec of latency after a node's transmitter stops until the same node's receiver is guaranteed ready to received data. This is also called recevier set-up time.

IrDA 1.0 uses NRZ modulation, with a pulse width of 3/16 of a bit period. This brief pulse provides enough optical power while limiting the average power dissipation in the infrared emitter to a reasonable level. Presence of such a light pulse within a bit cell indicates a '0' bit. IrDA 1.0 encoder/decoder chips require a 16X clock, which is commonly available from UARTs such as the 16550 series. This 16X clock is also available in the C390, TINI's controller.

IrDA 1.0 Physical Layer Parameters


Peak Wavelength, nanometers


Intensity within angular range, mW/sr


Half-angle, degrees

+/- 15
Rise and fall time, nsec


Receiver latency allowance, msec


Maximum link length, meters


Bit Error Ratio



IrDA 1.1 (IrDA-FIR)
IrDA 1.1 extends the speed to 4 megabits per second, and is backward-compatible with 1.0.

IrDA Protocol Stack
Here's how the IrDA protocol layers stack up. For IrDA compliance, only IrLAP and IrLMP are required in addition to the physical layer. Note that applications can be built on top of IrLMP (LAN and Printer services are examples), IrCOMM (Win98 IrDA support is an example) or on top of IrTP (less common).

  Applications based on IrLMP

 Applications based on IrCOMM

  Applications based on IrTP, and IrOBEX

LAN Services

Print Services


IrTP - Transport Protocol

IrLMP - Link Management Protocol

IrLAP - Link Access Protocol

IrDA Physical Layer

Link Access Protocol is an IR adaptation of HDLC (High level Data Link Control) protocol. IrLAP provides link initialization, device address discovery and conflict resolution, connection, data exchange, disconnection, and link shutdown. IrLAP also provides the frame and byte structure of IR packets and error detection.

Link Management Protocol manages data rates, link turn-around time, and manages the correct transfer of data. Supports multiple channels above an IrLAP connection.


Provides serial and parallel port emulation over IR for legacy hardware and applications.

IrCOMM allows existing communications applications to send data over an IR link, without rewriting them for IrDA support. Win98 and Win2000, for example, treat an IrDA port as any other COM port. You can associate a PC's IrDA port with a generic program such as Hyperterminal and then send and receive data over IR without your application knowing or caring that it is using IR.

IrCOMM supports 3 wire raw mode, 3 wire cooked mode, and 9 wire cooked mode. Raw mode is the simplest, with a single IrDA channel and no support for hardware handshaking.

The cooked modes simulate hardware handshaking by using two IR channels - one for data and one for control signals. The control signals are encoded and sent serially periodically in the IR data stream. IrCOMM decodes this and reports them to the application layer which thereby has the illusion that it is utilizing hardware handshaking. If both ends of a link support IrCOMM, they will each have the illusion that there is a hardwire handshake serial link between them, when in actuality it is an IR link.


OBEX performs a function similar to HTTP, a major protocol underlying the World Wide Web. However, OBEX works for the many very useful devices that cannot afford the substantial resources required for an HTTP server, and it also targets devices with different usage models from the Web. OBEX is enough like HTTP to serve as a compact final hop to a device “not quite” on the Web.

A major use of OBEX is a “Push” or “Pull” application, allowing rapid and ubiquitous communications among portable devices or in dynamic environments. For instance, a laptop user pushes a file to another laptop or PDA; an industrial computer pulls status and diagnostic information from a piece of factory floor machinery; a digital camera pushes its pictures into a film development kiosk, or if lost can be queried (pulled) for the electronic business card of its owner. However, OBEX is not limited to quick connect-transfer-disconnect scenarios - it also allows sessions in which transfers take place over a period of time, maintaining the connection even when it is idle.

PCs, pagers, PDAs, phones, printers, cameras, auto-tellers, information kiosks, calculators, data collection devices, watches, home electronics, industrial machinery, medical instruments, automobiles, and office equipment are all candidates for using OBEX. To support this wide variety of platforms, OBEX is designed to transfer flexibly defined “objects”; for example, files, diagnostic information, electronic business cards, bank account balances, electrocardiogram strips, or itemized receipts at the grocery store. “Object” has no lofty technical meaning here; it is intended to convey flexibility in what information can be transferred. OBEX can also be used for Command and Control functions - directives to TVs, VCRs, overhead projectors, computers, and machinery. Finally, OBEX can be used to perform complex tasks such as database transactions and synchronization.