When plugging the ipod touch, amarok does not show it up. Actually, when running with "amarok -d" I was able to see amarok was seeing the plug event, but was not able to mount it using "ifuse". [IpodHandler] ifuse exited with non-zero exit code 1 amarok: [IpodHandler] Mounting imobiledevice using ifuse on "/tmp/kde-david/amarok/imobiledevice" failed I was able to fix it by manually changing the group ownership of /tmp/kde-david/amarok/imobiledevice to "plugdev" (being a member of the group does not seem to be enough). Second problem was that amarok was not able to parse the file iTunes_Control/iTunes/PlayCounts.plist It seems to think it should be an xml file while clearly in my case it looked like a binary file (unless it is compressed maybe ?). Just renaming the file fixed it for me. Reproducible: Always Steps to Reproduce: 1. launch amarok with -d option 2. plug ipod Actual Results: nothing happened in amarok Expected Results: icon appears in amarok. I know it's going to sound like a broken idea, but not showing anything happening in amarok was really frustrating. It's only when I discovered the -d option that I saw that something was actually happening, it was just not showing up in the GUI. So maybe at least an error message saying "Hey, we detected an ipod, but we were not able to mount it" would have been nice for me who is discovering the feature. Until then I thought it was a system issue (missing lib, wrong version, ...) For the other problem (parsing error), I was presented with a dialog box to "initialize my device" and a big list of ipod to chose from. Weirdly enough, removing the offending file made everything works as normal, so it really seems like this file should just be ignored in case of parsing error, don't you think ? I'm running kubuntu x86_64 12.04 with amarok 2.5.0 in kde 4.8.4. Yesterday I did not have ifuse installed, I don't know if amarok would have mounted the ipod anyway without it, but I started to have sign of life only today. Love amarok, have been using it for years, but first time ever with an ipod ;-) And not too much information on the web to troubleshoot things Keep up the good work, I'm available for more information/testing if you need to. David
Aargh, actually that's not the end of it : adding tracks did not work. It seems like the transfert was done, but the db could not be written. Should I open a separate bug ? amarok: BEGIN: void Collections::CollectionLocation::queryDone() amarok: [CollectionLocation] we were about to copy something, lets proceed amarok: BEGIN: void Collections::CollectionLocation::startWorkflow(const TrackList&, bool) amarok: BEGIN: virtual void Collections::CollectionLocation::getKIOCopyableUrls(const TrackList&) amarok: [CollectionLocation] adding url KUrl("file:///home/david/Musique/shaka ponk/06 - My Name Is Stain.mp3") amarok: [CollectionLocation] adding url KUrl("file:///home/david/Musique/shaka ponk/05 - Sex Ball.mp3") amarok: [CollectionLocation] Format is 0 amarok: BEGIN: void Collections::CollectionLocation::slotStartCopy(const QMap<KSharedPtr<Meta::Track>, KUrl>&, const Transcoding::Configuration&) amarok: BEGIN: virtual void Collections::MediaDeviceCollectionLocation::copyUrlsToCollection(const QMap<KSharedPtr<Meta::Track>, KUrl>&, const Transcoding::Configuration&) amarok: BEGIN: void Meta::MediaDeviceHandler::copyTrackListToDevice(Meta::TrackList) amarok: BEGIN: void Meta::MediaDeviceHandler::setupWriteCapability() amarok: WCB does not exist amarok: Making write capability amarok: END__: void Meta::MediaDeviceHandler::setupWriteCapability() [Took: 0s] amarok: BEGIN: void Meta::MediaDeviceHandler::setupReadCapability() amarok: END__: void Meta::MediaDeviceHandler::setupReadCapability() [Took: 0s] amarok: No tracks with same title, track not a dupe amarok: No tracks with same title, track not a dupe amarok: BEGIN: float Meta::MediaDeviceHandler::freeSpace() const amarok: totalCapacity: 6.23616e+10 amarok: usedCapacity(): 1.26545e+10 amarok: END__: float Meta::MediaDeviceHandler::freeSpace() const [Took: 0.008s] amarok: Copying 2 tracks amarok: BEGIN: void Meta::MediaDeviceHandler::copyNextTrackToDevice() amarok: Tracks left to copy after this one is now done: 2 amarok: BEGIN: bool Meta::MediaDeviceHandler::privateCopyTrackToDevice(const TrackPtr&) amarok: [IpodHandler] Mountpoint is: "/tmp/kde-david/amarok/imobiledevice" amarok: BEGIN: KUrl Meta::IpodHandler::determineURLOnDevice(const TrackPtr&) amarok: [IpodHandler] itunesDir(): ":iTunes_Control:" amarok: [IpodHandler] Copying to dirname: ":iTunes_Control:Music:F33" amarok: END__: KUrl Meta::IpodHandler::determineURLOnDevice(const TrackPtr&) [Took: 0.24s] amarok: [IpodHandler] Url's path is: "/tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F33/kpod0750933.mp3" amarok: [IpodHandler] About to copy from: "/home/david/Musique/shaka ponk/06 - My Name Is Stain.mp3" amarok: [IpodHandler] to: KUrl("file:///tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F33/kpod0750933.mp3") amarok: BEGIN: void Meta::MediaDeviceHandler::setBasicMediaDeviceTrackInfo(const TrackPtr&, Meta::MediaDeviceTrackPtr) amarok: BEGIN: void Meta::MediaDeviceHandler::setupWriteCapability() amarok: END__: void Meta::MediaDeviceHandler::setupWriteCapability() [Took: 0s] amarok: | Stamp: 33 amarok: | Stamp: 34 amarok: | Stamp: 35 amarok: | Stamp: 36 amarok: | Stamp: 37 amarok: | Stamp: 38 amarok: | Stamp: 39 amarok: | Stamp: 40 amarok: | Stamp: 41 amarok: | Stamp: 42 amarok: | Stamp: 43 amarok: | Stamp: 44 amarok: | Stamp: 45 amarok: | Stamp: 46 amarok: | Stamp: 47 amarok: | Stamp: 48 amarok: END__: void Meta::MediaDeviceHandler::setBasicMediaDeviceTrackInfo(const TrackPtr&, Meta::MediaDeviceTrackPtr) [Took: 0.11s] amarok: [IpodHandler] Path before put in ipod_path: "/tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F33/kpod0750933.mp3" amarok: [IpodHandler] on iPod: :iTunes_Control:Music:F33:kpod0750933.mp3 amarok: BEGIN: virtual bool Meta::IpodHandler::libCopyTrack(const TrackPtr&, Meta::MediaDeviceTrackPtr&) amarok: BEGIN: bool Meta::IpodHandler::kioCopyTrack(const KUrl&, const KUrl&) amarok: [IpodHandler] Copying from * KUrl("file:///home/david/Musique/shaka ponk/06 - My Name Is Stain.mp3") * to * KUrl("file:///tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F33/kpod0750933.mp3") * amarok: END__: bool Meta::IpodHandler::kioCopyTrack(const KUrl&, const KUrl&) [Took: 0s] amarok: END__: virtual bool Meta::IpodHandler::libCopyTrack(const TrackPtr&, Meta::MediaDeviceTrackPtr&) [Took: 0s] amarok: END__: bool Meta::MediaDeviceHandler::privateCopyTrackToDevice(const TrackPtr&) [Took: 0.36s] amarok: END__: void Meta::MediaDeviceHandler::copyNextTrackToDevice() [Took: 0.36s] amarok: END__: void Meta::MediaDeviceHandler::copyTrackListToDevice(Meta::TrackList) [Took: 0.37s] amarok: END__: virtual void Collections::MediaDeviceCollectionLocation::copyUrlsToCollection(const QMap<KSharedPtr<Meta::Track>, KUrl>&, const Transcoding::Configuration&) [Took: 0.37s] amarok: END__: void Collections::CollectionLocation::slotStartCopy(const QMap<KSharedPtr<Meta::Track>, KUrl>&, const Transcoding::Configuration&) [Took: 0.37s] amarok: END__: virtual void Collections::CollectionLocation::getKIOCopyableUrls(const TrackList&) [Took: 0.37s] amarok: END__: void Collections::CollectionLocation::startWorkflow(const TrackList&, bool) [Took: 0.37s] amarok: END__: void Collections::CollectionLocation::queryDone() [Took: 0.37s] Object::connect: No such signal Meta::IpodHandler::totalSteps( int ) amarok: BEGIN: void Meta::IpodHandler::slotCopyingDone(KIO::Job*, KUrl, KUrl, time_t, bool, bool) amarok: BEGIN: void Meta::MediaDeviceHandler::slotFinalizeTrackCopy(const TrackPtr&) amarok: BEGIN: virtual void Meta::IpodHandler::addTrackInDB(const MediaDeviceTrackPtr&) amarok: [IpodHandler] Adding "Shaka Ponk" - "My Name Is Stain" amarok: END__: virtual void Meta::IpodHandler::addTrackInDB(const MediaDeviceTrackPtr&) [Took: 0s] amarok: BEGIN: void Meta::MediaDeviceHandler::addMediaDeviceTrackToCollection(Meta::MediaDeviceTrackPtr&) amarok: BEGIN: void Meta::MediaDeviceHandler::setupReadCapability() amarok: END__: void Meta::MediaDeviceHandler::setupReadCapability() [Took: 0s] amarok: END__: void Meta::MediaDeviceHandler::addMediaDeviceTrackToCollection(Meta::MediaDeviceTrackPtr&) [Took: 0s] amarok: END__: void Meta::MediaDeviceHandler::slotFinalizeTrackCopy(const TrackPtr&) [Took: 0s] amarok: END__: void Meta::IpodHandler::slotCopyingDone(KIO::Job*, KUrl, KUrl, time_t, bool, bool) [Took: 0.001s] amarok: BEGIN: void Meta::IpodHandler::fileTransferred(KJob*) amarok: [IpodHandler] Tracks to copy still remain amarok: [IpodHandler] Jobs: 0 amarok: BEGIN: void Meta::MediaDeviceHandler::copyNextTrackToDevice() amarok: Tracks left to copy after this one is now done: 1 amarok: BEGIN: bool Meta::MediaDeviceHandler::privateCopyTrackToDevice(const TrackPtr&) amarok: [IpodHandler] Mountpoint is: "/tmp/kde-david/amarok/imobiledevice" amarok: BEGIN: KUrl Meta::IpodHandler::determineURLOnDevice(const TrackPtr&) amarok: [IpodHandler] itunesDir(): ":iTunes_Control:" amarok: [IpodHandler] Copying to dirname: ":iTunes_Control:Music:F32" amarok: END__: KUrl Meta::IpodHandler::determineURLOnDevice(const TrackPtr&) [Took: 0.23s] amarok: [IpodHandler] Url's path is: "/tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F32/kpod0035732.mp3" amarok: [IpodHandler] About to copy from: "/home/david/Musique/shaka ponk/05 - Sex Ball.mp3" amarok: [IpodHandler] to: KUrl("file:///tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F32/kpod0035732.mp3") amarok: BEGIN: void Meta::MediaDeviceHandler::setBasicMediaDeviceTrackInfo(const TrackPtr&, Meta::MediaDeviceTrackPtr) amarok: BEGIN: void Meta::MediaDeviceHandler::setupWriteCapability() amarok: END__: void Meta::MediaDeviceHandler::setupWriteCapability() [Took: 0s] amarok: | Stamp: 49 amarok: | Stamp: 50 amarok: | Stamp: 51 amarok: | Stamp: 52 amarok: | Stamp: 53 amarok: | Stamp: 54 amarok: | Stamp: 55 amarok: | Stamp: 56 amarok: | Stamp: 57 amarok: | Stamp: 58 amarok: | Stamp: 59 amarok: | Stamp: 60 amarok: | Stamp: 61 amarok: | Stamp: 62 amarok: | Stamp: 63 amarok: | Stamp: 64 amarok: END__: void Meta::MediaDeviceHandler::setBasicMediaDeviceTrackInfo(const TrackPtr&, Meta::MediaDeviceTrackPtr) [Took: 0.011s] amarok: [IpodHandler] Path before put in ipod_path: "/tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F32/kpod0035732.mp3" amarok: [IpodHandler] on iPod: :iTunes_Control:Music:F32:kpod0035732.mp3 amarok: BEGIN: virtual bool Meta::IpodHandler::libCopyTrack(const TrackPtr&, Meta::MediaDeviceTrackPtr&) amarok: BEGIN: bool Meta::IpodHandler::kioCopyTrack(const KUrl&, const KUrl&) amarok: [IpodHandler] Copying from * KUrl("file:///home/david/Musique/shaka ponk/05 - Sex Ball.mp3") * to * KUrl("file:///tmp/kde-david/amarok/imobiledevice/iTunes_Control/Music/F32/kpod0035732.mp3") * amarok: END__: bool Meta::IpodHandler::kioCopyTrack(const KUrl&, const KUrl&) [Took: 0s] amarok: END__: virtual bool Meta::IpodHandler::libCopyTrack(const TrackPtr&, Meta::MediaDeviceTrackPtr&) [Took: 0s] amarok: END__: bool Meta::MediaDeviceHandler::privateCopyTrackToDevice(const TrackPtr&) [Took: 0.25s] amarok: END__: void Meta::MediaDeviceHandler::copyNextTrackToDevice() [Took: 0.25s] amarok: END__: void Meta::IpodHandler::fileTransferred(KJob*) [Took: 0.25s] amarok: BEGIN: void Meta::IpodHandler::slotCopyingDone(KIO::Job*, KUrl, KUrl, time_t, bool, bool) amarok: BEGIN: void Meta::MediaDeviceHandler::slotFinalizeTrackCopy(const TrackPtr&) amarok: BEGIN: virtual void Meta::IpodHandler::addTrackInDB(const MediaDeviceTrackPtr&) amarok: [IpodHandler] Adding "Shaka Ponk" - "Sex Ball" amarok: END__: virtual void Meta::IpodHandler::addTrackInDB(const MediaDeviceTrackPtr&) [Took: 0s] amarok: BEGIN: void Meta::MediaDeviceHandler::addMediaDeviceTrackToCollection(Meta::MediaDeviceTrackPtr&) amarok: BEGIN: void Meta::MediaDeviceHandler::setupReadCapability() amarok: END__: void Meta::MediaDeviceHandler::setupReadCapability() [Took: 0s] amarok: END__: void Meta::MediaDeviceHandler::addMediaDeviceTrackToCollection(Meta::MediaDeviceTrackPtr&) [Took: 0s] amarok: END__: void Meta::MediaDeviceHandler::slotFinalizeTrackCopy(const TrackPtr&) [Took: 0.001s] amarok: END__: void Meta::IpodHandler::slotCopyingDone(KIO::Job*, KUrl, KUrl, time_t, bool, bool) [Took: 0.002s] amarok: BEGIN: void Meta::IpodHandler::fileTransferred(KJob*) amarok: [IpodHandler] Tracks to copy still remain amarok: [IpodHandler] Jobs: 0 amarok: BEGIN: void Meta::MediaDeviceHandler::copyNextTrackToDevice() amarok: Tracks left to copy after this one is now done: 0 amarok: END__: void Meta::MediaDeviceHandler::copyNextTrackToDevice() [Took: 0s] amarok: END__: void Meta::IpodHandler::fileTransferred(KJob*) [Took: 0s] amarok: BEGIN: void Collections::CollectionLocation::slotFinishCopy() amarok: BEGIN: bool Meta::IpodHandler::writeITunesDB(bool) amarok: END__: void Collections::CollectionLocation::slotFinishCopy() [Took: 0s] libitdbprep: itdb_iphone_start_sync called with uuid=1abfa309c0453621d30f5d2cb8ad00a2b10941a8 itdb_iphone_start_sync: posted syncWillStart itdb_iphone_start_sync: posted syncLockRequest Locking for sync, attempt 0... itdb_iphone_start_sync: posted syncDidStart ** (amarok:15039): CRITICAL **: itdb_splr_validate: assertion `at != ITDB_SPLAT_UNKNOWN' failed (amarok:15039): GLib-WARNING **: (/build/buildd/glib2.0-2.32.3/./glib/gerror.c:390):g_error_new_valist: runtime check failed: (domain != 0) libitdbprep: itdb_iphone_stop_sync called Could not delete '.status-com.apple.itdprep.command.runPostProcess' Could not delete 'ddd.itdbm' itdb_iphone_stop_sync: posted syncDidFinish amarok: [IpodHandler] itdb_write error: Unsupported checksum type amarok: [IpodHandler] Failed to write iPod database amarok: END__: bool Meta::IpodHandler::writeITunesDB(bool) [DELAY Took (quite long) 5.1s] amarok: [IpodHandler] Writing to DB did not happen or failed amarok: BEGIN: void Meta::MediaDeviceHandler::slotDatabaseWritten(bool) amarok: END__: void Meta::MediaDeviceHandler::slotDatabaseWritten(bool) [Took: 0.003s] amarok: BEGIN: void CollectionTreeItemModelBase::handleSpecialQueryResult(CollectionTreeItem::Type, Collections::QueryMaker*, const DataList&) amarok: [CollectionTreeItemModelBase] Received special data: 0 amarok: END__: void CollectionTreeItemModelBase::handleSpecialQueryResult(CollectionTreeItem::Type, Collections::QueryMaker*, const DataList&) [Took: 0s] amarok: BEGIN: void CollectionTreeItemModelBase::handleSpecialQueryResult(CollectionTreeItem::Type, Collections::QueryMaker*, const DataList&) amarok: [CollectionTreeItemModelBase] Received special data: 0 amarok: END__: void CollectionTreeItemModelBase::handleSpecialQueryResult(CollectionTreeItem::Type, Collections::QueryMaker*, const DataList&) [Took: 0s] amarok: BEGIN: void ScanManager::checkForDirectoryChanges() amarok: BEGIN: void DirWatchJob::setPaused(bool) amarok: END__: void DirWatchJob::setPaused(
Hi David, all the iPod plugin code of Amarok 2.5 was thown away for Amarok 2.6 and rewritten. Please read comments below and then try with Amarok 2.6 beta (should be available in the backports PPA) or with current git (see http://blogs.fsfe.org/myriam/2009/09/compiling-amarok-from-git-locally-full-summary/ ) and then report back whether new behaviour is correct or not. Also please check that media-player-info package is installed. If you need to install it manually it is a bug in kubuntu kdelibs 4.8.4 package that should have it marked as runtime dependency. (In reply to comment #0) > I was able to fix it by manually changing the group ownership of > /tmp/kde-david/amarok/imobiledevice to "plugdev" (being a member of the > group does not seem to be enough). For testing A 2.6 please revert it to the original state, best idea is probably to delete the directory. > I know it's going to sound like a broken idea, but not showing anything > happening in amarok was really frustrating. It's only when I discovered the > -d option that I saw that something was actually happening, it was just not > showing up in the GUI. So maybe at least an error message saying "Hey, we > detected an ipod, but we were not able to mount it" would have been nice for > me who is discovering the feature. Until then I thought it was a system > issue (missing lib, wrong version, ...) Fixed in Amarok 2.6, please reinstate the broken PlayCounts.plist file to test it shows helpful message. > For the other problem (parsing error), I was presented with a dialog box to > "initialize my device" and a big list of ipod to chose from. Weirdly enough, > removing the offending file made everything works as normal, so it really > seems like this file should just be ignored in case of parsing error, don't > you think ? Amarok 2.6 has much better behaviour on failed db parsing, please test. On the other hand, we don't know from libgpod what is the cause, we have only textual error message, so we must leave the decision what to do to the user. > I'm running kubuntu x86_64 12.04 with amarok 2.5.0 in kde 4.8.4. > Yesterday I did not have ifuse installed, I don't know if amarok would have > mounted the ipod anyway without it. Certainly not, but please test whether it gives helpful error without it. > Love amarok, have been using it for years, but first time ever with an ipod > ;-) And not too much information on the web to troubleshoot things Even without you succeeded, because we would tell you to run it with -d flag. ;) > Keep up the good work, I'm available for more information/testing if you > need to. Good. Please test the 2.6 beta iPod plugin as throughoutly as you can. Speaking about the "failed to add tracks bug", what iPod touch and iOS version you have? iOS5 is supported only read-only, seee www.gtkpod.org
Hi Matěj, so I followed your advice and restored the Playcounts.plist, destroyed the original ifuse mount point and upgraded to amarok 2.5.90 (2.6 beta from PPA). Thankfully you mentionned package "media-player-info package" : it was not automatically installed (I will report a bug downstream). Without it, amarok did not show the ipod at all. With media-player-info package, amarok showed the ipod but failed to parse the Playcounts.plist file. As a result, it was showing up as an unknown ipod with 0 tracks, and I got a dialog asking if I wanted to initialize my ipod. (replyed "no" ;-) I moved away Playcounts.plist, and after that, amarok showed me the correct model and my tracks. So I think my previous comment stands : since it works without this file, while not just ignoring it completly when there is a parsing error ? my ipod touch silver is an iOS 5.1.1, so no write mode huh ? :-( Looking at imobiledevice, I see that the last developer version has better support for iOS 5. Do you know what it means ? (unfortunately the mail archive is not public). Browsing their git repo, I found only a reference to an improved "lockdown". Don't know what a "lockdown" is. Also, if I jailbreak my ipod, will I gain write mode ? (found that : http://gnuru.org/article/1557/ipod-touch-iphone-linux-making-it-all-work) Any other advice ? With regards David
Created attachment 72439 [details] PlayCounts.list parse error
Created attachment 72440 [details] PlayCounts.plist moved away : no error
(In reply to comment #3) > so I followed your advice and restored the Playcounts.plist, destroyed the > original ifuse mount point and upgraded to amarok 2.5.90 (2.6 beta from PPA). > Thankfully you mentionned package "media-player-info package" : it was not > automatically installed (I will report a bug downstream). Please do, link http://quickgit.kde.org/index.php?p=kdelibs.git&a=commit&h=3c1c788cc52e166278af2ed878e8a2f65874b1ac > Without it, amarok did not show the ipod at all. Expected behaviour, we can do nothing about it. > With media-player-info package, amarok showed the ipod but failed to parse > the Playcounts.plist file. As a result, it was showing up as an unknown ipod > with 0 tracks, and I got a dialog asking if I wanted to initialize my ipod. > (replyed "no" ;-) Did it mention the error? Screenshot would be great. Also, please do what I said and test behaviour without ifuse installed, screenshot of the dialog showing error is best. (french in the GUI is okay) > I moved away Playcounts.plist, and after that, amarok showed me the correct > model and my tracks. So I think my previous comment stands : since it works > without this file, while not just ignoring it completly when there is a > parsing error ? You didn't read my comment. I said: > On the other hand, we don't know from libgpod what is the cause, we have only > textual error message, so we must leave the decision what to do to the user. Again: Amarok doesn't and cannot know the problem is just in Playcounts.plist. Perhaps libgpod can be made not to fail on such non-fatal errors. > my ipod touch silver is an iOS 5.1.1, so no write mode huh ? :-( No, sorry. > Looking at imobiledevice, I see that the last developer version has better > support for iOS 5. Do you know what it means ? (unfortunately the mail > archive is not public). libimobiledevice is fow low-level access, Amarok depends on libgpod of gtkpod to parse the iTunes database etc. That's why I pointed you to www.gtkpod.org. > Also, if I jailbreak my ipod, will I gain write mode ? (found that : > http://gnuru.org/article/1557/ipod-touch-iphone-linux-making-it-all-work) > Any other advice ? Seriously, I don't know. You may check #gtkpod on IRC.
Created attachment 72466 [details] capture dialog box when ifuse not installed
Created attachment 72467 [details] ifuse installed, but fails to parse PlayCounts.plist file
> On the other hand, we don't know from libgpod what is the cause Finally understood. From the logs, I thought amarok itself was parsing the file. I will report this issue to gtkpod. Tx for your help ! David
(In reply to comment #7) > Created attachment 72466 [details] > capture dialog box when ifuse not installed Thanks for all your testing. Could you please recreate this dialog with "Détails" expanded. This will be the last thing, I promise. ;)
Created attachment 72490 [details] details of dialog box error when ifuse is not present Here you go. IMHO, it's much better than with 2.5 !