XFCE Autostart verzögern

Manche Programme, die ich im Autostart betreibe, starten bei mir unter XFCE so schnell, dass ihre Icons nicht im Benachrichtigungs-Panel erscheinen – eben weil das Panel noch nicht bereit ist. Dies betrifft bei mir z.B. Davmail und Nextcloud. Daher möchte ich eine Verzögerung von 5 Sekunden einbauen, bevor diese Programme gestartet werden.

Hier haben wir zwei Möglichkeiten:

  1. wir editieren die Autostartscripte, die unter ~/.config/autostart/ bereit liegen
  2. wir machen es Klicki-Bunti über XFCE-Menu - Einstellungen - Sitzung und Startverhalten - Automatisch gestartete Anwendungen

Für beide gilt folgendes Befehlsschema:

/bin/sh -c "sleep 5 && BEFEHL"

(Es hat mich etwas Zeit gekostet, bis ich herausgefunden habe, dass ein simples sleep 2 && BEFEHL nicht funktioniert, sondern dass man eine Shell angeben muss und der anschließend auszuführende Befehl ebenfalls an diese Shell übergeben werden muss /bin/sh -c "sleep 5 && BEFEHL")

Für davmail sieht das z.B. so aus:

nano ~/.config/autostart/davmail.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=davmail
Comment=davmail
Exec=/bin/sh -c "sleep 5 && davmail"
OnlyShowIn=XFCE;
StartupNotify=false
Terminal=false
Hidden=false

Das funktioniert prima… 🙂

Posted in Arch, ubuntuusers | Tagged | Leave a comment

Subsonic ist tot, es lebe Airsonic

Seit ein paar Jahren habe ich einen Subsonic-Server für meine Musik. Ich habe sogar die 12,- Euro Zwangsabgabe pro Jahr bezahlt, damit meine Clients auf den Server zugreifen können.

Heute hab ich Subsonic zu Gunsten von Airsonic verworfen. Airsonic ist ein Subsonic-Fork, es ist „frei“ wie in „Bier“ (d.h. die 12,- fallen weg) und funktioniert prima mit meinem Apache-Proxy.

Folgendes Szenario möchte ich realisieren:

  • Airsonic läuft auf einem Port ohne SSL (in meinem Fall 4040)
  • Damit aber auch https-Verbindungen klappen, richte ich einen Apache-Proxy ein. Dieser leitet dann die HTTPS-Anfrage intern an Airsonic weiter. Das hat zB den Vorteil, dass die LetsEncrypt-Zertifikate nur in Apache aktualisiert werden müssen
  • Alle Clients haben von überall Zugriff auf Airsonic

Installation

Die Installation unter Archlinux ist recht einfach:

pacaur -S airsonic  jre8-openjdk-headless

Jetzt muss ich noch sicherstellen, dass auch wirklich jre8 verwendet wird:

archlinux-java status # auf jre8 umstellen

Konfiguration

Für Airsonic habe ich nur meinen Port eingetragen:

sudo nano /etc/airsonic/airsonic.conf
(...)
PORT=4040
CONTEXT_PATH=/airsonic
(...)

Für das Transcoding (also zB das Runterrechnen auf 128kb/s mp3) muss noch ein Symlink auf ffmpeg gesetzt werden:

cd /var/lib/airsonic/transcode
sudo ln -s /usr/bin/ffmpeg .
sudo chown -h airsonic:airsonic ffmpeg

Für Apache wird die httpd.conf wie folgt ergänzt:

sudo nano /etc/httpd/conf/httpd.conf
(...)
RequestHeader set X-Forwarded-Proto "https"
ProxyPass        /airsonic http://127.0.0.1:4040/airsonic
ProxyPassReverse /airsonic http://127.0.0.1:4040/airsonic
(...)

Dies bewirkt, dass Anfragen von http://meinserver.org/airsonic als auch von https://meinserver.org/airsonic intern an den Port 4040, und somit an Airsonic, weitergereicht werden. Ich muss also keine Ports in der Firewall öffnen, und ich kann meine LetsEncrypt-Lösung für SSL verwenden.

Starten…

Nach einem Neustart von Apache kann auch Airsonic gestartet werden:

sudo apachectl graceful
sudo systemctl start airsonic.service

Voila, Airsonic ist nun unter http://IPDESSERVERS:4040 und auch unter http(s)://meinserver.org/airsonic erreichbar.

Posted in Arch, Jean Pütz, ubuntuusers | 1 Comment

IPv6 im Congstar Mobilnetz

Ich nutze Android8 und habe festgestellt, dass ich mir im Congstar Mobilnetz eine IPv6-Adresse geben kann.
Hierzu gehe ich in den Einstelungen zu VERBINDUNGEN – MOBILE NETZWERKE – ZUGANGSPUNKTE – und wähle „hinzufügen“.

Folgende Felder habe ich eingeragen:

Name: T-Mobile Internet
APN: internet.t-mobile
Benutzername: telekom (oder congstar eintragen)
Kennwort: tm (oder cs eintragen, wenn als Benutzer congstar gewählt wurde)
MCC: 262
MNC: 01
Authentifizierung: CHAP
APN-Typ: default,supl,mms
APN-Protokoll IPv4/IPv6

Alles andere habe ich nicht angegeben/so belassen.

Jetzt noch speichern, und ich kann den neuen ANP auswählen.
Und zack, hat mein Handy eine gültige globale IPv6 Adresse.
Diese sieht man zB unter Einstelungen, Telefoninfo, Status.

Posted in Jean Pütz, Professor Hastig, ubuntuusers | Tagged , | Leave a comment

Überall per SSH erreichbar mit TOR

Heute möchte ich eine alternative Verwendungsweise von TOR vorstellen:
Wir nutzen das TOR-Netzwerk, um unseren Rechner per SSH erreichbar zu machen. Der Vorteil des TOR-Netzes ist hierbei, dass wir uns keine Gedanken mehr um Firewalls, Port-Forwarding und DynDNS-Adressen machen müssen. Über das TOR-Netz ist unser Rechner direkt erreichbar, (fast) egal, wo wir ihn ans Netz hängen.
Das ist für einen Homeserver interessant, der „nur“ IPv6 hat, oder aber (bei mir zB) für RaspberryPis, die man irgendwo mit hinnimmt, anschließt und stehen lässt.

Vorbereitung

Wir installieren TOR, torsocks und nyx. Unter Archlinux geht das zB per:

pacaur -S tor torsocks nyx

Jetzt legen wir noch ein Verzeichnis für das Logfile an:

sudo mkdir /var/log/tor                   # Logfile
sudo touch /var/log/tor/notices.log       # Logfile
sudo chmod a+rw /var/log/tor/notices.log  # Logfile

Wir machen unseren Port 22 als „hidden service“ verfügbar. Hierfür benötigt TOR noch ein eigenes Verzeichnis:

sudo mkdir /var/lib/tor/hidden_service/   # für Hidden-Service (zB SSH)

Mit dem Programm nyx können wir unseren TOR-Server später kontrollieren. Damit nicht jeder Zugriff auf den Controllport bekommt, erstellen wir ein Passwort-Hash:

tor --hash-password "MEIN PASSWORT"       # Password für nyx festlegen

Dies wirft so einen Hashwert aus: 16:EC846041E12046F96027CDB036371025913DDEC98B66B0AE4D0F19B409. Diesen Hash-Wert benötigen wir noch!

Konfiguration

Die Kofiguration von TOR erfolgt über die Datei /etc/tor/torrc. Tor bringt hier eine Standardeinstellung mit, die unbedingt geändert werden muss. Standardmäßigt ist der TOR-Server nämlich als Exit-Node konfiguriert, und das wollen wir ja nicht!
Folgende Einstellungen reichen für unsere Zwecke aus:

Log notice file /var/log/tor/notices.log
DataDirectory /var/lib/tor
ControlPort 9051            # für nyx
HashedControlPassword 16:EC846041E12046F96027CDB036371025913DDEC98B66B0AE4D0F19B409 #ersetze s.o.
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 22 127.0.0.1:22  # Port 22 auch über TOR 
ExitPolicy reject *:*       # no exits allowed !!!

Ihr müsst natürlich den Hash-Wert eures Passwortes entsprechend anpassen. Wichtig ist die letzte Zeile ExitPolicy reject *:*, welche den Exit-Node ausschaltet.

