mount iPhone บน Karmic ฉบับย่อ

Sun 15 Nov 2009
ใช้เวลาอ่าน 3 นาที

ว่าด้วยการเชื่อมต่อ 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 นะครับ

  1. ทำการ update ข้อมูลจาก server
sudo apt-get update
  1. ติดตั้ง package ที่ต้องการใช้ดังนี้
sudo apt-get install ifuse libiphone

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

  • libusb
  • usbmuxd
  • libplist
  • libiphone
  • ifuse
  1. เมื่อติดตั้งเสร็จแล้วก็ลองเสียบสาย 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 detectedNov 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 เหมือนด้านบน

  1. ทำการ 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