ว่าด้วยการเชื่อมต่อ iPhone กับ Ubuntu 9.10 แบบ Ext HDD

iphone

หลังจากได้ค้นหาข้อมูลการเชื่อมต่อ iPhone 3GS กับ Karmic มาสักระยะเลยอยากบันทึกไว้สักหน่อยซึ่งเนื้อหาที่จะเขียนไม่ได้ใหม่ไปกว่าข้อมูลที่มีอยู่บน Internet ในตอนนี้ก็อ่านเพือเป็นแนวทางในการค้นคว้าต่อไปนะครับ

ก่อนอื่นมาดูข้อจำกัดของ iPhone ที่ทำงานกับ Linux กันก่อน

  • Apple ไม่ Support การทำงาน iPhone บน Linux
  • ไม่มี iTune สำหรับ Sync ข้อมูลต่างๆ บน Linux
  • Linux มองเห็น iPhone เป็นแค่กล้องถ่ายรูปธรรมดาเท่านั้น ซึ่งสามารถ Copy รูปภาพและ VDO ออกมาได้อย่างเดียว
  • การเชื่อมต่อ internet โดยใช้ iPhone เป็นตัว share net ทำได้เฉพาะผู้ที่ใช้เครือข่าย True เท่านั้น ตรงนี้ผมยังไม่ได้หาวิธีเพราะผมใช้ Dtac

ข้างบนเป็นข้อจำกัดที่รับรู้กันโดยทั่วไปอยู่แล้ว แต่ถ้าใครที่ใช้เครื่องที่ผ่านการ Jailbreak มาแล้วก็จะสามารถทำอะไรได้มากกว่านี้ เฃ่น

  • สามารถ share net ได้ทุกเครือข่าย
  • สามารถ remote เข้าไปยังเครื่อง iPhone ผ่าน ssh ได้
  • สามารถ mount iPhone ได้ถึงระดับ root คือมองเห็นโครงสร้างของ filesystem ทั้งหมด
  • bla bla

แต่ที่ผมจะเขียนบันทึกในวันนี้นั้นเฉพาะเรื่องการ mount iPhone แบบ External Harddisk เท่านั้นนะครับ ซึ่งเครื่องผมเป็นเครื่องที่ไม่ได้ผ่านการ Jailbreak มาแต่อย่างใด

ข้อมูลทั้งหมดผมได้มาจากเว็บ : http://marcansoft.com

การเตรียมตัว และ การติดตั้งไม่ได้ยุ่งอยากอะไรสำหรับ Karmic ทำได้ในเวลาไม่กี่นาทีดังนี้

สิ่งที่ต้องเตรียม

  • Computer with Karmic
  • iPhone 3G ผมใช้ 3GS รุ่นอื่นไม่แน่ใจนะ
  • สาย usb ของ iPhone
  • ชุดพัฒนาโปรแกรมบน Karmic เช่น gcc ในกรณีต้องการ build เอง

เริ่มลงมือกันเลย

วิธีแรกการติดตั้งแบบอัตโนมัติ

1. add ppa:jonabeck/ppa เข้าใน sources.list โดยใช้คำสั่ง

sudo add-apt-repository ppa:jonabeck/ppa  

ตรงนี้มันจะทำสองอย่างคือ การเพิ่ม repo เข้าไปใน sources.list และ การ import keys มาจาก server ด้วย ถ้าเจออาการนิ่งไปนานๆ แสดงว่า network ที่ใช้มีการ block port ของ keys server ไม่ต้องตกใจรอสักครู่มันก็จะหลุดออกมาพร้อมข้อความ error ก็ไม่ต้องสนใจก็ได้ แต่มันจะบ่นเรื่อง keys ทุกครั้งที่มีการ update หรือ ติดตั้ง package อ้อ!! วิธี add repo แบบเดิมก็ยังใช้ได้อยู่นะครับ ตือการยัดเข้าไปตรงๆ ใน sources.list เลย โดยใส่บรรทัดต่อไปนี้ลงไป

deb http://ppa.launchpad.net/jonabeck/ppa/ubuntu karmic main 
deb-src http://ppa.launchpad.net/jonabeck/ppa/ubuntu karmic main

