Irnet protocol device
File /dev/irnet is used to access and configure the IrNET protocol part of the Linux-IrDA stack.
IrNET is a protocol allowing to create TCP/IP connections between two IrDA peers in an efficient fashion, and generally to enable standard networking over IrDA. It is a thin layer, passing PPP packets to IrTTP and vice versa. It uses PPP in synchronous mode, because IrTTP offer a reliable sequenced packet service (as opposed to a byte stream). In fact, you could see IrNET as carrying TCP/IP in a IrDA socket, using PPP to provide the glue.
The main difference with traditional PPP over IrCOMM is that it avoids the framing and serial emulation which are a performance bottleneck. It also allows multipoint communications in a sensible fashion. And finally, it can automatically handle incomming connections through irnetd.
The main difference with IrLAN is that we use PPP for the link management, which is more standard, interoperable and flexible than the IrLAN protocol. For example, PPP adds authentication, encryption, compression, header compression and automated routing setup. And, as IrNET let PPP do the hard work, the implementation is much simpler than IrLAN.
IrNET connections are initiated and managed with pppd(8). File /dev/irnet also offer a control channel. Reads from /dev/irnet will return various IrNET events. Write to /dev/irnet allow to configure the IrNET connection.
If your system does not have /dev/irnet created already, it can be created with the following commands:
mknod -m 644 /dev/irnet c 10 187 chown root:root /dev/irnet
You will also need to have IrNET support in your kernel or as module and the Linux-IrDA stack installed and configured (see irattach(8)).
File /dev/irnet is supposed to only be used with the PPP line discipline or for accessing the control channel, other use are unsupported. IrNET support multiple concurent connections (limited by the IrDA stack), all those connections are multiplexed on a single /dev/irnet device (as opposed to IrCOMM which as one device per connection).
Writing commands to /dev/irnet allow to configure the IrNET connection being made. This need to be done through pppd(8) (see below for examples). Commands are separated by comas.
Connect to the IrDA device which IrDA nickname is <peer>. The IrDA nickname is a string up to 31 characters.
Connect to the IrDA device which IrDA address is <peer>. The IrDA address is a 32 bits hexadecimal number.
Restrict connections to the local IrDA interface which IrDA address is <port>. The IrDA address is a 32 bits hexadecimal number.
Reading from /dev/irnet will show various IrNET events. This is usually done with the command cat /dev/irnet.
Dump of the current IrNET discovery log.
New IrNET device discovered.
Previously discovered IrNET device no longer present.
This computer successfully established an IrNET connection to a peer.
A peer successfully established an IrNET connection to this computer.
A peer attempted to connect to this computer, but no IrNET connection was waiting for it.
This computer attempted to connect to a peer, but no IrNET connection was waiting for it.
Blocked link with
The IrDA link of the IrNET connection is currently blocked.
A peer successfully terminated an IrNET connection with this computer.
This computer successfully terminated an IrNET connection with a peer.
File /proc/net/irda/irnet will also show the current state of the various IrNET connections.
Start a IrNET server accepting any incomming connection:
pppd /dev/irnet 9600 local noauth nolock passive
Start a IrNET client connecting to any IrDA peer:
pppd /dev/irnet 9600 local noauth nolock
Start a IrNET client connecting to the IrDA peer called MyIrDANode:
pppd /dev/irnet 9600 local noauth nolock connect echo name MyIrDANode
Start a IrNET server accepting incomming connection from peer with IrDA address 0x12345678 only on IrDA port 0x87654321:
pppd /dev/irnet 9600 local noauth nolock passive connect echo daddr 0x12345678 , saddr 0x87654321
Jean Tourrilhes - [email protected]