TOR ist jetzt installiert und kann über Port 9051 kontrolliert werden. Es wird KEIN Traffic nach außen geleitet (Exit-Node) und es wird KEIN Traffic hin- und hergeschoben (relay).

Der TOR-Server wird gestartet mit:

sudo systemctl start tor.service

Mit dem Programm nyx kann man nun die Aktivitäten des TOR-Servers begutachten.

nyx

SSH

Nach dem Start des TOR-Servers steht in der Datei /var/lib/tor/hidden_service/hostname die Onion-Adresse, unter welcher der Server nun erreichbar ist.

Der ssh-Aufruf am Client (der ebenfalls mit TOR verbunden sein muss, ist ja klar) erfolgt dann zB per torsocks:

torsocks ssh produnis@ipujtasre32xw656s.onion

Die Onion-Adressen können auch in der .ssh/config wie gewohnt hinterlegt werden.

Weblinks

Posted in Arch, Herr Immer, Professor Hastig, Ubuntu, ubuntuusers | 1 Comment

picture-bots für Friendica und Diaspora*

Seit vielen Jahren habe ich einen Diaspora-Account, und seit einiger Zeit sogar eine eigene Friendica-Instanz. Im letzten Blogpost hatte ich beschrieben, wie man sich einen Friendica-Account zulegt und Kontakte hinzufügt, siehe hier.

Um nun das Fediversum etwas interessanter zu gestalten, haben manche User RSS- und Feedbots konfiguriert, so dass „angesagte“ Inhalte federiert werden. Hier gibt es zB auch Instagram- und Twitter-Accounts, die ein bestimmtes Thema bedienen („Webfail“, „Ruhrgebiet“, „History“), und dazu in einem bestimmten Takt passende Bilder posten.

Habt ihr auch einen Ordner voller „lustiger Bildchen“ und Memes? Habt ihr schonmal überlegt, diese Bilder über einen eigenen Account zu federieren?

Ich habe zwei Python-Scripte geschrieben, die so etwas ähnlich tun: aus einem definierten Ordner werden die enthaltenen Bilder nach/auf Diaspora, Friendica oder GNUsocial gepostet.
Falls ihr also einen Ordner voller themenbezogener Bilder habt, und diese gerne „botmäßig“ federieren möchtet, schaut euch die Scripte an:

Die Scripte feuern jeweils 1 Bild „pro Runde“, so dass ihr den gewünschten Takt per Cronjob festlegen könnt.

Posted in Arch, Jean Pütz, Ubuntu, ubuntuusers | Leave a comment

Friendica als Feedreader für RSS, Twitter, Youtube etc. nutzen

Seit einiger Zeit nutze ich Friendica,
eine Art dezentrale Facebook-Alternative, die mit der „Federation“ (Diaspora, GNUscocial, etc.) verbunden ist.
Heute möchte ich kurz zeigen, wie ich Friendica nutze, denn ein gutes Argument ist ja immer:
„Wieso sollte ich mir einen Friendica-Account zulegen, wo doch eh alle anderen bei Facebook oder SnapChat sind“ – denn das stimmt ja auch. Aber ich nutze Friendica eher als aufgemotzten Feed-Reader. Ich hab hier mal irgendwann den Spruch gelesen „if it has a feed, we can track it“.
Und so habe ich alle Webseiten, die ich sonst so täglich abgegrast habe (zB spiegel.de tagesschau.de, planet der ubuntuusers, youtube, twitter) in Friendica als „Kontakte“ eingetragen.
Auf Friendica werden mir dann alle Tweets und Neuigkeiten im Look einer „Facebook-Timeline“ angezeigt.

Da ich meine Kontakte in „Gruppen“ sortieren kann, nehme ich Einfluss auf meine Timeline:
– ich will jetzt nur Funstuff sehen
– ich will nur Nachrichten
– ich will nur Astronomie
– ich will alles sehen

Die Beiträge kann ich dann „liken“, kommentieren und verteilen – denn in der „Federation“ gibt es durchaus auch „echte Menschen“, mit denen man sich verbinden und unterhalten kann.
Ich kann wirklich nur empfehlen, das ganze mal auszuprobieren. Man kann sich entweder selbst einen Friendica-Server aufsetzen (das ist gar nicht sooo schwer), oder einen öffentlichen Server nutzen, siehe https://dir.friendica.social/.

Sobald ihr einen Account habt, könnt ihr Kontakte hinzufügen. Auf eurer Kontaktseite seht ihr links ein Feld „Neuen Kontakt hinzufügen“.
(Ich nutze das Theme „vier“, und alle Screenshots sind vom Theme „vier“.)

Hier tragt ihr die Feedadressen ein. Und die sieht so aus:

  • Twitter: in Form einer Mailadresse USERNAME@twitter.com, also zB realDonaldTrump@twitter.com
  • RSS-Feed: einfach die URL des Feeds eintragen, zB. https://planet.ubuntuusers.de/feeds/full/10/ oder http://feeds.feedburner.com/d0od?format=xml
  • Youtube-Kanäle: ihr benötigt die Channel-ID des Kanals, dem ihr folgen wollt. Für die Kontaktanfrage nutzt man folgende URL, wobei die Channel-ID ergänzt werden muss: https://www.youtube.com/feeds/videos.xml?channel_id=, also zB. https://www.youtube.com/feeds/videos.xml?channel_id=UCtJVZjY6xsZUV-sYdcIFpZw
  • Instagram: Hier wandelt man den Instagram-Stream in einen RSS-Feed um. Die Adresse für die Kontaktanfrage lautet https://websta.me/rss/n/USERNAME also zB https://websta.me/rss/n/s04
  • Diaspora: Einfach die Kontaktadresse, zB comedy@diasp.de eingeben. Funktioniert so auch mit allen anderen Federationsaccounts, zB GNUsocial.
  • Dann klickt man auf „Verbinden“.

Auf der nächsten Seite meckert friendica bei mir, dass „das angefragte Profil nicht vorhanden“ sei (roter Pfeil). Dies kann man ignorieren und einfach auf „Anfrage abschicken“ klicken.

Unter „Kontakteinstellungen“ gibt es die Möglichkeit, „weitere Informationen zu dem Feed“ zu holen (blauer Pfeil).

Hier muss man herumspielen. Manche Feeds zeigen den Inhalt „schöner“, wenn man das Feld „Deaktiviert“, bei anderen ist die Einstellung „Beziehe Informationen“ „schöner“. Bei Youtube-Channels ist grundsätzlich „beziehe informationen“ zu wählen.

Bei zB Blogs, die nicht soooo regelmäßig posten, wie zB linuxundich.de, setze ich den Haken bei „Benachrichtigung bei neuen Beiträgen“. So bekomme ich oben rechts bei der „Glocke“ angezeigt, wenn etwas neues da ist.

Sollte kein Avatar zum Feed angezeigt werden, kann man eines per Bild-URL hinzufügen. Klicke auf „Erweitert“ (s.o., roter Pfeil), und trage in das Feld „Neues Foto von dieser URL“ eine Bild-URL ein.

Friendica kopiert sich dann das Bild von dort.

So erstellt man sich seinen ganz privaten aufgemotzten RSS-Feed-Reader.

Viele „wichtige“ Feeds (z.B. Fefe oder Tagesschau) werden bereits von Bots in die Federation gespiegelt. Es lohnt sich, das Userverzeichnis zu durchforsten. Ich folge diesen Bot-Accounts, ihr könnt die Adressen direkt als Kontaktanfrage nutzen:

aljazeera@squeet.me
arch@friendica.produnis.de
atheism@friendica.produnis.de
bildblog@friendica.produnis.de
derpostillon@gnusocial.de
deutschlandfunk@squeet.me
dlr@squeet.me
earthquake@social.yl.ms
esa@squeet.me
fefesblog@pod.geraspora.de
funstuff@friendica.produnis.de
heiseonline@squeet.me
ey_lou_flynn@pod.geraspora.de
kicker@friendica.produnis.de
Kodi@mastodon.cloud
linuxundich@friendica.produnis.de
nachdenkseiten@friendica.produnis.de
nasa@squeet.me
ncnews@libranet.de
sciencenature@friendica.produnis.de
spon@friendica.produnis.de
tagesschau@squeet.me
taz@pod.geraspora.de
urknall@friendica.produnis.de
wdr@squeet.me
zdfheute@squeet.me

Ja, und zu guter letzt könnt ihr euch auch gerne mit mir verbinden: produnis@friendica.produnis.de

Weblinks

Posted in Herr Immer, Jean Pütz, ubuntuusers | 4 Comments

git poor man’s time machine

Eine etwas exotischere Verwendungsweise von git ist die einer Time Machine. Das Prinzip einer Time Machine ist, dass für einen Ordner, zB dem eigenen Dokumentenordner, regelmäßige Schnappschüsse erstellt werden. Das Feature ist dann, dass man „durch die Zeit“ blättern kann, um alte Versionen oder gelöschte Dateien zu finden.
Mit git kann man sich soetwas recht einfach erstellen:

Im Terminal wechselt man in das gewünschte Verzeichnis:

cd /Pfad/zum/Verzeichnis

Dort erstellt man ein git-Repository:

git init

Und fügt alle Dateien dem Repository hinzu:

git add *
git commit -m "initial commit"

Jetzt benötigen wir ein Script, welches per Cronjob in den Intervallen ausgeführt wird, die wir gerne für unsere Time Machine Snapshots hätten. Mögliche Cronjobs wären zB.

crontab -e
@hourly /pfad/zu/script.sh
@daily /pfad/zu/script.sh

Die Datei script.sh müssen wir erstellen und ausführbar machen, und ihr folgenden Inhalt geben:

#!/bin/bash
DATE=`date +"%Y-%m-%d_%H-%M-%S"`
cd /path/to/your/folder       # Change to your settings
git checkout -b $DATE
git checkout $DATE
git add *
git commit -m "snapshot of $DATE"
git checkout master
git rebase $DATE

Das Script erstellt einen neuen Branch DATE und führt einen commit auf alle Änderungen im Verzeichnis durch.
Anschließend wird ein rebase des commit auf den Branch „master“ ausgeführt.
Die Änderungen liegen also im Branch DATE als auch im Branch master.

Der Branch DATE wird nicht gelöscht. Er ist der Landepunkt für unsere Zeitmaschine.

Um nun durch die Zeit zu reisen wechselt man im Terminal in das Verzeichnis und gibt ein:

git checkout DATE

wobei DATE ein Zeitstempel ist.
Welche Zeitstempel verfügbar sind zeigt der Befehl

git branch

Der Befehl versetzt euer Verzeichnis in den Zustand, in dem es sich zum Zeitpunkt DATE befunden hat.

Um wieder in die Gegenwart zu wechseln verwendet man den Befehl:

git checkout master

Weblinks

Posted in Arch, Jean Pütz, Professor Hastig, ubuntuusers | 6 Comments

Mythweb und PHP7.1 und $this und $that

Seit dem Update auf PHP7.1 kann ich MythTV nicht mehr per MythWeb erreichen. Es erscheint stattdessen eine weiße Seite mit der Fehlermeldung

"Fatal error: Cannot use $this as parameter in /var/lib/mythtv/mythweb/includes/utils.php"

Zur Behebung des Problems öffnet man die angegebene Datei /var/lib/mythtv/mythweb/includes/utils.php und ersetzt (suchen/ersetzen) dort alle „$this“ durch „$that„.
Anschließend ist MythWeb wieder erreichbar.

Weblinks

Posted in Arch, ubuntuusers | Tagged , , | Leave a comment

MediaWiki: alle Seiten einer Kategorie als PDF exortieren mit Python

Auf meinem Server habe ich MediaWiki installiert, und ich notiere innerhalb diese Wikis meine (privaten) Sachen, unter anderem Notizen zu eben diesem Server (wie funktioniert das mit systemd, wie starte ich den mpd-Server, wie funktionieren RegularExpressions, uws).

Jetzt hätte ich meine ganzen Artikel gerne in eine PDF-Datei exportiert, so dass ich auch ohne Netzverbindung – bzw. falls der Server mal down ist – meine Sachen nachlesen kann.

Ich habe letztes Jahr bereits das PHP-Skript mwc2pdf.php geschrieben (github), mit welchem man alle Seiten einer MediaWiki-Kategorie, inklusive der Seiten aller Unterkategorien, als PDF exportieren kann. Da sich mit mediawiki-1.27 die MediaWiki-api.php geändert hat, musste ich das Skript etwas anpassen.
In diesem Zuge ist mir die Idee gekommen, das Skript nach python zu portieren.

Et voila: mwc2pdf.py (github).

Das Skript benötigt mediawiki-1.27, wkhtmltopdf, python2 sowie dessen libs „pdfkit„, „PyPDF2„, „urllib2„, welche evtl. nachinstalliert werden müssen.

Das erstellte PDF (welches alle Seiten enthält) verfügt über Bookmarks, über welche man zu den entsprechenden Artikeln gelangen kann. Dieses Feature habe ich in der PHP-Version (mit pdftk) nicht hinbekommen. Die PyPDF2-lib schafft das problemlos…

Falls ihr also selber MediaWiki im Einsatz habt, und mal „alles“ ausdrucken möchtet…
🙂

Posted in Jean Pütz, Professor Hastig, ubuntuusers | 1 Comment

EmulationStation unter Archlinux

Ich möchte hier kurz erklären, wie ich EmulationStation unter Archlinux installiert habe. Wer nicht weiss, was EmulationStation ist, findet hier ein kleines Teaser-Video auf YouTube.

Installation

Installiert werden müssen

  • EmulationStation
  • Emulatoren (hauptsächlich RetroArch bzw. die entsprechenden LibRetro-Plugins)
  • Spiele-ROMs
  • joyutils, zum Auslesen der angeschlossenen Gamepads

Dies geschieht unter Archlinux per:

pacaur -S emulationstation-git retroarch joyutils jstest-gtk-git

RetroArch benötigt nun für jedes zu emulierende System ein entsprechendes libretro-Plugin. Eine Übersicht der verfügbaren Plugins im AUR findet sich hier: https://aur.archlinux.org/packages/?O=0&K=libretro

Ich habe Emulatoren für den Atari7800, NES, SNES, GameboyColor und Gameboy Advanced installiert, zB per:

pacaur -S libretro-snes9x-next-git libretro-quicknes-git libretro-fceumm-git libretro-prosystem-git libretro-gambatte-git libretro-mgba-git

Für den N64 habe ich mupen64plus eigenständig installiert, da es besser läuft als das libretro-plugin.

pacaur -S mupen64plus

EmulationStation startet nun mit dem Befehl:

emulationstation

Noch funktioniert aber fast gar nichts…
Mit F4 kann es jederzeit beendet werden.
Führe zunächst die folgenden Schritte durch:

Konfiguration

Das Arbeitsverzeichnis von EmulationStation befindet sich im Homeordner:
~/.emulationstation

Theme installieren

Ich verwende das Theme „carbon“.
Dieses findet sich zB bei github: https://github.com/RetroPie/es-theme-carbon.
Lade dir das zip-Paket herunter und entpacke den Inhalt nach ~/.emulationstation/themes/carbon.
Editiere nun die Datei ~/.emulationstation/es_settings.cfg und trage das carbon-Theme entsprechend ein:

<string name="ThemeSet" value="carbon"></string>

ROM-Ordner anlegen

Alle meine Spiele-ROMs kommen in den Ornder ~/Dokumente/Medien/Spiele/ROM. Dort existiert für jedes System ein Unterordner (zB NES, SNES, N64), und in diesen liegen die entsprechenden ROMs für das entsprechende System.
Ihr dürft nur ROMs von solchen Spielen haben, die euch auch tatsächlich gehören!
ROMs findet ihr zB bei http://www.emuparadise.me/.

Systeme hinzufügen

Systeme (sprich die alten Spielekonsolen) werden in der Datei ~/.emulationstation/es_systems.cfg festgelegt.
Ein System entspricht hierbei einer Konsole (zB NES, SNES, N64).
Ihr müsst für jedes System angeben, in welchem Pfad die ROMs zu finden sind, wie die Dateiendungen der ROMS lauten, und wie der Emulatoraufruf erfolgen soll. Als Emulator wird hauptsächlich RetroArch verwendet.
Für den RetroArch-Aufruf muss immer über die Option -L der Pfad auf das entsprechende libretro-Plugin.so angegeben werden. Alle installierten Plugins finden sich im Ordner /usr/lib/libretro/