สังเกตุว่าวิธีแรกจะง่ายกว่าเพราะไม่ต้องกังวลเรื่อง syntax ไม่ต้องใส่ code name และที่เก็บของวิธีแรกจะเก็บไว้ใน /etc/apt/sources.list.d นะครับ

2. ทำการ update ข้อมูลจาก server

sudo apt-get update

3. ติดตั้ง package ที่ต้องการใช้ดังนี้

sudo apt-get install ifuse libiphone

packages หลักๆ ที่ควรติดตั้งคือ

  • libusb
  • usbmuxd
  • libplist
  • libiphone
  • ifuse

4. เมื่อติดตั้งเสร็จแล้วก็ลองเสียบสาย sync iPhone ซึ่งมันควรจะรัน usbmuxd อัตโนมัติ ตรวจสอบด้วยรันคำสั่ง tail -f /var/log/messages ไว้อีก terminal ซึ่งจะเห็นข้อความ

Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6220]: [3] usbmuxd v1.0.0 starting up
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [4] Creating socket
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [3] Successfully dropped privileges to 'usbmux'
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [4] Initializing USB
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [4] Found new device with v/p 05ac:1294 at 2-5
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [4] Using wMaxPacketSize=512 for device 2-5
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [3] Connecting to new device on location 0x20005 as ID 1
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [4] 1 device detected
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [3] Initialization complete
Nov 16 11:11:15 mrchoke-ubuntu usbmuxd[6222]: [3] Connected to v1.0 device 1 on location 0x20005 with serial number xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


ถ้าได้ตามนั้นก็แสดงว่าทำได้ละ ถ้าไม่ได้ต้องเรียกคำสั่ง usbmuxd เอง

$ sudo usbmuxd -u -U -v -v

-v ให้แสดง verbose เหมือนด้านบน

5. ทำการ mount ด้วยคำสั่ง ifuse

$ sudo ifuse mount-point

ถ้าใครผ่านการ jailbreak มาแล้วก็ให้ใส่ –root

$ sudo ifuse --root mount-point

แค่นี้ก็จะสามารถเข้าไป copy พวกเพลงพวกหนังได้แล้ว เหลือแต่ขั้นตอนการเปิดด้วยพวกโปรแกรมจัดการเพลงต่ออีกทีซึ่งต้องอาศัย libgpod ซึ่งที่มีอยู่มันยังเก่าไปยังไม่ support db ตัวใหม่ของ iTune แต่ถ้าใครลองทดสอบตัวใหม่ก็ลองทำตามในเว็บ http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/ ดูครับ ผมยังไม่ได้ลอง ส่วน iPod และ iPhone เก่าๆ น่าจะได้ แต่ก็มีบางคนรายงานว่า sync แล้วทำให้ db เสียก็มี อันนี้แล้วแต่ความใจกล้าว่าจะอยากลองไหม ฮ่าๆ ผมไม่รู้เหมือนกัน แต่เท่านี้ก็สามารถ copy ออกมาได้แล้ว แค่ยัง sync เพลงลงไปไม่ได้แค่นั้นเอง

เอาละไปต่อยอดกันเอาเองนะจีะ

mrchoke@mrchoke-ubuntu:~$ ls -l /media/iphone/
total 0
drwxr-xr-x 2 root root 68 1970-01-01 07:00 ApplicationArchives
-rw-r--r-- 1 root root 0 1970-01-01 07:00 com.apple.itdbprep.postprocess.lock
-rw-r--r-- 1 root root 0 1970-01-01 07:00 com.apple.itunes.lock_sync
drwxr-xr-x 5 root root 238 1970-01-01 07:00 DCIM
drwxr-xr-x 2 root root 102 1970-01-01 07:00 Downloads
drwxr-xr-x 6 root root 204 1970-01-01 07:00 iTunes_Control
drwxr-xr-x 3 root root 136 1970-01-01 07:00 Photos
drwxr-xr-x 2 root root 68 1970-01-01 07:00 Podcasts
drwxr-xr-x 2 root root 68 1970-01-01 07:00 PublicStaging
drwxr-xr-x 2 root root 68 1970-01-01 07:00 Purchases
drwxr-xr-x 2 root root 102 1970-01-01 07:00 Recordings
drwxr-xr-x 2 root root 136 1970-01-01 07:00 Safari