Monday, June 30, 2008

ใช้ Internet บน Treo ผ่านทาง bluetooth ของ Ubuntu Linux PC

เนื่องจาก Palm Treo 680 นี้ไม่มี Wifi ให้เชื่อมต่อกับ internet ได้โดยตรง วิธีการที่สามารถจะเชื่อมต่อกับ internet ที่ประหยัด และสะดวกที่สุดก็คงเป็นการเชื่อมต่อผ่านทาง bluetooth ซึ่งตัว Palm Treo เองได้เตรียมเครื่องมือที่เรียกว่า DialUp Networking (DUN) เอาไว้ให้เรียบร้อยแล้ว

โดยปกติ เรามักจะคุ้นเคยกับการที่ โทรศัพท์ทำตัวเป็นโมเต็ม เพื่อให้คอมพิวเตอร์สามารถเชื่อมต่อกับ internet ได้ แต่ในกรณีนี้เป็นในทางกลับกัน นั่นก็คือ เราจะทำให้ Palm สามารถใช้ internet ได้โดยผ่านเครื่องคอมพิวเตอร์ PC ที่เชื่อมต่อ internet อยู่แล้ว ซึ่งเทคนิคอันนี้ เรียกว่า Bluetooth Reversed DUN

การทดสอบการใช้งานนี้ ทำบน Ubuntu Hardy กับ Palm Treo 680

ขั้นตอนที่ 1 ทำการเปิดช่องทางให้ Ubuntu สามารถรับ connection จาก Treo ได้

1. เปิดหน้าจอ terminal
2. พิมพ์คำสั่งดังต่อไปนี้ ทีละคำสั่ง

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i ppp0 -j ACCEPT

sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

โดยในคำสั่งบรรทัดที่ 2 ถ้าหากมีการเชื่อมต่อ internet ผ่านทาง network card ตัวอื่น ก็ให้เปลี่ยนจาก eth0 ตามความเหมาะสม อย่างเช่น ถ้าใช้ wireless lan ผ่านทาง wlan0 ก็ให้เปลี่ยนเป็น wlan0

3. ทำการค้นหา DNS server address ซึ่งโดยปกติจะอยู่ในไฟล์ /etc/resolv.conf

cat /etc/resolv.conf

หรือไม่ก็ใช้ openDNS address คือ 208.67.222.220 หรือ 208.67.222.222 ซึ่งจะนำไปใช้ในขั้นตอนต่อไป

4. สร้างไฟล์สำหรับ dund

sudo nano /etc/ppp/peers/palm

พิมพ์ข้อความด้านล่าง

--------
115200

192.168.2.1:192.168.2.2

local

ms-dns 208.67.222.222

noauth

debug

--------

ในบรรทัดที่ 4 สามารถเปลี่ยนหมายเลขเป็น DNS server address อื่น ที่จดมาในข้อ 3. ได้

5. ทำการ run dund โดยใช้คำสั่ง

dund --nodetach --listen --persist --msdun call palm

เป็นอันเสร็จขั้นตอนบน PC

ขั้นตอนที่ 2 สร้าง connection ใน Treo
  • ไปที่ Prefs -> Connection -> New
  • ใส่ Name ตามต้องการ เช่น Bluetooth to PC, Connect to PC, Via Bluetooth
  • ในช่อง Device สามารถเลือกให้เป็น trusted devices ถ้าเคย pair กันมาก่อนแล้ว หรือเลือกให้ค้นหาก็ได้
  • Tap ที่ปุ่ม Details, Speed 115,200, Flow ctl Automatic, OK
  • หลังจากนั้นออกมาที่หน้าจอ Prefs อีกครั้ง
  • เลือก Network -> Menu -> Service -> New
  • ใส่ชื่อตามต้องการ เช่น Ubuntu
  • เลือกชื่อ Connection ที่ได้สร้างเอาไว้ในขั้นตอนก่อน (Bluetooth to PC), OK
  • แล้วก็ทดลอง connect ถ้าทุกอย่างเป็นไปเรียบร้อยดี ก็จะเห็นความเคลื่อนไหวบนจอ terminal
สำหรับการตั้งให้ dund และการ config iptable เป็นไปโดยอัตโนมัติ ทุกครั้งที่ boot เครื่อง ทำได้โดยการสร้าง script ไว้ที่ /etc/init.d/

sudo nano /etc/init.d/start_bluetooth.sh
  • พิมพ์คำสั่งด้านล่าง
----------
#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A FORWARD -i ppp0 -j ACCEPT

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

killall -v dund

dund --listen --persist --msdun call palm
-----------
Save

  • เปลี่ยน permission เป็น root executable
sudo chmod 755 start_bluetooth
  • link ไปไว้ใน run level
sudo ln -s /etc/init.d/start_bluetooth /etc/rc2.d/S98_start_bluetooth

เป็นอันเสร็จเรียบร้อย

อ้างอิง

help.ubuntu.com
http://www.newt.com/debian/treo650.html

No comments: