Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:linux:linux_ipod_touch [2011/03/23 08:56]
alex [Wrong Database Version]
— (current)
Line 1: Line 1:
-====== Linux and the iPod Touch ====== 
- 
-Linux support for the iPod Touch is quite good.  However, the latest versions of Apple software are not always completely compatible. ​ Here is how I managed to get my new iPod Touch with iOS 4.2.1 working with Ubuntu.  ​ 
- 
-===== Jailbreak ===== 
- 
-Jailbreaking opens up an infinite new world to iPod Touch and iPhone users. ​ I highly recommend it and I cannot guarantee that this set of instructions will work on non-jailbroken devices. 
- 
-I used the [[http://​www.greenpois0n.com/​|GreenPois0n]] jailbreak for my iPod.  Unfortunately,​ I was forced to find a windows box to run the jailbreak. ​ Come on, guys.  At least make it work in a VM.  Note: you need to connect the iPod to iTunes to initialize it first. ​ This can take place in a VM.  For whatever reason, GreenPois0n disagreed with virtualbox when I tried it, though. ​ Your mileage may vary.  ​ 
- 
-===== Install Ubuntu Software ===== 
- 
-As of this writing (3/​17/​2010),​ the default Ubuntu packages do not work with the latest hardware and software combination. ​ Therefore, you will probably need to add ''​ppa:​pmcenery/​ppa''​ to your software sources. ​ This is most easily done through Synaptic by clicking //​Settings//​ -> //​Repositories//,​ then //Other Software//, then //Add...// and pasting in ''​ppa:​pmcenery/​ppa''​ and clicking //Add Source//​. ​ Then close the dialog and click //Reload//. 
- 
-Now, install or update ifuse (>= 1.1.1), libgpod4 (>= 0.8.0), libimobildedevice (>= 1.0.4), usbmuxd (>= 1.0.6), and banshee (>= 1.8.0). ​ Then reboot.  ​ 
- 
-===== Install iPod software ===== 
- 
-Start up the Cydia app.  Search for an install openssh and vim.  iFile will allow the change to be carried out locally; however iFile costs $4.00 the last time I checked. ​ The instructions below are for SSH.  ​ 
- 
-===== iPod configuration ===== 
- 
-The latest database version is incompatible with the latest linux drivers. ​ Therefore, the database version of the device must be downgraded. ​ The process is quite simple.  ​ 
- 
-  - Log in to the ipod via SSH as root with default password "​alpine"​.  ​ 
-  -- su to root 
-  .. <​code>​$ su</​code>​ 
-  -- Edit Checkpoint.xml to change DBVersion to 4 
-  .. <​code>#​ vim /​System/​Library/​Lockdown/​Checkpoint.xml</​code>​ 
-  .. You'll see something like this: 
-  .. <code xml 798> 
-        <​key>​DBVersion</​key>​ 
-        <​integer>​5</​integer>​ 
-</​code>​ 
-  .. Change it to this: 
-  .. <code xml 798> 
-        <​key>​DBVersion</​key>​ 
-        <​integer>​4</​integer>​ 
-</​code>​ 
-  -- Delete /​var/​mobile/​Media/​iTunes_Control 
-  .. <​code>#​ rm -rf /​var/​mobile/​Media/​iTunes_Control</​code>​ 
-  -- Change password (optional, but highly recommended) 
-  .. Root password: 
-  .. <​code>#​ passwd</​code>​ 
-  .. User '​mobile'​ password (default non-root user): 
-  .. <​code>#​ passwd mobile</​code>​ 
-  -- Reboot device 
-  .. <​code>#​ reboot</​code>​ 
- 
-===== Initialize Database ===== 
- 
-Connect the device to iTunes and transfer at least 1 song to the device. ​ This will initialize the database for use with linux. 
- 
-===== Transfer songs with Banshee ===== 
- 
-If everything has been done properly so far, the iPod should now work properly with Banshee. ​ If you haven'​t already, you might want to install the ''​gstreamer0.10-plugins-ugly-multiverse''​ package for the //lame// mp3 encoder. ​ This will allow Banshee to convert tracks to mp3 automatically.  ​ 
- 
-Open up Banshee with the device connected. ​ Banshee should detect your device and display it in the side panel. ​ Try dragging a song onto the device in Banshee. ​ Once it is finished transferring,​ wait another 10 seconds or so and quit banshee (media -> quit). ​ Check the music player on the device to make sure the file appeared. ​ If so, you're done.  Banshee will now be able to transfer all of your music. ​ If not, well, back to the old drawing board... 
- 
-====== Debugging Notes ====== 
- 
-Run ''​banshee --debug''​ and transfer a song.  See if one of the errors below appears. 
- 
- 
-===== Wrong Database Version ===== 
- 
-If ''​banshee --debug''​ yields this error, the device is configured with database version 5 (too new). 
- 
-<​code>​ 
-Failed to save iPod database - GLib.GException:​ Failed to generate sqlite database (in `libgpod-sharp) 
-</​code>​ 
- 
-To check the current configured version, run 
- 
-<​code>​ideviceinfo -q com.apple.mobile.iTunes -k DBVersion</​code>​ 
- 
-. 
- 
-The solution is to edit Checkpoint.xml and change ''​DBVersion''​. ​ If you have already done this, make sure to delete the ''​iTunes_Control''​ directory and reboot the device. ​ Do not allow it to sync with anything and do not start the music player before rebooting.  ​ 
- 
-Note: some sources say change the version to 2.  I tried that, and it didn't work.  After much head scratching, I tried 4 and it worked perfectly. ​ Don't forget to delete the ''​iTunes_Control''​ folder, reboot the iPod, and initialize the database with iTunes before trying again with banshee.  ​ 
- 
-===== Old Driver Software ===== 
- 
-If opening up the device in Nautilus only yields a folder called DCIM, then you are running the incompatible packages. ​ Please add the ppa listed above, upgrade, and reboot.  ​ 
- 
-The below error messages are also indications that the drivers are the wrong version. ​ If any of these messages show up in dialog boxes or debug outputs, please check the versions. ​ Also make sure that the computer was rebooted after updating the packages.  ​ 
- 
-<​code>​The ogg format is not supported by the device, and no converter was found to convert it.</​code>​ 
- 
-<​code>​The mp3 format is not supported by the device, and no converter was found to convert it.</​code>​ 
- 
-<​code>​[5 Warn 03:​07:​58.970] Caught an exception - System.ApplicationException:​ The ogg format is not supported by the device, and no converter was found to convert it (in `Banshee.Dap'​) 
-  at Banshee.Dap.DapSource.AddTrackAndIncrementCount (Banshee.Collection.Database.DatabaseTrackInfo track) [0x00000] in <​filename unknown>:​0 
-  at Banshee.Sources.PrimarySource.AddTrackList (System.Object cached_list) [0x00000] in <​filename unknown>:​0</​code>​ 
-  ​ 
-<​code>​[5 Warn 03:​07:​58.970] Caught an exception - System.ApplicationException:​ The mp3 format is not supported by the device, and no converter was found to convert it (in `Banshee.Dap'​) 
-  at Banshee.Dap.DapSource.AddTrackAndIncrementCount (Banshee.Collection.Database.DatabaseTrackInfo track) [0x00000] in <​filename unknown>:​0 
-  at Banshee.Sources.PrimarySource.AddTrackList (System.Object cached_list) [0x00000] in <​filename unknown>:​0</​code>​ 
- 
-===== Red Herring ===== 
- 
-The following error message looks ominous and I originally thought it to be an indication of an incorrect database version. ​ However, it appears every time my ipod touch successfully updates. ​ If you get it, all it really means is that some of the database updates apparently didn't work as expected, perhaps due to some sort of database structure change. ​ This error won't stop your ipod from syncing, so if it is not syncing, look elsewhere. 
- 
- 
-<​code>​ 
-[run_post_process_commands] Getting SQL post process commands 
-[run_post_process_commands] WARNING: ignoring non-string value for key '​Version'​ 
-[run_post_process_commands] Running 173 post process commands now 
-[run_post_process_commands] ERROR when executing '​RemoveNullFromArtistName':​ no such table: item_artist 
-[run_post_process_commands] ERROR when executing '​AddIsITunesUColumn':​ duplicate column name: is_itunes_u 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_album_artist_name_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_genre_map_genre_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_album_name_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_artist_name_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_genre_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_composer_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_album_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_album_artist_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_series_name_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_title_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_item_artist_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​InsertIntoSortMap_composer_name_order':​ no such function: iPhoneSortKey 
-[run_post_process_commands] ERROR when executing '​UpdateSortMapNameSection':​ no such function: iPhoneSortSection 
-[run_post_process_commands] ERROR when executing '​CreateIndex_SongGenres_Sections':​ table item has no column named genre_blank 
-[run_post_process_commands] ERROR when executing '​CreateIndex_ArtistAlbums_Sections':​ index ArtistItems_Sections already exists 
-[run_post_process_commands] 156 out of 173 post process commands successfully executed 
-</​code>​ 
- 
- 
-