Как стать автором
Обновить

iPod без iTunes? Это реально!

Время на прочтение 2 мин
Количество просмотров 32K
всем привет.

имеется: айпод одного из последних поколений, а также желание работать с ним из-под *nix систем. т.к. я использую FreeBSD, то в этой заметке буду опираться на неё.
итак, в чем же весь сыр-бор? имелся старенький айпод нано 4 гб, который «на ура» распознался в FreeBSD 7.0 RELEASE, и все операции с песнями я осуществлял через GtkPod. на днях купил новенький айпод нано 4гб, и к моему удивлению, gtkpod перестал его корректно распознавать.
при запуске gtkpod стал выдавать сообщение, что он не может распознать «экстра информацию» айпода, и после добавления песен айпод отказывался их видеть, хотя ясно показывал в инфо, что xxxx мегабайт занято неизвестными данными.
в общем, в ходе лазаний по бескрайним просторам инета, выяснилось, что это связано с дополнительным уровнем защиты, которую эппл добавил в айподы последних поколений и в айфоны. база данных новых моделей эппловских девайсов теперь защищена чексуммой. в случае несовпадения этой чексуммы с содержимым базы данных айпода, айпод попросту игнорирует закинутые на него файлы, и не отображает их на своем дисплее. новая версия libgpod поддерживает запись этой сгенерированной чексуммы на айпод, однако, для генерации самой чексуммы требуется т.н. «firewire ID», который уникальный для разных моделей айподов. а посему, этот айдишник нужно «подсказать» проге вручную.

ниже рецепт решения проблемы:
  • 1. ставим любой из популярных айпод-менеджеров под *nix, который __обязательно__ использует libgpod.
  • я использую GTKPod 0.99.12.
  • 2. проверяем, что версия либы libgpod не ниже 0.6.0
  • 3. качаем 50hz.ws/dev/getserial.c.
  • 4. собираем: gcc ./getserial.c -o ./getserial
  • 5. подрубаем плеер к компу. маунтим его как msdosfs: mount_msdosfs /dev/da0s1 /mnt/ipod
  • 6. запускаем ./getserial /dev/usbX, последовательно перебирая индекс X, начиная с 0
  • 7. если программа выдаст что-то в духе:
  • "[2:2] Apple Inc. — iPod
  • iSerialNumber: 000A27001D37AD65"
  • , значит мы нашли искомый идентификатор модели! ура!!
  • 8. если пункт 6. прошел успешно, то идем в /mnt/ipod/iPod_Control/Device/ и здесь в файлик SysInfo вписываем
    «FirewireGuid: 0xXXXXXXXXXXXXXXXX
  • где вместо XXXXXXXXXXXXXXXXX пишем наш найденный идентификатор.
  • к примеру мой /mnt/ipod/iPod_Control/Device/SysInfo теперь выглядит так:
  • »ModelNumStr: xA005
  • FirewireGuid: 0x000A27001D37AD65"
  • 9. сохраняем изменения в этом файле.
  • 10. запускаем gtkpod, закидываем музыку через него на айпод. жмем «сохранить». размаунчиваем айпод.
  • 11. включаем айпод… теперь айпод видит закинутую на него музыку!!!

ps: под линуксы процедура очень похожая. единственно, для получения идентификатора ипода используется команда:
«lsusb -v | grep -i Serial»
pps: полезные линки:
www.mail-archive.com/gtkpod-cvs2@lists.sourceforge.net/msg02174.html
ubuntuforums.org/showthread.php?t=611404
lilserenity.wordpress.com/2007/12/22/virgin-mobile-praise-ubuntu-and-ipod-nano-3g
Теги:
Хабы:
+39
Комментарии 71
Комментарии Комментарии 71

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн