[PLUGIN] Volusonic

This is the discussion thread for the Volusonic plugin described in the Volumio 2 Plugins Collection post.

Subsonic and derivatives are music storage servers. Major functionality are, file based organization, tagging functions, transcoding capacities (for bandwidth saving), lastFM infos, podcasts management, and more. Web based, they also can be accessed from dedicated apps in both Android and iOS worlds.
Thus coupled with Volumio, they can be used to build a complete personal Audiophile solution for your hi-res files (studio masters, DSD, …) at home, and as a bonus, lets you access your music from the outside world via a web browser, a phone or a tablet.

1 Like

Hello, I am a noob starting adventure with volumio. I already have a subsonic server running and would like to test volusonic.

When I try to intall manually the plugin in my volumio , i am always frustrated:
Steps:
1 copy volusonic.zip to /mnt/USB/volusonic (used windows explorer access)
2 sudo -i
3 cd /mnt/USB/volusonic
4 miniunzip volusonic.zip
5 cd volusonic
6 npm i (intall modules with a bunch of depecrated warnings)
7 volumio plugin install

it starts fases ok: plugin sucessfully compressed, progress 10

status : Downloading plugin … and stays like that forever…

maybe I am lost on what i am doing, not sure at all about how to install
. any help?

Hello,

Please factory reset your volumio box and follow this steps:

wget https://github.com/foobarjo/volumio-plugins/raw/master/plugins/music_service/volusonic/volusonic.zip
  • unzip it
miniunzip volusonic.zip
  • cd to volusonic
cd volusonic
  • Install the plugin, it takes some minutes be patient. Dependencies are installed automatically
volumio plugin install

You should get something like this and be good

[code]
This command will install the plugin on your device

Compressing the plugin
No modules found, running “npm install”
npm WARN notice [SECURITY] mime has the following vulnerability: 1 moderate. Go here for more details: https://nodesecurity.io/advisories?search=mime&version=1.3.6 - Run npm i npm@latest -g to upgrade your npm version, and then npm audit to get more info.
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN notice [SECURITY] hoek has the following vulnerability: 1 moderate. Go here for more details: https://nodesecurity.io/advisories?search=hoek&version=2.16.3 - Run npm i npm@latest -g to upgrade your npm version, and then npm audit to get more info.
npm WARN deprecated hoek@2.16.3: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated cryptiles@2.0.5: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated boom@2.10.1: This version is no longer maintained. Please upgrade to the latest version.
npm WARN notice [SECURITY] tunnel-agent has the following vulnerability: 1 moderate. Go here for more details: https://nodesecurity.io/advisories?search=tunnel-agent&version=0.4.3 - Run npm i npm@latest -g to upgrade your npm version, and then npm audit to get more info.
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN volusonic@0.0.1 No repository field.

Plugin succesfully compressed
Progress: 10
Status :Downloading plugin
Progress: 30
Status :Creating folder on disk
Progress: 40
Status :Unpacking plugin
Progress: 50
Status :Checking for duplicate plugin
Progress: 60
Status :Copying Plugin into location
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 70
Status :Installing dependencies
Progress: 90
Status :Adding plugin to registry
Progress: 100
Status :Plugin Successfully Installed
Done![/code]

Nice plugin, just tested and it streamed perfectly from my airsonic server :slight_smile:… One thing that did not work was coverart, it did not populate at all in my listings.

Thanks for a great and very usefull plugin :slight_smile:

Edit: Well the artwork populated after a reboot on device… So now everything works perfectly :slight_smile:.

Thanks Foobarjo, intalled immediatly.
(when I download by Windows and unzip , transfering by samba, things just dont work, file permissions I guess)

Well now I will expplain my setup and troubles using it, on new post.

I am testing volumio with several plugins, multiroom: VOLUMIO 2.513

Sound Output -> I use HDMI output only
1 Raspberrypi 3 -> Music lib from NAS share (12000tracks)
SNAPCAST plugin (Server + client)
Spotify plugin
Volumio Spotify Connect 2
and now -> Volusonic

2x RaspiZeroW with same configuration except for Snapcast server (only client)

My SUBSONIC : 6.1.3 (build e408c9) – October 31, 2017

VOLUSONIC RESULT:
1-- Navigation across lib is OK, but when anything is selected to play, or , play button is pressed, the green message with “track name” is playing, pops up,…but play button stays with triangle and music never play…
2 – No Coverartwork when navigating in volusonic plugin, only artista name, álbum name and track name. When inside Artist, a Artwork is visible at first line.

Any ideia why?

Certenally I will repeat test with fresh volumio install, might have some issue conflit between plugins…

Yhanks in advance…

Thank you sic79, i’m glad you find it useful.

Camg70 could you please upgrade your subsonic server to the last version (6.1.5) ?
6.1.3 is known, once is not custom, to be API bugged and things have been fixed up on new versions, so please try again once updated and let me know what’s going on.

I am having difficulty installing volsonic plugin. I ssh into volumio and go through the steps to download and install volusonic.zip. I see this

Plugin succesfully compressed
Progress: 10

Thats as far as I get. It never seems to progress past this. I have done a factory reset and tried a couple of times with same result. Any ideas?

Thanks for testing.

Can you please post your whole ssh history?

Here is my SSH log


                  /\_ \                        __           
     __  __    ___\//\ \    __  __    ___ ___ /\_\    ___   
    /\ \/\ \  / __`\\ \ \  /\ \/\ \ /' __` __`\/\ \  / __`\ 
    \ \ \_/ |/\ \L\ \\_\ \_\ \ \_\ \/\ \/\ \/\ \ \ \/\ \L\ \
     \ \___/ \ \____//\____\\ \____/\ \_\ \_\ \_\ \_\ \____/
      \/__/   \/___/ \/____/ \/___/  \/_/\/_/\/_/\/_/\/___/ 
    
         Free Audiophile Linux Music Player - Version 2.0

      C 2015 Michelangelo Guarise - Volumio Team - Volumio.org

Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
e]0;volumio@volumio: ~avolumio@volumio:~$ sudo -i

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for volumio:
root@volumio:~# cd /mnt/USB/volusonic
root@volumio:/mnt/USB/volusonic# wget github.com/foobarjo/volumio-plugin
s/raw/master/plugins/music_service/volusonic/volusonic.zip
converted ‘https://github.com/foobarjo/volumio-plugins/raw/master/plugins/music_service/volusonic/volusonic.zip’ (ANSI_X3.4-1968) -> ‘https://github.com/foobarjo/volumio-plugins/raw/master/plugins/music_service/volusonic/volusonic.zip’ (UTF-8)
–2019-02-23 01:39:21-- github.com/foobarjo/volumio-plu … usonic.zip
Resolving github.com (github.com)… 192.30.253.112, 192.30.253.113
Connecting to github.com (github.com)|192.30.253.112|:443… connected.
HTTP request sent, awaiting response… 302 Found
Location: raw.githubusercontent.com/fooba … usonic.zip [following]
converted ‘https://raw.githubusercontent.com/foobarjo/volumio-plugins/master/plugins/music_service/volusonic/volusonic.zip’ (ANSI_X3.4-1968) -> ‘https://raw.githubusercontent.com/foobarjo/volumio-plugins/master/plugins/music_service/volusonic/volusonic.zip’ (UTF-8)
–2019-02-23 01:39:21-- raw.githubusercontent.com/fooba … usonic.zip
Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.184.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.184.133|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 19504 (19K) [application/zip]
Saving to: ‘volusonic.zip’

volusonic.zip 0%[ ] 0 --.-KB/s
volusonic.zip 100%[=====================>] 19.05K --.-KB/s in 0.01s

2019-02-23 01:39:22 (1.24 MB/s) - ‘volusonic.zip’ saved [19504/19504]

