New Volumio Spotify Plugin Open Beta-Testing

If you get to the proper screen, you should be prompted for a login, which is volumio - password is volumio. Then type the first line in full, press enter. Once the download completes, type the 2nd line and press enter to open the directory. Finally, type the 3rd line and hit enter to initialize the install. Reboot when complete. Dont forget to remove the old plugins via the web interface if you havent already.

1 Like

You can always copy and paste as typing is error prone

Thanks everyone - I got it to work ok

1 Like
  • rPi4-8GB rev 1.4
  • V3.251
  • NAD D3045
  • Superstar
  • No volume control used, as I use my amplifier for it. So output set to 100%

Solved (10 Jun 2022)

  • Seems a lot of labels in Genre are in Russian? instead of English. Not my native tongue difficult to translate :slight_smile:

Bug:

  • When a Spotify playlist is loaded, it will only play 1 song. For example Today’s Top Hits. (And Yes repeat is off) .
  • If you manually select the next song you need to click it twice.
  • If a song has ended and after 5 minutes you select the next song, the Manifest UI is not updated
    http://logs.volumio.org/volumio/inRGy8n.html
    (Please ignore the lines with;
    Jun 09 22:39:17 volumio3lcd volumio[1973]: [62B blob data]
    Jun 09 22:39:17 volumio3lcd volumio[1973]: R: ======================================
    is from Peppy_meter which I turned off as you can see in the last x lines)

What is perfect:

  • Sound is perfect
  • PeppyMeter is still working.
  • Skipping back and forward causes no issues with progress bar etc. (in comparison with Qobuz)
3 Likes
  • RPi 2b, Wired Ethernet
  • Free Volumio, v3.251
  • HiFiBerry Digi2-Pro
  • Spotify Premium
  • Won’t continue past a couple songs added to queue.

ETA: It seems to be a lot better with a smaller queue.

This video guide will help for those of non-technical people. Just an installation guide not testing or trouble shooting. :slight_smile:

1 Like
  • RPi 0 via wifi
  • Free Volumio, v3.251
  • HiFiBerry Dac
  • Spotify Premium

There is a display issue when using Spotify Connect. The ‘Playback’ screen does not update correctly. Total Track Time (4:19 in image below) is updated for each track, the current Track Time (4:05) is incorrect (refresh page will reset the timer back to 0.00).
The Album name and thumbnail does not refresh.

Love your work.

EDIT. Total Track Time is not correct.

hi my spotify account is a facebook login, i can’t log in on volumio :frowning:

When I connect from a Pixels via Spotify Connect, the “Now Playing” is not showing what’s playing, it shows the last thing that was playing before connecting. Audio is perfect.

Edit: Playing on volumio direct works fine, and phone shows that it’s connected to volumio in the spotify app, but clicking next song on the phone stops playback.

You can, go to spotify in a browser, click forgot password and use your facebook email, you will get a reset link to setup a new password. I just did the same thing myself :slight_smile:

I confirm all the above, playing stops after each song and to play next you need to click > twice.

on my rpi4 latest volumio version.
not having any double tap issue.
also the status of the track not updating only when i m switching from the embedded spotify to spotify connect.
if lets say i play an other plug in and after use spotify connect works fine…

1 Like

first of all thanks for the hard work :smiley:
installed the spotify beta and everything works fine and haven’t encountered any crazy things yet.

raspberry pi 4b 2gb.
system version: 3.251
dac: khadas tone 1, wired
account: free.
as an extra I use an infrared module and rotary encoder and this also works fine.

Rpi 3B+
volumio 3.251
Rpi wired to ethernet, connected via USB to external DAC (Hegel H160 integrated amp)
Free account, registered

Just wanted to let you know that it all seems to work fine! Unlike mentioned above, when playing an album, the player goes smoothly to the next song.
Guys @ Volumio and everyone that helped… Thank you! I’m really grateful for this to work again!

forgot to note that Bitrate information is missing. All others works as expected. Config information in my previous post

Raspberry pi 3b+ 1gb.
System version: 3.251
DAC: WiFi to Pi + digiOne transport to Rotel A11 (Dual Wolfson DACs) via RCA
Account: Spotify Premium

Everything appears to be working correct in terms of sounds, accessibility, control, i.e., tracks play & shuffle, repeat, etc. as previously.

Confirm bitrate information not showing. But apart from that seems to be good to use.

Found one, which happens sometimes.

open a playlist, press the top play,


manual select another song from the list. Spotify doesn’t respond anymore. Seems only happening when Spotify doesn’t start with the 1st track but with the 2nd in the list. (see generated errors below)

