Spotifyd / spotifyd

A spotify daemon
https://spotifyd.rs
GNU General Public License v3.0
9.81k stars 449 forks source link

Spotifyd only outputs sound on other devices. #1089

Open smnbldwn opened 2 years ago

smnbldwn commented 2 years ago

I am using the package Spotifyd as the back end for the package Spotify-QT on a 32 bit FreeBSD 13.0 install. If I choose "Use global settings" in the settings menu, I get the message that spotifyd cannot find the config file and I will experience issues." I have placed a config file in all directories I saw referenced in the documentation. If I use the option to input the username and password via Spotify-QT, and choose the option of "portaudio" as the backend the application successfully logs into Spotify and I can see the playlists but I can only play music on another device running Spotify on my local network, I cannot play the music locally.

I get this error message if I run Spotify-qt from the terminal:

libGL error: failed to open /dev/dri/card0: Permission denied libGL error: failed to open /dev/dri/card0: Permission denied libGL error: failed to load driver: i915

This is my setup:

Bootmethod: BIOS OS: FreeBSD i386 Version: 13.0-RELEASE-p11 CPU: Intel(R) Atom(TM) CPU N270 @ 1.60GHz RAM: 2012M

I have also posted an issue in Spotify-qt but this looks like a backend problem.

eladyn commented 2 years ago

Hi and thank you for the report!

That sounds indeed like a backend problem and is probably not an issue with Spotify-QT. Could you share some more information about your specific situation? What might be interesting:

This might us help get further.

djongepier commented 2 years ago

I am having this issue too, on FreeBSD 13.1 with ipfw firewall.

Which version of spotifyd are you running? (spotifyd --version): spotifyd 0.3.3 In what places did you put spotifyd's config file?: /usr/local/etc/ and in .config/spotifyd/ What does spotifyd print, when you start it from the terminal? (maybe with --verbose as well): Nothing (blank)

Config:

[global] username = "**" password = "*****" backend = portaudio

Tested to not work with Spotify-tui and Spotify-qt.

eladyn commented 1 year ago

Sorry for not replying earlier!

What does spotifyd print, when you start it from the terminal? (maybe with --verbose as well): Nothing (blank)

I assume, you didn't pass --no-daemon as an option? Then spotifyd will daemonize itself and only log to syslog.

Since you don't specify username and password, spotifyd should advertise itself on the network via mDNS. For this to work you need to make sure that port 5353 on UDP and the zeroconf port (dynamic, force a specific one with --zeroconf-port) on TCP are not blocked by your firewall.

djongepier commented 1 year ago

Thank you for replying!

Unfortunately I have since moved on and no longer pursue desktop Linux/BSD and therefore have no desire to troubleshoot this anymore.

Maybe @smnbldwn does wish to pursue this with you.

smnbldwn commented 1 year ago

I am indeed back on FreeBSD after a break using Ubuntu instead where there is a Spotify client app (even for i386!) The version of spotifyd is 0.3.3 and I can't find the conf file. I installed it as a package using pkg. I got two messages when I ran spotifyd from the terminal:

0: could not load the config file 1: invalid TOML value, did you mean to use a quoted string? at line 4 column 11

Where should I put the config file so that it can be found and read? When I was trying to troubleshoot this before I ended up creating identical config files all over the place to no avail!

This is on FreeBSD 13.1-release-p2 i386

eladyn commented 1 year ago

The problem is not that it can't find a config file, it just fails to parse it. Right above this error message, there should be a line that tells you, which config file is currently used:

Loading config from "/home/user/.config/spotifyd/spotifyd.conf"

You'll need to change it so that it is valid TOML (see the error message).

Otherwise, possible locations are: /usr/local/etc/spotifyd.conf, ~/.config/spotifyd/spotifyd.conf. Further information for FreeBSD can be found here.

smnbldwn commented 1 year ago

`# spotifyd --verbose Error: 0: could not load the config file 1: invalid TOML value, did you mean to use a quoted string? at line 4 column 11

Location: src/config.rs:484

note: the config format should be valid TOML we recently changed the config format, see https://github.com/Spotifyd/spotifyd/issues/765

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it. Run with RUST_BACKTRACE=full to include source snippets. `

smnbldwn commented 1 year ago

This is the output I get. I am not sure how to edit the config file at this location. Is there a way to change the location of the config file? Thank you for engaging with this.

eladyn commented 1 year ago

Unfortunately, the location in the error message don't correspond to the real config file location. That's just the source code where the error is thrown. This could be improved.

Have you looked at the paths I mentioned above? It's quite strange that the line logging where the configuration is coming from isn't appearing in your output. The code for that has been around several releases already, and I can't see why that wouldn't work.

Note: You can surround the code with triple backticks so that it is formatted nicely. (see here) ;)

biancalana commented 1 year ago

while its issue is still open...

# uname -a FreeBSD aledesk 13.2-RELEASE-p1 FreeBSD 13.2-RELEASE-p1 GENERIC amd64

# spotifyd --version spotifyd 0.3.3

# cat spotifyd.conf [global] username = "my_login" password = "my_passwd" backend = "portaudio"

starting spotifyd using: # /usr/local/bin/spotifyd --no-daemon --config-path /usr/local/etc/spotifyd.conf Loading config from "/usr/local/etc/spotifyd.conf" No proxy specified Using software volume controller. Connecting to AP "ap.spotify.com:443" error sending packet Os { code: 51, kind: NetworkUnreachable, message: "Network is unreachable" } Authenticated as "my_login" ! Country: "BR" Using PortAudio sink with format: S16 This backend is known to panic on several platforms. Consider using some other backend, or better yet, contributing a fix.

when I try to start to play some music:

Loading <Get What You Want - Vintage Culture Remix - Mixed> with Spotify URI <spotify:track:34cyKiO9MFixaESb9NaygO> <Get What You Want - Vintage Culture Remix - Mixed> (240000 ms) loaded Expression 'paInvalidSampleRate' failed in 'src/hostapi/oss/pa_unix_oss.c', line: 1057 Expression 'PaOssStreamComponent_Configure( component, sampleRate, framesPerBuffer, StreamMode_Out, master )' failed in 'src/hostapi/oss/pa_unix_oss.c', line: 1145 Expression 'PaOssStream_Configure( stream, sampleRate, framesPerBuffer, &inLatency, &outLatency )' failed in 'src/hostapi/oss/pa_unix_oss.c', line: 1251 PANIC: Shutting down spotifyd. Error message: calledResult::unwrap()on anErrvalue: Invalid sample rate Abort trap