root@volumio:/mnt/USB/volusonic# miniunzip volusonic.zip
e[Kroot@volumio:/mnt/USB/volusonic# miniunzip volusonic.zip
MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant
more info at winimage.com/zLibDll/unzip.html

volusonic.zip opened
creating directory: volusonic/
extracting: volusonic/uninstall.sh
extracting: volusonic/config.json
extracting: volusonic/install.sh
extracting: volusonic/volusonicAPI.js
extracting: volusonic/index.js
extracting: volusonic/README.md
extracting: volusonic/UIConfig.json
extracting: volusonic/package.json
extracting: volusonic/requiredConf.json
creating directory: volusonic/i18n/
extracting: volusonic/i18n/strings_fr.json
extracting: volusonic/i18n/strings_en.json
extracting: volusonic/subso.png
root@volumio:/mnt/USB/volusonic# cd volusonic
root@volumio:/mnt/USB/volusonic/volusonic# volumio plugin install

This command will install the plugin on your device

Compressing the plugin
No modules found, running “npm install”
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN volusonic@0.0.1 No repository field.

Plugin succesfully compressed
Progress: 10
Status :smiley:ownloading plugin

Thanks.
Do not sudo.

Success!! Thank you that worked. So far seems to be working no issues.

HI Rodan, I had same troubles before.
Please follow exactly foobarjo intruction.
ssh you Volumio (no sudo is needed) (if ssh not enabled go to your address “volumioname”.local/deb or volumioIP/dev and enable it
in ssh just follow instruction step1:wget, step2:unzip step3: change dir step4 : install plugin, just as esplained by foobarjo.

Regards

THANKS foobarjoo:

Restarted test with a fresh installation subsonic 6.1.5 + fresh installation VOLUMIO (2526)+ VOLUSONIC 0.0.1

Added music folder and played server locally with admin user

configured sucessfully Volusonic with admin/admin credentials
.
All navigatio ok , but when select something to PLAY … nothing happens except pop up saying it is playing.

Any tip? thanks

Can you post your syslog please?

sudo journalctl -f

Edit: I did some serious upgrade on mpd control based on lostmyshape’s heavy work (phishin plugin). Please test with the last version prior to post your log.

Edit2: Please also upgrade to the last version of Volumio. [Settings- > system → Check Updates] should do the job.

Hello,

Thanks for this awesome plugin. Installation was performed without any problem (using subsonic 6.1.6 and last version of Volumio), except at the end, when I was asked to activate the plugin. I answered “yes” but nothing happened. So Ctl-C to abort. I could activate and configure the plugin in the web IU, so it’s not really a problem.

I works ok. I have two questions:

  1. is it possible to have a directory view in the web UI and navigate though it? I only see standard classification (new albums, random, by artists, etc…). Any way to have the directory view, like in subsonic?

  2. I used to have my subsonic server using https port, but without any certificate. With Chrome or Firefox, you just have to add the exception at first login, and that’s it. But via volusonic, music does not play, saying that a certificate is missing for each track. Moving back to http port 4040 solves the issue. Any way to use https without certificate?

Thanks in advance.

 Denis

Hello Denis,

There is no Index view as in subsonic UI, but you may try to deactivate the ID3 option in the Volusonic settings. Depend on how your library is built, you should get something clother to your drive in the Artist section.

Short answer: no

Long answer: Depending of your subsonic’s OS and usage, you may want to get a valid ssl certificate. You can pay for it, there is a lot of peoples offering this service on the web. Or you can use letsencrypt but you will need a static IP, access to your router, and if you don’t already own one, register a domain name.

Subsonic wants the certificate in the PKCS12, so once openssl tools intalled you may run

openssl pkcs12 -in <path-to-file>originalCert.crt -export -out <path-to-file>subsonicCert.pkcs12 -passout pass:subsonic
keytool -importkeystore -srckeystore <path-to-file>subsonicCert.pkcs12 -srcstorepass subsonic -destkeystore <path-to-file>subsonic.keystore -deststorepass subsonic --srcstoretype PKCS12 -srcalias 1 -destalias subsonic
zip <path-to-file>subsonic-booter-jar-with-dependencies.jar <path-to-file>subsonic.keystore

Then restart Subsonic “et voila”

Let me know how it works for you

Hi Jo,

Thanks a lot for the fast answer.

First point looks great, I can access my library like in Index view of Volumio, but I get errors like the one below: Seems to be related to cover art, although album art looks fine in Subsonic and volumio. I have a “cover.jpg” file in any directory with flac or mp3 tracks.

For the certificate issue, this will come in a second step, I think.

Denis
[2020-05-13 23:10:49,411] WARN RESTFilter - Error in REST API: For input string: "undefined"
java.lang.NumberFormatException: For input string: "undefined"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:580)
	at java.lang.Integer.valueOf(Integer.java:766)
	at net.sourceforge.subsonic.controller.CoverArtController.createCoverArtRequest(CoverArtController.java:140)
	at net.sourceforge.subsonic.controller.CoverArtController.handleRequest(CoverArtController.java:91)
	at net.sourceforge.subsonic.controller.RESTController.getCoverArt(RESTController.java:2199)
	at sun.reflect.GeneratedMethodAccessor32.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
	at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
	at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
	at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81)
	at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:132)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
	at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
	at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at net.sourceforge.subsonic.security.RESTRequestParameterProcessingFilter.doFilter(RESTRequestParameterProcessingFilter.java:95)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
	at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
	at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
	at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:25)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at net.sourceforge.subsonic.filter.RESTFilter.doFilter(RESTFilter.java:42)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:36)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:41)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:313)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

Actually, i’m not sure this error is the root cause.

I can reach an album via the “new albums” menu, and I can play it. And I have some errors in the log, althuogh it plays music.

But when I try to go through the “Artists” item, I can see the directories, but I’am stuck after having selected a couple of items down, it just stops parsing bnd remains on the same level.

Any hint?

1 Like

It looks like I cannot go deeper than 3 or 4 levels in the directroy tree without being stuck. I alos think that the errors that appear in the log, which seem to be related to CoverArt, are not normal. CovertArt seems to work fine in Subsonic., as far as I can see…