Unable to add root folder - "Not a valid *nix path" (Mac 14.5 ARM)

Sonarr version (exact version): 4.0.5.1710
Mono version (if Sonarr is not running on Windows):
OS: macOS Sonoma 14.5 ARM
Debug logs:
Description of issue: Updated Sonarr from 4.0.3.1413 to 4.0.5.1710, after which one of two root folders was not recognized, despite being correctly connected and verified in Finder. Tried changing folder name (removing spaces), now unable to add new root folder with the new path/name

Unable to add root folder

  • {“message”:“value [/Volumes/HDM 28TB A/ TV/] is not a valid *nix path. paths must start with / (Parameter ‘path’)”,“description”:“System.ArgumentException: value [/Volumes/HDM 28TB A/ TV/] is not a valid *nix path. paths must start with / (Parameter ‘path’)\n at NzbDrone.Common.EnsureThat.EnsureStringExtensions.IsValidPath(Param1 param, PathValidationType validationType) in ./Sonarr.Common/EnsureThat/EnsureStringExtensions.cs:line 119\n at NzbDrone.Common.Extensions.PathExtensions.CleanFilePath(String path) in ./Sonarr.Common/Extensions/PathExtensions.cs:line 41\n at NzbDrone.Common.Extensions.PathExtensions.PathEquals(String firstPath, String secondPath, Nullable1 comparison) in ./Sonarr.Common/Extensions/PathExtensions.cs:line 59\n at NzbDrone.Core.Validation.Paths.RootFolderValidator.<>c__DisplayClass3_0.b__0(RootFolder r) in ./Sonarr.Core/Validation/Paths/RootFolderValidator.cs:line 27\n at System.Collections.Generic.List1.FindIndex(Int32 startIndex, Int32 count, Predicate1 match)\n at System.Collections.Generic.List1.Exists(Predicate1 match)\n at NzbDrone.Core.Validation.Paths.RootFolderValidator.IsValid(PropertyValidatorContext context) in ./Sonarr.Core/Validation/Paths/RootFolderValidator.cs:line 27\n at FluentValidation.Validators.PropertyValidator.Validate(PropertyValidatorContext context) in C:\Projects\FluentValidation\src\FluentValidation\Validators\PropertyValidator.cs:line 80\n at FluentValidation.Internal.PropertyRule.InvokePropertyValidator(IValidationContext context, IPropertyValidator validator, String propertyName) in C:\Projects\FluentValidation\src\FluentValidation\Internal\PropertyRule.cs:line 519\n at FluentValidation.Internal.PropertyRule.Validate(IValidationContext context)+MoveNext() in C:\Projects\FluentValidation\src\FluentValidation\Internal\PropertyRule.cs:line 351\n at System.Linq.Enumerable.WhereEnumerableIterator1.MoveNext()\n at FluentValidation.AbstractValidator1.Validate(ValidationContext1 context) in C:\\Projects\\FluentValidation\\src\\FluentValidation\\AbstractValidator.cs:line 95\n at FluentValidation.AbstractValidator1.Validate(T instance) in C:\Projects\FluentValidation\src\FluentValidation\AbstractValidator.cs:line 62\n at Sonarr.Http.REST.RestController1.ValidateResource(TResource resource, Boolean skipValidate, Boolean skipSharedValidate) in ./Sonarr.Http/REST/RestController.cs:line 122\n at Sonarr.Http.REST.RestController1.OnActionExecuting(ActionExecutingContext context) in ./Sonarr.Http/REST/RestController.cs:line 87\n at Microsoft.AspNetCore.Mvc.Controller.OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)\n at Microsoft.AspNetCore.Mvc.Filters.ControllerActionFilter.OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\n— End of stack trace from previous location —\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()\n— End of stack trace from previous location —\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n at Sonarr.Http.Middleware.BufferingMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/BufferingMiddleware.cs:line 27\n at Sonarr.Http.Middleware.IfModifiedMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/IfModifiedMiddleware.cs:line 40\n at Sonarr.Http.Middleware.CacheHeaderMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/CacheHeaderMiddleware.cs:line 32\n at Sonarr.Http.Middleware.StartingUpMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/StartingUpMiddleware.cs:line 37\n at Sonarr.Http.Middleware.UrlBaseMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/UrlBaseMiddleware.cs:line 26\n at Sonarr.Http.Middleware.VersionMiddleware.InvokeAsync(HttpContext context) in ./Sonarr.Http/Middleware/VersionMiddleware.cs:line 28\n at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)\n at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)”}

Looks to be the same as here, but unfortunately OP was not actually kind enough to share their fix.

https://forums.sonarr.tv/t/invalid-nix-path-on-mac-os-14-5-with-latest-version-of-sonarr/34126

1 Like

This is the same issue I had when I upgraded to 4.0.5.1710, I ended up having to downgrade to the last version.

It seems to be an issue many have had with the upgrade same issue always nix path.

Here is someone who has the same issue on Can not add new series - #5 by eman31

I downgraded and added the new series, but when upgraded again still can’t add anything new or rename any files currently in my database. Not sure what happened but the update seems to of broken something.

This has caused issues with all my external library and someone suggested to rename the series and move files? I got 4 drives that’s not an easy fix.

So I got mine to work hopefully this will help you and others too. I am on macOS but would assume it’s the same error on most with the Nix Path.

Here is what I did:

  1. Backed up my Sonarr Database.
  2. Unzipped the contents.
  3. Downloaded SQLiteFLow from the AppStore as it has a two week trial.
  4. Opened my Sonarr.db file in the SQLiteFlow app.
  5. Then scroll down the left side looking for series and double clicked it.
  6. This will show all your shows, scroll to the right where the path is.
  7. I then had to manually click every shows path and remove all the randoms blank spaces added in at the end of the paths. Hopefully yours isn’t near 700 shows like mine otherwise it’s long, tedious and boring. Once all the extra blank spaces are removed at the end of the path, I saved the database.
  8. Shut down Sonarr, and copy your edited Sonarr.db to replace the Sonarr.db file in the Sonarr directory (On macOS it is, User/.config/sonarr) Might need to unhide hidden files to find it.

Also double check the RootFolders on your database just incase that’s an issue as well.

This fixed mine and now I can add new series to Sonarr.

1 Like

What a PITA