Library Not Loading

I’ve now spent two days reading every forum/reddit post & watching every YouTube video I could find and now I come to the experts in hopes an answer can be found. In advance, I’d like to thank you for taking the time to assist. I think I’ve covered all the basics below.

MAIN ISSUE
Jellyfin is not loading media files to the library.

WHAT I CAN GATHER
From what I can tell by looking at the logs, the issue comes down to permissions. This is despite the fact I’ve changed the chmod settings numerous times. They’re currently event set to full 777 (though, ideally would not prefer this).

STEPS TO RESOLVE
I downloaded Ubuntu 20.04 LTS for Raspberry 3 from: https:// ubuntu{dot}com/download/raspberry-pi. Rasberry Pi 3 B+ up and running, check. My external HD (/dev/sda1) has a mountpoint created at /media/jfmovies.

I followed the Jellyfin Stable installation commands for Debian and Ubuntu from, https:// jellyfin{dot}org/downloads/. I was able to login to [ip]:8096 and completed the setup using the wizard and the quick setup guide.

I’ve read there have been issues when media is not in a /home folder, but I created a mountpoint as storing in /home wouldn’t work on the microSD Ubuntu is running on. When I go to Jellyfin>Add Library, Folders>Select Path I can see the /media/jfmovies path from the picker, but it stalls and does nothing. I’ve manually entered /media/jfmovies and it allows me to select OK (I’ve tried manually entering /media/jfmovies/movies - since the movies I want are actually in that directory - and I get an error saying the path cannot be found and Jellyfin will not allow me to continue).

I followed @bushy3’s line of thinking by removing my mountpoint and created a new one, but that did not work. According to @anthonylavado, an external /media path should work. The post trails off in Path to media not found and I wasn’t sure if this should be continued there.

And yes, I’ve used the naming convention prescribed by Jellyfin and the chmod settings are recursive from the primary directory.

