ขั้นตอน config
เริ่มแรกก็ตรวจสอบก่อนว่าเคอร์เนลมองเห็นพอร์ตอินฟราเรดแล้วหรือยัง โดยดูได้จากรายชื่อของพอร์ตสื่อสารที่ปรากฏใน dmesg:
[kitt@peorth kitt]$ dmesg | grep ttyS ttyS00 at 0x03f8 (irq = 4) is a 16550A ttyS01 at 0x02f8 (irq = 3) is a 16550A
หนึ่งในนั้นควรจะเป็นพอร์ตอินฟราเรด เช่น เครื่องที่ผมใช้ ttyS01 (หรือ COM2) คือพอร์ตที่เป็นอินฟราเรด เวลาใช้งานพอร์ตนี้ก็จะติดต่อผ่านดีไวซ์ /dev/ttyS1 เมื่อรู้ว่าใช้ดีไวซ์ตัวไหนแล้วก็ไปตั้งใน/etc/sysconfig/irda อย่างนี้
[kitt@peorth kitt]$ cat /etc/sysconfig/irda IRDA=yes DEVICE=/dev/ttyS1 DISCOVERY=yes
มาถึงตรงนี้ก็เป็นอันเสร็จขั้นตอนการ config พอร์ตอินฟราเรดสำหรับลินุกซ์ หากรีบูตระบบหรือสั่ง service irda start ลินุกซ์ก็พร้อมที่จะติดต่อกับพอร์ตอินฟราเรดแล้ว :)
แต่ต้องทำความเข้าใจอีกนิดว่าพอร์ตอินฟราเรดนั้นสามารถทำงานได้หลายรูปแบบขึ้นกับว่าใช้โปรโตคอลในการสื่อสารแบบไหน .. กรณีปาล์ม/คลีเอ้จะเชื่อมต่อด้วยโปรโตคอลแบบเดียวกับพอร์ตสื่อสาร (ircomm-tty) ซึ่งจะทำงานผ่านดีไวซ์ /dev/ircomm0 ครับ .. หาก sync ปาล์ม/คลิเอ้ผ่านอินฟราเรดเป็นประจำก็ควรทำ symlink จาก /dev/pilot ไปที่ /dev/ircomm0 ไว้เลยครับ เพราะโปรแกรมส่วนใหญ่จะใช้ /dev/pilot เป็นดีไวซ์ในการสื่อสารโดยปริยาย
(as root) [kitt@peorth kitt]# ln -sf /dev/ircomm0 /dev/pilot
ทีนี้เราก็พร้อมจะเริ่ม sync กันแล้ว :D
วิธี synchronize ข้อมูล
โปรแกรมพื้นฐานที่สุดในการนี้ก็คือ pilot-xfer (หากไม่มี ให้ติดตั้งแพคเกจ pilot-link) การ backup/sync/restore/install ใช้คำสั่งนี้เพียงคำสั่งเดียวเลย
- pilot-xfer -b สำหรับ backup (ทุก file)
- pilot-xfer -s สำหรับ sync (backup เฉพาะ update ที่มีการ update)
- pilot-xfer -r สำหรับ restore
- pilot-xfer -i foo.prc สำหรับติดตั้ง foo.prc ลงในเครื่องปาล์ม/คลีเอ้
หากสั่งงานเหมือนข้างบนนี้ pilot-xfer จะใช้ดีไวซ์ /dev/pilot ในการเชื่อมกับปาล์ม/คลีเอ้ และเก็บข้อมูลลง $HOME/.pilot ซึ่งเป็น default directory ที่ใช้เก็บข้อมูล .. รายละเอียดอื่นๆ (อีกเยอะ) ดูได้ด้่วยการสั่ง man pilot-xfer ครับ มันมีโปรแกรมสำหรับ อ่าน/เขียน todo, memo, datebook, etc. ด้วย
อื่นๆ
Diagram การเชื่อมต่อจะประมาณนี้ครับ:
pilot-link -> /dev/pilot -> /dev/ircomm0 -> [ircomm-tty -> ircomm -> irda] -> /dev/irda0 -> Hardware IrDA device -> palm
ข้างใน [ … ] คือส่วนของเคอร์เนลครับ ถ้า compile irda เป็น kernel module แล้ว lsmod ดูจะเห็นว่ามี
ircomm-tty 38528 0 (autoclean) ircomm 18252 0 [ircomm-tty] irtty 10048 2 (autoclean) irda 191872 0 (autoclean) [ircomm-tty ircomm irtty]
กรณีที่ compile kernel เองและต้องการใช้พอร์ดอินฟราเรดตรวจดูตามนี้ครับ
CONFIG_IRDA=m CONFIG_IRLAN=m CONFIG_IRNET=m CONFIG_IRCOMM=m CONFIG_IRDA_ULTRA=y CONFIG_IRDA_CACHE_LAST_LSAP=y CONFIG_IRDA_FAST_RR=y CONFIG_IRDA_DEBUG=y CONFIG_IRTTY_SIR=m CONFIG_IRPORT_SIR=m
ส่วน Dongle / FIR ก็ config ตามฮาร์ดแวร์ที่มีอยู่ครับ
บางระบบจะไม่ probe ircomm-tty อัตโนมัติ ถ้าเจอกรณีนี้ก็ต้อง modprobe/insmod เองครับ โดย
(as root) [kitt@peorth kitt]# modprobe ircomm-tty
จากนั้นค่อยเริ่ม pilot-xfer
มี palm หลายๆ รุ่น (หรืออาจจะทุกรุ่น ?) ที่จำเป็นต้องตั้ง flow control ของ IR เป็น off ด้วย ไม่งั้น
มันไม่ sync ครับ วิธีตั้งก็
HotSync -> Options -> Connection Setup -> IR to a PC/Handheld -> Edit ... -> Details ... -> Flow Ctl: -> Off
ถ้าติดปัญหาเรื่อง permission เช็คที่ /etc/security/console.perm ควรจะมีสองบรรทัดนี้
<pilot>=/dev/pilot /dev/usb/ttyUSB* /dev/ircomm* .... <console> 0600 <pilot> 0660 root.uucp
ถ้าไม่มี หรือมีแต่ไม่เหมือน ก็แก้ไขให้ได้ตามนี้ครับ จากนั้นก็ logout แล้ว login เข้ามาใหม่