I am running:
- FreeBSD 14.3 (jailed)
- owntone-29.0
All my MPD clients can add music via library/db access ("by artist" or "by album"). However, two clients (ncmpcpp/Linux and MALP/Android) cannot add music from folders.
When I attempt to add a folder, the client displays an error message about an "unknown path". I have activated debug-logging on the server, it logs the following during such a filed attempt:
[2026-06-07 16:51:44] [DEBUG] [ library (7686)] lib: Add items for path 'file:/path/to/the folder' to the queue
[2026-06-07 16:51:44] [ WARN] [ library (7686)] spotify: Could not parse item type from Spotify uri: file:/path/to/the folder
[2026-06-07 16:51:44] [DEBUG] [ library (7686)] lib: Library source 'rss' is disabled or does not support queue_add
[2026-06-07 16:51:44] [ LOG] [ library (7686)] lib: Failed to add items for path 'file:/path/to/the folder' to the queue (-2)
[2026-06-07 16:51:44] [ LOG] [ mpd (7701)] mpd: Error processing command 'add "file:/path/to/the folder"': Failed to add song 'file:/path/to/the folder' to playlist (unknown path)
Curiously, Cantata/Linux/Qt manages to add folders without problems. The log seems to indicate, that it uses a different method to add the folder (it queries the DB):
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'lsinfo "file:/path/to/the folder"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Running query 'SELECT d.id FROM directories d WHERE d.virtual_path = '/file:/path/to/the folder';'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Running query 'SELECT COUNT(*) FROM playlists f WHERE f.disabled = 0 AND (f.directory_id = 3708 AND (f.type = 3 OR f.type = 2));'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Starting query 'SELECT f.*, COUNT(pi.id), SUM(pi.filepath NOT NULL AND pi.filepath LIKE 'http%') FROM playlists f LEFT JOIN playlistitems pi ON (f.id = pi.playlistid) WHERE f.disabled = 0 AND (f.directory_id = 3708 AND (f.type = 3 OR f.type = 2)) GROUP BY f.id ORDER BY f.type, f.parent_id, f.special_id, f.title ;'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: End of query results
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Starting enum 'SELECT * FROM directories WHERE disabled = 0 AND parent_id = 3708 ORDER BY virtual_path COLLATE NOCASE;'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: End of directory enum results
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Running query 'SELECT COUNT(*) FROM files f WHERE f.disabled = 0 AND (f.directory_id = 3708);'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Starting query 'SELECT f.* FROM files f WHERE f.disabled = 0 AND (f.directory_id = 3708) ORDER BY f.album_artist_sort, f.album_sort, f.disc, f.track ;'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: End of query results
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'lsinfo "file:/path/to/the folder/ALBUM"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Running query 'SELECT d.id FROM directories d WHERE d.virtual_path = '/file:/path/to/the folder/ALBUM';'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Running query 'SELECT COUNT(*) FROM playlists f WHERE f.disabled = 0 AND (f.directory_id = 3709 AND (f.type = 3 OR f.type = 2));'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Starting query 'SELECT f.*, COUNT(pi.id), SUM(pi.filepath NOT NULL AND pi.filepath LIKE 'http%') FROM playlists f LEFT JOIN playlistitems pi ON (f.id = pi.playlistid) WHERE f.disabled = 0 AND (f.directory_id = 3709 AND (f.type = 3 OR f.type = 2)) GROUP BY f.id ORDER BY f.type, f.parent_id, f.special_id, f.title ;'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: End of query results
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Starting enum 'SELECT * FROM directories WHERE disabled = 0 AND parent_id = 3709 ORDER BY virtual_path COLLATE NOCASE;'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: End of directory enum results
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Running query 'SELECT COUNT(*) FROM files f WHERE f.disabled = 0 AND (f.directory_id = 3709);'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: Starting query 'SELECT f.* FROM files f WHERE f.disabled = 0 AND (f.directory_id = 3709) ORDER BY f.album_artist_sort, f.album_sort, f.disc, f.track ;'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] db: End of query results
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'command_list_begin'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'add "file:/resolved_path/to/the folder/ALBUM/01.flac"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'add "file:/resolved_path/to/the folder/ALBUM/02.flac"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'add "file:/resolved_path/to/the folder/ALBUM/03.flac"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'add "file:/resolved_path/to/the folder/ALBUM/04.flac"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'add "file:/resolved_path/to/the folder/ALBUM/05.flac"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'add "file:/resolved_path/to/the folder/ALBUM/06.flac"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'add "file:/resolved_path/to/the folder/ALBUM/07.flac"'
[2026-06-07 17:01:06] [DEBUG] [ mpd (7701)] mpd: MPD message: 'command_list_end'
One thing to note is, that the folder that is being added contains symlinks to the actual songs. In the second log-excerpt above, it becomes evident that these links are resolved, i.e. the paths in the lower part are the resolved URLs.
I am running:
All my MPD clients can add music via library/db access ("by artist" or "by album"). However, two clients (ncmpcpp/Linux and MALP/Android) cannot add music from folders.
When I attempt to add a folder, the client displays an error message about an "unknown path". I have activated debug-logging on the server, it logs the following during such a filed attempt:
Curiously, Cantata/Linux/Qt manages to add folders without problems. The log seems to indicate, that it uses a different method to add the folder (it queries the DB):
One thing to note is, that the folder that is being added contains symlinks to the actual songs. In the second log-excerpt above, it becomes evident that these links are resolved, i.e. the paths in the lower part are the resolved URLs.