I also thought I’d try to look at the configuration file to see if there was a path I could define there (https://www.youtube.com/watch?v=lUZluENL2a0 is using Docker, which I did not, to make some customizations) but I have NO idea where that is stored (I’m still relatively new to Linux).

TECHNICAL SPECS

Jellyfin Log

[2020-05-19 19:33:09.688 +00:00] [ERR] Error validating images for "/media/jfmovies"
System.UnauthorizedAccessException: Access to the path '/media/jfmovies/lost+found' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
   at System.IO.FileStatus.EnsureStatInitialized(ReadOnlySpan`1 path, Boolean continueOnError)
   at System.IO.FileSystemInfo.Init(FileStatus& fileStatus)
   at System.IO.FileSystemInfo.Create(String fullPath, String fileName, FileStatus& fileStatus)
   at System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<DirectoryInfos>b__7_0(FileSystemEntry& entry)
   at System.IO.Enumeration.FileSystemEnumerator`1.MoveNext()
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
   at System.Collections.Generic.SparseArrayBuilder`1.ReserveOrAdd(IEnumerable`1 items)
   at System.Linq.Enumerable.Concat2Iterator`1.ToArray()
   at MediaBrowser.Controller.Providers.DirectoryService.GetFileSystemEntries(String path)
   at MediaBrowser.LocalMetadata.Images.LocalImageProvider.GetFiles(BaseItem item, Boolean includeDirectories, IDirectoryService directoryService)
   at MediaBrowser.LocalMetadata.Images.LocalImageProvider.GetImages(BaseItem item, IDirectoryService directoryService)
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.ToList()
   at MediaBrowser.Providers.Manager.ItemImageProvider.ValidateImages(BaseItem item, IEnumerable`1 providers, IDirectoryService directoryService)
   at MediaBrowser.Providers.Manager.MetadataService`2.RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
[2020-05-19 19:33:09.714 +00:00] [INF] "Scan Media Library" Completed after 0 minute(s) and 0 seconds
[2020-05-19 19:33:09.716 +00:00] [ERR] Error in Directory watcher for: "/media/jfmovies"
System.UnauthorizedAccessException: Access to the path '/media/jfmovies/lost+found' is denied.
 ---> System.IO.IOException: Permission denied
   --- End of inner exception stack trace ---
[2020-05-19 19:33:09.717 +00:00] [INF] Stopping directory watching for path "/media/jfmovies"
[2020-05-19 19:33:09.721 +00:00] [INF] ExecuteQueuedTasks
[2020-05-19 19:33:09.810 +00:00] [INF] Watching directory /media/jfmovies
[2020-05-19 19:33:41.185 +00:00] [INF] Deleting item, Type: "Folder", Name: "jfmovies", Path: "/media/jfmovies", Id: [remitted]
[2020-05-19 19:33:41.783 +00:00] [INF] Deleting item, Type: "CollectionFolder", Name: "Movies", Path: "/var/lib/jellyfin/root/default/Movies", Id: [remitted]
[2020-05-19 19:33:42.192 +00:00] [INF] Queueing task "RefreshMediaLibraryTask"
[2020-05-19 19:33:42.192 +00:00] [WRN] HTTP Response 204 to "[ip addr remitted]". Time (slow): 0:00:01.5681383. "http://[ip addr remitted]:8096/Library/VirtualFolders?refreshLibrary=true&name=Movies"
[2020-05-19 19:33:42.194 +00:00] [INF] Executing "Scan Media Library"
[2020-05-19 19:33:42.198 +00:00] [INF] Validating media library
[2020-05-19 19:33:42.647 +00:00] [INF] "Scan Media Library" Completed after 0 minute(s) and 0 seconds
[2020-05-19 19:33:42.652 +00:00] [INF] ExecuteQueuedTasks

Disk Details

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 48.4M 1 loop /snap/core18/1708
loop1 7:1 0 48.4M 1 loop /snap/core18/1753
loop2 7:2 0 23.5M 1 loop /snap/snapd/7267
loop3 7:3 0 61.3M 1 loop /snap/lxd/14808
loop4 7:4 0 61.6M 1 loop /snap/lxd/15066
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part /media/jfmovies
mmcblk0 179:0 0 3.8G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 3.5G 0 part /

Disk Permissions

[user]@[server-name]:/$ ls -l /media/jfmovies
total 20
drwxr–r-- 2 root root 16384 May 18 19:20 lost+found
drwxrwxrwx 2 [user] [user] 4096 May 18 20:03 movies

Hardware Details

[server name remitted]
    description: Computer
    product: Raspberry Pi 3 Model B Plus Rev 1.3
    serial: [remitted]
    width: 64 bits
    capabilities: smp cp15_barrier setend swp tagged_addr_disabled
  *-core
       description: Motherboard
       physical id: 0
     *-cpu:0
          description: CPU
          product: cpu
          physical id: 0
          bus info: cpu@0
          size: 600MHz
          capacity: 1400MHz
          capabilities: fp asimd evtstrm crc32 cpuid cpufreq
     *-cpu:1
          description: CPU
          product: cpu
          physical id: 1
          bus info: cpu@1
          size: 600MHz
          capacity: 1400MHz
          capabilities: fp asimd evtstrm crc32 cpuid cpufreq
     *-cpu:2
          description: CPU
          product: cpu
          physical id: 2
          bus info: cpu@2
          size: 600MHz
          capacity: 1400MHz
          capabilities: fp asimd evtstrm crc32 cpuid cpufreq
     *-cpu:3
          description: CPU
          product: cpu
          physical id: 3
          bus info: cpu@3
          size: 600MHz
          capacity: 1400MHz
          capabilities: fp asimd evtstrm crc32 cpuid cpufreq
     *-memory
          description: System memory
          physical id: 4
          size: 908MiB
  *-usbhost
       product: DWC OTG Controller
       vendor: Linux 5.4.0-1008-raspi dwc_otg_hcd
       physical id: 1
       bus info: usb@1
       logical name: usb1
       version: 5.04
       capabilities: usb-2.00
       configuration: driver=hub slots=1 speed=480Mbit/s
     *-usb
          description: USB hub
          product: USB 2.0 Hub
          vendor: Microchip Technology, Inc. (formerly SMSC)
          physical id: 1
          bus info: usb@1:1
          version: b.b3
          capabilities: usb-2.00
          configuration: driver=hub maxpower=2mA slots=4 speed=480Mbit/s
        *-usb
             description: USB hub
             product: USB 2.0 Hub
             vendor: Microchip Technology, Inc. (formerly SMSC)
             physical id: 1
             bus info: usb@1:1.1
             version: b.b3
             capabilities: usb-2.00
             configuration: driver=hub maxpower=2mA slots=3 speed=480Mbit/s
           *-usb:0
                description: Ethernet interface
                vendor: Microchip Technology, Inc. (formerly SMSC)
                physical id: 1
                bus info: usb@1:1.1.1
                logical name: eth0
                version: 3.00
                serial: [remitted]
                size: 100Mbit/s
                capacity: 1Gbit/s
                capabilities: usb-2.10 ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
                configuration: autonegotiation=on broadcast=yes driver=lan78xx duplex=full ip=[remitted] link=yes maxpower=2mA multicast=yes port=MII speed=100Mbit/s
           *-usb:1
                description: Mass storage device
                product: Expansion
                vendor: Seagate
                physical id: 3
                bus info: usb@1:1.1.3
                logical name: scsi0
                version: 7.07
                serial: [remitted]
                capabilities: usb-2.10 scsi emulated scsi-host
                configuration: driver=usb-storage maxpower=500mA speed=480Mbit/s
              *-disk
                   description: SCSI Disk
                   product: Expansion
                   vendor: Seagate
                   physical id: 0.0.0
                   bus info: scsi@0:0.0.0
                   logical name: /dev/sda
                   version: 0707
                   serial: [remitted]
                   size: 931GiB (1TB)
                   capabilities: partitioned partitioned:dos
                   configuration: ansiversion=6 logicalsectorsize=512 sectorsize=512 signature=[remitted]
                 *-volume
                      description: EXT4 volume
                      vendor: Linux
                      physical id: 1
                      bus info: scsi@0:0.0.0,1
                      logical name: /dev/sda1
                      logical name: /media/jfmovies
                      version: 1.0
                      serial: [remitted]
                      size: 931GiB
                      capacity: 931GiB
                      capabilities: primary bootable journaled extended_attributes large_files huge_files dir_nlink recover 64bit extents ext4 ext2 initialized
                      configuration: created=2020-05-18 19:20:35 filesystem=ext4 label=Media lastmountpoint=/media/noob/Media modified=2020-05-18 20:24:16 mount.fstype=ext4 mount.options=rw,relatime mounted=2020-05-18 20:24:16 state=mounted
  *-network DISABLED
       description: Wireless interface
       physical id: 2
       logical name: wlan0
       serial: [remitted]
       capabilities: ethernet physical wireless
       configuration: broadcast=yes driver=brcmfmac driverversion=7.45.154 firmware=01-4fbe0b04 multicast=yes wireless=IEEE 802.11

The lost+found folder looks to be maybe owned by root. As soon as it hits that folder and isn’t allowed to scan it, it stops the scan. Try changing the permissions on it and see what happens

Thank you. Correct me if I’m wrong as I am still new to Linux, but is that not a system folder? Why should Jellyfin need access to that?

the scanner stopping on perms is a known issue. I’ll add lost+found to the ignore lost :slight_smile:

Thank you @artiume. I’m sure this will be beneficial to the community. :slight_smile:

In the meantime, is there some file or setting I can edit on my end?

not that i can think of besides changing the permissions or avoiding using the root folder for the hdd. Kinda surprised it hasn’t come up before.

I changed the permissions of the lost+found (sudo chmod 777 -R /media/jfmovies/lost+found). Also changed the name of the directory with the movie files to “amovies” in an attempt to get the scan to go through that directory first. Still encountering the issue (newest log entry below).

 [2020-05-20 02:51:18.155 +00:00] [ERR] Error retrieving children folder
 System.UnauthorizedAccessException: Access to the path '/media/jfmovies/lost+found' is denied.
  ---> System.IO.IOException: Permission denied
    --- End of inner exception stack trace ---
    at System.IO.FileStatus.EnsureStatInitialized(ReadOnlySpan`1 path, Boolean continueOnError)
    at System.IO.FileSystemInfo.Init(FileStatus& fileStatus)
    at System.IO.FileSystemInfo.Create(String fullPath, String fileName, FileStatus& fileStatus)
    at System.IO.Enumeration.FileSystemEnumerableFactory.<>c.<DirectoryInfos>b__7_0(FileSystemEntry& entry)
    at System.IO.Enumeration.FileSystemEnumerator`1.MoveNext()
    at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
    at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
    at System.Collections.Generic.SparseArrayBuilder`1.ReserveOrAdd(IEnumerable`1 items)
    at System.Linq.Enumerable.Concat2Iterator`1.ToArray()
    at MediaBrowser.Controller.Providers.DirectoryService.GetFileSystemEntries(String path)
    at MediaBrowser.Controller.Entities.BaseItem.GetFileSystemChildren(IDirectoryService directoryService)
    at MediaBrowser.Controller.Entities.Folder.GetNonCachedChildren(IDirectoryService directoryService)
    at MediaBrowser.Controller.Entities.Folder.ValidateChildrenInternal2(IProgress`1 progress, CancellationToken cancellationToken, Boolean recursive, Boolean refreshChildMetadata, MetadataRefreshOptions refreshOptions, IDirectoryService directoryService)

can you do ls -al on the folder?

My problem was using the media folder as a mount point. After using a folder in my home directory everything worked. I think it would be worth a try for you to give this a try, it’s not just recreating a mount point but where it is created. Not knowing how your “home” folder is named I am substituting “JF” as its name for illustrative purposes. So instead of “/media/jfmovies” try “/home/jf/jfmovies” for you mount point.

I am also curious what Linux OS you have installed? Mine is Linux Mint 19.3, it is possible that there is a bug or other design issue in my OS that affects using the /media folder for a mount point when using jellyfin.

It’s the Linux equivalent of Windows’s “Recycler” directory, but is actually used to store files which’ve been recovered by fsck (Linux’s equivalent to CHKDSK). The directory shouldn’t even exist unless you’ve had a recovered crash on the drive or you’re using a drive straight out of the packet without formatting first (Seagate and Western Digital are known to put crap on their drives for all manner of operating systems).

Unless you’ve got something in there (pursuant to a recovery), simply remove the folder.

Having said that, @bushy3’s solution is definitely worth a shot. I didn’t have any issues with Ubuntu 18.04LTS, but then I’m not using a local USB drive - I’ve got network shares mounted under /mnt.

What you initially posted clearly shows your chosen mount point is owned by “root”. When you login into your computer you are not “root”.

So because you are not the ROOT user at login and jellyfin is started by you “username” login the OS denies jellyfin access.

Disk Permissions

[user]@[server-name]:/$ ls -l /media/jfmovies
total 20
drwxr–r-- 2 root root 16384 May 18 19:20 lost+found
drwxrwxrwx 2 [user] [user] 4096 May 18 20:03 movies

Sure i’ve read in the issues log on GitHub that library scans fail if there is a folder within the structure that he scanner doesn’t have rights to.

Yet - issue #2402