Журнал Эмбеддед-Инженера

[WiP] Работа с iPhone|iPad|iPod в Линукс

Подготовка

Что из пакетов есть:

usbmuxd-devel.x86_64 : Development package for usbmuxd
usbmuxd.x86_64 : Daemon for communicating with Apple's iOS devices
afpfs-ng-devel.x86_64 : Development files for afpfs-ng
fuse-afp.x86_64 : FUSE driver for AFP filesystem
gvfs-afp.x86_64 : AFP support for gvfs
afpfs-ng.x86_64 : Apple Filing Protocol client
dmg2img.x86_64 : Uncompress the Apple compressed disk image files

libgpod.x86_64 : Library to access the contents of an iPod
libgpod-sharp.x86_64 : C#/.NET library to access iPod content
python-gpod.x86_64 : Python module to access iPod content
libimobiledevice-devel.x86_64 : Development package for libimobiledevice
libimobiledevice-python.x86_64 : Python bindings for libimobiledevice
libimobiledevice.x86_64 : Library for connecting to mobile devices
libplist.x86_64 : Library for manipulating Apple Binary and XML Property Lists

Устанавливаем только необходимое:

sudo yum install -y libgpod libimobiledevice libplist usbmuxd

!Если собирать из свежего среза заявлена совместимость up to iOS 10!

Работа

Собственно, уже этого достаточно для базовой работы с iДевайсом из GUI: доступны фото, записи с диктофона, есть возможность перетаскивать документы из/в песочницы программ, использования айфона в качестве GSM/3G/LTE-модема (не надо ничего настраивать!), etc.. Чтобы при каждом подключении к хосту  iДевайс не спрашивал, доверять ли этому хосту, то делаем upair-pair:

$ idevicepair unpair
$ idevicepair pair
SUCCESS: Paired with device 13e1...8846
$ idevicepair validate
SUCCESS: Validated pairing with device 13e10...8846

Если что-то пошло не так, иногда помогает переподключение iДевайса к хосту.

Команды в CLI

Список доступных утилит текущей* версии libimobiledevice:

idevicebackup 
idevicebackup2 
idevicedate 
idevicedebugserverproxy 
idevicediagnostics 
ideviceenterrecovery 
idevice_id 
ideviceimagemounter 
ideviceinfo 
idevicepair 
ideviceprovision 
idevicescreenshot 
idevicesyslog

Выясняем какие девайсы подключены:

$ idevice_id --list
13e1...8846
dead...beef
6a1d...4d7c

Выясняем что за устройство подключено по его уникальному ID:

$ ideviceinfo --simple --udid 13e10...8846
BuildVersion: 13G36
ChipID: 35138
DeviceClass: iPod
DeviceColor: white
DeviceName: Doka's iPod touch
DieID: 2815351804636929824
HardwareModel: N78AP
ProductName: iPhone OS
ProductType: iPod5,1
ProductVersion: 9.3.5
ProductionSOC: true
ProtocolVersion: 2
TelephonyCapability: false
UniqueChipID: 497747092424
UniqueDeviceID: 13e10...8846
WiFiAddress: xc:zd:ya:7w:7v:8s

Делаем бэкап с помощью idevicebackup2 (idevicebackup является устаревшей ибо подерживает iOS до версии 4 включительно):

$ idevicebackup2 --udid 13e10...8846 backup /work/iPod-backup
Backup directory is "/work/iPod-backup"
Started "com.apple.mobilebackup2" service on port 50744
Starting backup...
Requesting backup from device...

Рингтоны

С помощью ffmpeg можно самому изготавливать рингтоны для айДевайсов (по сути: перекодировать в ААС). По какой-то непонятной причине длительность мелодии ограничена ~40 секундами, поэтому дополнительно надо будет в ffmpeg обрезать мелодию. Также полезным будет снизить битрейт и перевести в моно — памяти в телефоне никогда не бывает много:

ffmpeg -i Cafe.mp3 -ss 75 -t 30 -ac 1 -ab 96k -f mp4 -acodec libfaac -metadata title="Cafe De Flor" -metadata genre="Ringtone" -y Cafe.m4r

Итак, разберем этот простой пример:

 

 

Ссылки

http://www.libimobiledevice.org/ — libimobiledevice is a cross-platform library that talks the protocols to support iPhone, iPod Touch, iPad and Apple TV devices. Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking. http://www.gtkpod.org/libgpod.html — Libgpod is a library to access the contents of an iPod. It supports playlists, smart playlists, playcounts, ratings, podcasts, album artwork, photos, etc.    

PS: если заметка помогла Вам, поделитесь ей с друзьями или коллегами: