Sync Palm via IrDA
palmI have complained the lame Palm Sync socket for quite a long time, eventually, I decide to try HotSync my Palm via IrDA on my Dell Latitude D600, which is equipped with SMSC IrDA Controller.
Prepare Hardware
The very first thing is to enable IrDA in the BIOS setting, since D600 has a COM1 serial port, IrDA is then assigned to COM2, aka /dev/ttyS1 in Linux.
Boot to the overweighed Windows XP, and check the IRQ/DMA/SIR/FIR in Device Manager.
The findchip
in irda-utils
package is supposed to probe the system,
unfortunately, it does not work in D600.
Build the Kernel
Just follow this HOWTO to build IrDA modules.
--- IrDA (infrared) subsystem support
--- IrDA protocol
IrLAN protocol
IrNET protocol
IrCOMM protocol
[*] Ultra (connectionless) protocol
--- IrDA options
[*] Cache last LSAP
[*] Fast RRs (low latency)
--- SIR device drivers
IrTTY (uses Linux serial driver)
IrPORT (IrDA serial driver)
--- FIR device drivers
SMSC IrCC (EXPERIMENTAL)
SIR stands for Standard IR, which uses generic serial protocol to talk with IrDA; FIR needs specific driver to achieve Fast IR. Although IrLAN and IrNET are rarely used, it does not hurt to build them as modules.
Test drive
Since /dev/ttyS1
is also driven by serial, we need explicitly to tell the
kernel this device is controlled by irda:
sudo setserial /dev/ttyS1 uart none
Then configure the module options in a Gentoo way, put the information collected
from Windows into /etc/modules.d/irda
:
options smsc-ircc2 ircc_irq=3 ircc_dma=3 ircc_sir=0x2f8 ircc_fir=0x280
alias irda0 smsc-ircc2
execute modules-update
sudo modprobe smsc-ircc2
sudo modprobe irda
sudo modprobe rcomm
sudo modprobe ircomm_tty
sudo /usr/sbin/irattach irda0 -s
Open another console and run
sudo irdadump
If everything is OK, some packets are dumped when the Palm is close to the laptop’s IR port.
Sync the Palm
I am using korganizer/kontact/kpilot suite. Configure the Pilot device as
/dev/ircomm0
; Uncheck Do not sync when screensaver is active
Glue all pieces together
Inspired by Gentoo official irda init script and this. I develops the /etc/init.d/irda-fir, and /etc/conf.d/irda-fir. Add irda-fir to default runlevel if Palm is a part of your life.
Further work
[1] Are we still using the high-speed FIR if the kopete is configured to access
/dev/ircomm0
? Since FIR maps IR port to the network interface, irda0, I have
tried to configure the Pilot devcie to net:irda0 or net:any according to
this undocumented hack, but
it does not work and kpilot hangs sometimes.
I still prefer the USB sync when downloading huge files for the sake of speed.
Any idea to make dbus/ivman to link /dev/pilot
to /dev/ircomm0
or
/dev/ttyUSB0
automatically?