2.2. Kernel

Please read the Kernel-HOWTO to get more information about the compilation process. You'll find the Linux/IrDA 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)

2.2.1. General Parameters

- Make sure you use kernel 2.2.x sources. If unsure about your kernel version try uname -r.

- Get the latest kernel patch from the Linux/IrDA project http://irda.sourceforge.net. Or from the Alan Cox kernel series at ftp://ftp.linux.org.uk/pub/linux/alan/2.2/ . Put it into /usr/src or where else your kernel sources live and apply something like (replace patch-2_2.0-irdaXXX with the actual file name):
cd /usr/src
tar xvzf patch-2_2.0-irdaXXX.tar.gz
cd linux
patch -p1 -l < ../patch-2_2.0-irdaXXX 

- 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 lsmod.

- 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:

make dep && make all && make modules && make install && make modules_install

If you get really strange errors, then try to rebuild from scratch after a make clean.

2.2.2. IrDA Specific Parameters

The following is my draft for ../linux-2.2.3/Documentation/Configure.help, parts are from Dag Brattli and Andreas Butz. Please consult the latest available kernel documentation for current information and new drivers.

2.2.2.1. IrDA subsystem support

CONFIG_IRDA

IrDA(TM) is an industrial standard for infrared wireless communication. Infrared ports let you communicate with printers, modems, fax machines, LANs, and laptops. Speed ranges from 2400bps to 4Mbps. To use this features you need the irda_utils provided by the Linux/IrDA project http://irda.sourceforge.net . Further information you may find there and in the Linux-Infrared-HOWTO at http://mobilix.org/howtos.html . Currently it is recommended to build IrDA support as modules only. Please see Documentation/modules.txt. Please note the status of Linux/IrDA is still experimental.

2.2.2.1.1. IrDA protocols

  • IrLAN protocol

    CONFIG_IRLAN

    Builds the IrDA network device. Use ifconfig eth0 <IP-NUMBER> to configure it. - Just say Y

  • IrLAN client support

    CONFIG_IRLAN_CLIENT

    If you connect to infrared devices via IrLAN one has to be the server and the other the client. You can use both the client and the server at the same time. The first one to connect becomes the client. - Just say Y Note: The latest patch includes peer-to-peer support instead.

  • IrLAN server support

    CONFIG_IRLAN_SERVER

    If you connect to infrared devices via IrLAN one has to be the server and the other the client. You can use both the client and the server at the same time. The first one to connect becomes the client. - Just say Y Note: The latest patch includes peer-to-peer support instead.

  • IrOBEX protocol

    CONFIG_IROBEX

    IrOBEX is a protocol for exchanging objects (files, vcards, etc.) over an infrared connection. You can use it to exchange files between linux and a PALM III. IrOBEX can also be used between two Linux boxes, Linux and Windows95, etc. - Just say Y

  • IrCOMM protocol

    CONFIG_IRCOMM

    Over IrCOMM you may communicate with cellular phones, etc. To use this service you have to build a new device with mknod /dev/irnine c 60 64, which works like /dev/ttySx. - Just say Y ..Note: major and minor number are still not the official ones yet. For latest improvements (IrSocket is on the way!), please look at the page of Takahide Higuchi http://www.pluto.dti.ne.jp/~thiguchi/irda/

    ..Note: At the moment IrCOMM seems to crash your kernel easily, you should probably wait for the next patch. .. Note: mknod /dev/irnine c 161 0 for newer versions! [WH]

  • IrLPT client support

    CONFIG_IRLPT_CLIENT

    Say Y here if you want to build support for the IrLPT client protocol. If you want to compile it as a module, say M here and read Documentation/modules.txt. The IrLPT client protocol can be used to print documents to IrDA compatible printers like the HP-5MP, or IrLPT printer adapters like the ACTiSYS IR-100M. - Just say Y

  • IrLPT server support

    CONFIG_IRLPT_SERVER

    Say Y here if you want to build support for the IrLPT server protocol. If you want to compile it as a module, say M here and read Documentation/modules.txt. The IrLPT server protocol makes it possible to use a Linux machine as an infrared printer server for other laptops. So if your Linux machine has a cable connection to a printer, then other laptops can use the Linux machine to print out documents using infrared communication. - Just say Y