Hier mal als Beispiele meine Einträge für den GameBoy (Retroarch), SNES (Retroarch) und den N64 (mupen64plus):

	<system>
		<name>gb</name>
		<fullname>Nintendo Gameboy</fullname>
		<path>~/Dokumente/Medien/Spiele/ROM/GB</path>
		<extension>.gb</extension>
		<command>retroarch -L /usr/lib/libretro/gambatte_libretro.so %ROM%</command>
		<platform>gb</platform>
		<theme>gb</theme>
	</system>


	<system>
		<name>snes</name>
		<fullname>Super Nintendo Entertainment System</fullname>
		<path>~/Dokumente/Medien/Spiele/ROM/SNES</path>
		<extension>.sfc</extension>
		<command>retroarch -L /usr/lib/libretro/snes9x_next_libretro.so %ROM%</command>
		<platform>snes</platform>
		<theme>snes</theme>
	</system>

	
	<system>
		<name>n64</name>
		<fullname>Nintendo 64</fullname>
		<path>~/Dokumente/Medien/Spiele/ROM/N64</path>
		<extension>.n64 .z64</extension>
		<command>mupen64plus %ROM% </command>
		<platform>n64</platform>
		<theme>n64</theme>
	</system>

Lege für jedes System, welches du installiert hast, einen entsprechenden <system>-Eintrag an.

Gamepads auslesen

Ich habe hier einen Playstation-3-Controller, den ich per USB an den Laptop angeschlossen habe.
Jetzt muss ich herausfinden, welcher Knopf welchem Button entspricht.
Hierfür starte ich jstest-gtk. Mein PS3-Controller wird direkt erkannt, und über „Eigenschaften“ kann ich die Belegung auslesen.
Für meinen PS3-Controller gilt:

Playstation 3 Controller

analoges Steuerkreuz
--------------------
oben	Button 4
unten	Button 6
links	Button 7
rechts	Button 5


joystick links
--------------
oben	Axis1 -1
unten	Axis1 +1
links	Axis0 -0
rechts  Axis0 +0
klick	Button 1

joystick rechts
--------------
oben	Axis3 -3
unten	Axis3 +3
links	Axis2 -2
rechts  Axis2 +2
klick  	Button 2


BUTTONS
-------
PS	Button 16
Select  Button 0
Start	Button 3

L1	Button 10  // Axis14 1
L2	Button 8	//Axis12 1
R1	Button 11	//Axis15 1
R2	Button 9 	/Axis13 1

A(kreis)	Button 13	/Axis17
B(kreuz)	Button 14	/Axis18
C(dreieck)	BUtton 12	/Axis16
D(QUadrat)	Button 15	/Axis19

Diese Werte muss ich mir merken!!!

Gamepads hinzufügen

Jetzt wo ich weiss, welche Knöpfe und Sticks mein Gamepad hat, kann ich es in EmulationStation sowie in RetroArch bekanntmachen.

  • Emulationstation: um mit dem Gamepad durch das Emulationstation-Menü navigieren zu können.
  • RetroArch: um mit dem Gamepad zocken zu können
  • Mupen64plus: um mit dem Gamepad zocken zu können

Gamepad für Emulationstation

Editiere hierfür die Datei ~/.emulationstation/es_input.cfg.
Die Einträge für meinen PS3-Controller sehen dann so aus:

< ?xml version="1.0"?>
<inputlist>
	<inputconfig type="joystick" deviceName="Sony PLAYSTATION(R)3 Controller" deviceGUID="030000004c0500006802000011010000">
		<input name="a" type="button" id="14" value="1" />
		<input name="b" type="button" id="15" value="-1" />
		<input name="down" type="button" id="6" value="1" />
		<input name="left" type="button" id="7" value="-1" />
		<input name="menu" type="button" id="16" value="1" />
		<input name="pagedown" type="button" id="10" value="1" />
		<input name="pageup" type="button" id="11" value="-1" />
		<input name="right" type="button" id="5" value="1" />
		<input name="select" type="button" id="0" value="1" />
		<input name="start" type="button" id="3" value="1" />
		<input name="up" type="button" id="4" value="-1" />
	</inputconfig>
 
</inputlist>

Gamepad für RetroArch

