I don’t know what broke and when, but I’ve previously used Rhythmbox to sync music to my Android phone using MTP, but now it refuses to work and gives the error “Could not open resource for writing”. Syncing will delete tracks without a problem, and I can copy files to the phone using Nautilus, but from the logging then it seems that something broke in GStreamer.
If I run “rhythmbox -d” then I get a long log including this section:
(20:01:36) [0x55f4fb2236d0] [build_sync_itinerary] rb-sync-state.c:286: building itinerary hash
(20:01:36) [0x55f4fb2236d0] [build_sync_itinerary] rb-sync-state.c:301: adding selected playlists to the itinerary
(20:01:36) [0x55f4fb2236d0] [itinerary_insert_some_playlists] rb-sync-state.c:229: adding entries from playlist Test to itinerary
(20:01:36) [0x55f4fb2236d0] [build_sync_itinerary] rb-sync-state.c:324: finished building itinerary hash; has 1 entries
(20:01:36) [0x55f4fb2236d0] [build_device_state] rb-sync-state.c:334: building device contents hash
(20:01:36) [0x55f4fb2236d0] [build_device_state] rb-sync-state.c:338: getting music entries from device
(20:01:36) [0x55f4fb2236d0] [build_device_state] rb-sync-state.c:349: done getting music entries from device
(20:01:36) [0x55f4fb2236d0] [build_device_state] rb-sync-state.c:351: getting podcast entries from device
(20:01:36) [0x55f4fb2236d0] [build_device_state] rb-sync-state.c:361: done getting podcast entries from device
(20:01:36) [0x55f4fb2236d0] [build_device_state] rb-sync-state.c:363: done building device contents hash; has 0 entries
(20:01:36) [0x55f4fb2236d0] [rb_sync_state_update] rb-sync-state.c:385: building list of files to transfer to device
(20:01:36) [0x55f4fb2236d0] [build_sync_list_cb] rb-sync-state.c:162: adding file:///home/ibboard/Music/Plastique%20Noir/24%20Hours%20Awake/4%20-%20Negatives.m4a (3285614 bytes); id 5762d618883f22aaf1df35758c8d5aba to sync list
(20:01:36) [0x55f4fb2236d0] [rb_sync_state_update] rb-sync-state.c:394: decided to transfer 1 files (3285614 bytes) to the device
(20:01:36) [0x55f4fb2236d0] [rb_sync_state_update] rb-sync-state.c:397: building list of files to remove from device
(20:01:36) [0x55f4fb2236d0] [rb_sync_state_update] rb-sync-state.c:406: decided to remove 0 files (3285614 bytes) from the device
(20:01:36) [0x55f4fb2236d0] [rb_sync_state_update] rb-sync-state.c:409: keeping 0 files on the device
(20:01:36) [0x55f4fb2236d0] [rb_sync_state_update] rb-sync-state.c:428: current space used: 16078114816 bytes; adding 3285614, removing 0
(20:01:36) [0x55f4fb2236d0] [rb_sync_state_update] rb-sync-state.c:430: space used after sync: 16081400430 bytes
(20:01:36) [0x55f4fb2236d0] [sync_idle_cb_update_sync] rb-media-player-source.c:946: sync settings are acceptable
(20:01:36) [0x55f4fb2236d0] [sync_idle_delete_entries] rb-media-player-source.c:954: deleting 0 files from media player
(20:01:36) [0x55f4fb2236d0] [sync_delete_done_cb] rb-media-player-source.c:760: finished deleting 0 files from media player
(20:01:36) [0x55f4fb2236d0] [sync_delete_done_cb] rb-media-player-source.c:766: transferring 1 files to media player
(20:01:36) [0x55f4fb2236d0] [rhythmdb_query_model_chain] rhythmdb-query-model.c:920: query model 0x55f4fdc9c240 chaining to base model (nil)
(20:01:36) [0x55f4fb2236d0] [rhythmdb_read_enter] rhythmdb.c:1249: counter: 1
(20:01:36) [0x55f4fb2236d0] [rhythmdb_query_internal] rhythmdb.c:4212: doing query
(20:01:36) [0x55f4fb2236d0] [do_query_recurse] rhythmdb-tree.c:2339: doing recursive query, 1 conjunctions
(20:01:36) [0x55f4fb2236d0] [rhythmdb_query_model_add_results] rhythmdb-query-model.c:2269: adding 0 entries
(20:01:36) [0x55f4fb2236d0] [idle_process_update] rhythmdb-query-model.c:1208: inserting 0 rows
(20:01:36) [0x55f4fb2236d0] [rhythmdb_query_internal] rhythmdb.c:4218: completed
(20:01:36) [0x55f4fb2236d0] [rb_transfer_target_transfer] rb-transfer-target.c:425: pasting entry file:///home/ibboard/Music/Plastique%20Noir/24%20Hours%20Awake/4%20-%20Negatives.m4a
(20:01:36) [0x55f4fb2236d0] [rb_track_transfer_batch_check_profiles] rb-track-transfer-batch.c:289: checking profiles
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:739: trying to check profile m4a for missing plugins
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:766: got request pad, profile m4a works
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:780: encoder found, profile m4a works
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:739: trying to check profile oggvorbis for missing plugins
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:766: got request pad, profile oggvorbis works
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:780: encoder found, profile oggvorbis works
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:739: trying to check profile mp3 for missing plugins
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:766: got request pad, profile mp3 works
(20:01:36) [0x55f4fb2236d0] [impl_get_missing_plugins] rb-encoder-gst.c:780: encoder found, profile mp3 works
(20:01:36) [0x55f4fb2236d0] [rb_track_transfer_batch_check_profiles] rb-track-transfer-batch.c:308: have 0 profiles with missing plugins
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:243: can use source encoding audio/x-aac
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:252: can use lossy encoding audio/x-vorbis
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:252: can use lossy encoding audio/mpeg
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:239: don't want lossless encoding audio/x-flac
(20:01:36) [0x55f4fb2236d0] [rb_track_transfer_batch_check_profiles] rb-track-transfer-batch.c:321: copying entry file:///home/ibboard/Music/Plastique%20Noir/24%20Hours%20Awake/4%20-%20Negatives.m4a
(20:01:36) [0x55f4fb2236d0] [start_next] rb-track-transfer-batch.c:675: 1 entries remain in the batch
(20:01:36) [0x55f4fb2236d0] [start_next] rb-track-transfer-batch.c:692: attempting to transfer file:///home/ibboard/Music/Plastique%20Noir/24%20Hours%20Awake/4%20-%20Negatives.m4a
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:243: can use source encoding audio/x-aac
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:252: can use lossy encoding audio/x-vorbis
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:252: can use lossy encoding audio/mpeg
(20:01:36) [0x55f4fb2236d0] [select_profile_for_entry] rb-track-transfer-batch.c:239: don't want lossless encoding audio/x-flac
(20:01:36) [0x55f4fb2236d0] [rb_transfer_target_build_dest_uri] rb-transfer-target.c:94: built dest uri for media type 'audio/x-aac', extension 'm4a': mtp://%5Busb%3A003,006%5D/Internal%20shared%20storage/Music/Plastique%20Noir/24%20Hours%20Awake/04%20-%20Negatives.m4a
(20:01:36) [0x55f4fcba10f0] [create_parent_dirs_task] rb-track-transfer-batch.c:620: creating parent dirs for mtp://%5Busb%3A003,006%5D/Internal%20shared%20storage/Music/Plastique%20Noir/24%20Hours%20Awake/04%20-%20Negatives.m4a
(20:01:36) [0x55f4fb2236d0] [maybe_expand_container] rb-grilo-source.c:1104: not expanding, nothing to expand
(20:01:36) [0x55f4fb2236d0] [maybe_expand_container] rb-grilo-source.c:1104: not expanding, nothing to expand
(20:01:36) [0x55f4fb2236d0] [maybe_expand_container] rb-grilo-source.c:1104: not expanding, nothing to expand
(20:01:36) [0x55f4fb2236d0] [maybe_expand_container] rb-grilo-source.c:1104: not expanding, nothing to expand
(20:01:36) [0x55f4fb2236d0] [rhythmdb_process_one_event] rhythmdb.c:2672: processing RHYTHMDB_EVENT_QUERY_COMPLETE
(20:01:36) [0x55f4fb2236d0] [rhythmdb_read_leave] rhythmdb.c:1263: counter: 0
(20:01:36) [0x55f4fb2236d0] [rhythmdb_query_model_dispose] rhythmdb-query-model.c:730: disposing query model 0x55f4fdc9c240
(20:01:36) [0x55f4fb2236d0] [rhythmdb_query_model_finalize] rhythmdb-query-model.c:778: finalizing query model 0x55f4fdc9c240
(20:01:36) [0x55f4fb2236d0] [create_parent_dirs_cb] rb-track-transfer-batch.c:657: parent directories for mtp://%5Busb%3A003,006%5D/Internal%20shared%20storage/Music/Plastique%20Noir/24%20Hours%20Awake/04%20-%20Negatives.m4a created
(20:01:36) [0x55f4fb2236d0] [bus_watch_cb] rb-encoder-gst.c:172: received error gstgiobasesink.c(112): gst_gio_base_sink_start (): /GstPipeline:pipeline/GstGioStreamSink:giostreamsink0:
No output stream provided by subclass
(20:01:36) [0x55f4fb2236d0] [encoder_completed_cb] rb-track-transfer-batch.c:564: encoder finished (error: Could not open resource for writing.)
(20:01:36) [0x55f4fb2236d0] [track_done_cb] rb-transfer-target.c:359: fatal transfer error: Could not open resource for writing.
(20:01:36) [0x55f4fb2236d0] [_rb_track_transfer_batch_cancel] rb-track-transfer-batch.c:448: batch being cancelled
(20:01:36) [0x55f4fb2236d0] [transfer_batch_cancelled_cb] rb-media-player-source.c:750: sync file transfer to the device was cancelled
Close to the end I can see:
rb-encoder-gst.c:172: received error gstgiobasesink.c(112): gst_gio_base_sink_start (): /GstPipeline:pipeline/GstGioStreamSink:giostreamsink0:
No output stream provided by subclass
but earlier on I can see:
(20:01:36) [0x55f4fb2236d0] [rb_track_transfer_batch_check_profiles] rb-track-transfer-batch.c:308: have 0 profiles with missing plugins
So Rhythmbox thinks that gstreamer has all of the right plugins, but then something breaks when it tries transferring the track (although I don’t know why it appears to be encoding it via gstreamer when my phone supports m4a/aac).
I’m running Tumbleweed (openSUSE-release-20180410) with Packman (although AAC is in “base”, which isn’t from Packman).
GStreamer packages:
- gstreamer-1.12.5-1.1.x86_64
- gstreamer-devel-1.12.5-1.1.x86_64
- gstreamer-lang-1.12.5-1.1.noarch
- gstreamer-libnice-0.1.14-2.1.x86_64
- gstreamer-plugin-cluttergst3-3.0.26-1.1.x86_64
- gstreamer-plugins-bad-1.12.5-4.1.x86_64
- gstreamer-plugins-bad-lang-1.12.5-4.1.noarch
- gstreamer-plugins-bad-orig-addon-1.12.5-4.1.x86_64
- gstreamer-plugins-base-1.12.5-1.1.x86_64
- gstreamer-plugins-base-devel-1.12.5-1.1.x86_64
- gstreamer-plugins-base-lang-1.12.5-1.1.noarch
- gstreamer-plugins-farstream-0.2.8-2.1.x86_64
- gstreamer-plugins-good-1.12.5-1.1.x86_64
- gstreamer-plugins-good-extra-1.12.5-1.1.x86_64
- gstreamer-plugins-good-lang-1.12.5-1.1.noarch
- gstreamer-plugins-libav-1.12.5-24.1.x86_64
- gstreamer-plugins-ugly-1.12.5-4.2.x86_64
- gstreamer-plugins-ugly-lang-1.12.5-4.2.noarch
- gstreamer-plugins-ugly-orig-addon-1.12.5-4.2.x86_64
- gstreamer-plugins-vaapi-1.12.5-1.1.x86_64
- gstreamer-utils-1.12.5-1.1.x86_64
- gstreamer-validate-1.12.5-1.1.x86_64
Anyone know how to fix it? Or how to debug it? At the moment then I don’t even know what set of GStreamer components it is trying to use so that I can try them manually.
Thanks.