2.2.2.1.2. IrDA protocol options

CONFIG_IRDA_OPTIONS

You may define some IrDA protocol options.

  • 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.

  • FAST RRs

    CONFIG_IRDA_FAST_RR

    Use this option if you want to send faster RR (Receive Ready) frames if the transmit queue is empty. This will give you much better latencies but will consume more power, because of the bouncing RR frame.

  • Recycle RRs

    CONFIG_IRDA_RECYCLE_RR

    In the normal life of the IrLAP protocol, it sends a lot of small RR (Receive Ready) frames over the link (at least when it has nothing else to do). Saying Y to this option will make IrLAP recycle these frames thus avoiding many alloc_skb's and kfree_skb's. To do this it will only buffer one of these frame which is enough for the usual case.

  • Debug information

    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 /proc/sys/net/irda/debug. If unsure, say Y (since it makes it easier to find the bugs).

2.2.2.1.3. IrDA compressors

CONFIG_IRDA_COMPRESSION

You may use the compression methods BZIP2 and BSD. These are not IrDA standard. This will allow two linux boxes to handshake compression. It should be compatible with other IrDA devices, although communication will not be compressed then.

  • Deflate compression (experimental)

    CONFIG_IRDA_DEFLATE

    Say Y here if you want to build support for the Deflate compression protocol. If you want to compile it as a module, say M here and read Documentation/modules.txt. The deflate compression (GZIP) is exactly the same as used by the PPP protocol. Enabling this option will build a module called irda_deflate.o.

  • BZIP2 compression

    CONFIG_IRDA_BZIP2

    Help not available yet.

  • BSD compression

    CONFIG_IRDA_BSD

    Help not available yet.

2.2.2.2. Infrared-port device drivers

Three sorts of low level infrared drivers are available: serial, dongle and FIR. They will show up in /proc/net/dev (irda0) after initialisation.

2.2.2.2.1. IrTTY (uses serial driver)

Most IrDA chips support StandardInfraRed (SIR), which works up to 115200bps and emulates a serial port (16550A UART). On many laptops this port is detected by the serial support of the kernel, see dmesg. IrTTY connects the Linux/IrDA services to this port. - You should say Y here.

  • Serial dongle support

    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, 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.

2.2.2.2.2. Dongle support

CONFIG_DONGLE

Currently four dongles (infrared adapters for the serial port) are supported. The dongle is an infrared device which may be connected to serial port, if you don't have built-in infrared support for your machine. If you use a dongle together with a laptop you maybe have to disable the IrDA support in the BIOS.

  • 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 insert irattach -d esi in the /etc/irda/drivers script. http://www.extendsys.com/support/ftp/infrared.html

  • 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 insert irattach -d actisys or irattach -d actisys_plus in the /etc/irda/drivers script. http://www.actisys.com

  • 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 insert irattach -d tekram in the /etc/irda/drivers script. http://www.tekram.de/

  • CONFIG_GIRBIL_DONGLE

    Say Y here if you want to build support for the Greenwich Instruments 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 irattach -d girbil in the /etc/irda/drivers script. http://www.greenwichinst.com/

2.2.2.2.3. FIR support

FastInfraredSupport (FIR) needs a specific controller chip, which supports up to 4Mps. - Just say Y

  • NSC PC87108

    CONFIG_NSC_FIR

    NationalSemiConductor NSC PC87108 FIR chip e.g. used in the IBM Thinkpad 560X and ACTiSYS IR2000 dongle. Probably the NSC PC87338 FIR chip is also supported. The driver supports SIR, MIR and FIR (4Mbps) speeds. - Just say Y

  • Winbond W83977AF (IR)

    CONFIG_WINBOND_FIR

    Winbond W83977AF (IR) FIR chip e.g. used in the Corel Netwinder PC. The driver supports SIR, MIR and FIR (4Mbps) speeds. - Just say Y

  • Sharp UIRCC

    CONFIG_SHARP_FIR

    Say Y here if you want to build support for the Sharp UIRCC IrDA chipset. If you want to compile it as a module, say M here and read Documentation/modules.txt. This chipset is used by the Toshiba Tecra laptops.