Git Product home page Git Product logo

spocon's Introduction

Introduction

SpoCon is a Spotify Connect for Debian package and associated repository which thinly wraps the awesome librespot-java library by Gianluca Altomani and others. It works out of the box on all three revisions of the Pi, immediately after installation.

NEW: Spocon supports now also Docker, instructions are here: Spocon Docker

Download Latest Version

Raspbian Installation

This command downloads and installs the Debian package and adds its apt repository, which ensures you'll always be up to date with upstream changes.

curl -sL https://spocon.github.io/spocon/install.sh | sh

That's it! Plug a speaker into your Pi on your local network, select the device in Spotify et voilà!

Ubuntu and Debian Installation

sudo add-apt-repository ppa:spocon/spocon
sudo apt-get -y update
sudo apt-get install spocon 

Hard installation

Essentially, here's what the easy installer does,

# Add repo and its GPG key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7DBE8BF06EA39B78
## This downloads the armhf version for Raspbian Pi
echo 'deb http://ppa.launchpad.net/spocon/spocon/ubuntu bionic main' | sudo tee /etc/apt/sources.list.d/spocon.list

# Install package
sudo apt-get update
sudo apt-get -y install spocon

Alternative key import

Some people report problems importing the key for our repository. If the above command fails due to the keyserver, you can try the following beforehand:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 7DBE8BF06EA39B78

Requirements

You'll need a Spotify Premium account in order to use Connect.

Uninstalling

To uninstall, remove the package,

sudo apt-get remove -y spocon

To completely remove spocon and its Debian repository from your system try,

sudo apt-get remove -y --purge spocon

Configuration

SpoCon should work out of the box and should be discoverable by Spotify Connect on your local network, however you can configure it by editing /opt/spocon/config.toml which passes arguments to librespot-java.

If you have a firewall, you need to open the UDP port 5355 for mDNS. Then specify some random port in zeroconf.listenPort and open that TCP port too.

deviceName = "librespot-java" ### Device name ###
deviceType = "COMPUTER" ### Device type (COMPUTER, TABLET, SMARTPHONE, SPEAKER, TV, AVR, STB, AUDIO_DONGLE, GAME_CONSOLE, CAST_VIDEO, CAST_AUDIO, AUTOMOBILE, WEARABLE, UNKNOWN_SPOTIFY, CAR_THING, UNKNOWN) ###
preferredLocale = "en" ### Preferred locale ###

[auth] ### Authentication ###
strategy = "ZEROCONF" # Strategy (USER_PASS, ZEROCONF, BLOB, FACEBOOK)
username = "" # Spotify username (BLOB, USER_PASS only)
password = "" # Spotify password (USER_PASS only)
blob = "" # Spotify authentication blob (BLOB only)

[zeroconf] ### Zeroconf ###
listenPort = -1 # Listen on this port (`-1` for random)
listenAll = true # Listen on all interfaces (overrides `zeroconf.interfaces`)
interfaces = "" # Listen on these interfaces (comma separated list of names)

[cache] ### Cache ###
enabled = true # Cache enabled
dir = "./cache/"
doCleanUp = true

[preload] ### Preload ###
enabled = true # Preload enabled

[time] ### Time correction ###
synchronizationMethod = "NTP" # Time synchronization method (NTP, PING, MELODY, MANUAL)
manualCorrection = 0 # Manual time correction in millis

[player] ### Player ###
autoplayEnabled = true # Autoplay similar songs when your music ends
preferredAudioQuality = "VORBIS_160" # Preferred audio quality (VORBIS_96, VORBIS_160, VORBIS_320)
enableNormalisation = true # Whether to apply the Spotify loudness normalisation
normalisationPregain = 0.0 # Normalisation pregain
initialVolume = 65536 # Initial volume (0-65536)
logAvailableMixers = true # Log available mixers
mixerSearchKeywords = "" # Mixer/backend search keywords (semicolon separated)
crossfadeDuration = 0 # Crossfade overlap time (in milliseconds)
output = "MIXER" # Audio output device (MIXER, PIPE, STDOUT)
releaseLineDelay = 20 # Release mixer line after set delay (in seconds)
pipe = "" # Output raw (signed) PCM to this file (`player.output` must be PIPE)

After editing restart the daemon by running: sudo systemctl restart spocon

Building the Package Yourself

Requirements

cd Vagrant
vagrant up # start your environment
vagrant ssh # login into you environment
cd workspace
ansible-playbook Ansible/start.yml -e librespot_version=0.5.2 -e spocon_version=0.14.0

There should be a built Debian package (a .deb file) in your project directory /package.

Troubleshooting

My volume on Spotify is 100% and it's still too quiet!

Have you tried turning the volume up using the command alsamixer?

My Raspberry Pi does not use my USB sound card!

Check with aplay -l as which card your USB device is listed. Let's say it is "card 1", so try to replace the following in the file /usr/share/alsa/alsa.conf:

defaults.ctl.card 0
defaults.pcm.card 0

with

defaults.ctl.card 1
defaults.pcm.card 1

The audio output buzzes a few seconds after audio stops!

This is likely to be ALSA's Dynamic Audio Power Management (DAPM) shutting down the sound module of your device to save power. If you want to disable this feature, create a file called snd_soc_core.conf in /etc/modprobe.d with this line in:

options snd_soc_core pmdown_time -1

Once you reboot and play some sound, the issue should be gone.

Other issues

File an issue and if we get it sorted, I'll add to this list.

Donations

(I'd rather you donate to librespot-java instead, but there's no public address for those folks.)

Acknowledgments

Special thanks to Paul Lietar for librespot (and its additional authors) and David Cooper

spocon's People

Contributors

dennis14e avatar devgianlu avatar dtcooper avatar dzschille avatar jphoelz avatar reinoudk avatar spocon avatar thorstenhaga-tradedoubler avatar troon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spocon's Issues

SpoCon Crashes on Play

Describe the bug
SpoCon crashes when a playback is transferred to the SpoCon device

Platform
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
VERSION="11 (bullseye)"
ID=raspbian
Linux 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
SpoCon Version: librespot-java-api-v1.6.2.jar

To Reproduce

  1. Fresh install of Bullseye32 Lite from RaspberryPi Imager
  2. Install SpoCon using curl -sL https://spocon.github.io/spocon/install.sh | sh
  3. Ensure spocon is running:
● spocon.service - SpoCon
     Loaded: loaded (/lib/systemd/system/spocon.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-05-13 16:33:26 CEST; 3min 10s ago
    Process: 1837 ExecStartPre=/bin/sh -c until ping -c1 spotify.com; do sleep 5; done; (code=exited, st>
   Main PID: 1839 (java)
      Tasks: 29 (limit: 1599)
        CPU: 9.926s
     CGroup: /system.slice/spocon.service
             └─1839 /usr/bin/java -jar /opt/spocon/librespot-java-api-v1.6.2.jar
  1. Using phone or desktop client, transfer playback to SpoCon device
  2. Spocon crashes with log output below

Expected behavior
SpoCon should take the transferred playback, begin playing and not crash.

Logs

May 13 17:00:20 livingroom java[3785]: 2023-05-13 17:00:20,735 TRACE ZeroconfServer:536 - Handling request: GET /?action=getInfo&version=2.7.1 HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/120900743 OSX_ARM64/0 (Macmini9,1), Host=192.168.1.192, Accept-Encoding=gzip, Content-Type=application/x-www-form-urlencoded}
May 13 17:00:26 livingroom java[3785]: 2023-05-13 17:00:26,904 TRACE ZeroconfServer:536 - Handling request: GET /?action=getInfo&version=2.7.1 HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/120900743 OSX_ARM64/0 (Macmini9,1), Host=192.168.1.192, Accept-Encoding=gzip, Content-Type=application/x-www-form-urlencoded}
May 13 17:00:26 livingroom java[3785]: 2023-05-13 17:00:26,921 TRACE ZeroconfServer:536 - Handling request: POST / HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/120900743 OSX_ARM64/0 (Macmini9,1), Host=192.168.1.192, Accept-Encoding=gzip, Content-Length=779, Content-Type=application/x-www-form-urlencoded}
May 13 17:00:27 livingroom java[3785]: 2023-05-13 17:00:27,179 INFO  ZeroconfServer:345 - Accepted new user from Aaron’s Mac mini. {deviceId: 497c197e11e456fa6ecca32333ed4fc720925176}
May 13 17:00:27 livingroom java[3785]: 2023-05-13 17:00:27,418 INFO  ApResolver:90 - Loaded aps into pool: {accesspoint=[ap-gew4.spotify.com:4070, ap-gew4.spotify.com:443, ap-gew4.spotify.com:80, ap-guc3.spotify.com:4070, ap-gew1.spotify.com:443, ap-gue1.spotify.com:80], dealer=[gew4-dealer.spotify.com:443, guc3-dealer.spotify.com:443, gew1-dealer.spotify.com:443, gue1-dealer.spotify.com:443], spclient=[gew4-spclient.spotify.com:443, guc3-spclient.spotify.com:443, gew1-spclient.spotify.com:443, gue1-spclient.spotify.com:443]}
May 13 17:00:27 livingroom java[3785]: 2023-05-13 17:00:27,458 DEBUG TimeProvider:90 - Loaded time offset from NTP: -3ms
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,069 INFO  Session:137 - Created new session! {deviceId: 497c197e11e456fa6ecca32333ed4fc720925176, ap: ap-gew4.spotify.com:443, proxy: false}
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,573 INFO  Session:331 - Connected successfully!
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,677 TRACE Session:1333 - Session.Receiver started
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,711 INFO  CacheManager:95 - There are 0 cached entries.
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,724 TRACE AsyncProcessor:52 - AsyncProcessor{dealer-worker} has started
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,731 TRACE AsyncProcessor:52 - AsyncProcessor{event-service-sender} has started
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,734 INFO  Session:1415 - Skipping SecretBlock
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,736 INFO  Session:1387 - Received LicenseVersion: 0
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,738 INFO  Session:1377 - Received CountryCode: NL
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,742 DEBUG TokenProvider:67 - Token expired or not suitable, requesting again. {scopes: [playlist-read], oldToken: null}
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,769 TRACE MercuryClient:156 - Send Mercury request, seq: 1, uri: hm://keymaster/token/authenticated?scope=playlist-read&client_id=65b708073fc0480ea92a077233ca87bd&device_id=497c197e11e456fa6ecca32333ed4fc720925176, method: GET
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,774 TRACE Session:776 - Parsed product info: {remote-control=6, publish-activity=0, audio-preview-url-template=https://p.scdn.co/mp3-preview/{id}, incognito_mode_timeout=21600, ad-formats-preroll-video=0, type=premium, ab_recently_played_feature_time_filter_threshold=com.spotify.gaia=30,driving-mode=120,spotify%3Ainternal%3Astartpage=30, license-agreements=, publish-playlist=0, buffering-strategy=0, expiry=1, ab-desktop-hide-follow=0, ab-collection-hide-unavailable-albums=0, capper-profile=, payments-initial-campaign=default, profile-image-upload=1, enable-annotations=2, ab-ad-player-targeting=1, india-experience=0, video-wifi-initial-bitrate=800000, ab-mobile-running-onlymanualmode=only-manual, playlist-annotations-markup=0, prefetch-keys=1, allow-override-internal-prefs=0, prefetch-window-max=2, send-email=0, ad-formats-video-takeover=1, ab-collection-bookmark-model=1, pause-after=0, local-files-import=0, video-manifest-url=https://spclient.wg.spotify.com/manifests/v6/{type}/sources/{source_id}/options/supports_drm, ab-sugarpills-sanity-check=0, playlist-folders=1, arsenal_country=1, track-cap=0, ab-mobile-running-tempo-detection=Control, is_email_verified=1, shows-collection=1, enable-annotations-read=0, addon-hifi=0, mobile-browse=0, payments-locked-state=0, employee-free-opt-in=0, shows-collection-jam=0, ab-browse-music-tuesday=1, offline=1, streaming=1, fb-info-confirmation=control, audio-quality=1, wanted-licenses=, lastfm-session=, ab-desktop-playlist-annotation-edit=1, ab-mobile-discover=0, widevine-license-url=https://spclient.wg.spotify.com/widevine-license/v1/video/license, key-caching-max-count=10000, hifi-eligible=0, ad-session-persistence=1, video-initial-bitrate=200000, ab-play-history=0, created_by_partner=, mobile-payment=0, payment-state=, key-caching-max-offline-seconds=1800, ugc-abuse-report-url=https://support.spotify.com/abuse/?uri={uri}, shuffle-algorithm=1, use-pl3=0, image-url=https://i.scdn.co/image/{file_id}, use-playlist-app=0, enable-autostart=1, metadata-link-lookup-modes=0, multiuserplan-current-size=2, shuffle=0, instant-search=0, instant-search-expand-sidebar=0, use-playlist-uris=0, user-profile-show-invitation-codes=0, multiuserplan-member-type=FAMILY_MANAGER, ab-ad-requester=1, nft-disabled=1, ab-collection-union=1, key-memory-cache-mode=1:15,300, libspotify=1, high-bitrate=1, head-file-caching=1, radio=1, key-caching-auto-offline=0, explicit-content=1, video-cdn-sampling=1, ab-android-push-notifications=1, unrestricted=1, use-fb-publish-backend=2, app-developer=0, buffering-strategy-parameters=0.8:0.2:0.0:0.0:0.0:0.0:1.0:10:10:2000:10000:10485760, enable-gapless=1, ab-playlist-extender=5, enable-crossfade=1, ad-persist-reward-time=0, network-operator-premium-activation=1, video-device-blacklisted=0, collection=1, fb-grant-permission-local-render=0, backend-advised-bitrate=1, catalogue=premium, storage-size-config=10240,90,500,3, ads=0, head-files-url=https://heads-fa.scdn.co/head/{file_id}, ab-collection-followed-artists-only=0, browse-overview-enabled=1, on-demand=1, ap-resolve-pods=0, name=Spotify Premium, sidebar-navigation-enabled=0, loudness-levels=1:-5.0,0.0,3.0:-2.0, mobile-login=1, hifi-optin-intent=0, preferred-locale=en, license-acceptance-grace-days=30, prefetch-strategy=18, ugc-abuse-report=1, ab-watch-now=0, financial-product=pr:premium,tc:0,rt:v2_NL_default_new-family-master_14.99_EUR_default, ab-collection-offline-mode=0, streaming-rules=, head-files=1, capping-bar-threshold=3601, ab-new-share-flow=0, video-keyframe-url=http://keyframes-fa.cdn.spotify.com/keyframes/v1/sources/{source_id}/keyframe/heights/{height}/timestamps/{timestamp_ms}.jpg, mobile=1, is_maybe_in_social_session=0, ab-mobile-startpage=0, ab-moments-experience=0, ab-mobile-social-feed=1, ab-test-group=593, player-license=premium}
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,775 INFO  Session:1415 - Skipping UnknownData_AllZeros
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,776 INFO  Session:1415 - Skipping LegacyWelcome
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,779 TRACE MercuryClient:199 - Handling packet, cmd: MercuryEvent, seq: 5663893357441581056, flags: 1, parts: 1
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,784 DEBUG MercuryClient:234 - Couldn't dispatch Mercury event {seq: 5663893357441581056, uri: hm://pusher/v1/connections/NDk3YzE5N2UxMWU0NTZmYTZlY <<SNIP>> UQ1ODdBRDkyRQ%3D%3D, code: 200, payload: []}
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,786 DEBUG Session:1391 - Received 0x10: DA56C9795514FB24BAD01FEEA25662A4E8E1F5D1
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,850 TRACE MercuryClient:199 - Handling packet, cmd: MercuryReq, seq: 1, flags: 1, parts: 2
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,854 DEBUG TokenProvider:71 - Updated token successfully! {scopes: [playlist-read], newToken: StoredToken{expiresIn=3600, accessToken='BQCkMm...4WoiyY', scopes=[playlist-read], timestamp=1683990028850}}
May 13 17:00:28 livingroom java[3785]: 2023-05-13 17:00:28,892 INFO  Session:361 - Authenticated as mxyes06jwepj16ar75nv2msh3!
May 13 17:00:29 livingroom java[3785]: 2023-05-13 17:00:29,090 INFO  Session:1342 - Skipping unknown command {cmd: 0x75, payload: 000000}
May 13 17:00:29 livingroom java[3785]: 2023-05-13 17:00:29,180 TRACE AsyncProcessor:52 - AsyncProcessor{put-state-worker} has started
May 13 17:00:29 livingroom java[3785]: 2023-05-13 17:00:29,633 DEBUG DealerClient:348 - Dealer connected! {host: guc3-dealer.spotify.com}
May 13 17:00:29 livingroom java[3785]: 2023-05-13 17:00:29,942 DEBUG DeviceStateHandler:155 - Updated Spotify-Connection-Id: NDk3YzE <<SNIP>> NjQ3RUFEQkE0
May 13 17:00:29 livingroom java[3785]: 2023-05-13 17:00:29,974 INFO  StateWrapper:344 - Notified new device (us)!
May 13 17:00:30 livingroom java[3785]: 2023-05-13 17:00:30,613 INFO  DeviceStateHandler:273 - Put state. {ts: 1683990029963, connId: NDk3Y...EQkE0, reason: NEW_DEVICE, request: device { device_info { can_play: true volume: 65536 name: "livingroomwq" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.6.2" device_type: COMPUTER spirc_version: "3.2.6" device_id: "497c197e11e456fa6ecca32333ed4fc720925176" client_id: "65b708073fc0480ea92a077233ca87bd" } player_state { context_restrictions { } playback_speed: 1.0 position_as_of_timestamp: 0 is_system_initiated: true options { shuffling_context: false repeating_context: false repeating_track: false } suppressions { } } } member_type: CONNECT_STATE put_state_reason: NEW_DEVICE has_been_playing_for_ms: 0 client_side_timestamp: 1683990029963}
May 13 17:00:30 livingroom java[3785]: 2023-05-13 17:00:30,775 TRACE DealerClient:114 - Received request. {mid: hm://connect-state/v1/player/command, key: 64846ad7-68a1-4174-a78b-aef457eec337, pid: 362851302, sender: bea92c5c6d1f44e4d7736b645ef06e0d61a32957, command: {"endpoint":"transfer","data":"CgYIABAAGAASlQYIytn6rIExEKiyBhkA <<SNIP>>ADIAIgIQAA==","options":{"restore_paused":"restore","restore_position":"extrapolate","restore_track":"always_play_something","license":"premium"},"from_device_identifier":"bea92c5c6d1f44e4d7736b645ef06e0d61a32957"}}
May 13 17:00:30 livingroom java[3785]: 2023-05-13 17:00:30,786 DEBUG Player:106 - Received command: Transfer
May 13 17:00:30 livingroom java[3785]: #
May 13 17:00:30 livingroom java[3785]: # A fatal error has been detected by the Java Runtime Environment:
May 13 17:00:30 livingroom java[3785]: #
May 13 17:00:30 livingroom java[3785]: #  SIGBUS (0x7) at pc=0xf766f730, pid=3785, tid=3834
May 13 17:00:30 livingroom java[3785]: #
May 13 17:00:30 livingroom java[3785]: # JRE version: OpenJDK Runtime Environment (11.0.18+10) (build 11.0.18+10-post-Raspbian-1deb11u1)
May 13 17:00:30 livingroom java[3785]: # Java VM: OpenJDK Server VM (11.0.18+10-post-Raspbian-1deb11u1, mixed mode, g1 gc, linux-)
May 13 17:00:30 livingroom java[3785]: # Problematic frame:
May 13 17:00:30 livingroom java[3785]: # V  [libjvm.so+0x9b9730]
May 13 17:00:30 livingroom java[3785]: #
May 13 17:00:30 livingroom java[3785]: # No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
May 13 17:00:30 livingroom java[3785]: #
May 13 17:00:30 livingroom java[3785]: # An error report file with more information is saved as:
May 13 17:00:30 livingroom java[3785]: # /opt/spocon/hs_err_pid3785.log
May 13 17:00:30 livingroom java[3785]: #
May 13 17:00:30 livingroom java[3785]: # If you would like to submit a bug report, please visit:
May 13 17:00:30 livingroom java[3785]: #   Unknown
May 13 17:00:30 livingroom java[3785]: #
May 13 17:00:30 livingroom systemd[1]: spocon.service: Main process exited, code=killed, status=6/ABRT
May 13 17:00:30 livingroom systemd[1]: spocon.service: Failed with result 'signal'.
May 13 17:00:30 livingroom systemd[1]: spocon.service: Consumed 12.293s CPU time.
May 13 17:00:40 livingroom systemd[1]: spocon.service: Scheduled restart job, restart counter is at 2.
May 13 17:00:40 livingroom systemd[1]: Stopped SpoCon.
May 13 17:00:40 livingroom systemd[1]: spocon.service: Consumed 12.293s CPU time.
May 13 17:00:40 livingroom systemd[1]: Starting SpoCon...

Additional context
I am running the same version of spocon on another raspberry pi under linux 5 and it appears to work properly.

1.5.2 release do not include librespot-java 1.5.2 Jar

A fresh install of latest release (1.5.2)
curl -sL https://spocon.github.io/spocon/install.sh | sh
do not instal librespot-java 1.5.2 but 1.5.1
After install

pi@raspberrypi:~ $ ps -ax |grep libre
 7295 pts/0    S+     0:00 grep --color=auto libre
26445 ?        Ssl   11:49 /usr/bin/java -jar /opt/spocon/librespot-java-api-v1.5.1.jar

librespot-java api is not responding to spotify api call

curl -X "GET" "http://localhost:24879/web-api/v1/me/top/artists"
*   Trying ::1...
* TCP_NODELAY set
* Expire in 149999 ms for 3 (transfer 0xa9f880)
* Expire in 200 ms for 4 (transfer 0xa9f880)
* Connected to localhost (::1) port 24879 (#0)
GET /web-api/v1/me/top/artists HTTP/1.1
Host: localhost:24879
User-Agent: curl/7.64.0
Accept: /
>
< HTTP/1.1 404 Not Found
< Connection: keep-alive
< Access-Control-Allow-Origin: *
< Content-Length: 0
< Date: Mon, 23 Nov 2020 18:38:18 GMT
<
* Connection #0 to host localhost left intact

I'm using RaspBerry pi 4 with Raspbian GNU/Linux 10

If I swap the JAR installed by spocon 1.5.2
/opt/spocon/librespot-java-api-v1.5.1.jar
with the one here https://github.com/librespot-org/librespot-java/releases/tag/v1.5.2

I can get my top artist

curl -X "GET" "http://localhost:24879/web-api/v1/me/top/artists" |grep name
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0    "name" : "Seal",
    "name" : "Led Zeppelin",
    "name" : "Noir Désir",
    "name" : "Supertramp",
    "name" : "Caro Emerald",
    "name" : "Queen",
    "name" : "Coldplay",
    "name" : "La Reine des chansons pour enfants et bébés",
    "name" : "Niklas Paschburg",


Armel support request

I have a music server running on armv6l device (and another on armv5tel). I've run librespot successfully on the armv6l device before, however there were connection issues happening at random (and not due to resources) and I ultimately couldn't use it. I'd like to give Spocon a try on these devices but I'm not familiar with how I might go about building for these architectures. Thanks in advance if anyone can point me in the right direction.

Sleep Mode

Is your feature request related to a problem? Please describe.
My Problem is that I can't control my Spocon client threw the spotify Web API after a specific time of roundabout 10 h. After this time I think the client goes into "sleep mode" and is not accessible threw the API anymore.

Describe the solution you'd like
It would be nice if there would be an option that disables the sleep mode entirely or if there would be a function that disables it.

audio-sink not visible to spotify's familiy members

Describe the bug

as main login'ed and registered spotify-user I can see spocon as audio sink
but other familiy members using this account as added users can not see spocon

Is there a way to set this availability of spocon to any account-assigned user?

besides: Many thanks for providing this, this helps me bypassing this painful cut of spotify's api described here

To Reproduce
Steps to reproduce the behavior:
grab familiy's device and search for spocon

Expected behavior
spocon audio-sink is available for all members assigned to the account

Screenshots
none, cause useless

Logs
none

Desktop (please complete the following information):

Smartphone (please complete the following information):

  • Device: any android device for family-member or main-account and vice versa

Additional context
none

Error when adding repository

Describe the bug
I get an error when following the Launchpad directions

To Reproduce
Steps to reproduce the behavior:

  1. Go to terminal and enter: "sudo add-apt-repository ppa:spocon/spocon"
  2. See error:
    "Traceback (most recent call last):
    File "/usr/bin/add-apt-repository", line 95, in
    sp = SoftwareProperties(options=options)
    File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 109, in init
    self.reload_sourceslist()
    File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 599, in reload_sourceslist
    self.distro.get_sources(self.sourceslist)
    File "/usr/lib/python3/dist-packages/aptsources/distro.py", line 89, in get_sources
    (self.id, self.codename))
    aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Raspbian/stretch"

Expected behavior
Should add repo and then install.

Desktop (please complete the following information):
Raspbian 9.11 strech on RPI3

Device never connects

The Pi is connecting to the spotify server● spocon.service - SpoCon
Loaded: loaded (/lib/systemd/system/spocon.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-07-13 17:49:03 BST; 2h 29min ago
Process: 12622 ExecStartPre=/bin/sh -c until ping -c1 spotify.com; do sleep 5; done; (code=exited, status=0/SUCCESS)
Main PID: 12624 (java)
Memory: 59.3M
CGroup: /system.slice/spocon.service
└─12624 /usr/bin/java -jar /opt/spocon/librespot-java-api-v1.4.0.jar

Jul 13 20:15:23 raspberrypi java[12624]: 2020-07-13 20:15:23,464 INFO ZeroconfServer:280 - y0595rk is already trying to connect.
Jul 13 20:15:23 raspberrypi java[12624]: 2020-07-13 20:15:23,589 TRACE ZeroconfServer:477 - Handling request: GET /?action=getInfo&version=2.7.1 HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.66
Jul 13 20:16:07 raspberrypi java[12624]: 2020-07-13 20:16:07,572 TRACE ZeroconfServer:477 - Handling request: GET /?action=getInfo HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.66 Android/29 (ON
Jul 13 20:16:51 raspberrypi java[12624]: 2020-07-13 20:16:51,765 TRACE ZeroconfServer:477 - Handling request: GET /?action=getInfo&version=2.7.1 HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.66
Jul 13 20:16:55 raspberrypi java[12624]: 2020-07-13 20:16:55,346 TRACE ZeroconfServer:477 - Handling request: GET /?action=getInfo&version=2.7.1 HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.66
Jul 13 20:17:08 raspberrypi java[12624]: 2020-07-13 20:17:08,399 TRACE ZeroconfServer:477 - Handling request: POST / HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.66 Android/29 (ONEPLUS A6003),
Jul 13 20:17:08 raspberrypi java[12624]: 2020-07-13 20:17:08,412 INFO ZeroconfServer:280 - y0595
***6rk is already trying to connect.
Jul 13 20:17:08 raspberrypi java[12624]: 2020-07-13 20:17:08,465 TRACE ZeroconfServer:477 - Handling request: GET /?action=getInfo&version=2.7.1 HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.66
Jul 13 20:17:10 raspberrypi java[12624]: 2020-07-13 20:17:10,504 TRACE ZeroconfServer:477 - Handling request: POST / HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.66 Android/29 (ONEPLUS A6003),
Jul 13 20:17:10 raspberrypi java[12624]: 2020-07-13 20:17:10,515 INFO ZeroconfServer:280 - y0595****************6rk is already trying to connect.
lines 1-19/19 (END)

Spotify does not see spocon spotify-connect

Describe the bug
A clear and concise description of what the bug is.

Spotify on my windows 10 desktop and iphone 7 can not see spocon as a spotify-connect server. When running raspotify on the same device I can connect to librespot every time from spotify on the desktop and iphone.

Below is the service log and the config.toml. Config.toml is configured to ouptut audio and metedata to pipe to owntone.

Spocon is (and librespot for testing as needed) running on Dietpi 8.1 x86.

Thanks for the great project and helping with this bug.

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser [e.g. chrome, safari]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone7]
  • OS:15.3.1
  • Browser [e.g. stock browser, safari]

Logs
If applicable, execute journalctl -u spocon -f --no-pager and paste the result here.
root@DietPi:/opt/spocon# systemctl -n 1000 status spocon
● spocon.service - SpoCon
Loaded: loaded (/lib/systemd/system/spocon.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2022-02-26 06:04:01 CST; 10s ago
Process: 121732 ExecStartPre=/bin/sh -c until ping -c1 spotify.com; do sleep 5; done; (code=exited, status=0/SUCCESS)
Main PID: 121734 (java)
Tasks: 19 (limit: 1164)
Memory: 49.9M
CPU: 1.587s
CGroup: /system.slice/spocon.service
└─121734 /usr/bin/java -jar /opt/spocon/librespot-java-api-v1.6.2.jar

Feb 26 06:04:01 DietPi systemd[1]: Starting SpoCon...
Feb 26 06:04:01 DietPi sh[121733]: PING spotify.com(2600:1901:1:c36:: (2600:1901:1:c36::)) 56 data bytes
Feb 26 06:04:01 DietPi sh[121733]: 64 bytes from 2600:1901:1:c36:: (2600:1901:1:c36::): icmp_seq=1 ttl=118 time=3.97 ms
Feb 26 06:04:01 DietPi sh[121733]: --- spotify.com ping statistics ---
Feb 26 06:04:01 DietPi sh[121733]: 1 packets transmitted, 1 received, 0% packet loss, time 0ms
Feb 26 06:04:01 DietPi sh[121733]: rtt min/avg/max/mdev = 3.972/3.972/3.972/0.000 ms
Feb 26 06:04:01 DietPi systemd[1]: Started SpoCon.
Feb 26 06:04:02 DietPi java[121734]: 2022-02-26 06:04:02,506 INFO Utils:104 - Cryptography restrictions removal not needed.
Feb 26 06:04:02 DietPi java[121734]: 2022-02-26 06:04:02,549 INFO ZeroconfServer:472 - Zeroconf HTTP server started successfully on port 58550!
Feb 26 06:04:03 DietPi java[121734]: 2022-02-26 06:04:03,991 INFO Zeroconf:500 - Announced Service{alias='librespot', service='spotify-connect', port=58550, text={ VERSION=1.0, CPath=/, Stack=SP}, addresses=[], domain='.local', protocol='tcp', host='DietPi'}.
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,005 DEBUG logging:152 - Logging Provider: org.jboss.logging.Log4j2LoggerProvider
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,093 INFO undertow:120 - starting server: Undertow - 2.2.14.Final
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,099 INFO xnio:95 - XNIO version 3.8.4.Final
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,114 INFO nio:58 - XNIO NIO Implementation Version 3.8.4.Final
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,115 TRACE nio:176 - Starting up with selector provider class sun.nio.ch.EPollSelectorProvider
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,116 TRACE nio:219 - Using Default system selector creator for provider class sun.nio.ch.EPollSelectorProvid er for main selectors and Default system selector creator for provider class sun.nio.ch.EPollSelectorProvider for temp selectors
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,133 INFO threads:52 - JBoss Threads version 3.1.0.Final
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,141 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@7103cb56 00000001 -> 00000002
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,141 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@7103cb56 00000002 -> 00000003
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,142 TRACE nio:440 - Starting worker thread Thread[XNIO-1 I/O-1,5,main]
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,143 DEBUG nio:444 - Started channel thread 'XNIO-1 I/O-1', selector sun.nio.ch.EPollSelectorImpl@4bddc78
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,143 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@4bddc78
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,143 TRACE nio:531 - Select, queue is empty
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,143 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@7103cb56 00000003 -> 00000004
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,144 TRACE nio:440 - Starting worker thread Thread[XNIO-1 I/O-2,5,main]
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,144 DEBUG nio:444 - Started channel thread 'XNIO-1 I/O-2', selector sun.nio.ch.EPollSelectorImpl@48fb700e
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,145 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@48fb700e
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,145 TRACE nio:531 - Select, queue is empty
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,146 DEBUG undertow:160 - Configuring listener with protocol HTTP for interface 0.0.0.0 and port 24879
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,153 TRACE nio:440 - Starting worker thread Thread[XNIO-1 Accept,5,main]
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,153 DEBUG nio:444 - Started channel thread 'XNIO-1 Accept', selector sun.nio.ch.EPollSelectorImpl@10943ce2
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,154 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@10943ce2
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,154 TRACE nio:531 - Select, queue is empty
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,177 TRACE selector:564 - Selected on sun.nio.ch.EPollSelectorImpl@10943ce2
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,177 TRACE nio:611 - Running task org.xnio.nio.WorkerThread$SynchTask@1e53d080
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,179 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@10943ce2
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,179 TRACE nio:531 - Select, queue is empty
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,184 TRACE listener:57 - Setting channel listener to org.xnio.nio.QueuedNioTcpServer2$$Lambda$153/0x00000008 401e0c40@35e5d0e5
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,188 TRACE nio:624 - Added task org.xnio.nio.NioTcpServerHandle$2@77d2e85
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,188 TRACE selector:564 - Selected on sun.nio.ch.EPollSelectorImpl@10943ce2
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,188 TRACE nio:611 - Running task org.xnio.nio.NioTcpServerHandle$2@77d2e85
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,188 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@10943ce2
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,188 TRACE nio:531 - Select, queue is empty
Feb 26 06:04:04 DietPi java[121734]: 2022-02-26 06:04:04,189 INFO ApiServer:65 - Server started on port 24879!
root@DietPi:/opt/spocon#

Additional context
Add any other context about the problem here.
/opt/spocon/config.toml

Device type (COMPUTER, TABLET, SMARTPHONE, SPEAKER, TV, AVR, STB, AUDIO_DONGLE, GAME_CONSOLE, CAST_VIDEO, CAST_AUDIO, AUTOMOBILE, WEARABLE, UNKNOWN_SPOTIFY, CAR_THING, UNKNOWN)

deviceType = "AVR"

Device name

deviceName = "librespot"

Device ID (40 chars, leave empty for random)

deviceId = ""

Log level (OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL)

logLevel = "ALL"

Preferred locale

preferredLocale = "en"

Cache

[cache]
dir = "./cache/"
# Cache enabled
enabled = true
doCleanUp = true

Authentication

[auth]
# Credentials file (JSON)
credentialsFile = "credentials.json"
# Spotify password (USER_PASS only)
password = ""
# Spotify authentication blob Base64-encoded (BLOB only)
blob = ""
# Whether to store reusable credentials on disk (not a plain password)
storeCredentials = false
# Strategy (USER_PASS, ZEROCONF, BLOB, FACEBOOK, STORED)
strategy = "ZEROCONF"
# Spotify username (BLOB, USER_PASS only)
username = ""

Preload

[preload]
# Preload enabled
enabled = true

Network

[network]
# If ping isn't received within this amount of seconds, reconnect
connectionTimeout = 10

Proxy

[proxy]
# Basic auth password
password = ""
# The proxy hostname
address = ""
# The proxy port
port = 0
# Whether authentication is enabled on the server
auth = false
# The proxy type (HTTP, SOCKS)
type = "HTTP"
# Connect to proxy using SSL (HTTP only)
ssl = false
# Whether the proxy is enabled
enabled = false
# Basic auth username
username = ""

Zeroconf

[zeroconf]
# Listen on all interfaces (overrides zeroconf.interfaces)
listenAll = true
# Listen on these interfaces (comma separated list of names)
interfaces = ""
# Listen on this TCP port (-1 for random)
listenPort = -1

5353

Shell

[shell]
onTrackSeeked = ""
onStartedLoading = ""
onConnectionDropped = ""
onMetadataAvailable = ""
onTrackChanged = ""
onPanicState = ""
onFinishedLoading = ""
# Shell events enabled
enabled = false
onPlaybackResumed = ""
onConnectionEstablished = ""
onPlaybackEnded = ""
onContextChanged = ""
# Execute the command with bash -c
executeWithBash = false
onPlaybackPaused = ""
onInactiveSession = ""
onVolumeChanged = ""

Time correction

[time]
# Manual time correction in millis
manualCorrection = 0
# Time synchronization method (NTP, PING, MELODY, MANUAL)
synchronizationMethod = "NTP"

API

[api]
# API port (api module only)
port = 24879
# API listen interface (api module only)
host = "0.0.0.0"

Player

[player]
# Whether to apply the Spotify loudness normalisation
enableNormalisation = true
# Initial volume (0-65536)
initialVolume = 65536
# Whether librespot-java should ignore volume events, sink volume is set to the max
bypassSinkVolume = false
# Release mixer line after set delay (in seconds)
releaseLineDelay = 20
# Normalisation pregain in decibels (loud at +6, normal at +3, quiet at -5)
normalisationPregain = 3.0
# Output metadata in Shairport Sync format (https://github.com/mikebrady/shairport-sync-metadata-reader)
metadataPipe = "/srv/music/spotify.metadata"
# Autoplay similar songs when your music ends
autoplayEnabled = true
# Preferred audio quality (NORMAL, HIGH, VERY_HIGH)
preferredAudioQuality = "NORMAL"
# Where librespot-java should search for local files
localFilesPath = ""
# Audio output device (MIXER, PIPE, STDOUT, CUSTOM)
output = "PIPE"
# Crossfade overlap time (in milliseconds)
crossfadeDuration = 0
# Audio output Java class name
outputClass = ""
# Whether the player should retry fetching a chuck if it fails
retryOnChunkError = true
# Mixer/backend search keywords (semicolon separated)
mixerSearchKeywords = ""
# Output raw (signed) PCM to this file (player.output must be PIPE)
pipe = "/srv/music/spotify"
# Number of volume notches
volumeSteps = 64
# Log available mixers
logAvailableMixers = true

Ports for iptables

Hi there,

sorry for the bother, could someone help with the ports for iptables?

I've enabled a fixed port for avahi in the config file:

### Zeroconf ###
[zeroconf]
        # Listen on all interfaces (overrides `zeroconf.interfaces`)
        listenAll = true
        # Listen on these interfaces (comma separated list of names)
        interfaces = ""
        # Listen on this port (`-1` for random)
        listenPort = 5355

and opened that port as such:

:UDP - [0:0]
....
....
....
-A UDP -s 192.168.224.0/24 -p udp -m multiport --dports 5355 -j ACCEPT

but it doesn't show in my spotify app. As soon as I disable the firewall it shows up.

Any help would be appreciated

Use api jar instead of core jar?

The api-jar-with-dependencies isn't much larger than the core-jar-with-dependencies (10.3 MB vs 7.5 MB as of the latest release) and it provides additional api functionality

Can't connect

i trying to connect with my iPhone to my RaspberryPi 4 and no Connection ... only waiting. Here is the log.
So raspotify is much easier to handle! Why?

-- Logs begin at Thu 2021-01-28 20:17:02 CET. --
Jan 29 10:01:20 berry4 java[31513]: at xyz.gianlu.librespot.core.Session$Builder.decryptBlob(Session.java:879) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:20 berry4 java[31513]: at xyz.gianlu.librespot.core.Session$Builder.blob(Session.java:970) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:20 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer.handleAddUser(ZeroconfServer.java:349) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:20 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer.access$200(ZeroconfServer.java:40) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:20 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer$HttpRunner.handleRequest(ZeroconfServer.java:482) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:20 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer$HttpRunner.handle(ZeroconfServer.java:557) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:20 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer$HttpRunner.lambda$run$1(ZeroconfServer.java:465) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:20 berry4 java[31513]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
Jan 29 10:01:20 berry4 java[31513]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
Jan 29 10:01:20 berry4 java[31513]: at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: 2021-01-29 10:01:43,338 TRACE ZeroconfServer:519 - Handling request: POST / HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.96 iOS/14.4 (iPhone10,4), Host=192.168.1.210, Accept-Encoding=gzip, Content-Length=702, Content-Type=application/x-www-form-urlencoded}
Jan 29 10:01:43 berry4 java[31513]: 2021-01-29 10:01:43,356 INFO ZeroconfServer:328 - Accepted new user from iPhone von Denis. {deviceId: 6779cefe4a4ec0c18fd082ea65e153aa880c745c}
Jan 29 10:01:43 berry4 java[31513]: 2021-01-29 10:01:43,364 FATAL ZeroconfServer:358 - Couldn't establish a new session.
Jan 29 10:01:43 berry4 java[31513]: java.security.InvalidKeyException: Illegal key size or default parameters
Jan 29 10:01:43 berry4 java[31513]: at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026) ~[?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: at javax.crypto.Cipher.implInit(Cipher.java:801) ~[?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: at javax.crypto.Cipher.chooseProvider(Cipher.java:864) ~[?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: at javax.crypto.Cipher.init(Cipher.java:1249) ~[?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: at javax.crypto.Cipher.init(Cipher.java:1186) ~[?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: at xyz.gianlu.librespot.core.Session$Builder.decryptBlob(Session.java:879) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:43 berry4 java[31513]: at xyz.gianlu.librespot.core.Session$Builder.blob(Session.java:970) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:43 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer.handleAddUser(ZeroconfServer.java:349) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:43 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer.access$200(ZeroconfServer.java:40) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:43 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer$HttpRunner.handleRequest(ZeroconfServer.java:482) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:43 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer$HttpRunner.handle(ZeroconfServer.java:557) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:43 berry4 java[31513]: at xyz.gianlu.librespot.ZeroconfServer$HttpRunner.lambda$run$1(ZeroconfServer.java:465) ~[librespot-java-api-v1.5.4.jar:1.5.4]
Jan 29 10:01:43 berry4 java[31513]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_152]
Jan 29 10:01:43 berry4 java[31513]: at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152]

NullPointerException in StateWrapper.java

Describe the bug
A NullPointerexception was thrown while trying to connect

To Reproduce
Steps to reproduce the behavior:
Does not happen all the time

  1. Another account was connected to the spocon instance first, but stopped playing
  2. I try to connect from another account and another phone
  3. I end up with the crash.

Logs
2021-02-13 11:13:55,178 DEBUG Player:293 - Received command: Pause 2021-02-13 11:13:55,180 DEBUG DealerClient:109 - Handled request. {key: fa767c9d-bbdf-xxxx-8266-e3caae86316b, result: SUCCESS} 2021-02-13 11:13:55,736 INFO DeviceStateHandler:252 - Put state. {ts: 1613211235178, connId: NmE4N...GOUZD, reason: PLAYER_STATE_CHANGED} 2021-02-13 11:17:15,496 INFO StateWrapper:321 - Notified inactivity! 2021-02-13 11:17:16,053 INFO DeviceStateHandler:252 - Put state. {ts: 1613211435494, connId: NmE4N...GOUZD, reason: BECAME_INACTIVE} 2021-02-13 11:47:33,267 DEBUG PlayerQueueEntry:209 - PlayerQueueEntry{0129efd386c2f3200757b11fffb188e5} has been removed from output. 2021-02-13 11:47:33,273 INFO Session:416 - Closing session. {deviceId: 6a854[xxx]c740dc} 2021-02-13 11:47:33,278 DEBUG DealerClient:319 - Did not dispatch connection invalidated: null != xyz.gianlu.librespot.dealer.DealerClient$ConnectionHolder@24bc623a 2021-02-13 11:47:33,526 DEBUG EventService:35 - Event sent. {body: 12|37|67|6a854[xxx]c740dc|0129efd386c2f3200757b11fffb188e5|00000000000000000000000000000000|playlist|trackdone|unknown|logout|786432|5392812|-1694450033|-1694450033|278386|6|0|0|0|0|0|0|-1|context|-1|0|1|0|0|0|-1694450033|-1694450033|0|176400|spotify:user:4c4dc6l4563sw42sbpjn5bi6o:playlist:0ryJqtAalcQFM3ryHiOlVx|vorbis|41d8db30b70948028970f4e09e946897||0|1613211219806|0|context|home|8.6.0.830|com.spotify|crossfade|none|9b2096e8d94e1fc609877cddf8ce3deaf26e7161|na|none, result: 200} 2021-02-13 11:47:33,747 DEBUG EventService:35 - Event sent. {body: 10|20|34f1986baece6327b92009c81abcb95cb5ee7ddd|0129efd386c2f3200757b11fffb188e5|0|0|0|0|0|0|786432|5392812|music|-1|-1|-1|-1.000000|-1|-1.000000|-1|-1|-1|-1.000000|-1|-1|-1|-1|-1.000000|-1|0.000000|-1.000000|||unknown|0|0|0|0|0|interactive|0|176400|0|0, result: 200} 2021-02-13 11:47:33,967 DEBUG EventService:35 - Event sent. {body: 372|1|0129efd386c2f3200757b11fffb188e5|spotify:track:20fBuVybkHgjF6vNhSMROD|0|[[0,-1694450033]], result: 200} 2021-02-13 11:47:33,972 INFO Session:475 - Closed session. {deviceId: 6a854[xxx]c740dc} 2021-02-13 11:47:33,973 INFO ZeroconfServer:328 - Accepted new user from Nokia T. {deviceId: 6a854[xxx]c740dc} 2021-02-13 11:47:34,023 DEBUG TimeProvider:74 - Loaded time offset from NTP: -2ms 2021-02-13 11:47:34,078 INFO Session:120 - Created new session! {deviceId: 6a854[xxx]c740dc, ap: gew1-accesspoint-e-d75b.ap.spotify.com:80, proxy: false} 2021-02-13 11:47:34,421 INFO Session:310 - Connected successfully! 2021-02-13 11:47:34,484 INFO Session:1362 - Skipping SecretBlock 2021-02-13 11:47:34,484 INFO Session:1334 - Received LicenseVersion: 0 2021-02-13 11:47:34,484 DEBUG TokenProvider:51 - Token expired or not suitable, requesting again. {scopes: [playlist-read], oldToken: null} 2021-02-13 11:47:34,485 INFO Session:1324 - Received CountryCode: BE 2021-02-13 11:47:34,497 INFO CacheManager:80 - There are 61 cached entries. 2021-02-13 11:47:34,526 INFO Session:1362 - Skipping LegacyWelcome 2021-02-13 11:47:34,526 INFO Session:1362 - Skipping UnknownData_AllZeros 2021-02-13 11:47:34,527 DEBUG MercuryClient:218 - Couldn't dispatch Mercury event {seq: -653555209108193280, uri: hm://pusher/v1/connections/NmE4NTQwZDI5NzIwZmZiMGNiYjBjOTBjZjVmN2YzZjY2NGM3NDBkYytBUCt0Y3A6Ly9nZXcxLWFjY2Vzc3BvaW50LWUtZDc1Yi5nZXcxLnNwb3RpZnkubmV0OjUwMjYrOUExNkQwQTE4MThDODk0M0Y1Qzc1ODM1QjE2RTEyMEU3QkU5NUI3MDFFNTYzRUFGRjM5ODgwNTE1NkQ1NENGMg%3D%3D, code: 200, payload: []} 2021-02-13 11:47:34,528 DEBUG Session:1338 - Received 0x10: 4F23473327B3C7A1CF9989FA062A49EAB2918042 2021-02-13 11:47:34,563 INFO Session:1289 - Skipping unknown command {cmd: 0x75, payload: 000000} 2021-02-13 11:47:34,564 DEBUG EventService:35 - Event sent. {body: 812|1|en, result: 200} 2021-02-13 11:47:34,565 DEBUG TokenProvider:55 - Updated token successfully! {scopes: [playlist-read], newToken: StoredToken{expiresIn=3600, accessToken='BQBKL7...NYnivs', scopes=[playlist-read], timestamp=1613213254562}} 2021-02-13 11:47:34,566 INFO Session:341 - Authenticated as mouse256! 2021-02-13 11:47:34,681 DEBUG DealerClient:331 - Dealer connected! {host: gew-dealer.spotify.com} 2021-02-13 11:47:34,685 DEBUG DeviceStateHandler:135 - Updated Spotify-Connection-Id: NmE4NTQ[xx]5REEzMTlC 2021-02-13 11:47:34,688 INFO StateWrapper:301 - Notified new device (us)! 2021-02-13 11:47:34,836 INFO DeviceStateHandler:252 - Put state. {ts: 1613213254684, connId: NmE4N...zMTlC, reason: NEW_DEVICE} 2021-02-13 11:47:35,080 DEBUG Player:293 - Received command: Transfer 2021-02-13 11:47:35,089 DEBUG Player:365 - Loading context (transfer), uri: spotify:station:playlist:0ryJqtAalcQFM3ryHiOlVx 2021-02-13 11:47:35,090 ERROR DealerClient:112 - Failed handling request. {key: 757694cc-15f0-xxxx-acac-28fbf8dc65ce} java.lang.NullPointerException: null at xyz.gianlu.librespot.player.StateWrapper.setShufflingContext(StateWrapper.java:154) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.player.StateWrapper.setContext(StateWrapper.java:254) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.player.StateWrapper.transfer(StateWrapper.java:472) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.player.Player.handleTransferState(Player.java:368) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.player.Player.command(Player.java:300) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.player.state.DeviceStateHandler.notifyCommand(DeviceStateHandler.java:110) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.player.state.DeviceStateHandler.onRequest(DeviceStateHandler.java:176) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.dealer.DealerClient.lambda$handleRequest$1(DealerClient.java:107) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.common.AsyncWorker.lambda$new$0(AsyncWorker.java:20) ~[librespot-java-api-v1.5.4.jar:1.5.4] at xyz.gianlu.librespot.common.AsyncProcessor.lambda$submit$1(AsyncProcessor.java:40) ~[librespot-java-api-v1.5.4.jar:1.5.4] at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?]

Spocon is running on raspberry-pi, java-corretto-11.
Up-to-date with latest version.

permission denied when using PIPE

Describe the bug
Pemission denied in Pipe

To Reproduce
Steps to reproduce the behavior:
Start the server on a place where you have access

Expected behavior
No permission denied for places where there is access

Screenshots
If applicable, add screenshots to help explain your problem.

Logs
`Feb 16 12:35:16 raspberrypi java[6359]: 2022-02-16 12:35:16,047 DEBUG Player:106 - Received command: Transfer
Feb 16 12:35:16 raspberrypi java[6359]: 2022-02-16 12:35:16,727 DEBUG Player:533 - Loading context (transfer), uri: spotify:playlist:37i9dQZF1E39WNWQOVPYeb
Feb 16 12:35:16 raspberrypi java[6359]: 2022-02-16 12:35:16,867 DEBUG DeviceStateHandler:210 - Device is now active. {ts: 1645014916876}
Feb 16 12:35:16 raspberrypi java[6359]: 2022-02-16 12:35:16,994 TRACE StateWrapper:1139 - Initialized current track index to 4.
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,047 DEBUG Player:348 - Loading session, id: b37iKNKVmg8NbyH5TjhTRw, play: false
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,111 INFO PlayerSession:69 - Created new session. {id: b37iKNKVmg8NbyH5TjhTRw}
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,154 DEBUG Player:490 - Loading track, id: TrackId{spotify:track:4iaaEAAyCWrQdYT5tRnyDb}, session: b37iKNKVmg8NbyH5TjhTRw, playback: null, play: false
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,188 TRACE MercuryClient:156 - Send Mercury request, seq: 2, uri: hm://event-service/v1/events, method: POST
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,233 TRACE PlayerQueueEntry:92 - Created new PlayerQueueEntry{0152fa8147c9b0926222b1f3caf2a1fb}.
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,238 TRACE PlayerSession:162 - PlayerQueueEntry{0152fa8147c9b0926222b1f3caf2a1fb} started loading.
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,238 TRACE PlayerQueue:82 - PlayerQueueEntry{0152fa8147c9b0926222b1f3caf2a1fb} added to queue.
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,245 DEBUG PlayerSession:283 - PlayerQueueEntry{0152fa8147c9b0926222b1f3caf2a1fb} has been added to the output. {sessionId: b37iKNKVmg8NbyH5TjhTRw, pos: 78124, reason: CLICK_ROW}
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,256 TRACE MercuryClient:199 - Handling packet, cmd: MercuryReq, seq: 2, flags: 1, parts: 1
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,260 DEBUG EventService:51 - Event sent. {body: 557|3|b37iKNKVmg8NbyH5TjhTRw|spotify:playlist:37i9dQZF1E39WNWQOVPYeb|spotify:playlist:37i9dQZF1E39WNWQOVPYeb|1645014917149||50|context://spotify:playlist:37i9dQZF1E39WNWQOVPYeb, result: 200}
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,264 TRACE MercuryClient:156 - Send Mercury request, seq: 3, uri: hm://event-service/v1/events, method: POST
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,368 TRACE MercuryClient:199 - Handling packet, cmd: MercuryReq, seq: 3, flags: 1, parts: 1
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,371 DEBUG EventService:51 - Event sent. {body: 558|1|0152fa8147c9b0926222b1f3caf2a1fb|b37iKNKVmg8NbyH5TjhTRw|1645014917266, result: 200}
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,399 ERROR DacpMetadataPipe:67 - Failed sending metadata through pipe!
Feb 16 12:35:17 raspberrypi java[6359]: java.io.FileNotFoundException: /home/pi/music/spotify/spotify.metadata (Permission denied)
Feb 16 12:35:17 raspberrypi java[6359]: at java.io.FileOutputStream.open0(Native Method) ~[?:?]
Feb 16 12:35:17 raspberrypi java[6359]: at java.io.FileOutputStream.open(FileOutputStream.java:298) ~[?:?]
Feb 16 12:35:17 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:237) ~[?:?]
Feb 16 12:35:17 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:187) ~[?:?]
Feb 16 12:35:17 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.send(DacpMetadataPipe.java:72) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:17 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:65) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:17 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:60) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:17 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:56) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:17 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.sendPipeFlush(DacpMetadataPipe.java:110) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:17 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher$1.onPlaybackPaused(Player.java:992) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:17 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher.lambda$playbackPaused$2(Player.java:1068) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:17 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Feb 16 12:35:17 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Feb 16 12:35:17 raspberrypi java[6359]: at java.lang.Thread.run(Thread.java:829) [?:?]
Feb 16 12:35:17 raspberrypi java[6359]: 2022-02-16 12:35:17,433 DEBUG DealerClient:126 - Handled request. {key: 227d2810-5dbd-4f67-a425-9a2ac686a5d2, result: SUCCESS}

// discared since too long //

Feb 16 12:35:18 raspberrypi java[6359]: 2022-02-16 12:35:18,934 TRACE CdnManager:277 - Chunk 22/85 completed, cached: true, stream: {fileId: 1D58D0861AF16DEAC30E498408FCF9207E7BEAD4}
Feb 16 12:35:18 raspberrypi java[6359]: 2022-02-16 12:35:18,934 TRACE CdnManager:277 - Chunk 23/85 completed, cached: true, stream: {fileId: 1D58D0861AF16DEAC30E498408FCF9207E7BEAD4}
Feb 16 12:35:18 raspberrypi java[6359]: 2022-02-16 12:35:18,939 TRACE PlayerSession:194 - PlayerQueueEntry{0152fa8147c9b0926222b1f3caf2a1fb} finished loading.
Feb 16 12:35:18 raspberrypi java[6359]: 2022-02-16 12:35:18,940 TRACE CdnManager:277 - Chunk 24/85 completed, cached: true, stream: {fileId: 1D58D0861AF16DEAC30E498408FCF9207E7BEAD4}
Feb 16 12:35:19 raspberrypi java[6359]: 2022-02-16 12:35:19,051 ERROR DacpMetadataPipe:67 - Failed sending metadata through pipe!
Feb 16 12:35:19 raspberrypi java[6359]: java.io.FileNotFoundException: /home/pi/music/spotify/spotify.metadata (Permission denied)
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open0(Native Method) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open(FileOutputStream.java:298) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:237) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:187) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.send(DacpMetadataPipe.java:72) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:65) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:60) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:56) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.sendPipeFlush(DacpMetadataPipe.java:110) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher$1.onFinishedLoading(Player.java:1054) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher.lambda$finishedLoading$6(Player.java:1092) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.lang.Thread.run(Thread.java:829) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: 2022-02-16 12:35:19,062 ERROR DacpMetadataPipe:67 - Failed sending metadata through pipe!
Feb 16 12:35:19 raspberrypi java[6359]: java.io.FileNotFoundException: /home/pi/music/spotify/spotify.metadata (Permission denied)
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open0(Native Method) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open(FileOutputStream.java:298) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:237) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:187) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.send(DacpMetadataPipe.java:72) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:65) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:60) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.sendTrackInfo(DacpMetadataPipe.java:96) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher$1.onMetadataAvailable(Player.java:1018) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher.lambda$metadataAvailable$10(Player.java:1121) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.lang.Thread.run(Thread.java:829) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: 2022-02-16 12:35:19,069 ERROR DacpMetadataPipe:67 - Failed sending metadata through pipe!
Feb 16 12:35:19 raspberrypi java[6359]: java.io.FileNotFoundException: /home/pi/music/spotify/spotify.metadata (Permission denied)
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open0(Native Method) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open(FileOutputStream.java:298) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:237) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:187) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.send(DacpMetadataPipe.java:72) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:65) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:60) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.sendTrackInfo(DacpMetadataPipe.java:97) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher$1.onMetadataAvailable(Player.java:1018) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher.lambda$metadataAvailable$10(Player.java:1121) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.lang.Thread.run(Thread.java:829) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: 2022-02-16 12:35:19,085 ERROR DacpMetadataPipe:67 - Failed sending metadata through pipe!
Feb 16 12:35:19 raspberrypi java[6359]: java.io.FileNotFoundException: /home/pi/music/spotify/spotify.metadata (Permission denied)
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open0(Native Method) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open(FileOutputStream.java:298) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:237) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:187) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.send(DacpMetadataPipe.java:72) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:65) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:60) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.sendTrackInfo(DacpMetadataPipe.java:98) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher$1.onMetadataAvailable(Player.java:1018) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher.lambda$metadataAvailable$10(Player.java:1121) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.lang.Thread.run(Thread.java:829) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: 2022-02-16 12:35:19,090 TRACE MixingLine:184 - Toggle first channel: true
Feb 16 12:35:19 raspberrypi java[6359]: 2022-02-16 12:35:19,394 ERROR DacpMetadataPipe:67 - Failed sending metadata through pipe!
Feb 16 12:35:19 raspberrypi java[6359]: java.io.FileNotFoundException: /home/pi/music/spotify/spotify.metadata (Permission denied)
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open0(Native Method) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.open(FileOutputStream.java:298) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:237) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:187) ~[?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.send(DacpMetadataPipe.java:72) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:65) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:60) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.sendProgress(DacpMetadataPipe.java:92) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher$1.onMetadataAvailable(Player.java:1022) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher.lambda$metadataAvailable$10(Player.java:1121) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: at java.lang.Thread.run(Thread.java:829) [?:?]
Feb 16 12:35:19 raspberrypi java[6359]: 2022-02-16 12:35:19,934 INFO DeviceStateHandler:273 - Put state. {ts: 1645014919040, connId: MmM2N...FRTg0, reason: PLAYER_STATE_CHANGED, request: device { device_info { can_play: true volume: 5243 name:
Feb 16 12:35:20 raspberrypi java[6359]: 2022-02-16 12:35:20,165 ERROR DacpMetadataPipe:67 - Failed sending metadata through pipe!
Feb 16 12:35:20 raspberrypi java[6359]: java.io.FileNotFoundException: /home/pi/music/spotify/spotify.metadata (Permission denied)
Feb 16 12:35:20 raspberrypi java[6359]: at java.io.FileOutputStream.open0(Native Method) ~[?:?]
Feb 16 12:35:20 raspberrypi java[6359]: at java.io.FileOutputStream.open(FileOutputStream.java:298) ~[?:?]
Feb 16 12:35:20 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:237) ~[?:?]
Feb 16 12:35:20 raspberrypi java[6359]: at java.io.FileOutputStream.(FileOutputStream.java:187) ~[?:?]
Feb 16 12:35:20 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.send(DacpMetadataPipe.java:72) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:20 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.safeSend(DacpMetadataPipe.java:65) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:20 raspberrypi java[6359]: at xyz.gianlu.librespot.dacp.DacpMetadataPipe.sendImage(DacpMetadataPipe.java:88) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:20 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher$1.onMetadataAvailable(Player.java:1025) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:20 raspberrypi java[6359]: at xyz.gianlu.librespot.player.Player$EventsDispatcher.lambda$metadataAvailable$10(Player.java:1121) ~[librespot-java-api-v1.6.2.jar:1.6.2]
Feb 16 12:35:20 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Feb 16 12:35:20 raspberrypi java[6359]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Feb 16 12:35:20 raspberrypi java[6359]: at java.lang.Thread.run(Thread.java:829) [?:?]`

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: iPhone XR
  • OS: IOS 15.3
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Spocon stopped working -- librespot-java upgrade required

Few days ago my spocon server (running on Ubuntu 20.04 x64) stopped working - on smartphone client was showing endless "connecting" status.
After digging in the logs I've found message:

xyz.gianlu.librespot.core.Session$SpotifyAuthenticationException: PremiumAccountRequired

All of this without any changes on servers side and on my smartphone for months.

Then I've discovered that recently Spotify has changed something in the login process and this is the reason of whole issue. It was already (2 days ago) addressed in librespot-java version 1.6.3 - https://github.com/librespot-org/librespot-java/releases/tag/v1.6.3

So there is an urgent need to bump librespot-java and naturally whole spocon package (I use it from Ubuntu PPA).

Spocon hangs on connecting

I've installed SpoCon on Debian Stretch through the 'easy' install. When I try to connect from a phone (Xperia 1) it keeps saying connecting and eventually does nothing. I've configged Spocon to connect to Snapcast server. I don't see any audio errors (I think).
I've also attached my config and output from journalctl --no-pager -f -u spocon.

config_toml.txt
journalctl_ouput_spocon.txt

service spocon status:
● spocon.service - SpoCon
Loaded: loaded (/lib/systemd/system/spocon.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-05-01 14:43:13 CEST; 18min ago
Process: 24144 ExecStartPre=/bin/sh -c until ping -c1 spotify.com; do sleep 5; done; (code=exited, status=0/SUCCESS)
Main PID: 24148 (java)
Tasks: 61 (limit: 4915)
Memory: 179.4M
CPU: 15.598s
CGroup: /system.slice/spocon.service
└─24148 /usr/bin/java -jar /opt/spocon/librespot-java-api-v1.3.1.jar

May 01 15:01:18 thuisbasis java[24148]: at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
May 01 15:01:18 thuisbasis java[24148]: at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
May 01 15:01:18 thuisbasis java[24148]: at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
May 01 15:01:18 thuisbasis java[24148]: at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
May 01 15:01:18 thuisbasis java[24148]: at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
May 01 15:01:18 thuisbasis java[24148]: at java.base/java.net.Socket.connect(Socket.java:609)
May 01 15:01:18 thuisbasis java[24148]: at okhttp3.internal.platform.Platform.connectSocket(Platform.kt:117)
May 01 15:01:18 thuisbasis java[24148]: at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.kt:266)
May 01 15:01:18 thuisbasis java[24148]: ... 24 more
May 01 15:01:18 thuisbasis java[24148]: 2020-05-01 15:01:18,110 [OkHttp https://guc-dealer.spotify.com/...] TRACE DealerClient:238 - Scheduled reconnection attempt in 10 seconds...

Not a bug, but...

I installed spocon and is working really well.
I installed alsa equalizer and is working ok too, but I can't find a way to run spocon through the alsa equalizer.
I suggest adding in settings a way to reverse that.

Sorry for my terrible english.

Stuck on "Connecting..."

Describe the bug
After installing SpoCon using either the easy way or hard way, "SpoCon-Spotify" appears in available devices but playback is not transferred to RPI

To Reproduce
Steps to reproduce the behavior:

  1. Install SpoCon on RPI
  2. While playing music with Spotify Premium on Android, select "SpoCon-Spotify" in devices available
  3. See "Connecting..." appear
  4. Nothing happens, "Connecting..." seems to timeout.

Expected behavior
Expected music to start playing on RPI

Desktop (please complete the following information):
Raspbian 9.11 stretch

Smartphone (please complete the following information):

  • Device: OnePlus6T
  • Spotify Premium account

Additional context
Might be a connection, but I'm trying this project since https://github.com/dtcooper/raspotify displays similar behaviour. Not sure when it stopped working, but it used work fine.

On a bug there, this project is linked. dtcooper/raspotify#241

Soundcard not detected

I am coming to SpoCon because Raspotify did not produce clear sound with my soundcard (X-Fi).

SpoCon does not output sound at all, how do I need to configure the external soundcard in the settings? The card itself is working, I can hear music when using Mopidy (but that doesn't support Spotify Connect AFAIK).

Thanks,
Jan

Spocon fails to connect after a long time running

When spocon is running for a long time (like weeks), I sometimes encounter that it fails with traces like this:

2021-06-24 22:08:08,992 ERROR Session:730 - Failed reconnecting, retrying in 10 seconds...
java.net.UnknownHostException: gew1-accesspoint-d-xnwh.ap.spotify.com
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220) ~[?:?]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:?]
        at java.net.Socket.connect(Socket.java:609) ~[?:?]
        at java.net.Socket.connect(Socket.java:558) ~[?:?]
        at java.net.Socket.<init>(Socket.java:454) ~[?:?]
        at java.net.Socket.<init>(Socket.java:231) ~[?:?]
        at xyz.gianlu.librespot.core.Session$ConnectionHolder.create(Session.java:1242) ~[librespot-java-api-v1.6.0.jar:1.6.0]
        at xyz.gianlu.librespot.core.Session.reconnect(Session.java:712) ~[librespot-java-api-v1.6.0.jar:1.6.0]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:829) [?:?]

It keeps on printing this error.

That host effectively does not exist anymore. Maybe because of redeploys at the spotify server side some loadbalancer names changed?

When I just restart spocon, it discovers a new list of accesspoint urls (the old one is not in that list anymore) and works like a charm.

Spocon not discoverable after some time (1-2 days)

Describe the bug
Spocon disappears from the spotify discovery after some time (running on Raspberry Pi 4). Therefore, I cannot connect or play music.

To Reproduce
Steps to reproduce the behavior:

  1. Run Spocon
  2. Wait 1-2 days

Expected behavior
Remain discoverable

Additional context
Here is the log output of the spocon service up to the crash:

Mar 05 11:42:34 raspberrypi java[10613]: 2020-03-05 11:42:34 FATAL Session:941 - Failed reading packet!
Mar 05 11:42:34 raspberrypi java[10613]: java.io.EOFException
Mar 05 11:42:34 raspberrypi java[10613]:         at java.base/java.io.DataInputStream.readFully(DataInputStream.java:202)
Mar 05 11:42:34 raspberrypi java[10613]:         at java.base/java.io.DataInputStream.readFully(DataInputStream.java:170)
Mar 05 11:42:34 raspberrypi java[10613]:         at xyz.gianlu.librespot.crypto.CipherPair.receiveEncoded(CipherPair.java:60)
Mar 05 11:42:34 raspberrypi java[10613]:         at xyz.gianlu.librespot.core.Session$Receiver.run(Session.java:933)
Mar 05 11:42:34 raspberrypi java[10613]:         at java.base/java.lang.Thread.run(Thread.java:834)
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:275 - Connected successfully!
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:580 - Re-authenticated as xxxxxxxxxx!
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:1000 - Skipping SecretBlock
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:979 - Received LicenseVersion: 0
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:969 - Received CountryCode: DE
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:1000 - Skipping ProductInfo
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:1000 - Skipping LegacyWelcome
Mar 05 11:42:45 raspberrypi java[10613]: 2020-03-05 11:42:45 INFO  Session:1000 - Skipping UnknownData_AllZeros
Mar 05 11:42:46 raspberrypi java[10613]: 2020-03-05 11:42:46 TRACE MercuryClient:176 - Handling packet, cmd: MercuryEvent, seq: -3745306040111988736, flags: 1, parts: 1
Mar 05 11:42:46 raspberrypi java[10613]: 2020-03-05 11:42:46 DEBUG MercuryClient:209 - Couldn't dispatch Mercury event {seq: -3745306040111988736, uri: hm://pusher/v1/connections/xxxxxxxxxx
Mar 05 11:42:46 raspberrypi java[10613]: 2020-03-05 11:42:46 DEBUG Session:983 - Received 0x10: xxxxxxxxxx
Mar 05 11:42:46 raspberrypi java[10613]: 2020-03-05 11:42:46 INFO  Session:936 - Skipping unknown command {cmd: 0x75, payload: 000000}
Mar 05 15:36:52 raspberrypi java[10613]: 2020-03-05 15:36:52 WARN  Session:952 - Socket timed out. Reconnecting...
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:275 - Connected successfully!
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:580 - Re-authenticated as xxxxxxxxxx!
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:1000 - Skipping SecretBlock
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:979 - Received LicenseVersion: 0
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:969 - Received CountryCode: DE
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:1000 - Skipping ProductInfo
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:1000 - Skipping LegacyWelcome
Mar 05 15:36:53 raspberrypi java[10613]: 2020-03-05 15:36:53 INFO  Session:1000 - Skipping UnknownData_AllZeros
Mar 05 15:36:54 raspberrypi java[10613]: 2020-03-05 15:36:54 TRACE MercuryClient:176 - Handling packet, cmd: MercuryEvent, seq: -4587197695453560832, flags: 1, parts: 1
Mar 05 15:36:54 raspberrypi java[10613]: 2020-03-05 15:36:54 DEBUG MercuryClient:209 - Couldn't dispatch Mercury event {seq: -4587197695453560832, uri: hm://pusher/v1/connections/xxxxxxxxxx
Mar 05 15:36:54 raspberrypi java[10613]: 2020-03-05 15:36:54 DEBUG Session:983 - Received 0x10: xxxxxxxxxx
Mar 05 15:36:54 raspberrypi java[10613]: 2020-03-05 15:36:54 INFO  Session:936 - Skipping unknown command {cmd: 0x75, payload: 000000}

I blanked some of the long hex strings, because I do not know if it is required to keep them private.

SpoCon 1.4.0 package not available in Ubuntu 20.04 LTS repository

Describe the bug
See title. The latest release of SpoCon is not available for Ubuntu 20.04 LTS, 1.3.1 is downloaded instead.

To Reproduce
Steps to reproduce the behavior:

  1. Add SpoCon repository on a 20.04 LTS system
  2. Install SpoCon by following the installation instructions

Expected behavior
1.4.0 can be downloaded for 20.04 systems as well.

Unmet dependency for openjdk-11-jre on Picroft

When installing using install.sh on the Picroft distribution (Raspbian with Mycroft AI preinstalled), the following error is encountered:

spocon : Depends: openjdk-11-jre but it is not installable

To Reproduce

  1. Write the Picroft distribution to SD card
  2. Boot RPi to Picroft, and when the setup script launches press CTRL-C to get to bash prompt
  3. Run the spocon installer

Expected behavior
Spocon should be installed

Executing librespot java api fails

On a Raspi4 I followed the one-step installation command which ran without error. However Spocon does not show up in Spotify as device on IOS.

When checking with "service spocon status" I get the following:

  • spocon.service - SpoCon
    Loaded: loaded (/lib/systemd/system/spocon.service; enabled; vendor preset: enabled)
    Active: active (running) since Sat 2021-11-06 23:05:24 CET; 2s ago
    Process: 1853 ExecStartPre=/bin/sh -c until ping -c1 spotify.com; do sleep 5; done; (code=exited, status=0/SUCCESS)
    Main PID: 1855 (java)
    Tasks: 19 (limit: 4915)
    CGroup: /system.slice/spocon.service
    `-1855 /usr/bin/java -jar /opt/spocon/librespot-java-api-v1.6.1.jar

Nov 06 23:05:24 pi4 systemd[1]: Starting SpoCon...
Nov 06 23:05:24 pi4 sh[1853]: PING spotify.com (35.186.224.25) 56(84) bytes of data.
Nov 06 23:05:24 pi4 sh[1853]: 64 bytes from 25.224.186.35.bc.googleusercontent.com (35.186.224.25): icmp_seq=1 ttl=115 time=15.9 ms
Nov 06 23:05:24 pi4 sh[1853]: --- spotify.com ping statistics ---
Nov 06 23:05:24 pi4 sh[1853]: 1 packets transmitted, 1 received, 0% packet loss, time 0ms
Nov 06 23:05:24 pi4 sh[1853]: rtt min/avg/max/mdev = 15.910/15.910/15.910/0.000 ms
Nov 06 23:05:24 pi4 systemd[1]: Started SpoCon.

And then when Spotify goes searching for devices the status shows as follows:

  • spocon.service - SpoCon
    Loaded: loaded (/lib/systemd/system/spocon.service; enabled; vendor preset: enabled)
    Active: activating (auto-restart) (Result: exit-code) since Sat 2021-11-06 23:05:40 CET; 5s ago
    Process: 1882 ExecStartPre=/bin/sh -c until ping -c1 spotify.com; do sleep 5; done; (code=exited, status=0/SUCCESS)
    Process: 1884 ExecStart=/usr/bin/java -jar /opt/spocon/librespot-java-api-v1.6.1.jar (code=exited, status=1/FAILURE)
    Main PID: 1884 (code=exited, status=1/FAILURE)

Any idea what needs to be done here?

Ability to control hardware volume

I use a DAC that has built in hardware volume control and would like to bypass the software volume
Software volume degrades the sound considerably, while hardware passes the sound data untouched

I would like the ability to pass the audio data unchanged to the device and control the volume by way of hardware
Raspotify has the ability to directly control the hardware volume control of the DAC by specifying the control name
My mixer control is "Digital" to control the hardware volume

Raspotify has the ability to configure this type of operation as an example
Raspotify will actually control the hardware volume when using the Spotify applications from any device volume control and slider

Thank You

Works Like a Charm, BUT...

Not sure how to use with NordVPN which seems to terminate or block SpoCon. Firewall (not the same thing as VPN) instructions say open the UDP port 5355 for mDNS. Then specify some random port in zeroconf.listenPort and open that TCP port too. I see no reference to UDP in config.toml. Only API port = 24879.

Also, zeroconf ListenPort = -1 in config.toml. Should I change that? If so, to what?

Also, currently, initialVolume = 65536. My (iOS) Spotify app is at 100% volume when connected to SpoCon. Will cutting initialVolume in half cut my Spotify app in half?

nil error when attempting to play a playlist that contains any number of offline files.

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Restart machine
  2. Play a custom playlist that contains Offline files, but play a Spotify track.
  3. Try to attach to spocon.
  4. See error

Expected behavior
Spotify should attach and skip songs that spocon hasn't downloaded / doesn't have access to.

Logs

Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,223 TRACE DealerClient:97 - Received request. {mid: hm://connect-state/v1/player/command, key: cbf79024-7486-47ec-9fb9-c6268e81005c, pid: 886375822, sender: 4caaba3413d4673d3929a47864cd72a79628748d, command: {"endpoint":"transfer","data":"CgYIARAAGAAS4QUI44XLposvEAAZAAAAAAAA8D8gACrKBQoAEhBkYjc4MDcxNzQxNTE3YjU1GhD1MhFpZ9dBg7T7CcOM4/BeIjEKCWFsYnVtX3VyaRIkc3BvdGlmeTphbGJ1bTo1T0FlQ3VkS2VOT2NQSHpHUlFWeGl0IiUKC2FsYnVtX3RpdGxlEhZZcyBWIE9yY2hlc3RyYSBWZXJzaW9uIkoKEGltYWdlX3hsYXJnZV91cmwSNnNwb3RpZnk6aW1hZ2U6YWI2NzYxNmQwMDAwYjI3MzNmNzEwZTUxODRiM2RmZDJmOTJhY2I3NiIqCiBhY3Rpb25zLnNraXBwaW5nX3ByZXZfcGFzdF90cmFjaxIGcmVzdW1lIkkKD2ltYWdlX3NtYWxsX3VybBI2c3BvdGlmeTppbWFnZTphYjY3NjE2ZDAwMDA0ODUxM2Y3MTBlNTE4NGIzZGZkMmY5MmFjYjc2IjUKCmVudGl0eV91cmkSJ3Nwb3RpZnk6cGxheWxpc3Q6NVJKVndsNmRKWGFSM0lVRDJtTFFIcCIqCiBhY3Rpb25zLnNraXBwaW5nX25leHRfcGFzdF90cmFjaxIGcmVzdW1lIjMKCmFydGlzdF91cmkSJXNwb3RpZnk6YXJ0aXN0OjVXRm9memdSeHBWTmtwd2c5WFJTZGciQwoJaW1hZ2VfdXJsEjZzcG90aWZ5OmltYWdlOmFiNjc2MTZkMDAwMDFlMDIzZjcxMGU1MTg0YjNkZmQyZjkyYWNiNzYiDgoJaXRlcmF0aW9uEgEwIhUKDHRyYWNrX3BsYXllchIFYXVkaW8iSQoPaW1hZ2VfbGFyZ2VfdXJsEjZzcG90aWZ5OmltYWdlOmFiNjc2MTZkMDAwMGIyNzMzZjcxMGU1MTg0YjNkZmQyZjkyYWNiNzYiNgoLY29udGV4dF91cmkSJ3Nwb3RpZnk6cGxheWxpc3Q6NVJKVndsNmRKWGFSM0lVRDJtTFFIcBqjAgomChBkZXNrdG9wLWNsaWVudC14EgoxLjEuNTYuNTk1GgAiACoAMgAS4AEKJ3Nwb3RpZnk6cGxheWxpc3Q6NVJKVndsNmRKWGFSM0lVRDJtTFFIcBIxY29udGV4dDovL3Nwb3RpZnk6cGxheWxpc3Q6NVJKVndsNmRKWGFSM0lVRDJtTFFIcBoYCg1jb250ZXh0X293bmVyEgd6YWdlcjBuGjUKCWltYWdlX3VybBIoYWI2NzcwNmMwMDAwZGE4NGFjY2VkZGQ1ZTUyYzNhNzViYjY4MTQ2YxotChNjb250ZXh0X2Rlc2NyaXB0aW9uEhZ6YWdlcm9uLCBpbiBhIG51dHNoZWxsIgAwARoQZGI3ODA3MTc0MTUxN2I1NSIAKgAyACICEAA=","options":{"restore_paused":"restore","restore_position":"extrapolate","restore_track":"only_current","license":"premium"},"from_device_identifier":"4caaba3413d4673d3929a47864cd72a79628748d"}}
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,227 DEBUG Player:89 - Received command: Transfer
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,254 DEBUG Player:379 - Loading context (transfer), uri: spotify:playlist:5RJVwl6dJXaR3IUD2mLQHp
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,260 TRACE MercuryClient:140 - Send Mercury request, seq: 5, uri: hm://context-resolve/v1/spotify:playlist:5RJVwl6dJXaR3IUD2mLQHp, method: GET
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,662 TRACE MercuryClient:183 - Handling packet, cmd: MercuryReq, seq: 5, flags: 0, parts: 1
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,769 TRACE MercuryClient:183 - Handling packet, cmd: MercuryReq, seq: 5, flags: 2, parts: 1
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,801 TRACE MercuryClient:183 - Handling packet, cmd: MercuryReq, seq: 5, flags: 2, parts: 1
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,841 TRACE MercuryClient:183 - Handling packet, cmd: MercuryReq, seq: 5, flags: 1, parts: 1
Apr 09 05:12:41 spotipi java[1135]: 2021-04-09 05:12:41,945 ERROR DealerClient:112 - Failed handling request. {key: cbf79024-7486-47ec-9fb9-c6268e81005c}
Apr 09 05:12:41 spotipi java[1135]: java.lang.UnsupportedOperationException: null
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.metadata.UnsupportedId.getGid(UnsupportedId.java:17) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.common.ProtoUtils.lambda$jsonToContextTrack$0(ProtoUtils.java:121) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at java.util.Optional.ifPresent(Optional.java:183) ~[?:?]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.common.ProtoUtils.jsonToContextTrack(ProtoUtils.java:119) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.common.ProtoUtils.jsonToContextTracks(ProtoUtils.java:137) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.common.ProtoUtils.jsonToContextPage(ProtoUtils.java:148) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.common.ProtoUtils.jsonToContextPages(ProtoUtils.java:156) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.mercury.MercuryRequests$ResolvedContextWrapper.pages(MercuryRequests.java:142) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.PagesLoader.getPage(PagesLoader.java:95) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.PagesLoader.nextPage(PagesLoader.java:129) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.StateWrapper$TracksKeeper.initializeFrom(StateWrapper.java:1075) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.StateWrapper.transfer(StateWrapper.java:480) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.Player.handleTransferState(Player.java:382) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.Player.access$300(Player.java:49) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.Player$1.command(Player.java:96) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.state.DeviceStateHandler.notifyCommand(DeviceStateHandler.java:110) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.player.state.DeviceStateHandler.onRequest(DeviceStateHandler.java:176) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.dealer.DealerClient.lambda$handleRequest$1(DealerClient.java:107) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.common.AsyncWorker.lambda$new$0(AsyncWorker.java:20) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at xyz.gianlu.librespot.common.AsyncProcessor.lambda$submit$1(AsyncProcessor.java:40) ~[librespot-java-api-v1.5.5.jar:1.5.5]
Apr 09 05:12:41 spotipi java[1135]:         at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
Apr 09 05:12:41 spotipi java[1135]:         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
Apr 09 05:12:41 spotipi java[1135]:         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Apr 09 05:12:41 spotipi java[1135]:         at java.lang.Thread.run(Thread.java:834) [?:?]

Desktop (please complete the following information):

  • OS: Rpi4

Docker image

Would be nice if this could be run in Docker.

Installation fails at fetching GPG key: dirmngr doesn't exist

Describe the bug
At fetching GPG key dirmngr failes to start because it doesn't exist.

To Reproduce
Issue occurs at normal installation and manual installation as described at README.md.
Manual installation steps:

  1. Type in at the shell:
# Add repo and its GPG key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7DBE8BF06EA39B78
  1. The error will be:
Executing: /tmp/apt-key-gpghome.oNCtAMY1b1/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 7DBE8BF06EA39B78
gpg: failed to start the dirmngr '/usr/bin/dirmngr': Bestand of map bestaat niet
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.oNCtAMY1b1/S.dirmngr' failed: Bestand of map bestaat niet
gpg: keyserver receive failed: Geen dirmngr

"Bestand of map bestaat niet" = "File or directory doesn't exist"
"Geen" = "No" or "None"

  1. Every step further will also fail.

Expected behavior
A good description of all steps needed to install SpoCon where installing the GPG key won't fail.

Desktop (please complete the following information):

  • OS: Raspbian GNU/Linux 9 (stretch)

Song endings are being truncated

Describe the bug
Song endings are being truncated

To Reproduce
I'm simply playing playlists and the tracks are ending prematurely Unclear of exact timing, but seems to be ~4-6s. I'm piping to forked-daapd (via a mkfifo pipe).

I can see the metadata track time/total time in forked-daapd webpage. When this occurs, there is time remaining and it transitions to the next track. I can also see the log file excerpt below while still playing.

The DEBUG logfiles show a Changed fade out reason why: TRACK_DONE

Expected behavior
Tracks should play to completion when being piped, else handle output delays correctly.

Screenshots
N/A

Logs

Desktop (please complete the following information):
RPI4, 4GB

Additional context
I tried disabling preload and it didn't help.

Perhaps adjusting the crossFadeDuration to 4-5s would correct this?

I suspect disabling the fade out "TRACK_DONE" when sending to a pipe (or creating a new config option for this) would correct.

Another info piece: there is a Player time offset of <1000. It seems this doesn't take into account the forked-daapd synchronization delays. Maybe it is only looking at the spocon -> forked-daapd delay?

Spotify connect incorrect time

librespot-java-api-v1.6.0.jar

I'm using Spotify 8.6.30.968 (iphone) to control spocon (librespot-java-api-v1.6.0.jar) on Ubuntu 20.04.

Track progress time when paused continues to increase. I resume playback, the iphone app returns to the correct time position. If I leave it paused beyond the track length, the progress time is blank.

This is only from within the iphone app. The spotify lockscreen widget pauses progress bar/time correctly.

NTP time sync is enabled on the host.

Key Failure

Hi,
Trying to install on raspbian and keyserver failure. The curl | sh fails, so attempted manually also:

Manual attempt:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7DBE8BF06EA39B78

Executing: /tmp/apt-key-gpghome.4wBPyQbP7K/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 7DBE8BF06EA39B78
gpg: keyserver receive failed: Server indicated a failure

Outdated key perhaps?

Thanks!

[QUESTION] NO SOUND WHICH SOUNDCARD NUMBER SHOULD I USE

I have tried

defaults.ctl.card 0
defaults.pcm.card 0

and

defaults.ctl.card 1
defaults.pcm.card 1

and every combination possible in between.

But I do not get any sound on my ubuntu 22 server
If I do play test.wav it does play and also with aplay test.wav
The output of aplay -l

woute@server-pc:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC3241 Analog [ALC3241 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

But what to choose as those options, I though card 1, but it doesnt work. I want the internal speaker to work

Potential regression with storeCredentials = true

Hi,
When I activate the option, storeCrendentials. The discovery on spocon service from a mobile phone (android) stop working after few days (the device is not listed anymore). But it still works when I'm using the linux client (ubuntu). The device is visible and can be controlled. So it seems related to the discovery of the service. spocon works as expected otherwise.

Additional information that might be relevant:

To Reproduce

I'm not sure how to reproduce precisely. It takes a certain period of time,.
Activate storeCredentials, connect on the phone, with another client, maybe with another account. Wait and see ?... sorry can't tell you more than this

Expected behavior
The spocon device should be always discoverable and listed from mobile phone.

Desktop (please complete the following information):

  • OS: Raspian buster

Smartphone (please complete the following information):

  • Device: Motorola one
  • OS: Android 9

Additional context
Another person, with its own spotify premium account, also connects to the same spocon service from time to time. that person suffers from same behaviour when using her phone.

This is low priority, as I just need to deactivate the option storeCrendentials to make it work reliably.

Thanks.

randomly stops playing

hi,
spocon plays a few songs and stops, maybe one maybe ten so no consistent times, no clue what to to look at advice needed.

Output device

Is it possible to set the ouput device, like: "hw:0". I am trying to use spocon on raspberry pi with pulseaudio as an audiodevice. i can connect to the player and start playback but i can hear no sound.

cheers
bendsch

Spotify Won't connect

Describe the bug
First of all, thanks for developing spocon. I run a Zeroconf configuration with spocon 1.5.2.

When I try to enable Spotify Connect to play on my Spocon instance, it hangs at "Connecting...".
This happens virtually always.

I have attached my config and log, please let me know if there's anything else you need. I am not sure if this is a bug in Spocon or in my configuration. Although it did work flawless a few weeks ago. (A downgrade to 1.5.1 didn't help)

Thanks a lot for looking into this.

Spocon Config

### Device type (COMPUTER, TABLET, SMARTPHONE, SPEAKER, TV, AVR, STB, AUDIO_DONGLE, GAME_CONSOLE, CAST_VIDEO, CAST_AUDIO, AUTOMOBILE, WEARABLE, UNKNOWN_SPOTIFY, CAR_THING, UNKNOWN) ###
deviceType = "SPEAKER"
### Device name ###
deviceName = "Beamer"
### Device ID (40 chars, leave empty for random)  ###
deviceId = ""
### Log level (OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL) ###
logLevel = "TRACE"
### Preferred locale ###
preferredLocale = "en"

### Cache ###
[cache]
	dir = "./cache/"
	# Cache enabled
	enabled = true
	doCleanUp = true

### Authentication ###
[auth]
	# Credentials file (JSON)
	credentialsFile = "credentials.json"
	# Spotify password (USER_PASS only)
	password = ""
	# Spotify authentication blob Base64-encoded (BLOB only)
	blob = ""
	# Whether to store reusable credentials on disk (not a plain password)
	storeCredentials = false
	# Strategy (USER_PASS, ZEROCONF, BLOB, FACEBOOK, STORED)
	strategy = "ZEROCONF"
	# Spotify username (BLOB, USER_PASS only)
	username = ""

### Preload ###
[preload]
	# Preload enabled
	enabled = true

### Proxy ###
[proxy]
	# Basic auth password
	password = ""
	# The proxy hostname
	address = ""
	# The proxy port
	port = 0
	# Whether authentication is enabled on the server
	auth = false
	# The proxy type (HTTP, SOCKS)
	type = "HTTP"
	# Whether the proxy is enabled
	enabled = false
	# Basic auth username
	username = ""

### Zeroconf ###
[zeroconf]
	# Listen on all interfaces (overrides `zeroconf.interfaces`)
	listenAll = true
	# Listen on these interfaces (comma separated list of names)
	interfaces = ""
	# Listen on this TCP port (`-1` for random)
	listenPort = -1

### Time correction ###
[time]
	# Manual time correction in millis
	manualCorrection = 0
	# Time synchronization method (NTP, PING, MELODY, MANUAL)
	synchronizationMethod = "NTP"

### API ###
[api]
	# API port (`api` module only)
	port = 24879
	# API listen interface (`api` module only)
	host = "0.0.0.0"

### Player ###
[player]
	# Whether to apply the Spotify loudness normalisation
	enableNormalisation = true
	# Initial volume (0-65536)
	initialVolume = 65536
	# Release mixer line after set delay (in seconds)
	releaseLineDelay = 20
	# Normalisation pregain in decibels (loud at +6, normal at +3, quiet at -5)
	normalisationPregain = 0.0
	# Output metadata in Shairport Sync format (https://github.com/mikebrady/shairport-sync-metadata-reader)
	metadataPipe = ""
	# Autoplay similar songs when your music ends
	autoplayEnabled = true
	# Preferred audio quality (NORMAL, HIGH, VERY_HIGH)
	preferredAudioQuality = "VERY_HIGH" 
	#preferredAudioQuality = "VORBIS_160"
	# Audio output device (MIXER, PIPE, STDOUT)
	output = "MIXER"
	# Crossfade overlap time (in milliseconds)
	crossfadeDuration = 0
	# Whether the player should retry fetching a chuck if it fails
	retryOnChunkError = true
	# Mixer/backend search keywords (semicolon separated)
	mixerSearchKeywords = ""
	# Output raw (signed) PCM to this file (`player.output` must be PIPE)
	pipe = ""
	# Log available mixers
	logAvailableMixers = true
	# Number of volume notches
	volumeSteps = 64

Logs

dec 23 18:45:08 beamer systemd[1]: Stopping SpoCon...
dec 23 18:45:08 beamer java[1520]: 2020-12-23 18:45:08,010 INFO  undertow:252 - stopping server: Undertow - 2.1.3.Final
dec 23 18:45:08 beamer java[1520]: 2020-12-23 18:45:08,015 TRACE safe-close:151 - Closing resource org.xnio.nio.QueuedNioTcpServer2@73cf6fc9
dec 23 18:45:08 beamer systemd[1]: spocon.service: Main process exited, code=exited, status=143/n/a
dec 23 18:45:08 beamer systemd[1]: spocon.service: Failed with result 'exit-code'.
dec 23 18:45:08 beamer systemd[1]: Stopped SpoCon.
dec 23 18:45:08 beamer systemd[1]: Starting SpoCon...
dec 23 18:45:08 beamer sh[1801]: PING spotify.com (35.186.224.25) 56(84) bytes of data.
dec 23 18:45:08 beamer sh[1801]: 64 bytes from 25.224.186.35.bc.googleusercontent.com (35.186.224.25): icmp_seq=1 ttl=117 time=13.9 ms
dec 23 18:45:08 beamer sh[1801]: --- spotify.com ping statistics ---
dec 23 18:45:08 beamer sh[1801]: 1 packets transmitted, 1 received, 0% packet loss, time 0ms
dec 23 18:45:08 beamer sh[1801]: rtt min/avg/max/mdev = 13.870/13.870/13.870/0.000 ms
dec 23 18:45:08 beamer systemd[1]: Started SpoCon.
dec 23 18:45:08 beamer java[1803]: 2020-12-23 18:45:08,973 INFO  Utils:84 - Cryptography restrictions removal not needed.
dec 23 18:45:08 beamer java[1803]: 2020-12-23 18:45:08,996 INFO  ZeroconfServer:442 - Zeroconf HTTP server started successfully on port 30472!
dec 23 18:45:09 beamer java[1803]: 2020-12-23 18:45:09,858 TRACE ZeroconfServer:506 - Handling request: GET /?action=getInfo HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/114200622 Linux/0 (PC desktop), Host=192.168.178.222, Accept-Encoding=gzip, Content-Type=application/x-www-form-urlencoded}
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,435 INFO  Zeroconf:473 - Announced Service{alias='Beamer', service='spotify-connect', port=30472, text={VERSION=1.0, CPath=/, Stack=SP}, addresses=[/192.168.178.222], domain='.local', protocol='tcp', host='beamer'}.
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,463 DEBUG logging:152 - Logging Provider: org.jboss.logging.Log4j2LoggerProvider
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,517 INFO  undertow:117 - starting server: Undertow - 2.1.3.Final
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,524 INFO  xnio:95 - XNIO version 3.8.0.Final
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,532 INFO  nio:59 - XNIO NIO Implementation Version 3.8.0.Final
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,533 TRACE nio:177 - Starting up with selector provider class sun.nio.ch.EPollSelectorProvider
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,534 TRACE nio:220 - Using Default system selector creator for provider class sun.nio.ch.EPollSelectorProvider for main selectors and Default system selector creator for provider class sun.nio.ch.EPollSelectorProvider for temp selectors
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,548 INFO  threads:52 - JBoss Threads version 3.1.0.Final
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,555 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@6d025197 00000001 -> 00000002
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,555 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@6d025197 00000002 -> 00000003
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,556 TRACE nio:440 - Starting worker thread Thread[XNIO-1 I/O-1,5,main]
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,556 DEBUG nio:444 - Started channel thread 'XNIO-1 I/O-1', selector sun.nio.ch.EPollSelectorImpl@5dee9eb7
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,556 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@5dee9eb7
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,556 TRACE nio:531 - Select, queue is empty
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,557 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@6d025197 00000003 -> 00000004
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,557 TRACE nio:440 - Starting worker thread Thread[XNIO-1 I/O-2,5,main]
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,557 DEBUG nio:444 - Started channel thread 'XNIO-1 I/O-2', selector sun.nio.ch.EPollSelectorImpl@7e90172
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,558 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@7e90172
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,558 TRACE nio:531 - Select, queue is empty
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,558 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@6d025197 00000004 -> 00000005
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,558 TRACE nio:440 - Starting worker thread Thread[XNIO-1 I/O-3,5,main]
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,559 DEBUG nio:444 - Started channel thread 'XNIO-1 I/O-3', selector sun.nio.ch.EPollSelectorImpl@16b90c26
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,559 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@16b90c26
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,559 TRACE nio:531 - Select, queue is empty
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,559 TRACE nio:241 - CAS org.xnio.nio.NioXnioWorker@6d025197 00000005 -> 00000006
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,560 TRACE nio:440 - Starting worker thread Thread[XNIO-1 I/O-4,5,main]
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,560 DEBUG nio:444 - Started channel thread 'XNIO-1 I/O-4', selector sun.nio.ch.EPollSelectorImpl@50c2039c
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,560 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@50c2039c
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,560 TRACE nio:531 - Select, queue is empty
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,561 TRACE nio:440 - Starting worker thread Thread[XNIO-1 Accept,5,main]
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,561 DEBUG nio:444 - Started channel thread 'XNIO-1 Accept', selector sun.nio.ch.EPollSelectorImpl@7f7e8817
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,561 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@7f7e8817
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,561 TRACE nio:531 - Select, queue is empty
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,562 DEBUG undertow:157 - Configuring listener with protocol HTTP for interface 0.0.0.0 and port 24879
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,577 TRACE selector:564 - Selected on sun.nio.ch.EPollSelectorImpl@7f7e8817
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,578 TRACE nio:611 - Running task org.xnio.nio.WorkerThread$SynchTask@71b96988
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,578 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@7f7e8817
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,579 TRACE nio:531 - Select, queue is empty
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,579 TRACE listener:57 - Setting channel listener to org.xnio.nio.QueuedNioTcpServer2$$Lambda$139/0x00000008401b4440@e19bb76
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,580 TRACE nio:624 - Added task org.xnio.nio.NioTcpServerHandle$2@7241a47d
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,580 TRACE selector:564 - Selected on sun.nio.ch.EPollSelectorImpl@7f7e8817
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,581 TRACE nio:611 - Running task org.xnio.nio.NioTcpServerHandle$2@7241a47d
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,581 INFO  ApiServer:42 - Server started on port 24879!
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,581 TRACE selector:520 - Beginning select on sun.nio.ch.EPollSelectorImpl@7f7e8817
dec 23 18:45:10 beamer java[1803]: 2020-12-23 18:45:10,581 TRACE nio:531 - Select, queue is empty
dec 23 18:45:31 beamer java[1803]: 2020-12-23 18:45:31,569 TRACE ZeroconfServer:506 - Handling request: GET /?action=getInfo HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.89 Android/28 (H3113), Host=192.168.178.222, Accept-Encoding=gzip, Content-Type=application/x-www-form-urlencoded}
dec 23 18:45:42 beamer java[1803]: 2020-12-23 18:45:42,220 TRACE ZeroconfServer:506 - Handling request: GET /?action=getInfo&version=2.7.1 HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.89 Android/28 (H3113), Host=192.168.178.222, Accept-Encoding=gzip, Content-Type=application/x-www-form-urlencoded}
dec 23 18:45:42 beamer java[1803]: 2020-12-23 18:45:42,316 TRACE ZeroconfServer:506 - Handling request: POST / HTTP/1.1, headers: {Keep-Alive=0, Connection=keep-alive, User-Agent=Spotify/8.5.89 Android/28 (H3113), Host=192.168.178.222, Accept-Encoding=gzip, Content-Length=720, Content-Type=application/x-www-form-urlencoded}
dec 23 18:45:42 beamer java[1803]: 2020-12-23 18:45:42,387 INFO  ZeroconfServer:327 - Accepted new user from H3113. {deviceId: 7517c70fff3da82959428c8a7b1e5cfbce0c4afd}
dec 23 18:45:42 beamer java[1803]: 2020-12-23 18:45:42,501 INFO  ApResolver:68 - Loaded aps into pool: {accesspoint=[gew1-accesspoint-b-mrdk.ap.spotify.com:4070, gew1-accesspoint-b-b2ps.ap.spotify.com:443, gew1-accesspoint-b-cn8s.ap.spotify.com:80, gew1-accesspoint-b-tk6r.ap.spotify.com:4070, gew1-accesspoint-b-trmv.ap.spotify.com:443, gew1-accesspoint-b-95r6.ap.spotify.com:80, guc3-accesspoint-b-k0vf.ap.spotify.com:4070, guc3-accesspoint-b-x245.ap.spotify.com:443, guc3-accesspoint-b-9c0q.ap.spotify.com:80], dealer=[gew-dealer.spotify.com:443, guc-dealer.spotify.com:443, gae-dealer.spotify.com:443], spclient=[gew-spclient.spotify.com:443, guc-spclient.spotify.com:443, gae-spclient.spotify.com:443]}
dec 23 18:45:42 beamer java[1803]: 2020-12-23 18:45:42,553 DEBUG TimeProvider:74 - Loaded time offset from NTP: -5ms
dec 23 18:45:42 beamer java[1803]: 2020-12-23 18:45:42,907 INFO  Session:122 - Created new session! {deviceId: 7517c70fff3da82959428c8a7b1e5cfbce0c4afd, ap: guc3-accesspoint-b-k0vf.ap.spotify.com:4070, proxy: false}
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,523 INFO  Session:313 - Connected successfully!
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,837 TRACE Session:1293 - Session.Receiver started
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,843 TRACE AsyncProcessor:36 - AsyncProcessor{pm-mercury} has started
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,845 TRACE AsyncProcessor:36 - AsyncProcessor{pm-audio-keys} has started
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,846 TRACE AsyncProcessor:36 - AsyncProcessor{pm-channels} has started
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,858 TRACE AsyncProcessor:36 - AsyncProcessor{dealer-worker} has started
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,861 TRACE AsyncProcessor:36 - AsyncProcessor{event-service-sender} has started
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,862 INFO  Session:1375 - Skipping SecretBlock
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,863 INFO  Session:1347 - Received LicenseVersion: 0
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,863 INFO  Session:1337 - Received CountryCode: NL
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,864 INFO  CacheManager:80 - There are 136 cached entries.
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,868 DEBUG TokenProvider:51 - Token expired or not suitable, requesting again. {scopes: [playlist-read], oldToken: null}
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,877 TRACE MercuryClient:138 - Send Mercury request, seq: 1, uri: hm://keymaster/token/authenticated?scope=playlist-read&client_id=65b708073fc0480ea92a077233ca87bd&device_id=7517c70fff3da82959428c8a7b1e5cfbce0c4afd, method: GET
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,881 TRACE Session:732 - Parsed product info: {remote-control=6, publish-activity=0, audio-preview-url-template=https://p.scdn.co/mp3-preview/{id}, incognito_mode_timeout=21600, ad-formats-preroll-video=0, type=premium, ab_recently_played_feature_time_filter_threshold=com.spotify.gaia=30,driving-mode=120,spotify%3Ainternal%3Astartpage=30, license-agreements=, publish-playlist=0, buffering-strategy=0, expiry=1, ab-desktop-hide-follow=0, ab-collection-hide-unavailable-albums=0, capper-profile=, payments-initial-campaign=default, profile-image-upload=1, enable-annotations=2, ab-ad-player-targeting=1, india-experience=0, video-wifi-initial-bitrate=800000, ab-mobile-running-onlymanualmode=only-manual, playlist-annotations-markup=0, prefetch-keys=1, allow-override-internal-prefs=0, prefetch-window-max=2, send-email=1, ad-formats-video-takeover=1, npt-disabled=2, ab-collection-bookmark-model=1, pause-after=0, local-files-import=0, video-manifest-url=https://spclient.wg.spotify.com/manifests/v6/{type}/sources/{source_id}/options/supports_drm, ab-sugarpills-sanity-check=0, playlist-folders=1, arsenal_country=1, track-cap=0, ab-mobile-running-tempo-detection=Control, is_email_verified=0, shows-collection=1, enable-annotations-read=0, mobile-browse=0, payments-locked-state=0, shows-collection-jam=0, ab-browse-music-tuesday=1, offline=1, streaming=1, fb-info-confirmation=control, taste-onboarding-disabled=0, wanted-licenses=, lastfm-session=, ab-desktop-playlist-annotation-edit=1, ab-mobile-discover=0, widevine-license-url=https://spclient.wg.spotify.com/widevine-license/v1/video/license, key-caching-max-count=10000, ad-session-persistence=1, video-initial-bitrate=200000, ab-play-history=0, mobile-payment=0, payment-state=, key-caching-max-offline-seconds=1800, ugc-abuse-report-url=https://support.spotify.com/abuse/?uri={uri}, shuffle-algorithm=1, use-pl3=0, image-url=https://i.scdn.co/image/{file_id}, use-playlist-app=0, enable-autostart=1, metadata-link-lookup-modes=0, shuffle=0, instant-search=0, instant-search-expand-sidebar=0, use-playlist-uris=0, user-profile-show-invitation-codes=0, ab-ad-requester=1, nft-disabled=1, payments-cancel-state-interstitial=0, ab-collection-union=1, key-memory-cache-mode=1:15,300, libspotify=1, high-bitrate=1, head-file-caching=1, radio=1, explicit-content=1, video-cdn-sampling=1, ab-android-push-notifications=1, unrestricted=1, use-fb-publish-backend=2, app-developer=0, buffering-strategy-parameters=0.8:0.2:0.0:0.0:0.0:0.0:1.0:10:10:2000:10000:10485760, enable-gapless=1, ab-playlist-extender=5, enable-crossfade=1, ad-persist-reward-time=0, public-toplist=5, network-operator-premium-activation=1, video-device-blacklisted=0, collection=1, fb-grant-permission-local-render=0, backend-advised-bitrate=1, catalogue=premium, storage-size-config=10240,90,500,3, ads=0, head-files-url=https://heads4-ak-spotify-com.akamaized.net/head/{file_id}, ab-collection-followed-artists-only=0, browse-overview-enabled=1, on-demand=1, ap-resolve-pods=1, name=Spotify Premium, sidebar-navigation-enabled=0, loudness-levels=1:-6.0,3.0,6.0:-3.0, mobile-login=1, preferred-locale=en, license-acceptance-grace-days=30, prefetch-strategy=2, ugc-abuse-report=1, ab-watch-now=0, payments-latest-reusable-provider=adyen_ideal;2018-08-31, financial-product=pr:premium,tc:0,rt:v2_NL_default_duo-master-1m_12.99_EUR_default, ab-collection-offline-mode=0, streaming-rules=, head-files=1, capping-bar-threshold=3601, ab-new-share-flow=0, video-keyframe-url=http://keyframes-fa.cdn.spotify.com/keyframes/v1/sources/{source_id}/keyframe/heights/{height}/timestamps/{timestamp_ms}.jpg, mobile=1, is_maybe_in_social_session=0, ab-mobile-startpage=0, ab-moments-experience=0, ab-mobile-social-feed=1, ab-test-group=920, player-license=premium}
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,882 INFO  Session:1375 - Skipping LegacyWelcome
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,882 INFO  Session:1375 - Skipping UnknownData_AllZeros
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,884 TRACE MercuryClient:138 - Send Mercury request, seq: 2, uri: hm://event-service/v1/events, method: POST
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,960 TRACE MercuryClient:181 - Handling packet, cmd: MercuryEvent, seq: 2801586413898825728, flags: 1, parts: 1
dec 23 18:45:43 beamer java[1803]: 2020-12-23 18:45:43,961 DEBUG MercuryClient:216 - Couldn't dispatch Mercury event {seq: 2801586413898825728, uri: hm://pusher/v1/connections/NzUxN2M3MGZmZjNkYTgyOTU5NDI4YzhhN2IxZTVjZmJjZTBjNGFmZCtBUCt0Y3A6Ly9ndWMzLWFjY2Vzc3BvaW50LWItazB2Zi5ndWMzLnNwb3RpZnkubmV0OjUwMTUrNjM2Mjg4NTFBQkI5NDEyN0U0NDc0NDgwOTI2ODQxM0ZGQUU4QTFFMkJCNDEyRDQ3NThCNjEwNTgxOTYwNTAyRQ%3D%3D, code: 200, payload: []}
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,092 DEBUG Session:1351 - Received 0x10: 448412004ABD16CAE0FB9AE99DB941BDFE595ABC
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,093 TRACE MercuryClient:181 - Handling packet, cmd: MercuryReq, seq: 2, flags: 1, parts: 1
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,093 DEBUG EventService:35 - Event sent. {body: 812|1|en, result: 200}
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,260 INFO  Session:1302 - Skipping unknown command {cmd: 0x75, payload: 000000}
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,260 TRACE MercuryClient:181 - Handling packet, cmd: MercuryReq, seq: 1, flags: 1, parts: 2
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,262 DEBUG TokenProvider:55 - Updated token successfully! {scopes: [playlist-read], newToken: StoredToken{expiresIn=3600, accessToken='BQBhg1...c5voGw', scopes=[playlist-read], timestamp=1608745544256}}
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,280 INFO  Session:344 - Authenticated as rubenvandeven!
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,360 TRACE AsyncProcessor:36 - AsyncProcessor{put-state-worker} has started
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,596 DEBUG DealerClient:321 - Dealer connected! {host: guc-dealer.spotify.com}
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,600 DEBUG DeviceStateHandler:135 - Updated Spotify-Connection-Id: NzUxN2M3MGZmZjNkYTgyOTU5NDI4YzhhN2IxZTVjZmJjZTBjNGFmZCtkZWFsZXIrdGNwOi8vZ3VjMy1kZWFsZXItYi1mMm12Lmd1YzMuc3BvdGlmeS5uZXQ6NTcwMCtEQ0Q5NUI1RTc2NkIyRTcxMzgyQjA4RDE3OThERUQ3RThDNjNERDM5MUI1MTMzOTI5NjMwRTNENDRCMjZBNkQx
dec 23 18:45:44 beamer java[1803]: 2020-12-23 18:45:44,612 INFO  StateWrapper:300 - Notified new device (us)!
dec 23 18:45:45 beamer java[1803]: 2020-12-23 18:45:45,045 INFO  DeviceStateHandler:249 - Put state. {ts: 1608745544603, connId: NzUxN...BNkQx, reason: NEW_DEVICE, request: device { device_info { can_play: true volume: 65536 name: "Beamer" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.5.2" device_type: SPEAKER spirc_version: "3.2.6" device_id: "7517c70fff3da82959428c8a7b1e5cfbce0c4afd" } player_state { context_restrictions { } playback_speed: 1.0 position_as_of_timestamp: 0 is_system_initiated: true options { shuffling_context: false repeating_context: false repeating_track: false } suppressions { } } } member_type: CONNECT_STATE put_state_reason: NEW_DEVICE has_been_playing_for_ms: 0 client_side_timestamp: 1608745544603}
dec 23 18:45:45 beamer java[1803]: 2020-12-23 18:45:45,836 TRACE DealerClient:97 - Received request. {mid: hm://connect-state/v1/player/command, key: 77f92660-d949-4c86-bb2a-da7c3955b223, pid: 280293606, sender: a702f826931a888da85c3fa677bbaf999b1db6fc}
dec 23 18:45:45 beamer java[1803]: 2020-12-23 18:45:45,841 DEBUG Player:282 - Received command: Transfer
dec 23 18:45:45 beamer java[1803]: 2020-12-23 18:45:45,924 DEBUG Player:354 - Loading context (transfer), uri: spotify:artist:6cumWjeQABBu9dCqRV4wOP
dec 23 18:45:45 beamer java[1803]: 2020-12-23 18:45:45,928 DEBUG DeviceStateHandler:198 - Device is now active. {ts: 1608745545923}
...

Desktop (please complete the following information):

  • OS: Spotify on both Android & Linux. Spocon on Debian
  • Version 1.5.2

Additional context
Let me know if you need any additional info!

device not showing

Hi,

I have tried to install it on different devices and OS, but i can't select the device on spotify.
Installed on a server and on a raspberry pi 3 & pi 4, on debian, raspbian and ubuntu.

this is from the install:
pi@raspberrypi:~ $ curl -sL https://spocon.github.io/spocon/install.sh | sh Executing: /tmp/apt-key-gpghome.k0YbEze8Hz/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 7DBE8BF06EA39B78 gpg: key 7DBE8BF06EA39B78: public key "Launchpad PPA for Thorsten Haga" imported gpg: Total number processed: 1 gpg: imported: 1 deb http://ppa.launchpad.net/spocon/spocon/ubuntu bionic main Get:1 http://ppa.launchpad.net/spocon/spocon/ubuntu bionic InRelease [15.9 kB] Hit:2 http://archive.raspberrypi.org/debian buster InRelease Hit:3 http://raspbian.raspberrypi.org/raspbian buster InRelease Get:4 http://ppa.launchpad.net/spocon/spocon/ubuntu bionic/main armhf Packages [484 B] Get:5 http://ppa.launchpad.net/spocon/spocon/ubuntu bionic/main Translation-en [208 B] Fetched 16.6 kB in 3s (6,486 B/s) Reading package lists... Done Reading package lists... Done Building dependency tree Reading state information... Done The following package was automatically installed and is no longer required: python-colorzero Use 'sudo apt autoremove' to remove it. The following additional packages will be installed: ca-certificates-java fonts-dejavu-extra java-common libatk-wrapper-java libatk-wrapper-java-jni openjdk-11-jre openjdk-11-jre-headless Suggested packages: default-jre fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei | fonts-wqy-zenhei fonts-indic The following NEW packages will be installed: ca-certificates-java fonts-dejavu-extra java-common libatk-wrapper-java libatk-wrapper-java-jni openjdk-11-jre openjdk-11-jre-headless spocon 0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Need to get 47.5 MB of archives. After this operation, 168 MB of additional disk space will be used. Get:1 http://ppa.launchpad.net/spocon/spocon/ubuntu bionic/main armhf spocon armhf 1.6.0 [12.6 MB] Get:2 http://mirror.serverius.net/raspbian/raspbian buster/main armhf java-common all 0.71 [14.4 kB] Get:3 http://mirror.serverius.net/raspbian/raspbian buster/main armhf openjdk-11-jre-headless armhf 11.0.11+9-1~deb10u1 [32.7 MB] Get:5 http://mirror.nl.leaseweb.net/raspbian/raspbian buster/main armhf fonts-dejavu-extra all 2.37-1 [1,982 kB] Get:7 http://mirror.transip.net/raspbian/raspbian buster/main armhf libatk-wrapper-java-jni armhf 0.33.3-22 [33.7 kB] Get:4 http://mirror.serverius.net/raspbian/raspbian buster/main armhf ca-certificates-java all 20190405 [15.7 kB] Get:6 http://mirror.serverius.net/raspbian/raspbian buster/main armhf libatk-wrapper-java all 0.33.3-22 [45.3 kB] Get:8 http://mirror.serverius.net/raspbian/raspbian buster/main armhf openjdk-11-jre armhf 11.0.11+9-1~deb10u1 [148 kB] Fetched 47.5 MB in 17s (2,721 kB/s) Selecting previously unselected package java-common. (Reading database ... 98813 files and directories currently installed.) Preparing to unpack .../0-java-common_0.71_all.deb ... Unpacking java-common (0.71) ... Selecting previously unselected package openjdk-11-jre-headless:armhf. Preparing to unpack .../1-openjdk-11-jre-headless_11.0.11+9-1~deb10u1_armhf.deb ... Unpacking openjdk-11-jre-headless:armhf (11.0.11+9-1~deb10u1) ... Selecting previously unselected package ca-certificates-java. Preparing to unpack .../2-ca-certificates-java_20190405_all.deb ... Unpacking ca-certificates-java (20190405) ... Selecting previously unselected package fonts-dejavu-extra. Preparing to unpack .../3-fonts-dejavu-extra_2.37-1_all.deb ... Unpacking fonts-dejavu-extra (2.37-1) ... Selecting previously unselected package libatk-wrapper-java. Preparing to unpack .../4-libatk-wrapper-java_0.33.3-22_all.deb ... Unpacking libatk-wrapper-java (0.33.3-22) ... Selecting previously unselected package libatk-wrapper-java-jni:armhf. Preparing to unpack .../5-libatk-wrapper-java-jni_0.33.3-22_armhf.deb ... Unpacking libatk-wrapper-java-jni:armhf (0.33.3-22) ... Selecting previously unselected package openjdk-11-jre:armhf. Preparing to unpack .../6-openjdk-11-jre_11.0.11+9-1~deb10u1_armhf.deb ... Unpacking openjdk-11-jre:armhf (11.0.11+9-1~deb10u1) ... Selecting previously unselected package spocon. Preparing to unpack .../7-spocon_1.6.0_armhf.deb ... Adding group spocon' (GID 124) ...
Done.
Adding system user spocon' (UID 115) ... Adding new user spocon' (UID 115) with group spocon' ... Creating home directory /home/spocon' ...
Adding user spocon' to group audio' ...
Adding user spocon to group audio
Done.
Unpacking spocon (1.6.0) ...
Setting up java-common (0.71) ...
Setting up fonts-dejavu-extra (2.37-1) ...
Setting up libatk-wrapper-java (0.33.3-22) ...
Setting up libatk-wrapper-java-jni:armhf (0.33.3-22) ...
Setting up ca-certificates-java (20190405) ...
head: cannot open '/etc/ssl/certs/java/cacerts' for reading: No such file or directory
Adding debian:DigiCert_Global_Root_CA.pem
Adding debian:thawte_Primary_Root_CA_-G3.pem
Adding debian:Entrust_Root_Certification_Authority.pem
Adding debian:DigiCert_Assured_ID_Root_G3.pem
Adding debian:SSL.com_Root_Certification_Authority_ECC.pem
Adding debian:Izenpe.com.pem
Adding debian:GeoTrust_Universal_CA.pem
Adding debian:COMODO_RSA_Certification_Authority.pem
Adding debian:Go_Daddy_Root_Certificate_Authority
-G2.pem
Adding debian:DigiCert_High_Assurance_EV_Root_CA.pem
Adding debian:ACCVRAIZ1.pem
Adding debian:USERTrust_ECC_Certification_Authority.pem
Adding debian:QuoVadis_Root_CA_2.pem
Adding debian:OISTE_WISeKey_Global_Root_GC_CA.pem
Adding debian:Buypass_Class_2_Root_CA.pem
Adding debian:DigiCert_Global_Root_G2.pem
Adding debian:emSign_ECC_Root_CA
-G3.pem
Adding debian:QuoVadis_Root_CA_2_G3.pem
Adding debian:Entrust_Root_Certification_Authority
-G4.pem
Adding debian:SZAFIR_ROOT_CA2.pem
Adding debian:GeoTrust_Primary_Certification_Authority.pem
Adding debian:T-TeleSec_GlobalRoot_Class_3.pem
Adding debian:NetLock_Arany
=Class_Gold=F\u0151tan\u00fas\u00edtv\u00e1ny.pem
Adding debian:DigiCert_Trusted_Root_G4.pem
Adding debian:Security_Communication_RootCA2.pem
Adding debian:LuxTrust_Global_Root_2.pem
Adding debian:Go_Daddy_Class_2_CA.pem
Adding debian:T-TeleSec_GlobalRoot_Class_2.pem
Adding debian:QuoVadis_Root_CA.pem
Adding debian:GTS_Root_R3.pem
Adding debian:Chambers_of_Commerce_Root
-2008.pem
Adding debian:IdenTrust_Commercial_Root_CA_1.pem
Adding debian:VeriSign_Class_3_Public_Primary_Certification_Authority
-G5.pem
Adding debian:Certum_Trusted_Network_CA_2.pem
Adding debian:Starfield_Services_Root_Certificate_Authority
-G2.pem
Adding debian:AffirmTrust_Commercial.pem
Adding debian:GlobalSign_Root_CA.pem
Adding debian:TrustCor_ECA-1.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_EV_2009.pem
Adding debian:Certum_Trusted_Network_CA.pem
Adding debian:E-Tugra_Certification_Authority.pem
Adding debian:Global_Chambersign_Root
-2008.pem
Adding debian:Certigna_Root_CA.pem
Adding debian:IdenTrust_Public_Sector_Root_CA_1.pem
Adding debian:GlobalSign_Root_CA
-R6.pem
Adding debian:GeoTrust_Primary_Certification_Authority
-G2.pem
Adding debian:TrustCor_RootCert_CA-2.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem
Adding debian:GeoTrust_Primary_Certification_Authority
-G3.pem
Adding debian:Entrust.net_Premium_2048_Secure_Server_CA.pem
Adding debian:DigiCert_Assured_ID_Root_CA.pem
Adding debian:Sonera_Class_2_Root_CA.pem
Adding debian:AffirmTrust_Premium_ECC.pem
Adding debian:SecureSign_RootCA11.pem
Adding debian:emSign_Root_CA
-C1.pem
Adding debian:ssl-cert-snakeoil.pem
Adding debian:DST_Root_CA_X3.pem
Adding debian:Atos_TrustedRoot_2011.pem
Adding debian:Network_Solutions_Certificate_Authority.pem
Adding debian:VeriSign_Universal_Root_Certification_Authority.pem
Adding debian:Comodo_AAA_Services_root.pem
Adding debian:Staat_der_Nederlanden_EV_Root_CA.pem
Adding debian:ePKI_Root_Certification_Authority.pem
Adding debian:TrustCor_RootCert_CA-1.pem
Adding debian:EC-ACC.pem
Adding debian:Trustis_FPS_Root_CA.pem
Adding debian:GlobalSign_Root_CA
-R3.pem
Adding debian:Baltimore_CyberTrust_Root.pem
Adding debian:CFCA_EV_ROOT.pem
Adding debian:Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
Adding debian:SSL.com_EV_Root_Certification_Authority_ECC.pem
Adding debian:emSign_ECC_Root_CA
-C3.pem
Adding debian:OISTE_WISeKey_Global_Root_GB_CA.pem
Adding debian:Staat_der_Nederlanden_Root_CA
-G3.pem
Adding debian:COMODO_Certification_Authority.pem
Adding debian:Verisign_Class_3_Public_Primary_Certification_Authority
-G3.pem
Adding debian:Certigna.pem
Adding debian:CA_Disig_Root_R2.pem
Adding debian:Microsec_e-Szigno_Root_CA_2009.pem
Adding debian:thawte_Primary_Root_CA.pem
Adding debian:TeliaSonera_Root_CA_v1.pem
Adding debian:Amazon_Root_CA_2.pem
Adding debian:DigiCert_Assured_ID_Root_G2.pem
Adding debian:GlobalSign_Root_CA
-R2.pem
Adding debian:Entrust_Root_Certification_Authority
-EC1.pem
Adding debian:UCA_Extended_Validation_Root.pem
Adding debian:AC_RAIZ_FNMT-RCM.pem
Adding debian:Security_Communication_Root_CA.pem
Adding debian:TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi
-Surum_1.pem
Adding debian:TWCA_Root_Certification_Authority.pem
Adding debian:SecureTrust_CA.pem
Adding debian:AffirmTrust_Networking.pem
Adding debian:VeriSign_Class_3_Public_Primary_Certification_Authority
-G4.pem
Adding debian:thawte_Primary_Root_CA
-G2.pem
Adding debian:emSign_Root_CA
-G1.pem
Adding debian:Amazon_Root_CA_1.pem
Adding debian:DigiCert_Global_Root_G3.pem
Adding debian:certSIGN_ROOT_CA.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
Adding debian:GDCA_TrustAUTH_R5_ROOT.pem
Adding debian:EE_Certification_Centre_Root_CA.pem
Adding debian:TWCA_Global_Root_CA.pem
Adding debian:Actalis_Authentication_Root_CA.pem
Adding debian:Entrust_Root_Certification_Authority
-G2.pem
Adding debian:QuoVadis_Root_CA_1_G3.pem
Adding debian:GlobalSign_ECC_Root_CA
-R4.pem
Adding debian:Taiwan_GRCA.pem
Adding debian:SSL.com_EV_Root_Certification_Authority_RSA_R2.pem
Adding debian:Secure_Global_CA.pem
Adding debian:GeoTrust_Global_CA.pem
Adding debian:GlobalSign_ECC_Root_CA
-R5.pem
Adding debian:ISRG_Root_X1.pem
Adding debian:Staat_der_Nederlanden_Root_CA
-G2.pem
Adding debian:GTS_Root_R1.pem
Adding debian:GeoTrust_Universal_CA_2.pem
Adding debian:Starfield_Root_Certificate_Authority
-G2.pem
Adding debian:SSL.com_Root_Certification_Authority_RSA.pem
Adding debian:USERTrust_RSA_Certification_Authority.pem
Adding debian:Starfield_Class_2_CA.pem
Adding debian:QuoVadis_Root_CA_3.pem
Adding debian:Amazon_Root_CA_3.pem
Adding debian:SwissSign_Silver_CA
-G2.pem
Adding debian:Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem
Adding debian:AffirmTrust_Premium.pem
Adding debian:SwissSign_Gold_CA
-_G2.pem
Adding debian:Hongkong_Post_Root_CA_1.pem
Adding debian:GTS_Root_R4.pem
Adding debian:UCA_Global_G2_Root.pem
Adding debian:OISTE_WISeKey_Global_Root_GA_CA.pem
Adding debian:QuoVadis_Root_CA_3_G3.pem
Adding debian:D-TRUST_Root_Class_3_CA_2_2009.pem
Adding debian:Amazon_Root_CA_4.pem
Adding debian:COMODO_ECC_Certification_Authority.pem
Adding debian:GTS_Root_R2.pem
Adding debian:Cybertrust_Global_Root.pem
Adding debian:XRamp_Global_CA_Root.pem
Adding debian:Hongkong_Post_Root_CA_3.pem
Adding debian:Buypass_Class_3_Root_CA.pem
done.
Processing triggers for fontconfig (2.13.1-2) ...
Processing triggers for desktop-file-utils (0.23-4) ...
Processing triggers for mime-support (3.62) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.31.4-3) ...
Processing triggers for libc-bin (2.28-10+rpi1) ...
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for ca-certificates (20200601~deb10u2) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

done.
done.
Setting up openjdk-11-jre-headless:armhf (11.0.11+9-1deb10u1) ...
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/bin/java to provide /usr/bin/java (java) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/bin/jjs to provide /usr/bin/jjs (jjs) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode
update-alternatives: using /usr/lib/jvm/java-11-openjdk-armhf/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode
Setting up openjdk-11-jre:armhf (11.0.11+9-1
deb10u1) ...
Setting up spocon (1.6.0) ...
Created symlink /etc/systemd/system/multi-user.target.wants/spocon.service \u2192 /lib/systemd/system/spocon.service.
`

Can I use Spocon with Pulseaudio?

I’m running Ubuntu on an RPI4 with Pulseaudio and using Pulseeffects for EQ and a few enhancements. I’d like to channel Spocon through that setup, is it possible? Very grateful for help.

REST API

Hello,

Is it possible to add the REST API configuration to this software?
I believe librespot-java has this nativly?

Thanks, great project!

No Gapless playback

Hi, i made a fresh clean install with 2020-02-13-raspbian-buster-lite. There is always a little gap between to song, is there any way to activate gapless playback?

No sound on Ubunu Desktop 22.04

Describe the bug
spocon appear to be working from phone's spotify point of view but there is no sound at all.

To Reproduce
Steps to reproduce the behavior:

  1. On spotify Android switch the device to SpoCon-Spotify
  2. Play a song

-> Spotify reports that the song is supposed to be playing fine and that the volume is 100% but I can't ear anything

I can play sound fine on that computer and speaker-test, for example, seems to work as expected.

Expected behavior
Have sound on the computer's speakers.

Logs

Here is all the log I have when connecting Spotify to spocon:

sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,836 TRACE DealerClient:114 - Received request. {mid: hm://connect-state/v1/player/command, key: 37797eb8-0080-408f-99f2-61d088635dec, pid: 79238043, sender: 26b7a49be355ffb62b783d9dcee819e1da499639, command: {"endpoint":"transfer","data":"CgYIABAAGAAS6AgIxPbipbAwEN/WAhkAAAAAAADwPyAAKs8ICgASHnRvcHRyYWNrNlNSMGREdVhIMnZ0Z0JmTUxyaXZLVhoQ4jYhX/zCTbWUDKWBCpk3mSJWChZhdmFpbGFibGVfZmlsZV9mb3JtYXRzEjxbIk9HR19WT1JCSVNfMzIwIiwiT0dHX1ZPUkJJU18xNjAiLCJPR0dfVk9SQklTXzk2IiwiQUFDXzI0Il0iFQoMdHJhY2tfcGxheWVyEgVhdWRpbyIqCiBhY3Rpb25zLnNraXBwaW5nX3ByZXZfcGFzdF90cmFjaxIGcmVzdW1lIjMKCmFydGlzdF91cmkSJXNwb3RpZnk6YXJ0aXN0OjJRc3luYWdTZEFxWmozVTlIZ0R6akQiFQoLYWxidW1fdGl0bGUSBkV4b2R1cyIOCglpdGVyYXRpb24SATAiNAoLY29udGV4dF91cmkSJXNwb3RpZnk6YXJ0aXN0OjJRc3luYWdTZEFxWmozVTlIZ0R6akQiMwoKZW50aXR5X3VyaRIlc3BvdGlmeTphcnRpc3Q6MlFzeW5hZ1NkQXFaajNVOUhnRHpqRCIQCgpwb3B1bGFyaXR5EgI3MSIdChRtZWRpYS5zdGFydF9wb3NpdGlvbhIFNDEyNDEiFgoRYWxidW1fZGlzY19udW1iZXISATEiMQoJYWxidW1fdXJpEiRzcG90aWZ5OmFsYnVtOjJtQmJWMEFkNkI0eWRITVpsekFZN1MiEgoIZHVyYXRpb24SBjE3MjkzMyItCgV0aXRsZRIkT25lIExvdmUgLyBQZW9wbGUgR2V0IFJlYWR5IC0gTWVkbGV5IkoKEGltYWdlX3hsYXJnZV91cmwSNnNwb3RpZnk6aW1hZ2U6YWI2NzYxNmQwMDAwYjI3MzgxMWJmZGM0ZjU1YjNhNzQ4NDUyNGFhZiJJCg9pbWFnZV9zbWFsbF91cmwSNnNwb3RpZnk6aW1hZ2U6YWI2NzYxNmQwMDAwNDg1MTgxMWJmZGM0ZjU1YjNhNzQ4NDUyNGFhZiJJCg9pbWFnZV9sYXJnZV91cmwSNnNwb3RpZnk6aW1hZ2U6YWI2NzYxNmQwMDAwYjI3MzgxMWJmZGM0ZjU1YjNhNzQ4NDUyNGFhZiISCgpoYXNfbHlyaWNzEgR0cnVlIkMKCWltYWdlX3VybBI2c3BvdGlmeTppbWFnZTphYjY3NjE2ZDAwMDAxZTAyODExYmZkYzRmNTViM2E3NDg0NTI0YWFmIi0KEWFsYnVtX2FydGlzdF9uYW1lEhhCb2IgTWFybGV5ICYgVGhlIFdhaWxlcnMiKgogYWN0aW9ucy5za2lwcGluZ19uZXh0X3Bhc3RfdHJhY2sSBnJlc3VtZSI5ChBhbGJ1bV9hcnRpc3RfdXJpEiVzcG90aWZ5OmFydGlzdDoyUXN5bmFnU2RBcVpqM1U5SGdEempEIicKC2FydGlzdF9uYW1lEhhCb2IgTWFybGV5ICYgVGhlIFdhaWxlcnMa4gIKYAoQZnJlZS10aWVyLWFydGlzdBIKOC43LjYyLjM5OBolc3BvdGlmeTphcnRpc3Q6MlFzeW5hZ1NkQXFaajNVOUhnRHpqRCIAKgx5b3VyLWxpYnJhcnkyADoHY29ubmVjdBLhAQolc3BvdGlmeTphcnRpc3Q6MlFzeW5hZ1NkQXFaajNVOUhnRHpqRBI/aG06Ly9hcnRpc3RwbGF5Y29udGV4dC92Mi9zcG90aWZ5L2FydGlzdC8yUXN5bmFnU2RBcVpqM1U5SGdEempEGi8KE2NvbnRleHRfZGVzY3JpcHRpb24SGEJvYiBNYXJsZXkgJiBUaGUgV2FpbGVycxpCCg1yZXBvcnRpbmcudXJpEjFzcG90aWZ5OmFydGlzdDoyUXN5bmFnU2RBcVpqM1U5SGdEempEOnBsYXlfYnV0dG9uIgAwARoUYjI1ZDA1OTQ3NDg3ZjQ0NTAyNDAiACoAMgAiAhAA","options":{"restore_paused":"restore","restore_position":"extrapolate","restore_track":"only_current","license":"premium"},"from_device_identifier":"26b7a49be355ffb62b783d9dcee819e1da499639"}}
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,837 DEBUG Player:106 - Received command: Transfer
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,839 DEBUG Player:533 - Loading context (transfer), uri: spotify:artist:2QsynagSdAqZj3U9HgDzjD
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,839 DEBUG DeviceStateHandler:210 - Device is now active. {ts: 1662231580839}
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,840 TRACE MercuryClient:156 - Send Mercury request, seq: 17, uri: hm://context-resolve/v1/spotify:artist:2QsynagSdAqZj3U9HgDzjD, method: GET
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,971 TRACE MercuryClient:199 - Handling packet, cmd: MercuryReq, seq: 17, flags: 1, parts: 2
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,983 TRACE StateWrapper:1139 - Initialized current track index to 5.
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,985 DEBUG Player:348 - Loading session, id: Mn8fJreqqkM0kXDLbSJo0A, play: true
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,987 TRACE MixingLine:184 - Toggle first channel: false
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,987 TRACE MercuryClient:156 - Send Mercury request, seq: 18, uri: hm://event-service/v1/events, method: POST
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,987 DEBUG PlayerQueueEntry:234 - PlayerQueueEntry{01696c353204efc86fb76410b904ffc3} has been removed from output.
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,989 TRACE PlayerQueue:157 - Queue has been cleared.
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,989 TRACE PlayerQueueEntry:350 - PlayerQueueEntry{01696c353204efc86fb76410b904ffc3} terminated.
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,990 INFO  PlayerSession:69 - Created new session. {id: Mn8fJreqqkM0kXDLbSJo0A}
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,991 DEBUG Player:490 - Loading track, id: TrackId{spotify:track:6SR0dDuXH2vtgBfMLrivKV}, session: Mn8fJreqqkM0kXDLbSJo0A, playback: null, play: true
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,992 TRACE PlayerQueueEntry:92 - Created new PlayerQueueEntry{01a984575b453f645dcd87732ec797c0}.
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,992 TRACE PlayerQueue:82 - PlayerQueueEntry{01a984575b453f645dcd87732ec797c0} added to queue.
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,995 DEBUG PlayerSession:283 - PlayerQueueEntry{01a984575b453f645dcd87732ec797c0} has been added to the output. {sessionId: Mn8fJreqqkM0kXDLbSJo0A, pos: 65882, reason: CLICK_ROW}
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,995 TRACE PlayerSession:162 - PlayerQueueEntry{01a984575b453f645dcd87732ec797c0} started loading.
sept. 03 20:59:40 media java[60642]: 2022-09-03 20:59:40,997 DEBUG DealerClient:126 - Handled request. {key: 37797eb8-0080-408f-99f2-61d088635dec, result: SUCCESS}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,046 TRACE MercuryClient:199 - Handling packet, cmd: MercuryReq, seq: 18, flags: 1, parts: 1
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,047 DEBUG EventService:51 - Event sent. {body: 12|38|5|f922ad34cd64e8e862ace5bfc6ccd9459fc39199|01696c353204efc86fb76410b904ffc3|00000000000000000000000000000000|free-tier-artist|trackdone|free-tier-artist|endplay|1310720|3493084|65876|65876|172933|0|0|0|0|0|0|0|-1|context|-1|0|1|0|0|0|65876|65876|0|176400|spotify:artist:2QsynagSdAqZj3U9HgDzjD|vorbis|e236215ffcc24db5940ca5810a993799||0|1662231514649|0|context|your-library|8.7.62.398|com.spotify|crossfade|none|26b7a49be355ffb62b783d9dcee819e1da499639|na|none, result: 200}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,048 TRACE MercuryClient:156 - Send Mercury request, seq: 19, uri: hm://event-service/v1/events, method: POST
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,055 INFO  LineHelper:90 - Available mixers: 'HDMI [plughw:0,3]', 'HDMI [plughw:0,7]', 'HDMI [plughw:0,8]', 'HDMI [plughw:0,9]', 'HDMI [plughw:0,10]', 'PCH [plughw:1,0]'
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,104 TRACE MercuryClient:199 - Handling packet, cmd: MercuryReq, seq: 19, flags: 1, parts: 1
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,104 DEBUG EventService:51 - Event sent. {body: 557|3|Mn8fJreqqkM0kXDLbSJo0A|spotify:artist:2QsynagSdAqZj3U9HgDzjD|spotify:artist:2QsynagSdAqZj3U9HgDzjD|1662231580990||10|hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD, result: 200}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,105 TRACE MercuryClient:156 - Send Mercury request, seq: 20, uri: hm://event-service/v1/events, method: POST
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,204 TRACE MercuryClient:199 - Handling packet, cmd: MercuryReq, seq: 20, flags: 1, parts: 1
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,205 DEBUG EventService:51 - Event sent. {body: 558|1|01a984575b453f645dcd87732ec797c0|Mn8fJreqqkM0kXDLbSJo0A|1662231580995, result: 200}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,275 INFO  DeviceStateHandler:273 - Put state. {ts: 1662231580996, connId: ZjkyM...4QUE3, reason: PLAYER_STATE_CHANGED, request: device { device_info { can_play: true volume: 65536 name: "SpoCon-Spotify" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.6.2" device_type: COMPUTER spirc_version: "3.2.6" device_id: "f922ad34cd64e8e862ace5bfc6ccd9459fc39199" client_id: "65b708073fc0480ea92a077233ca87bd" } player_state { timestamp: 1662231558980 context_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" context_url: "hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD" context_restrictions { } play_origin { feature_identifier: "free-tier-artist" feature_version: "8.7.62.398" view_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" referrer_identifier: "your-library" feature_classes: "connect" } index { track: 5 } track { uri: "spotify:track:6SR0dDuXH2vtgBfMLrivKV" uid: "toptrack6SR0dDuXH2vtgBfMLrivKV" metadata { key: "actions.skipping_next_past_track" value: "resume" } metadata { key: "actions.skipping_prev_past_track" value: "resume" } metadata { key: "album_artist_name" value: "Bob Marley & The Wailers" } metadata { key: "album_artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "album_disc_number" value: "1" } metadata { key: "album_title" value: "Exodus" } metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_name" value: "Bob Marley & The Wailers" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "available_file_formats" value: "[\"OGG_VORBIS_320\",\"OGG_VORBIS_160\",\"OGG_VORBIS_96\",\"AAC_24\"]" } metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "duration" value: "172933" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "has_lyrics" value: "true" } metadata { key: "image_large_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "image_small_url" value: "spotify:image:ab67616d00004851811bfdc4f55b3a7484524aaf" } metadata { key: "image_url" value: "spotify:image:ab67616d00001e02811bfdc4f55b3a7484524aaf" } metadata { key: "image_xlarge_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "iteration" value: "0" } metadata { key: "media.start_position" value: "41241" } metadata { key: "popularity" value: "71" } metadata { key: "title" value: "One Love / People Get Ready - Medley" } metadata { key: "track_player" value: "audio" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } playback_id: "01a984575b453f645dcd87732ec797c0" playback_speed: 1.0 position_as_of_timestamp: 43871 is_playing: true is_buffering: true options { shuffling_context: false repeating_context: false repeating_track: false } restrictions { } suppressions { } prev_tracks { uri: "spotify:track:5O4erNlJ74PIF6kGol1ZrC" uid: "toptrack5O4erNlJ74PIF6kGol1ZrC" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:75FYqcxt1YEAtqDLrOeIJn" uid: "toptrack75FYqcxt1YEAtqDLrOeIJn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:6JRLFiX9NJSoRRKxowlBYr" uid: "toptrack6JRLFiX9NJSoRRKxowlBYr" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:5LyfiK6iXEIBNEtcaGKohl" uid: "toptrack5LyfiK6iXEIBNEtcaGKohl" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:7BfW1eoDh27W69nxsmRicb" uid: "toptrack7BfW1eoDh27W69nxsmRicb" metadata { key: "album_uri" value: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:26PwuMotZqcczKLHi4Htz3" uid: "toptrack26PwuMotZqcczKLHi4Htz3" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:423hwXFgoN8RYmqLoLuVvY" uid: "toptrack423hwXFgoN8RYmqLoLuVvY" metadata { key: "album_uri" value: "spotify:album:5mvQHYARofQRsOE2cqBzik" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5mvQHYARofQRsOE2cqBzik" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:58Zt987fK6gWxtO0MwEzPn" uid: "toptrack58Zt987fK6gWxtO0MwEzPn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:2pZJhvpin385eqAFRp3ASJ" uid: "toptrack2pZJhvpin385eqAFRp3ASJ" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } context_metadata { key: "context_description" value: "Bob Marley & The Wailers" } context_metadata { key: "reporting.uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD:play_button" } session_id: "Mn8fJreqqkM0kXDLbSJo0A" } } member_type: CONNECT_STATE is_active: true put_state_reason: PLAYER_STATE_CHANGED started_playing_at: 1662231580839 has_been_playing_for_ms: 0 client_side_timestamp: 1662231581002}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,323 TRACE CdnManager:277 - Chunk 0/27 completed, cached: true, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,324 TRACE NormalizationData:46 - Loaded normalization data, track_gain: -5.3499985, track_peak: 1.2052099, album_gain: -5.9000015, album_peak: 1.3214234
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,324 TRACE CdnManager:277 - Chunk 1/27 completed, cached: true, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,324 INFO  PlayerQueueEntry:125 - Loaded track. {name: 'One Love / People Get Ready - Medley', artists: 'Bob Marley & The Wailers', duration: 172933, uri: spotify:track:6SR0dDuXH2vtgBfMLrivKV, id: 01a984575b453f645dcd87732ec797c0}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,325 TRACE CdnManager:277 - Chunk 2/27 completed, cached: true, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,325 TRACE CdnManager:277 - Chunk 3/27 completed, cached: true, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,330 DEBUG CrossfadeController:58 - Loaded crossfade intervals {id: 01a984575b453f645dcd87732ec797c0, in: {}, out: {}}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,336 TRACE PlayerQueueEntry:149 - Loaded VORBIS decoder: VorbisDecoder {of: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}, format: xyz.gianlu.librespot.player.mixing.output.OutputAudioFormat@57224246, playbackId: 01a984575b453f645dcd87732ec797c0}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,339 TRACE PlayerSession:194 - PlayerQueueEntry{01a984575b453f645dcd87732ec797c0} finished loading.
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,341 TRACE MixingLine:184 - Toggle first channel: true
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,342 DEBUG Player:422 - Playback halted on retrieving chunk 10.
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,354 TRACE DeviceStateHandler:172 - Received cluster update at 1662231581352: cluster { timestamp: 1662231581320 player_state { timestamp: 1662231558353 context_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" context_url: "hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD" context_restrictions { } play_origin { feature_identifier: "free-tier-artist" feature_version: "8.7.62.398" view_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" referrer_identifier: "your-library" feature_classes: "connect" } track { uri: "spotify:track:6SR0dDuXH2vtgBfMLrivKV" uid: "toptrack6SR0dDuXH2vtgBfMLrivKV" metadata { key: "actions.skipping_next_past_track" value: "resume" } metadata { key: "actions.skipping_prev_past_track" value: "resume" } metadata { key: "album_artist_name" value: "Bob Marley & The Wailers" } metadata { key: "album_artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "album_disc_number" value: "1" } metadata { key: "album_title" value: "Exodus" } metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_name" value: "Bob Marley & The Wailers" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "available_file_formats" value: "[\"OGG_VORBIS_320\",\"OGG_VORBIS_160\",\"OGG_VORBIS_96\",\"AAC_24\"]" } metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "duration" value: "172933" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "has_lyrics" value: "true" } metadata { key: "image_large_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "image_small_url" value: "spotify:image:ab67616d00004851811bfdc4f55b3a7484524aaf" } metadata { key: "image_url" value: "spotify:image:ab67616d00001e02811bfdc4f55b3a7484524aaf" } metadata { key: "image_xlarge_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "iteration" value: "0" } metadata { key: "media.start_position" value: "41241" } metadata { key: "popularity" value: "71" } metadata { key: "title" value: "One Love / People Get Ready - Medley" } metadata { key: "track_player" value: "audio" } provider: "context" } playback_id: "d9c8d37ac229e1affd95cd63c5ae87d6" playback_speed: 1.0 position_as_of_timestamp: 43871 duration: 172933 is_playing: true options { shuffling_context: false repeating_context: false repeating_track: false } restrictions { disallow_resuming_reasons: "not_paused" disallow_skipping_prev_reasons: "no_prev_track" } suppressions { } next_tracks { uri: "spotify:track:6JRLFiX9NJSoRRKxowlBYr" uid: "b25d05947487f4450240" metadata { key: "actions.skipping_next_past_track" value: "resume" } metadata { key: "actions.skipping_prev_past_track" value: "resume" } metadata { key: "album_title" value: "Kaya" } metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "image_large_url" value: "spotify:image:ab67616d0000b273387799441ba867649dfbb702" } metadata { key: "image_small_url" value: "spotify:image:ab67616d00004851387799441ba867649dfbb702" } metadata { key: "image_url" value: "spotify:image:ab67616d00001e02387799441ba867649dfbb702" } metadata { key: "image_xlarge_url" value: "spotify:image:ab67616d0000b273387799441ba867649dfbb702" } metadata { key: "iteration" value: "0" } metadata { key: "track_player" value: "audio" } provider: "context" } next_tracks { uri: "spotify:track:5O4erNlJ74PIF6kGol1ZrC" uid: "5319d6b32aa5cac0b2f6" metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "iteration" value: "0" } metadata { key: "track_player" value: "audio" } provider: "context" } context_metadata { key: "context_description" value: "Bob Marley & The Wailers" } context_metadata { key: "is_stripped" value: "true" } context_metadata { key: "reporting.uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD:play_button" } session_id: "1Y640QN6wtMM0LYib4aYGx" queue_revision: "13797640280384457375" playback_quality { bitrate_level: normal strategy: best_matching target_bitrate_level: normal target_bitrate_available: true } } device { key: "26b7a49be355ffb62b783d9dcee819e1da499639" value { can_play: true volume: 65535 name: "T\303\251l\303\251phone Thomas" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 32 supported_types: "audio/ad" supported_types: "audio/episode" supported_types: "audio/episode+track" supported_types: "audio/interruption" supported_types: "audio/local" supported_types: "audio/track" supported_types: "video/ad" supported_types: "video/episode" command_acks: true supports_rename: true disable_volume: true supports_playlist_v2: true is_controllable: true supports_external_episodes: true supports_set_backend_metadata: true supports_transfer_command: true supports_command
_request: true supports_gzip_pushes: true supports_set_options_command: true supports_hifi { device_supported: true } } device_software_version: "8.7.62.398" device_type: SMARTPHONE spirc_version: "3.2.6" device_id: "26b7a49be355ffb62b783d9dcee819e1da499639" client_id: "9a8d2f0ce77a4e248bb71fefcb557637" brand: "Fairphone" model: "FP4" metadata_map { key: "debug_level" value: "1" } metadata_map { key: "device_address_mask" value: "192.168.1.43/24" } metadata_map { key: "tier1_port" value: "0" } deduplication_id: "a5898fc57512914b27de36c1b860ae7d" public_ip: "176.191.15.110" license: "premium" } } device { key: "f922ad34cd64e8e862ace5bfc6ccd9459fc39199" value { can_play: true volume: 65536 name: "SpoCon-Spotify" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.6.2" device_type: COMPUTER spirc_version: "3.2.6" device_id: "f922ad34cd64e8e862ace5bfc6ccd9459fc39199" client_id: "65b708073fc0480ea92a077233ca87bd" public_ip: "176.191.15.110" } } transfer_data: "\n\006\b\000\020\000\030\000\022\350\b\b\304\366\342\245\2600\020\337\326\002\031\000\000\000\000\000\000\360? \000*\317\b\n\000\022\036toptrack6SR0dDuXH2vtgBfMLrivKV\032\020\3426!_\374\302M\265\224\f\245\201\n\2317\231\"V\n\026available_file_formats\022<[\"OGG_VORBIS_320\",\"OGG_VORBIS_160\",\"OGG_VORBIS_96\",\"AAC_24\"]\"\025\n\ftrack_player\022\005audio\"*\n actions.skipping_prev_past_track\022\006resume\"3\n\nartist_uri\022%spotify:artist:2QsynagSdAqZj3U9HgDzjD\"\025\n\valbum_title\022\006Exodus\"\016\n\titeration\022\0010\"4\n\vcontext_uri\022%spotify:artist:2QsynagSdAqZj3U9HgDzjD\"3\n\nentity_uri\022%spotify:artist:2QsynagSdAqZj3U9HgDzjD\"\020\n\npopularity\022\00271\"\035\n\024media.start_position\022\00541241\"\026\n\021album_disc_number\022\0011\"1\n\talbum_uri\022$spotify:album:2mBbV0Ad6B4ydHMZlzAY7S\"\022\n\bduration\022\006172933\"-\n\005title\022$One Love / People Get Ready - Medley\"J\n\020image_xlarge_url\0226spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf\"I\n\017image_small_url\0226spotify:image:ab67616d00004851811bfdc4f55b3a7484524aaf\"I\n\017image_large_url\0226spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf\"\022\n\nhas_lyrics\022\004true\"C\n\timage_url\0226spotify:image:ab67616d00001e02811bfdc4f55b3a7484524aaf\"-\n\021album_artist_name\022\030Bob Marley & The Wailers\"*\n actions.skipping_next_past_track\022\006resume\"9\n\020album_artist_uri\022%spotify:artist:2QsynagSdAqZj3U9HgDzjD\"\'\n\vartist_name\022\030Bob Marley & The Wailers\032\342\002\n`\n\020free-tier-artist\022\n8.7.62.398\032%spotify:artist:2QsynagSdAqZj3U9HgDzjD\"\000*\fyour-library2\000:\aconnect\022\341\001\n%spotify:artist:2QsynagSdAqZj3U9HgDzjD\022?hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD\032/\n\023context_description\022\030Bob Marley & The Wailers\032B\n\rreporting.uri\0221spotify:artist:2QsynagSdAqZj3U9HgDzjD:play_button\"\0000\001\032\024b25d05947487f4450240\"\000*\0002\000\"\002\020\000" transfer_data_timestamp: 1662231572500 server_timestamp_ms: 1662231581336 } update_reason: DEVICE_STATE_CHANGED devices_that_changed: "26b7a49be355ffb62b783d9dcee819e1da499639"
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,360 TRACE CdnManager:277 - Chunk 11/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,567 INFO  DeviceStateHandler:273 - Put state. {ts: 1662231581002, connId: ZjkyM...4QUE3, reason: PLAYER_STATE_CHANGED, request: device { device_info { can_play: true volume: 65536 name: "SpoCon-Spotify" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.6.2" device_type: COMPUTER spirc_version: "3.2.6" device_id: "f922ad34cd64e8e862ace5bfc6ccd9459fc39199" client_id: "65b708073fc0480ea92a077233ca87bd" } player_state { timestamp: 1662231558980 context_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" context_url: "hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD" context_restrictions { } play_origin { feature_identifier: "free-tier-artist" feature_version: "8.7.62.398" view_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" referrer_identifier: "your-library" feature_classes: "connect" } index { track: 5 } track { uri: "spotify:track:6SR0dDuXH2vtgBfMLrivKV" uid: "toptrack6SR0dDuXH2vtgBfMLrivKV" metadata { key: "actions.skipping_next_past_track" value: "resume" } metadata { key: "actions.skipping_prev_past_track" value: "resume" } metadata { key: "album_artist_name" value: "Bob Marley & The Wailers" } metadata { key: "album_artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "album_disc_number" value: "1" } metadata { key: "album_title" value: "Exodus" } metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_name" value: "Bob Marley & The Wailers" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "available_file_formats" value: "[\"OGG_VORBIS_320\",\"OGG_VORBIS_160\",\"OGG_VORBIS_96\",\"AAC_24\"]" } metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "duration" value: "172933" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "has_lyrics" value: "true" } metadata { key: "image_large_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "image_small_url" value: "spotify:image:ab67616d00004851811bfdc4f55b3a7484524aaf" } metadata { key: "image_url" value: "spotify:image:ab67616d00001e02811bfdc4f55b3a7484524aaf" } metadata { key: "image_xlarge_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "iteration" value: "0" } metadata { key: "media.start_position" value: "41241" } metadata { key: "popularity" value: "71" } metadata { key: "title" value: "One Love / People Get Ready - Medley" } metadata { key: "track_player" value: "audio" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } playback_id: "01a984575b453f645dcd87732ec797c0" playback_speed: 1.0 position_as_of_timestamp: 43871 duration: 172933 is_playing: true is_buffering: true options { shuffling_context: false repeating_context: false repeating_track: false } restrictions { } suppressions { } prev_tracks { uri: "spotify:track:5O4erNlJ74PIF6kGol1ZrC" uid: "toptrack5O4erNlJ74PIF6kGol1ZrC" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:75FYqcxt1YEAtqDLrOeIJn" uid: "toptrack75FYqcxt1YEAtqDLrOeIJn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:6JRLFiX9NJSoRRKxowlBYr" uid: "toptrack6JRLFiX9NJSoRRKxowlBYr" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:5LyfiK6iXEIBNEtcaGKohl" uid: "toptrack5LyfiK6iXEIBNEtcaGKohl" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:7BfW1eoDh27W69nxsmRicb" uid: "toptrack7BfW1eoDh27W69nxsmRicb" metadata { key: "album_uri" value: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:26PwuMotZqcczKLHi4Htz3" uid: "toptrack26PwuMotZqcczKLHi4Htz3" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:423hwXFgoN8RYmqLoLuVvY" uid: "toptrack423hwXFgoN8RYmqLoLuVvY" metadata { key: "album_uri" value: "spotify:album:5mvQHYARofQRsOE2cqBzik" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5mvQHYARofQRsOE2cqBzik" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:58Zt987fK6gWxtO0MwEzPn" uid: "toptrack58Zt987fK6gWxtO0MwEzPn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:2pZJhvpin385eqAFRp3ASJ" uid: "toptrack2pZJhvpin385eqAFRp3ASJ" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } context_metadata { key: "context_description" value: "Bob Marley & The Wailers" } context_metadata { key: "reporting.uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD:play_button" } session_id: "Mn8fJreqqkM0kXDLbSJo0A" } } member_type: CONNECT_STATE is_active: true put_state_reason: PLAYER_STATE_CHANGED started_playing_at: 1662231580839 has_been_playing_for_ms: 18446744073709551188 client_side_timestamp: 1662231581343}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,570 TRACE CdnManager:277 - Chunk 13/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,584 TRACE CdnManager:277 - Chunk 12/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,601 TRACE CdnManager:277 - Chunk 10/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,602 DEBUG Player:431 - Playback resumed, chunk 10 retrieved, took 260ms.
sept. 03 20:59:41 media java[60642]: 2022-09-03 20:59:41,858 INFO  DeviceStateHandler:273 - Put state. {ts: 1662231581340, connId: ZjkyM...4QUE3, reason: PLAYER_STATE_CHANGED, request: device { device_info { can_play: true volume: 65536 name: "SpoCon-Spotify" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.6.2" device_type: COMPUTER spirc_version: "3.2.6" device_id: "f922ad34cd64e8e862ace5bfc6ccd9459fc39199" client_id: "65b708073fc0480ea92a077233ca87bd" } player_state { timestamp: 1662231581602 context_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" context_url: "hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD" context_restrictions { } play_origin { feature_identifier: "free-tier-artist" feature_version: "8.7.62.398" view_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" referrer_identifier: "your-library" feature_classes: "connect" } index { track: 5 } track { uri: "spotify:track:6SR0dDuXH2vtgBfMLrivKV" uid: "toptrack6SR0dDuXH2vtgBfMLrivKV" metadata { key: "actions.skipping_next_past_track" value: "resume" } metadata { key: "actions.skipping_prev_past_track" value: "resume" } metadata { key: "album_artist_name" value: "Bob Marley & The Wailers" } metadata { key: "album_artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "album_disc_number" value: "1" } metadata { key: "album_title" value: "Exodus" } metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_name" value: "Bob Marley & The Wailers" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "available_file_formats" value: "[\"OGG_VORBIS_320\",\"OGG_VORBIS_160\",\"OGG_VORBIS_96\",\"AAC_24\"]" } metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "duration" value: "172933" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "has_lyrics" value: "true" } metadata { key: "image_large_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "image_small_url" value: "spotify:image:ab67616d00004851811bfdc4f55b3a7484524aaf" } metadata { key: "image_url" value: "spotify:image:ab67616d00001e02811bfdc4f55b3a7484524aaf" } metadata { key: "image_xlarge_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "iteration" value: "0" } metadata { key: "media.start_position" value: "41241" } metadata { key: "popularity" value: "71" } metadata { key: "title" value: "One Love / People Get Ready - Medley" } metadata { key: "track_player" value: "audio" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } playback_id: "01a984575b453f645dcd87732ec797c0" playback_speed: 1.0 position_as_of_timestamp: 66233 duration: 172933 is_playing: true options { shuffling_context: false repeating_context: false repeating_track: false } restrictions { } suppressions { } prev_tracks { uri: "spotify:track:5O4erNlJ74PIF6kGol1ZrC" uid: "toptrack5O4erNlJ74PIF6kGol1ZrC" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:75FYqcxt1YEAtqDLrOeIJn" uid: "toptrack75FYqcxt1YEAtqDLrOeIJn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:6JRLFiX9NJSoRRKxowlBYr" uid: "toptrack6JRLFiX9NJSoRRKxowlBYr" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:5LyfiK6iXEIBNEtcaGKohl" uid: "toptrack5LyfiK6iXEIBNEtcaGKohl" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:7BfW1eoDh27W69nxsmRicb" uid: "toptrack7BfW1eoDh27W69nxsmRicb" metadata { key: "album_uri" value: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:26PwuMotZqcczKLHi4Htz3" uid: "toptrack26PwuMotZqcczKLHi4Htz3" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:423hwXFgoN8RYmqLoLuVvY" uid: "toptrack423hwXFgoN8RYmqLoLuVvY" metadata { key: "album_uri" value: "spotify:album:5mvQHYARofQRsOE2cqBzik" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5mvQHYARofQRsOE2cqBzik" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:58Zt987fK6gWxtO0MwEzPn" uid: "toptrack58Zt987fK6gWxtO0MwEzPn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:2pZJhvpin385eqAFRp3ASJ" uid: "toptrack2pZJhvpin385eqAFRp3ASJ" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } context_metadata { key: "context_description" value: "Bob Marley & The Wailers" } context_metadata { key: "reporting.uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD:play_button" } session_id: "Mn8fJreqqkM0kXDLbSJo0A" } } member_type: CONNECT_STATE is_active: true put_state_reason: PLAYER_STATE_CHANGED started_playing_at: 1662231580839 has_been_playing_for_ms: 18446744073709551188 client_side_timestamp: 1662231581602}
sept. 03 20:59:42 media java[60642]: 2022-09-03 20:59:42,136 INFO  DeviceStateHandler:273 - Put state. {ts: 1662231581343, connId: ZjkyM...4QUE3, reason: PLAYER_STATE_CHANGED, request: device { device_info { can_play: true volume: 65536 name: "SpoCon-Spotify" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.6.2" device_type: COMPUTER spirc_version: "3.2.6" device_id: "f922ad34cd64e8e862ace5bfc6ccd9459fc39199" client_id: "65b708073fc0480ea92a077233ca87bd" } player_state { timestamp: 1662231581602 context_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" context_url: "hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD" context_restrictions { } play_origin { feature_identifier: "free-tier-artist" feature
_version: "8.7.62.398" view_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" referrer_identifier: "your-library" feature_classes: "connect" } index { track: 5 } track { uri: "spotify:track:6SR0dDuXH2vtgBfMLrivKV" uid: "toptrack6SR0dDuXH2vtgBfMLrivKV" metadata { key: "actions.skipping_next_past_track" value: "resume" } metadata { key: "actions.skipping_prev_past_track" value: "resume" } metadata { key: "album_artist_name" value: "Bob Marley & The Wailers" } metadata { key: "album_artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "album_disc_number" value: "1" } metadata { key: "album_title" value: "Exodus" } metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_name" value: "Bob Marley & The Wailers" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "available_file_formats" value: "[\"OGG_VORBIS_320\",\"OGG_VORBIS_160\",\"OGG_VORBIS_96\",\"AAC_24\"]" } metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "duration" value: "172933" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "has_lyrics" value: "true" } metadata { key: "image_large_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "image_small_url" value: "spotify:image:ab67616d00004851811bfdc4f55b3a7484524aaf" } metadata { key: "image_url" value: "spotify:image:ab67616d00001e02811bfdc4f55b3a7484524aaf" } metadata { key: "image_xlarge_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "iteration" value: "0" } metadata { key: "media.start_position" value: "41241" } metadata { key: "popularity" value: "71" } metadata { key: "title" value: "One Love / People Get Ready - Medley" } metadata { key: "track_player" value: "audio" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } playback_id: "01a984575b453f645dcd87732ec797c0" playback_speed: 1.0 position_as_of_timestamp: 66233 duration: 172933 is_playing: true options { shuffling_context: false repeating_context: false repeating_track: false } restrictions { } suppressions { } prev_tracks { uri: "spotify:track:5O4erNlJ74PIF6kGol1ZrC" uid: "toptrack5O4erNlJ74PIF6kGol1ZrC" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:75FYqcxt1YEAtqDLrOeIJn" uid: "toptrack75FYqcxt1YEAtqDLrOeIJn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:6JRLFiX9NJSoRRKxowlBYr" uid: "toptrack6JRLFiX9NJSoRRKxowlBYr" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:5LyfiK6iXEIBNEtcaGKohl" uid: "toptrack5LyfiK6iXEIBNEtcaGKohl" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:7BfW1eoDh27W69nxsmRicb" uid: "toptrack7BfW1eoDh27W69nxsmRicb" metadata { key: "album_uri" value: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:26PwuMotZqcczKLHi4Htz3" uid: "toptrack26PwuMotZqcczKLHi4Htz3" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:423hwXFgoN8RYmqLoLuVvY" uid: "toptrack423hwXFgoN8RYmqLoLuVvY" metadata { key: "album_uri" value: "spotify:album:5mvQHYARofQRsOE2cqBzik" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5mvQHYARofQRsOE2cqBzik" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:58Zt987fK6gWxtO0MwEzPn" uid: "toptrack58Zt987fK6gWxtO0MwEzPn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:2pZJhvpin385eqAFRp3ASJ" uid: "toptrack2pZJhvpin385eqAFRp3ASJ" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } context_metadata { key: "context_description" value: "Bob Marley & The Wailers" } context_metadata { key: "reporting.uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD:play_button" } session_id: "Mn8fJreqqkM0kXDLbSJo0A" } } member_type: CONNECT_STATE is_active: true put_state_reason: PLAYER_STATE_CHANGED started_playing_at: 1662231580839 has_been_playing_for_ms: 18446744073709551188 client_side_timestamp: 1662231581602}
sept. 03 20:59:42 media java[60642]: 2022-09-03 20:59:42,419 INFO  DeviceStateHandler:273 - Put state. {ts: 1662231581602, connId: ZjkyM...4QUE3, reason: PLAYER_STATE_CHANGED, request: device { device_info { can_play: true volume: 65536 name: "SpoCon-Spotify" capabilities { can_be_player: true gaia_eq_connect_id: true supports_logout: true is_observable: true volume_steps: 64 supported_types: "audio/episode" supported_types: "audio/track" command_acks: true supports_playlist_v2: true is_controllable: true supports_transfer_command: true supports_command_request: true supports_gzip_pushes: true } device_software_version: "librespot-java 1.6.2" device_type: COMPUTER spirc_version: "3.2.6" device_id: "f922ad34cd64e8e862ace5bfc6ccd9459fc39199" client_id: "65b708073fc0480ea92a077233ca87bd" } player_state { timestamp: 1662231581602 context_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" context_url: "hm://artistplaycontext/v2/spotify/artist/2QsynagSdAqZj3U9HgDzjD" context_restrictions { } play_origin { feature_identifier: "free-tier-artist" feature_version: "8.7.62.398" view_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" referrer_identifier: "your-library" feature_classes: "connect" } index { track: 5 } track { uri: "spotify:track:6SR0dDuXH2vtgBfMLrivKV" uid: "toptrack6SR0dDuXH2vtgBfMLrivKV" metadata { key: "actions.skipping_next_past_track" value: "resume" } metadata { key: "actions.skipping_prev_past_track" value: "resume" } metadata { key: "album_artist_name" value: "Bob Marley & The Wailers" } metadata { key: "album_artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "album_disc_number" value: "1" } metadata { key: "album_title" value: "Exodus" } metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_name" value: "Bob Marley & The Wailers" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "available_file_formats" value: "[\"OGG_VORBIS_320\",\"OGG_VORBIS_160\",\"OGG_VORBIS_96\",\"AAC_24\"]" } metadata { key: "context_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "duration" value: "172933" } metadata { key: "entity_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } metadata { key: "has_lyrics" value: "true" } metadata { key: "image_large_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "image_small_url" value: "spotify:image:ab67616d00004851811bfdc4f55b3a7484524aaf" } metadata { key: "image_url" value: "spotify:image:ab67616d00001e02811bfdc4f55b3a7484524aaf" } metadata { key: "image_xlarge_url" value: "spotify:image:ab67616d0000b273811bfdc4f55b3a7484524aaf" } metadata { key: "iteration" value: "0" } metadata { key: "media.start_position" value: "41241" } metadata { key: "popularity" value: "71" } metadata { key: "title" value: "One Love / People Get Ready - Medley" } metadata { key: "track_player" value: "audio" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } playback_id: "01a984575b453f645dcd87732ec797c0" playback_speed: 1.0 position_as_of_timestamp: 66233 duration: 172933 is_playing: true options { shuffling_context: false repeating_context: false repeating_track: false } restrictions { } suppressions { } prev_tracks { uri: "spotify:track:5O4erNlJ74PIF6kGol1ZrC" uid: "toptrack5O4erNlJ74PIF6kGol1ZrC" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:75FYqcxt1YEAtqDLrOeIJn" uid: "toptrack75FYqcxt1YEAtqDLrOeIJn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:6JRLFiX9NJSoRRKxowlBYr" uid: "toptrack6JRLFiX9NJSoRRKxowlBYr" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:5LyfiK6iXEIBNEtcaGKohl" uid: "toptrack5LyfiK6iXEIBNEtcaGKohl" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } prev_tracks { uri: "spotify:track:7BfW1eoDh27W69nxsmRicb" uid: "toptrack7BfW1eoDh27W69nxsmRicb" metadata { key: "album_uri" value: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5Rg4ZSwf1LPCuAMr0msdun" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:26PwuMotZqcczKLHi4Htz3" uid: "toptrack26PwuMotZqcczKLHi4Htz3" metadata { key: "album_uri" value: "spotify:album:321q9p7PELvzcFAWxml7VX" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:321q9p7PELvzcFAWxml7VX" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:423hwXFgoN8RYmqLoLuVvY" uid: "toptrack423hwXFgoN8RYmqLoLuVvY" metadata { key: "album_uri" value: "spotify:album:5mvQHYARofQRsOE2cqBzik" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:5mvQHYARofQRsOE2cqBzik" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:58Zt987fK6gWxtO0MwEzPn" uid: "toptrack58Zt987fK6gWxtO0MwEzPn" metadata { key: "album_uri" value: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:2mBbV0Ad6B4ydHMZlzAY7S" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } next_tracks { uri: "spotify:track:2pZJhvpin385eqAFRp3ASJ" uid: "toptrack2pZJhvpin385eqAFRp3ASJ" metadata { key: "album_uri" value: "spotify:album:13dXX35pYjr8FqRla40K2a" } metadata { key: "artist_uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } provider: "context" album_uri: "spotify:album:13dXX35pYjr8FqRla40K2a" artist_uri: "spotify:artist:2QsynagSdAqZj3U9HgDzjD" } context_metadata { key: "context_description" value: "Bob Marley & The Wailers" } context_metadata { key: "reporting.uri" value: "spotify:artist:2QsynagSdAqZj3U9HgDzjD:play_button" } session_id: "Mn8fJreqqkM0kXDLbSJo0A" } } member_type: CONNECT_STATE is_active: true put_state_reason: PLAYER_STATE_CHANGED started_playing_at: 1662231580839 has_been_playing_for_ms: 18446744073709551188 client_side_timestamp: 1662231581602}
sept. 03 20:59:46 media java[60642]: 2022-09-03 20:59:46,149 TRACE CdnManager:277 - Chunk 14/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:52 media java[60642]: 2022-09-03 20:59:52,547 TRACE CdnManager:277 - Chunk 15/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 20:59:59 media java[60642]: 2022-09-03 20:59:59,075 TRACE CdnManager:277 - Chunk 16/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:05 media java[60642]: 2022-09-03 21:00:05,356 TRACE CdnManager:277 - Chunk 17/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:11 media java[60642]: 2022-09-03 21:00:11,895 TRACE CdnManager:277 - Chunk 18/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:18 media java[60642]: 2022-09-03 21:00:18,424 TRACE CdnManager:277 - Chunk 19/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:24 media java[60642]: 2022-09-03 21:00:24,969 TRACE CdnManager:277 - Chunk 20/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:31 media java[60642]: 2022-09-03 21:00:31,380 TRACE CdnManager:277 - Chunk 21/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:37 media java[60642]: 2022-09-03 21:00:37,923 TRACE CdnManager:277 - Chunk 22/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:44 media java[60642]: 2022-09-03 21:00:44,685 TRACE CdnManager:277 - Chunk 23/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:51 media java[60642]: 2022-09-03 21:00:51,081 TRACE CdnManager:277 - Chunk 24/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:00:57 media java[60642]: 2022-09-03 21:00:57,493 TRACE CdnManager:277 - Chunk 25/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:01:03 media java[60642]: 2022-09-03 21:01:03,880 TRACE CdnManager:277 - Chunk 26/27 completed, cached: false, stream: {fileId: F226420BAAC55E8FE91CC2AB6C8B6AE6D6E9B951}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,007 TRACE PlayerQueueEntry:92 - Created new PlayerQueueEntry{019565bb32883072e08edbfb04651aa1}.
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,008 TRACE PlayerQueue:82 - PlayerQueueEntry{019565bb32883072e08edbfb04651aa1} added to queue.
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,008 DEBUG CrossfadeController:192 - Changed fade out. {curr: null, custom: false, why: TRACK_DONE, id: 01a984575b453f645dcd87732ec797c0}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,008 TRACE PlayerSession:162 - PlayerQueueEntry{019565bb32883072e08edbfb04651aa1} started loading.
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,421 TRACE CdnManager:277 - Chunk 0/30 completed, cached: false, stream: {fileId: 80DEBBE26FBC5B88B806997BFF82952AD48F7708}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,422 TRACE NormalizationData:46 - Loaded normalization data, track_gain: -6.25, track_peak: 1.0869846, album_gain: -7.0999985, album_peak: 1.2995635
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,423 INFO  PlayerQueueEntry:125 - Loaded track. {name: 'Redemption Song', artists: 'Bob Marley & The Wailers', duration: 233560, uri: spotify:track:26PwuMotZqcczKLHi4Htz3, id: 019565bb32883072e08edbfb04651aa1}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,423 DEBUG CrossfadeController:58 - Loaded crossfade intervals {id: 019565bb32883072e08edbfb04651aa1, in: {}, out: {}}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,428 TRACE PlayerQueueEntry:149 - Loaded VORBIS decoder: VorbisDecoder {of: {fileId: 80DEBBE26FBC5B88B806997BFF82952AD48F7708}, format: xyz.gianlu.librespot.player.mixing.output.OutputAudioFormat@7c8f5b99, playbackId: 019565bb32883072e08edbfb04651aa1}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,429 TRACE PlayerSession:194 - PlayerQueueEntry{019565bb32883072e08edbfb04651aa1} finished loading.
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,466 TRACE CdnManager:277 - Chunk 1/30 completed, cached: false, stream: {fileId: 80DEBBE26FBC5B88B806997BFF82952AD48F7708}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,506 TRACE CdnManager:277 - Chunk 3/30 completed, cached: false, stream: {fileId: 80DEBBE26FBC5B88B806997BFF82952AD48F7708}
sept. 03 21:01:09 media java[60642]: 2022-09-03 21:01:09,546 TRACE CdnManager:277 - Chunk 2/30 completed, cached: false, stream: {fileId: 80DEBBE26FBC5B88B806997BFF82952AD48F7708}
sept. 03 21:01:28 media java[60642]: 2022-09-03 21:01:28,224 DEBUG PlayerQueueEntry:330 - Player time offset is 602. {id: 01a984575b453f645dcd87732ec797c0}
sept. 03 21:01:28 media java[60642]: 2022-09-03 21:01:28,224 TRACE MixingLine:184 - Toggle first channel: false
sept. 03 21:01:28 media java[60642]: 2022-09-03 21:01:28,224 DEBUG PlayerQueueEntry:234 - PlayerQueueEntry{01a984575b453f645dcd87732ec797c0} has been removed from output.
sept. 03 21:01:28 media java[60642]: 2022-09-03 21:01:28,225 TRACE MercuryClient:156 - Send Mercury request, seq: 21, uri: hm://event-service/v1/events, method: POST
sept. 03 21:01:28 media java[60642]: 2022-09-03 21:01:28,226 DEBUG CrossfadeController:192 - Changed fade out. {curr: null, custom: false, why: TRACK_DONE, id: 01a984575b453f645dcd87732ec797c0}
sept. 03 21:01:28 media java[60642]: 2022-09-03 21:01:28,226 DEBUG CrossfadeController:170 - Changed fade in. {curr: null, custom: false, why: TRACK_DONE, id: 019565bb32883072e08edbfb04651aa1}
sept. 03 21:01:28 media java[60642]: 2022-09-03 21:01:28,226 DEBUG PlayerSession:283 - PlayerQueueEntry{019565bb32883072e08edbfb04651aa1} has been added to the output. {sessionId: Mn8fJreqqkM0kXDLbSJo0A, pos: 0, reason: TRACK_DONE}

Desktop (please complete the following information):

  • OS: Ubuntu Desktop 22.04

Smartphone (please complete the following information):

  • Device: Fairphone 4
  • OS: Android 11

Make compatible with Raspberry Pi Zero W

Hi there!

Is it possible to make this project compatible with the Raspi Zero (and Raspi 1)?
Unfortunately, they run on a ARMv6 architecture which means, that the latest available Java version is Java 8.

Select default/different audio output & Random audio loss / audio distortion

Is your feature request related to a problem? Please describe.
-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
The 'problem' that i have is with my bluetooth. I have set up an autoconnect on my linux server so when i start my bluetooth headset, the default audio device goes to my headset. But i don't hear any audio

Describe the solution you'd like
-- A clear and concise description of what you want to happen.
Is there by any chance a possibility to add a audio output device selector?
I also have snapcast installed, the snapclient there uses the Default Audio Device. Audio works flawless there

Describe alternatives you've considered
-- A clear and concise description of any alternative solutions or features you've considered.
I tried all 3 functions and tried changing output with pavucontrol (can't really change a lot in pavucontrol). Still no succes

Additional context
-- Add any other context or screenshots about the feature request here.
This is the output device snapcast (snapclient) uses and my bluetooth output is:
Screenshot_3

Also a little more context:
My set-up is pretty complex because of functionallity.
I use LedFx to have an led-strip synced to audio, the audio is now only being sent by snapcast but i also would really like spocon (or just spotify in general) to also work with my setup.

If any more info is needed feel free to ask 😄

Debian 11 ppa not working

Describe the bug
doing apt update after adding ppa (through add-apt-repository) gives:
Ign:5 http://ppa.launchpad.net/spocon/spocon/ubuntu lunar InRelease
Err:6 http://ppa.launchpad.net/spocon/spocon/ubuntu lunar Release
404 Not Found [IP: 185.125.190.52 80]
Reading package lists... Done
E: The repository 'http://ppa.launchpad.net/spocon/spocon/ubuntu lunar Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

To Reproduce
Use Debian 11
sudo add-apt-repository ppa:spocon/spocon
sudo apt-get update

Expected behavior
No error...

Desktop (please complete the following information):

  • OS: debian 11

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.