Editiere hierfür die Datei ~/.config/retroarch/retroarch.cfg.
Hier muss der input für Player1 an die Knöpfe des Pads angepasst werden.
Eingetragen wird immer in den Erweiterungen _btn (Knopf) und _axis (Joysticks).

Die Einträge für meinen PS3-Controller sehen dann so aus:

input_player1_b = "z"
input_player1_b_btn = "14"
input_player1_b_axis = "nul"
input_player1_y = "a"
input_player1_y_btn = "12"
input_player1_y_axis = "nul"
input_player1_select = "rshift"
input_player1_select_btn = "0"
input_player1_select_axis = "nul"
input_player1_start = "enter"
input_player1_start_btn = "3"
input_player1_start_axis = "nul"
input_player1_up = "up"
input_player1_up_btn = "4"
input_player1_up_axis = "-1"
input_player1_down = "down"
input_player1_down_btn = "6"
input_player1_down_axis = "+1"
input_player1_left = "left"
input_player1_left_btn = "7"
input_player1_left_axis = "-0"
input_player1_right = "right"
input_player1_right_btn = "5"
input_player1_right_axis = "+0"
input_player1_a = "x"
input_player1_a_btn = "13"
input_player1_a_axis = "nul"
input_player1_x = "s"
input_player1_x_btn = "15"
input_player1_x_axis = "nul"
input_player1_l = "q"
input_player1_l_btn = "10"
input_player1_l_axis = "nul"
input_player1_r = "w"
input_player1_r_btn = "11"
input_player1_r_axis = "nul"
input_player1_l2 = "nul"
input_player1_l2_btn = "8"
input_player1_l2_axis = "nul"
input_player1_r2 = "nul"
input_player1_r2_btn = "9"
input_player1_r2_axis = "nul"

Außerdem lege ich hier „Hotkeys“ fest, mit denen ich die Emulation beenden, und zur EmulationStation zurückkehren kann:

input_enable_hotkey_btn = "16" # PS3-Knopf
input_exit_emulator_btn = "3"  # Start-Knopf

Wenn ich jetzt während der Emulation auf den PS3-Knopf gedrückt halte, und dann den Start-Knopf drücke, gelange ich zurück zu Emulationstation.

Die Einstellungen gelten für sämtliche libretro-Plugins.

Gamepad für mupen64plus

Editiere hierfür die Datei /usr/share/mupen64plus/InputAutoCfg.ini.
Hier sollte fast alles richtig sein.
Ich habe sie so verändert, dass an meinem PS3-Controller die „L2“-Taste zur „Z“-Taste wird, und die „R2“-Taste zum Hotbutton.
Hierfür habe ich den Bereich [PLAYSTATION(R)3 Controller] wie folgt angepasst:

[PLAYSTATION(R)3 Controller]
[Sony PLAYSTATION(R)3 Controller]
[Sony Computer Entertainment Wireless Controller]
[SHENGHIC 2009/0708ZXW-V1Inc. PLAYSTATION(R)3Conteroller]
plugged = True
plugin = 2
mouse = False
AnalogDeadzone = 4096,4096
AnalogPeak = 32768,32768
DPad R = button(5)
DPad L = button(7)
DPad D = button(6)
DPad U = button(4)
Start = button(3)
Z Trig = button(8)
B Button = button(15)
A Button = button(14)
C Button R = axis(2+)
C Button L = axis(2-)
C Button D = axis(3+)
C Button U = axis(3-)
R Trig = button(11)
L Trig = button(10)
Mempak switch =
Rumblepak switch =
X Axis = axis(0-,0+)
Y Axis = axis(1-,1+)

Der Hotbutton selbst wird in der Datei ~/.config/mupen64plus/mupen64plus.cfg aktiviert:

# Joystick event string for stopping the emulator
Joy Mapping Stop = "J0B9"

J0 bedeutet „Joystick 0“, B9 bedeutet „Button 9“ (ist beim PS3-Controller R2).
Drückt man nun während der Emulation „R2“, gelangt man zurück zur EmulationStation.

Fertig!

Fertig!
Jetzt kann ich emulationstation starten und meine alten ROMs zocken!

Weblinks

Posted in Arch, ubuntuusers | 1 Comment
« Older