[Tutorial] Spotify Connect Server Headless/Standalone

  • Hallo Community,


    meinen Einstand im Forum möchte ich mit einem Tutorial begehen.


    Ich möchte hier mal ein kleines Tutorial schreiben über einen Spotify Connect Server(SCS).


    Folgendes kann der SCS:


    - Spotify Connect

    - Autostart

    - Headless betrieb


    Desweiteren kann man den SCS von jedem Spotify Client ansteuern. Ein kleines Gimmick ist, dass der SCS die Verbindung zu den Spotify Servern hält, auch wenn, das Gerät von dem er angesteuert wurde ausgeschaltet respektive beendet wird. Der Raspi mit dem SCS Startet automatisch, muss nur richtig runtergefahren werden.

    Den eigentlichen Code und das Skript habe ich aus dem GitHub von Fornoth( https://github.com/Fornoth/spotify-connect-web ).


    So jetzt zu den Vorbereitungen:


    Wir benötigen:

    - einen Spotify Premiumaccount

    - Einen Spotify App Key ( https://devaccount.spotify.com/my-account/keys/ )

    - Spotify Nutzername und Passwort(Dazu schreibe ich unten nochmal was als Anmerkung)

    - ein Raspbian Jessie

    - eine eingerichtete Netzwerkverbindung

    - einen Nutzer, der sich automatisch auf die Shell einloggt ohne X

    - in meinem Fall die Audioausgabe auf den 3,5mm Klinkeausgang legen

    Downoad und Installation des Programms:(Diesen Block muss man nur ein mal abarbeiten):

    Code
    #1. Hier holen wir das Skript
    curl -O http://spotify-connect-web.s3-website.eu-central-1.amazonaws.com/spotify-connect-web.sh
    #2. Das Skript wird ausführbar gemacht
    chmod u+x spotify-connect-web.sh
    # Downloade die aktuelle changeroot (~ 180 MB)
    ./spotify-connect-web.sh install
    # Kopiere deinen `spotify_appkey.key` in das Programmverzeichnis.
    sudo cp spotify_appkey.key spotify-connect-web-chroot/usr/src/app/

    Ausführen des Servers: (Dies ist der eigentliche Programmaufruf):

    Code
    # Das Programm mit normalen Optionen laufen lassen bitte username und password mit euren Daten ersetzen.:
    ./spotify-connect-web.sh --username 12345678 --password xyz123 --bitrate 320 --name RasPIiConnect

    Testlauf:
    Wenn Ihr hier angekommen seid könnt ihr einen ersten Testlauf machen und das Skript ausführen. Wenn alles glatt gegangen ist solltet Ihr den Raspi zB. am Smartphone oder so sehen in Spotify, als Connectgerät.

    Autostart:
    Das Ganze soll aber noch nicht genug sein, da Ihr ja jedes mal den Pi und das Skript händisch Starten müsstet.
    Darum machen wir das Skript autostartfähig, so dass Ihr den Raspi nur einschalten braucht, ohne Monitor und Tastatur.


    Der Einfachheit halber und um Tippfehler zu vermeiden, machen wir uns ein kleines Skript aus dem Aufrufbefehl und machen es global ausführbar:


    Gehe in einen Editor deiner Wahl und füge folgendes ein:
    (Kleiner Tipp am Rande: Das ganze bitte als User pi machen und nicht mit sudo, sonst gibt es später Probleme)

    Bash
    #!/bin/bash
    
    
    /home/pi/./spotify-connect-web.sh --username 12345678 --password xyz123 --bitrate 320 --name RasPIiConnect
    
    
    exit 0

    speichere es unter scs

    jetztmachen wir das skript ausfühbar:

    Code
    chmod u+x scs

    und Kopieren es nach /usr/bin/

    Code
    sudo cp scs /usr/bin/

    Nun könnt Ihr ohne euch die Finger zu verbiegen aus jedem Verzeichnis heraus einfach "scs" eintippen und das Skript startet.

    Für den Autostart gebt es verschiedene Lösungen für mich hat am besten folgende Funktioniert:

    man füge folgendes an die /home/pi/.bashrc an:

    Code
    sleep 30 && scs

    Das hat folgende Auswirkung:
    Wenn der Pi hochfährt meldet er eine shell unter dem Benutzer pi an, dann wartet er 30 Sekunden und startet das scs-skript

    Wer gut aufgepasst hat wird jetzt sagen: Ja aber...! Dazu Sage ich: macht in diesem Falle nix da wenn man eine weitere shell öffnet, wird natürlich ein weiteres mal scs ausgeführt, dass merkt aber das skript und beendet sich.


    Soooo. Geschafft. Zum test ein reboot und der Pi Sollte in SpotifyApps als ConnectGerät sichtbar sein.

    Nachtrag zu den Spotify Benutzernamen und Passwörtern:

    Wer sich bei Spotify mit FB angemeldet hat muss sich zunächst ein "Gerätekennwort" zuweisen lassen. Man macht das auf http://www.spotify.com loggt sich ein und zur linken Hand im Menu steht was von gerätekennwort. Man bekommt ne Nummer angezeigt,das ist der Username.
    Hier kommt aber ein KNACKPUNKT wenn man die mail anfordert und dem Link folgt, kann man da ein PW eingeben. Da bekommt man aber eine Fehlermeldung, von wegen "Kennwort konnte nicht festgelegt werden".
    Diese Meldung bitte ignoriegen, das Kennwort wird trozt "Falschem Fehler" gesetzt.

    Falls sich hier Fehler eingeschliichen haben, oder Ihr Verbesserungsvorschläge habt, ich bin für kontruktive Kritik immer offen.

    Edited once, last by metti (January 15, 2016 at 6:54 PM).

  • [Tutorial] Spotify Connect Server Headless/Standalone? Schau mal ob du hier fündig wirst!

  • Hallo,
    wenn ich starte:

    Code
    [color=#333333][size=10][font="monospace"]./spotify-connect-web.sh --username 12345678 --password xyz123 --bitrate 320 --name RasPIiConnect[/font][/size][/color]

    bekomme ich

    Python
    Traceback (most recent call last):
     File "main.py", line 9, in <module>
       from connect import Connect
     File "/usr/src/app/connect.py", line 8, in <module>
       from console_callbacks import audio_arg_parser, mixer, error_callback, connection_callbacks, debug_callbacks, playback_callbacks, playback_setup
     File "/usr/src/app/console_callbacks.py", line 16, in <module>
       audio_arg_parser.add_argument('--mixer', '-m', help='alsa mixer name for volume control', default=alsa.mixers()[0])
    IndexError: list index out of range

    zurück !
    und mei Pi taucht logischerweise auch nicht als Connect-Gerät auf.
    Kann sich jemand einen Reim darauf machen?
    P.S.:Ich habe den Hifiberry auf dem Pi

  • a) Hast du" username" und "password" durch deine eigenen Daten ersetzt?

    b) Könnte ein problem mit der Audioausgabe sein. Hast du ein "default audiodevice" gesetzt?

    Edited once, last by metti (December 18, 2015 at 5:56 PM).

  • Ja. Username und Password habe ich eingesetzt!

    Wegen dem Default audiodevice:

    Code
    pi@WohnPi ~ $ aplay -L
    null
       Discard all samples (playback) or generate zero samples (capture)
    sysdefault:CARD=sndrpihifiberry
       snd_rpi_hifiberry_dac, 
       Default Audio Device

    Ich kann die Ausgabe nicht wirklich interpretieren...

    Im übrigen habe ich noch einen mpd auf dem gleichen Pi laufen, da habe ich Ton.

  • Den Link habe ich auch schon gefunden, aber auch dort haben sie keine Lösung.
    Das interessanteste daran ist ...

    Quote

    [font="Helvetica Neue, Helvetica, Arial, sans-serif"]Your problem seems to be a problem with alsa. You can try to use a different miser by adding -m mixername or -D devicename in your command line[/font]


    das probiere ich auch, weiß allerdings nicht was für einen Mixer ich übergeben soll.

    Und den MPD hatte ich auch abgestellt.

    Code
    sudo service mpd stop


    Danke für deine Ideen...

  • Hey,
    erst mal sau cool das du das hier gemacht hast :D
    Aber ich habe leider ein Problem bei dem Kopieren des Keys.

    (Bin noch neu und arbeite mich ein)

    Wäre echt nett wenn du mir genau erklären kannst wie ich den KEy den ich auf meinem Desk habe auf den Rasp bekomme und in dieses Verzeichnis.

    Ich nutze meinen Pi auch noch als NAS Server dort habe ich dann mal auf die Festplatte den KEy gemacht aber wenn ich ihn dann kopieren möchte bekomme ich nur folgende Meldung:

    Code
    pi@raspberrypi /media/HDD1/PI $ ls
    spotify_appkey.key
    pi@raspberrypi /media/HDD1/PI $ sudo cp spotify_appkey.key spotify-connect-web-chroot/usr/src/app/
    cp: reguläre Datei „spotify-connect-web-chroot/usr/src/app/“ kann nicht angelegt werden: Datei oder Verzeichnis nicht gefunden

    Bis jetzt habe ich deine Schritte Verfolgt und diese haben auch funktioniert.
    Nur nach dem ich eben dieses Chroot heruntergeladen habe komme ich nicht weiter.
    Nun komme ich nicht mehr Weiter

    LG StitZle

    Edited once, last by StitZle (December 20, 2015 at 11:51 PM).

  • StitZle: Danke Danke.

    Moment. Wenn mich nicht alles täuscht musst du bedenken, dass der Befehl den ich gepostet hab so funktioniert, wie er soll, wenn du alles genau so machst wie ich geschrieben habe.

    Ich befürchte so wie execute es geschrieben hat wird es auch nicht gehen.

    Mache es doch bitte so(ich gehe davon aus das du das Skript und alles in dein /home/pi/ Ordner geladen hast, das wird der Punkt sein :(

    Kopiere den Key in dein Home verzeichnis:

    Code
    cp /media/HDD1/PI/spotify_appkey.key /home/pi/

    und dann wenn der Key im Homeverzeichnis liegt:

    Code
    sudo cp spotify_appkey.key spotify-connect-web-chroot/usr/src/app/

    Edited once, last by metti (December 21, 2015 at 3:48 PM).

  • Super danke hat Geklappt :danke_ATDE:

    Nur wie hänge ich jetzt diesen "Spleep" befehl an dieses Verzeichnis an ?
    Danke schon mal im Voraus

    Außerdem habe ich mich grade ausgeloggt und als ich mich wieder eingeloggt habe kam diese Wundervolle Nachricht:

    Code
    Server refused to allocate pty
    
    
    The programs included with the Debian GNU/Linux system are free software;
                                                                            the exa                                                                                                                                                             ct distribution terms for each program are described in the
                                                              individual files in /                                                                                                                                                             usr/share/doc/*/copyright.
    
    
                             Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to                                                                                                                                                              the extent
              permitted by applicable law.


    Hat das was damit zu tun weil der Spotify-Connect-Server noch lief ? Und ich einfach Putty zu gemacht hab ?

    Edit: Ok habe meinen Pi grad neu gestartet und Angemeldet diesmal kam die NAchricht nicht jedoch wenn ich jetzt:

    Code
    bash scs

    eingebe um das Script zu Starten kommt nur das:

    Code
    SpInit: 0
    playback_volume: 50461
    public key: L0hDi/lK4eBvg37Y/2qpyZnFTgM8mTAG2Yjas8UM6K6+fWHL02/mdeih1QsNH9v17VP7ohxLkgJDQ5LdT8SBQXpeqmZSOmrpcQ/4GWXYydaPEuPOgA4jcVNKKQNRz4Uz
    device id: 084a0e9c-2095-433d-88b2-7607edd056f5
    remote name: RasPIiConnect
    account req: PREMIUM
    device type: AUDIODONGLE

    Und dadurch taucht der RaspPi auch nicht mehr bei Spotify auf :neutral:


    Wäre echt noch mal mega cool wenn ihr mir helfen könntet

    LG Stitzel

    Edited once, last by StitZle (December 21, 2015 at 11:34 PM).

  • [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Bei mir brauchte es

    Code
    sudo chmod +x scs

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]und wenn ihr einen hifiberry habt:

    Code
    aplay -l

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]ergibt bei mir

    Code
    **** Liste der Hardware-Geräte (PLAYBACK) ****[/font][/color][/font][/color][/font][/color]Karte 0: ALSA [bcm2835 ALSA], Gerät 0: bcm2835 ALSA [bcm2835 ALSA] Sub-Geräte: 8/8 Sub-Gerät #0: subdevice #0 Sub-Gerät #1: subdevice #1 Sub-Gerät #2: subdevice #2 Sub-Gerät #3: subdevice #3 Sub-Gerät #4: subdevice #4 Sub-Gerät #5: subdevice #5 Sub-Gerät #6: subdevice #6 Sub-Gerät #7: subdevice #7Karte 0: ALSA [bcm2835 ALSA], Gerät 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0Karte 1: sndrpihifiberry [snd_rpi_hifiberry_dac], Gerät 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [] Sub-Geräte: 0/1[color=#333333][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][color=#333333][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][color=#333333][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"] Sub-Gerät #0: subdevice #0

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]somit ergibt sich aus dem Befehl

    Code
    ./spotify-connect-web.sh --username deinBenutzername --password deinPasswort --bitrate 320 --name KellerPi --device hw:1

    [/font][/font][/color][/font][/color][/font][/color]

  • Hallo und vielen Dank für diese tolle Anleitung.

    Soweit klappt alles, auch der erste Test.
    Wenn ich allerdings das erstellte Script für den Autostart in usr/bin/ kopiere, habe ich danach keinen Zugriff mehr darauf und erhalte die Fehlermeldung "keine Berechtigung". Auch nach dem Booten will er darauf zugreifen jedoch gibt er im Terminal die gleiche Meldung aus.
    ich Vermute mal es liegt an der Voraussetzung für den User mit login auf die Shell ohne x.

    Wie schaffe ich es daher als User Pi das Script im Ordner usr/bin/ auszuführen?

  • Habe heute mein erstes Raspberry Pi2 erhalten. Hatte noch keine Erfahrungen mit Linux, Debian, etc... Aber mit deiner Anleitung, viel probieren, recherchieren, Zeit und Geduld, läuft mein SCS-Server! Besten Dank!

  • Erl

    Danke funktioniert perfekt.

    Da ich den Raspi über USB an meine Anlage angeschlossen habe ist dein Hinweis mit dem Anhang für das entsprechende Device sehr hilfreich gewesen.
    Leider liefert der Raspi nur 44.1KHz. Gibts eine Möglichkeit die auf 96 oder besser 192KHz zu erhöhen?

  • Sehr cooles Ding! Habs nach etlichem hin und her (brauchte minibian, weils sonst nicht auf die 4 GB Karte gepasst hatte) zum laufen gebracht. Im Gegensatz zur PiMusicBox läuft das durch Spotify Connect auch echt mal verlässlich und hat nicht den doofen Delay wenn man skipt oder pausiert.

    Als ich jetzt versucht habe, die SD Karte zu duplizieren (natürlich sowohl Connect als auch den Raspberry selbst umbenannt) habe ich festgestellt, dass sich trotzdem die beiden Raspberrys in Spotify blockieren. Liegt wohl daran, dass man unterschiedliche App Keys von Spotify braucht. Gibt es da einen Workaround?

    Danke nochmal für die super Anleitung!

    Edited once, last by Mel0ne (January 3, 2016 at 5:38 AM).

  • Danke, Danke für das viele Lob.

    peterundderwolf: Ja die Audioqualität des RasPi ist bekanntlich nicht gut. Eine günstige Option ist eine USB-Soundkarte. Die gibt es Ab 3€. Willst du was besseres kannst du ne Behringer USB-Soundkarte nehmen die kommen ab 40€ . Willst du weiter Oben Spielen kann man auch einen Dragonfly USB-DAC nehmen mit 3,5Klinke der liegt dann bei 150€. (Ich gebe aber zu bedenken, dass das hier mein Flavor ist und die finanziellen Sprünge die ich so unternehmen würde.)

    @MelOne: Du musst mal schauen. Ich weiß leider nicht wie das ist mit den AppKeys. Ob man die parallel nutzen kann, falls nicht ob man mehrere bekommt. Dann gebe ich noch zu bedenken, dass du mit einem Premium Account nur eine festgelegte Anzahl an devices nutzen kannst. :(

  • Vielen Dank erstmal für das super Tutorial, habe danach schon seit Ewigkeiten gesucht :)

    @MelOne Ich habe es auch auf 2 verschiedenen pi installiert und bei mir gibt es kein Problem. Ich habe es allerdings nicht dupliziert, sondern es auf jedem pi einzeln installiert.

  • Hallo zusammen,
    also erstmal wollte ich mich für dieses Tutorial bedanken, da ich sowas schon lange gesucht habe :)

    Da ich eine USB Soundkarte habe, benutze ich diesen Befehl:

    Code
    ./spotify-connect-web.sh --username deinBenutzername --password deinPasswort --bitrate 320 --name MyPi --device hw:1

    Alles funktioniert problemlos, nur lässt sich die Lautstärke durch Spotify nicht steuern. Mit der Klinke funktioniert die Lautstärkesteuerung natürlich.

    Wie könnte ich das Problem lösen? Liegt es eventuall an bestimmten Einstellungen von alsa?

    Einige von euch benutzen ebenfalls eine USB Soundkarte, funktioniert bei euch die Lautstärkesteuerung?


    Danke im Voraus.

    Liebe Grüße

    Edited once, last by a2dx (January 4, 2016 at 7:44 PM).

  • Da hier mehrere Personen Probleme mit USB-Soundkarten haben,
    möchte ich doch noch einmal auf den Hifiberry hinweisen !
    Läuft bei mir zuverlässig, man sagt er hätte einen spitzen klang
    und soweit ich das mitbekommen habe braucht er weniger Resourcen
    da er über einen internen Bus angeschlossen wird.

    Jetzt die USB Soundkarte in die Tonne hauen ist wohl Blödsinn,
    aber bevor man sich wieder eine holt...

    Leider kann ich zu den Problemen ansonsten leider nichts Beitragen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!