PDA

View Full Version : Linux, PDA's and synching w/ IR



rickenbacherus
10-30-2003, 01:16 AM
After looking high and low for an up-to-date IR how-to I finally got disgusted and decided to write one myself. It wasn't too hard after all it seems. This little howto will be aimed at Toshiba laptops but should apply for the most part to any laptop runing Debian. Get some specs for your IR chipset from the manuf. website if you don't already have it.

Now we need some tools:

apt-get install pilot-link

This may help find your IR chipset as well:

findchip -vd
Probing for FDC37C669 ...
Wrong chip id=0xff
Wrong chip id=0xff
Probing for FDC37C669FR ...
Wrong chip id=0xff
Wrong chip id=0xff
Probing for FDC37N869 ...
Wrong chip id=0xff
Wrong chip id=0xff
Probing for FDC37C93xFR ...
Wrong chip id=0xff
Wrong chip id=0xff
Probing for FDC37N957FR ...
Wrong chip id=0xff
Wrong chip id=0xff
Probing for FDC37N958FR ...
Wrong chip id=0xff
Wrong chip id=0xff
Probing for PC87108 ...
no chip at 0x150
no chip at 0x398
Wrong chip id=0x00
Probing for PC87338 ...
no chip at 0x398
no chip at 0x15c
no chip at 0x02e
Probing for EFER at 0x03f0 ...
hefras = 0xff
Probing for EFER at 0x0370 ...
hefras = 0xff
EFER seems to be probed at 0x0370
chip id = 0xff, revision = 0xff
Wrong device ID = 0xff
Probing for EFER at 0x0250 ...
hefras = 0xff
Probing for EFER at 0x0250 ...
hefras = 0xff
Probing for EFER at 0x03f0 ...
hefras = 0xff
hefere = 0xff
Probing for EFER at 0x03f0 ...
hefras = 0xff
hefere = 0xff
EFER seems to be probed at 0x03f0
chip ID is 0x0f : no known chip was detected.
Couldn't find Winbond superI/O chip.

Hmmmm- not alot of info to be found there! Hopefully it is only the Toshiba chips that are a nuissance. :P

You also need irda-common installed
apt-get install irda-common

You can reconfigure irda-common as often as necessary like so:
dpkg-reconfigure irda-common

I can't tell you how to configure irda-common but it isn't that difficult. It will depend on whether you have FIR or serial.

Now, since the Toshiba has a Fast IR IrDA @ 1.1:4Mbps (yeah buddy!) I used the toshoboe driver.

sudo modprobe toshobe
lsmod|grep ir
ircomm-tty 20864 1 (autoclean)
ircomm 7432 0 (autoclean) [ircomm-tty]
irda 94288 0 [ircomm-tty ircomm toshoboe]

Now let's bring the ir interface up:

ifconfig irda0 up
ifconfig
irda0 Link encap:IrLAP HWaddr bb:54:f4:3b
UP RUNNING NOARP MTU:2048 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:8
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

*HINT* If your hardware address is 00:00:00:00 your irda0 isn't up!

Now you can do some cool stuff:

sudo irdadump

17:47:34.889366 xid:cmd ffffffff < f10e9211 S=6 s=0 (14)
17:47:34.989525 xid:cmd ffffffff < f10e9211 S=6 s=1 (14)
17:47:35.081443 xid:cmd ffffffff < f10e9211 S=6 s=2 (14)
17:47:35.169605 xid:cmd ffffffff < f10e9211 S=6 s=3 (14)
17:47:35.259915 xid:cmd ffffffff < f10e9211 S=6 s=4 (14)
17:47:35.259965 xid:rsp eb8fa09a > f10e9211 S=6 s=4 xerxes hint=0400 [ Computer ]

Good- it sees the IR port on the pc. Now let's point the PDA at the IR port and see what happens:

17:47:35.329612 xid:cmd ffffffff < f10e9211 S=6 s=5 (14)
17:47:35.429674 xid:cmd ffffffff < f10e9211 S=6 s=* IrCOMM hint=8204 [ PDA/Palmtop IrCOMM ] (23)
17:47:35.481088 snrm:cmd ca=fe pf=1 eb8fa09a < f10e9211 new-ca=18
LAP QoS: Baud Rate=115200bps Max Turn Time=500ms Data Size=512B Window Size=1 Add BOFS=5 Min Turn Time=1000us Link Disc=40s (32)
17:47:35.481194 ua:rsp ca=18 pf=1 eb8fa09a > f10e9211
LAP QoS: Baud Rate=115200bps Max Turn Time=500ms Data Size=2048B Window Size=7 Add BOFS=0 Min Turn Time=0us Link Disc=12s (31)
17:47:35.535547 rr:cmd < ca=18 pf=1 nr=0 (2)
17:47:35.535599 rr:rsp > ca=18 pf=1 nr=0 (2)
17:47:35.541350 i:cmd < ca=18 pf=1 nr=0 ns=0 LM slsap=01 dlsap=00 CONN_CMD (6)
17:47:35.541456 i:rsp > ca=18 pf=1 nr=1 ns=0 LM slsap=00 dlsap=01 CONN_RSP (6)
17:47:35.551224 i:cmd < ca=18 pf=1 nr=1 ns=1 LM slsap=01 dlsap=00 GET_VALUE_BY_CLASS: "IrDA:IrCOMM" "IrDA:TinyTP:LsapSel" (37)
17:47:35.551282 i:rsp > ca=18 pf=1 nr=2 ns=1 LM slsap=00 dlsap=01 GET_VALUE_BY_CLASS: No such class (11)
17:47:35.557882 disc:cmd < ca=0x18 pf=1 (2)
17:47:35.557919 ua:rsp ca=18 pf=1 eb8fa09a > f10e9211 (10)

Yeah buddy- it sees the PDA alright. There is also irdaping which may help you troubleshoot your connection. I couldn't get it to work but obviously it isn't necessary for IR to work under Linux.

Since the palm apps (kpilot jpilot pilot-xfer e.g.) use /dev/pilot as default it might be a good idea to link /dev/pilot to your IR port. In my case:

ln -s /dev/ircomm0 /dev/pilot

OK since we can see that the PDA is talking to the IR port let's try to send something:

sudo pilot-xfer -p /dev/ircomm0 -m CFBTimer.prc

Listening to port: /dev/ircomm0

Please press the HotSync button now... Connected

Merging CFBTimer.prc... OK
Merge done
Time elapsed: 0:00:26

w00t! it works!

Now just fire up kpilot (or jpilot) and try to transfer a file or backup your pda. Personally I couldn't get jpilot to work at all. It told me to check my serial ports. Oh well- Kpilot worked just fine and it actually fits on my laptop screen like it should.

Ok so now let's get the modules to load on boot:

sudo xedit /etc/modules

toshoboe
irda
ircomm
ircomm-tty

sudo update-modules

That oughtta do it. enjoy!