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>