Emulationstation (retropie) aus kodi heraus starten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Spindoctor
Beiträge: 308
Registriert: 22.04.2011 10:34:00

Emulationstation (retropie) aus kodi heraus starten

Beitrag von Spindoctor » 21.08.2016 00:32:07

Hallo!

Meine Frage hat eigentlich nur einen indirekten Debian-Bezug. Aber weil ich die Expertise in diesem Forum sehr zu schätzen weiß, möchte ich es trotzdem mal hier probieren:

Ich möchte auf meinen Raspberry Pi (mit Raspian drauf) aus Kodi heraus emulationstation (also retropie) starten. Dafür habe ich ein kleines addon geschrieben, das so aussieht:

Code: Alles auswählen

$ cat addon.py 
import xbmc
import xbmcgui

System.Exec("/usr/local/bin/startscript.sh")
Die /usr/local/bin/startscript.sh hat folgenden Inhalt:

Code: Alles auswählen

$ sudo cat /usr/local/bin/startscript.sh 
#!/bin/bash

# quit kodi
sudo /bin/systemctl stop kodi

# wait (if necessary)
# sleep 3

# start emulationstation
sudo -u retropie /usr/bin/emulationstation

# wait again (if necessary)
# sleep 3

# start kodi again
sudo /bin/systemctl start kodi
Das starten und beenden von emulationstation funktioniert soweit auch sehr gut. Das Problem ist, wenn ich dann in der emulationstation ein Spiel starten will, dann funktioniert das nicht. Zwar versucht retropie das Spiel zu starten (das kann man auch in den Logs nachlesen NoPaste-Eintrag39461), aber gleich danach bringt es mich zum Spieleauswahlmenü zurück. Offenbar schlägt das starten fehl (darüber finde ich leider nichts in den Logs).

Wenn ich diekt als User retropie die emulationstation starte, kanne ich ohne Probleme die Spiele starten.

Woran kann denn das liegen und wie kann ich das beheben?

Meine Theorie ist, dass beim Start aus Kodi heraus die Emulationstation keine Konsole hat bzw. nicht weiß auf welchem Screen sie das Spiel starten soll und deswegen klappt es nicht. Aber keine Ahnung ob das stimmt...

Bin jedenfalls für Hilfe sehr dankbar!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Emulationstation (retropie) aus kodi heraus starten

Beitrag von rendegast » 21.08.2016 13:29:34

lvl2: Parsing XML file "/home/retropie/.emulationstation/gamelists/zxspectrum/gamelist.xml"...
...
lvl2: /opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ n64 /home/pi/RetroPie/roms/n64/Super\ Mario\ 64\ #\ N64.N64
Das Skript wird nicht als Benutzer retropie ausgeführt?

Falls doch als 'retropie' ausgeführt, vielleicht mal
# start emulationstation
sudo -u retropie /usr/bin/emulationstation
ändern in

Code: Alles auswählen

# start emulationstation
/usr/bin/emulationstation
Weitere Spielereien, evtl kombiniert

Code: Alles auswählen

sudo [-E|--preserve-env] -u retropie /usr/bin/emulationstation

Code: Alles auswählen

sudo [-i|--login] -u retropie /usr/bin/emulationstation
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Spindoctor
Beiträge: 308
Registriert: 22.04.2011 10:34:00

Re: Emulationstation (retropie) aus kodi heraus starten

Beitrag von Spindoctor » 21.08.2016 15:23:05

Hallo und danke für die Antwort!

Also der Pfad /home/pi/RetroPie/roms/n64/Super\ Mario\ 64\ #\ N64.N64 war tatsächlich nicht so beabsichtigt. Hab das mal korrigiert: NoPaste-Eintrag39462. Kein nennenswerter Effekt leider - ich sehe jetzt nur kurz den Login-Screen bevor ich wieder in die Spieleauswahl zurückgeschickt werde.

Übrigens liegen die Roms in beiden Ordnern (also /home/pi/ und /home/retropie/) also sollte das ohnehin keinen Unterschied machen...

Das Skript wird tatsächlich nicht als User retropie ausgeführt - Kodi läuft als User "kodi" und RetroPie soll als User "retropie" laufen. Daher startet der User "kodi" das Skript, aber soll Retropie eben als User "retropie" ausführen. Deshalb das

Code: Alles auswählen

sudo -u retropie /usr/bin/emulationstation
. Passt so, oder?

Mit

Code: Alles auswählen

sudo -E -u retropie /usr/bin/emulationstation
und auch mit

Code: Alles auswählen

sudo -E -u retropie /usr/bin/emulationstation
startet emulationstation erst gar nicht mehr :/ ich komme gleich nach Kodi zurück.

Kann ich noch was probieren, oder noch irgendwelche zusätzlichen Infos einholen?

Danke!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Emulationstation (retropie) aus kodi heraus starten

Beitrag von rendegast » 22.08.2016 15:41:15

walkaround.
Kopiere
/home/retropie/.emulationstation/
/home/retropie/RetroPie/
nach /home/kodi/
und lasse
/usr/bin/emulationstation und somit auch
/opt/retropie/supplementary/runcommand/runcommand.sh
von Benutzer kodi ausführen.
(Also ohne 'sudo')
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Spindoctor
Beiträge: 308
Registriert: 22.04.2011 10:34:00

Re: Emulationstation (retropie) aus kodi heraus starten

Beitrag von Spindoctor » 23.08.2016 15:36:52

hm.

Eigentlich habe ich das bewusst mit 2 unterschiedlichern Usern eingerichtet. Daher würd ich das nur für Testzwecke so machen wollen :/

Also wenn es noch andere Möglichkeiten gibt, wär mir das lieber...

Aber ich frag mal zusätzlich auch im Kodi-Forum...

Danke nochmal!

Spindoctor
Beiträge: 308
Registriert: 22.04.2011 10:34:00

Re: Emulationstation (retropie) aus kodi heraus starten

Beitrag von Spindoctor » 24.08.2016 09:27:17

Ich habe noch ein bisschen experimentiert und es scheint, als hätte ich das Problem lokalisieren können. Nur die Lösung fehlt noch 8O

Wenn ich mich anmelde (als user "pi") und kodi starte mit:

Code: Alles auswählen

$ sudo -u kodi kodi
dann funktioniert mein Skript und ich kann auch in RetroPie die ROMs ausführen (ein kleines Problem bleibt, nämlich, dass mein Script so wie es jetzt ist logischer Weise Kodi nicht beenden kann).

Normalerweise läuft kodi aber nicht als "Befehl" sondern als Service. Wenn ich Kodi also starte mit

Code: Alles auswählen

$ sudo service kodi start
dann können in RetroPie die ROMs nicht gestartet werden.

Für mich sieht es also so aus, als ob RetroPie keine Shell zur Verfügung hat, in der es den Befehl zum starten des Emulators absetzen kann.

Ist das eine vernünftige Analyse? Und wenn ja: kann ich in meinem Script irgendwie eine Shell starten, auf die RetroPie Zugriff hat?

Antworten