(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 156)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 157)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 158)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 159)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 160)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 161)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 162)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 163)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 164)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 165)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 166)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 167)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 168)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 169)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 170)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 171)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 172)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 173)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 174)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 175)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 176)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 177)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 178)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 179)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 180)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 181)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 182)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 183)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 184)
(node:947) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 185
info: CoreStateMachine::play index undefined
info: CoreStateMachine::setConsumeUpdateService undefined
info: CorePlayQueue::getTrack 0
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 0
info: [1654855477127] ControllerSpotify::clearAddPlayTrack
info: Setting this device active
[Vollibrespot] : Fetching autoplay context uri
[Vollibrespot] : Event: TrackChanged { old_track_id: SpotifyId { id: 169131416778762624668144728879161915021, audio_type: Track }, track_id: SpotifyId { id: 169131416778762624668144728879161915021, audio_type: Track } }
[Vollibrespot] : error 400 for uri hm://autoplay-enabled/query?uri=
[Vollibrespot] : AutoplayError: MercuryError
[Vollibrespot] : Fetching autoplay context uri
[Vollibrespot] : Event: PlaybackStopped { track_id: SpotifyId { id: 169131416778762624668144728879161915021, audio_type: Track } }
[Vollibrespot] : Event: TrackChanged { old_track_id: SpotifyId { id: 169131416778762624668144728879161915021, audio_type: Track }, track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[SpotifyConnect]  Cash In Cash Out
[SpotifyConnect]  Device palyback is inactive
info: [1654855477510] ControllerSpotify::pushState
info: CoreCommandRouter::servicePushState
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 0
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
info: CorePlayQueue::getTrack 0


info: CoreStateMachine::syncState   stateService stop
info: CoreStateMachine::syncState   currentStatus stop
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 0
info: CoreCommandRouter::volumioPushState
info: No code
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 0
info: CoreCommandRouter::volumioPushState
[Vollibrespot] : error 400 for uri hm://autoplay-enabled/query?uri=
[Vollibrespot] : AutoplayError: MercuryError
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Event: PlaybackLoading { track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[Vollibrespot] : Event: Next { track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[Vollibrespot] : Event: TrackChanged { old_track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track }, track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[SpotifyConnect]  Yet To Come
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Event: PlaybackLoading { track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[Vollibrespot] : Event: Next { track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[Vollibrespot] : Event: TrackChanged { old_track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track }, track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[SpotifyConnect]  Yet To Come
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Event: PlaybackLoading { track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[Vollibrespot] : Event: Next { track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[Vollibrespot] : Event: TrackChanged { old_track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track }, track_id: SpotifyId { id: 44297638265135597052020947814365872690, audio_type: Track } }
[SpotifyConnect]  Yet To Come
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load 
Skipping to next track
[Vollibrespot] : Loading  with Spotify URI 
[Vollibrespot] :  is not available
[Vollibrespot] : Unable to load ```

Thanks for all time and effort you have put into this.

Overall working and sounding great.

Running volumio 3.251 (free) on rpi3 + Iqaudio DAC + with wireless connection. Spotify Family Account

Test results

  1. Create playlist from Spotify. Play a few songs. Pause. Add a few additional songs to the play list from my NAS rather than spotify. Move the NAS song up the playlist to be the next song to play. Start playing the spotify track again.

At end of the song, it doesn’t proceed to the next (non spotify song on the list)

NAS is rpi2 running OpenMediaVault with mp3 file on ext4 filesystem.

Log file is here

http://logs.volumio.org/volumio/rxWUld7.html

  1. Volume of a song in spotify is much lower, compared to the same track played from my NAS. Enough of a difference that if your playlist has a mixture of both then the volume is uncomfortably higher when you get to a track from your NAS.

http://logs.volumio.org/volumio/7Xc0wDd.html

  1. Played a track from my NAS. When the track finished it replayed, rather than moving onto the next track in the playlist which was a spotify track

http://logs.volumio.org/volumio/kTFxOhY.html

Thank you for the great (and fast) work.

I also can confirm the queue issue.
The sound quality is perfect.

If i play track 9 music is stopped after the track has finished. Clicking next continues with track 4 and not with track 10 as expected.

br
Josef

Running volumio 3.251 (free) on rpi3 + Iqaudio DAC + with wireless connection. Spotify Family Account

Verified as per other testers, that the playlist stops at track 10. Here is the log file

http://logs.volumio.org/volumio/qXULAsP.html

Edit

It’s not track 10. It’s random. Cleared the queue completely and created a new queue with 5 tracks. It stopped after each track and I had to manually select the next one.

Edit 2

Definite not random - not even random numbers are random. The issue occurs after you manually select a track from the playlist, it doesn’t automatically move to the next track from thereon.

http://logs.volumio.org/volumio/OlFywi7.html

Also got interesting behaviour where after it played the last track in the queue, the web interface looked like it replaying the last song (had a countdown) but wasn’t actually playing the track again. (You might struggle to find it in the log as I didn’t get a refreshed copy of the after it happened - I will post a new log if it happens again.)

1 Like