Getting gnokii to work with a modern phone over IrDA under linux
================================================================

The following guide explains how to get a modern phone like a nokia 7110, 
nokia 6210, siemens s25, ericsson t39 etc to work with gnokii. The guide 
is divided into 3 parts: kernel configuration and setup, checking the
connection and gnokii configuration.

This guide is not for nokia 6110/6150. See gnokii-ir-howto instead.

Part 1 Kernel configuration and setup
=====================================

- Compile your kernel with IrDA support for your chipset.

For me on my VAIO this was:
CONFIG_IRDA=m
CONFIG_IRCOMM=m
CONFIG_IRDA_OPTIONS=y
CONFIG_IRDA_DEBUG=y

CONFIG_IRTTY_SIR=m
	Use the emulation of serial port part of your IrDA chipset or...
CONFIG_NSC_FIR=m
	Specify the one you have (I have a NSC 87338)

- Reboot onto new kernel etc.
- Check your serial devices don't conflict with the ioport/irq that your
  chipset driver will try to use:
  setserial /dev/ttySX (where X is 0 -> 3) should give you the information
  you need.
  If you have a device that conflicts with your ioport/irq then you will
  need to remove the serial driver's control over it with:
  setserial /dev/ttySX uart none port 0 irq 0
  (where X is there relevant port mine is /dev/ttyS2)
- I used the chipset way to get IrDA working.
  I needed:
  options nsc-ircc dongle_id=0x09
  alias irda0 nsc-ircc
  in /etc/modules.conf
  Then just irattach irda0 -s 1 which *should* load all the modules you need
  and start it doing irda discovery.
  The modules I have loaded at this point are: nsc-ircc and irda.

Part 2 Checking the connection
==============================

On some distributions irdadump is broken and segfaults. If this happens
skip the next two steps and go to discovery.

- Run irdadump to see that it is indeed attempting to discover something.
  You should see messages like:
15:24:07.380360 xid:cmd 0c57083d > ffffffff S=6 s=0 (14)
15:24:07.470333 xid:cmd 0c57083d > ffffffff S=6 s=1 (14)
15:24:07.560310 xid:cmd 0c57083d > ffffffff S=6 s=2 (14)
15:24:07.650283 xid:cmd 0c57083d > ffffffff S=6 s=3 (14)
15:24:07.740279 xid:cmd 0c57083d > ffffffff S=6 s=4 (14)
15:24:07.830279 xid:cmd 0c57083d > ffffffff S=6 s=5 (14)
15:24:07.920311 xid:cmd 0c57083d > ffffffff S=6 s=* langly hint=0400 [ Computer
] (22)
- Place the phone in front of it, enable the Infrared parts of it (Menu 90)
  then it should change to be like:
15:26:07.380336 xid:cmd 0c57083d > ffffffff S=6 s=0 (14)
15:26:07.470288 xid:cmd 0c57083d > ffffffff S=6 s=1 (14)
15:26:07.560284 xid:cmd 0c57083d > ffffffff S=6 s=2 (14)
15:26:07.650281 xid:cmd 0c57083d > ffffffff S=6 s=3 (14)
15:26:07.740280 xid:cmd 0c57083d > ffffffff S=6 s=4 (14)
15:26:07.847192 xid:rsp 0c57083d < d10e0000 S=6 s=4 Nokia 6210 hint=b125 [ PnP Modem Fax Telephony IrCOMM IrOBEX ] (27)
15:26:07.830293 xid:cmd 0c57083d > ffffffff S=6 s=5 (14)
15:26:07.920283 xid:cmd 0c57083d > ffffffff S=6 s=* langly hint=0400 [ Computer
] (22)
- With the phone still in front of your infrared port, check if the discovery
  of the infrared port works. Do a 
  bash-2.03$ cat /proc/net/irda/discovery

  a response could be:

  IrLMP: Discovery log:

  nickname: T39, hint: 0x9124, saddr: 0xe4fe8166, daddr: 0x48611661

  If this doesn't work try if discovery is on:
  bash-2.03$ cat /proc/sys/net/irda/discovery
  this should give:
  1
  if it returns:
  0
  check if irattach is running:
  bash-2.03$ ps aux|grep iratt
  a possible return is:
  root       271  0.0  0.0  1288  192 ?        S    20:49   0:00 irattach /dev/ttyS1
  if you don't see the irattach process, go back to kernel configuration.
- Now try using ircomm to talk to the phone.  Try minicom /dev/ircomm0 (you
  may need to setup a default profile for this port as the root user with
  minicom -s /dev/ircomm0).
- This depends on your distribution having the right lines in modules.conf
  for ircomm to be loaded:
alias tty-ldisc-11 irtty
alias char-major-160 irda0
alias char-major-161 ircomm-tty
  And your /dev/ircomm0 should be character device 161,0.
  Debian testing/unstable gets this right.
  If these don't work you may need to load ircomm and ircomm-tty manually.
- minicom /dev/ircomm0 should now work and AT commands should function.
  simply type the following in the terminal program:
  AT<CR>
  you get the response:
  OK
- If minicom blocks, try a different terminal program. On my box minicom works
  perfect with a serial cable but not with IrDA. seyon works with both, cable
  and IrDA.

Part 3 gnokii configuration
===========================

Depending on your phone, you need to set some gnokii options. for a nokia 6210
or a nokia 7110 you would set (at least) the following in .gnokiirc:
	[global]
	port = /dev/ircomm0
	model = 6210
	connection = irda
For a siemens or a ericsson phone or any phone which supports the AT command
set directly, the following should work. Please pay attention to connection
which is set to "serial" instead of "irda":
	[global]
	port = /dev/ircomm0
	model = AT
	connection = serial
gnokii --monitor should now function.

	[huggie@langly ~]$ gnokii --monitor
	Entering monitor mode...
	RFLevel: 100
	Battery: 100
	SIM: Used 5, Free 85
	etc.
  
  Not all the functions for 6210 work yet seemingly.

- If instead gnokii hangs then you may have a version of gnokii that still
  has recv() in irda_open of common/devices/unixirda.c.  Just comment out
  that line, recompile and try again.

Possible problems
=================

- If you are absolutly sure you set up everything fine, you are using a
  FIR driver, your phone can be seen in the discovery log but you are not
  able to use either minicom or gnokii it can be a speed negotiation
  problem between your IrDA stack and your phone. Probably the reason is
  that the FIR driver and your phone support faster communication than
  115200 baud and they manage to negotiate a speed which one of the parties
  cannot handle correctly. Try to limit the negotiated speed to 115200 baud:

  echo 115200 > /proc/sys/net/irda/max_baud_rate


Credits
=======

Initial version by:
Simon Huggins <huggie-gnokii@earth.li>
small enhancements by:
Manfred Jonsson	<manfred.jonsson@gmx.de>
