RNDS-Stream is een experimentele homebrew-applicatie voor de Nintendo DSi die remote game streaming mogelijk maakt. De software is geschreven met RubyNDS en maakt gebruik van MJPEG via de JPEGDEC-decoder en GStreamer om een stream van maximaal 20 fps te realiseren. Toetsenbord- en muisinput worden beheerd via ydotool en een wrapper genaamd Rubydotool.
Installatie en Vereisten:
- PC: Getest op Fedora KDE; vereist
wmctrl, GStreamer en de installatie van de RNDS-Stream Flatpak.
- DSi: De
.nds ROM en een tekstbestand met het lokale IP-adres van de pc moeten op de microSD-kaart van de flashcart staan.
- Systeem: Specifieke uinput-rechten zijn nodig op de pc om input te kunnen verzenden.
Beperkingen: Het project heeft diverse technische limieten, waaronder een maximale decodeersnelheid van 20 fps, een lage resolutie waardoor tekst moeilijk leesbaar is, en hardcoded toetscombinaties. Vanwege het ontbreken van beveiliging is het enkel geschikt voor gebruik binnen het lokale netwerk.
RNDS-Stream
Hoe werkt het?
De homebrew SDK voor de DSi, RubyNDS, bevat ondersteuning voor JPEGDEC, een kleine en snelle JPEG-decoder. Hiermee kan MJPEG worden geïmplementeerd, een formaat dat al wordt gebruikt voor basisvideo-streaming.
Met de juiste GStreamer-instellingen is een speelbare stream van 20 fps met een relatief lage latentie mogelijk (met frameskipping). De kwaliteitsinstellingen kunnen eenvoudig worden gewijzigd in het GStreamer-helperscript. Streaming op de volledige DSi-resolutie is mogelijk, maar dit resulteert in een lagere framerate van 10 tot 15 fps.
De besturing via muis en toetsenbord wordt afgehandeld door ydotool, via een eenvoudige wrapper genaamd Rubydotool. Voor het functioneren van ydotool zijn gebruikersrechten vereist; dit wordt verder toegelicht in de installatiehandleiding.
Daarnaast worden de Steam-bibliotheek en Prism Launcher-instanties automatisch gescand.
Installatie
Belangrijke opmerkingen
- Deze software is uitsluitend getest op Fedora KDE.
- Window parsing werkt alleen op X11/xWayland. Vensters in pure Wayland worden niet gedetecteerd.
- De server draait op het lokale netwerk. Er zijn geen beveiligingsimplementaties aanwezig, waardoor het niet wordt aanbevolen om dit remote over het internet te gebruiken.
Stap 1: Toetsenbord- en muisinput controleren
Controleer of je pc toetsenbord- en muisinput kan verzenden met het volgende commando:
test -w /dev/uinput && echo "Ready" || echo "Setup needed"
Als de uitvoer "Ready" is, kun je direct doorgaan naar de volgende stap. Als er "Setup needed" staat, voer dan de volgende commando's uit:
printf '%s\n' 'KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess", OPTIONS+="static_node=uinput"' | sudo tee /etc/udev/rules.d/60-rnds-stream-uinput.rules >/dev/null
sudo udevadm control --reload-rules
sudo reboot
Stap 2: Bestanden op de DSi plaatsen
- Plaats
RNDS-Stream.nds op de microSD-kaart van je flashcart.
- Maak een bestand genaamd
rnds-stream.txt aan in de root van dezelfde kaart. Voeg hierin enkel het lokale IP-adres van je pc toe, bijvoorbeeld: 192.168.1.100.
Let op: De ROM leest dit bestand via fat:/, dus het moet op de kaart staan die door de flashcart wordt gebruikt, en niet op de interne SD-kaart van de DSi.
Stap 3: Software op de pc installeren
Installeer wmctrl en GStreamer op de pc. De Flatpak maakt gebruik van de tools van het host-systeem om game-vensters vast te leggen. Op Fedora kan dit als volgt:
sudo dnf install wmctrl gstreamer1 gstreamer1-plugins-good
Stap 4: De Flatpak installeren en uitvoeren
Installeer en start de Flatpak op de pc:
flatpak install --user RNDS-Stream.flatpak
flatpak run io.github.gavff64.RNDSStream
Stap 5: Starten
Open RNDS-Stream.nds op de DSi en kies een spel.
Beperkingen en problemen
- De server lijkt niet te herkennen wanneer de client de verbinding verbreekt.
- Er is mogelijk een fundamentele limiet van 20 fps vanwege de decodeersnelheid.
- De server moet handmatig worden herstart vanaf de pc om van spel te wisselen.
- De toetscombinaties (keybinds) zijn hardcoded.
- De resolutie is inherent beperkt, waardoor tekst en UI moeilijk te zien zijn.
- De muis moet worden vergrendeld aan het venster.
RNDS-Stream
Hoe werkt het?
De homebrew SDK voor de DSi, RubyNDS, bevat ondersteuning voor JPEGDEC, een kleine en snelle JPEG-decoder. Hiermee kan MJPEG worden geïmplementeerd, een formaat dat al wordt gebruikt voor basisvideo-streaming.
Met de juiste GStreamer-instellingen is een speelbare stream van 20 fps met een relatief lage latentie mogelijk (met frameskipping). De kwaliteitsinstellingen kunnen eenvoudig worden gewijzigd in het GStreamer-helperscript. Streaming op de volledige DSi-resolutie is mogelijk, maar dit resulteert in een lagere framerate van 10 tot 15 fps.
De besturing via muis en toetsenbord wordt afgehandeld door ydotool, via een eenvoudige wrapper genaamd Rubydotool. Voor het functioneren van ydotool zijn gebruikersrechten vereist; dit wordt verder toegelicht in de installatiehandleiding.
Daarnaast worden de Steam-bibliotheek en Prism Launcher-instanties automatisch gescand.
Installatie
Belangrijke opmerkingen
- Deze software is uitsluitend getest op Fedora KDE.
- Window parsing werkt alleen op X11/xWayland. Vensters in pure Wayland worden niet gedetecteerd.
- De server draait op het lokale netwerk. Er zijn geen beveiligingsimplementaties aanwezig, waardoor het niet wordt aanbevolen om dit remote over het internet te gebruiken.
Stap 1: Toetsenbord- en muisinput controleren
Controleer of je pc toetsenbord- en muisinput kan verzenden met het volgende commando:
test -w /dev/uinput && echo "Ready" || echo "Setup needed"
Als de uitvoer "Ready" is, kun je direct doorgaan naar de volgende stap. Als er "Setup needed" staat, voer dan de volgende commando's uit:
printf '%s\n' 'KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess", OPTIONS+="static_node=uinput"' | sudo tee /etc/udev/rules.d/60-rnds-stream-uinput.rules >/dev/null
sudo udevadm control --reload-rules
sudo reboot
Stap 2: Bestanden op de DSi plaatsen
- Plaats
RNDS-Stream.nds op de microSD-kaart van je flashcart.
- Maak een bestand genaamd
rnds-stream.txt aan in de root van dezelfde kaart. Voeg hierin enkel het lokale IP-adres van je pc toe, bijvoorbeeld: 192.168.1.100.
Let op: De ROM leest dit bestand via fat:/, dus het moet op de kaart staan die door de flashcart wordt gebruikt, en niet op de interne SD-kaart van de DSi.
Stap 3: Software op de pc installeren
Installeer wmctrl en GStreamer op de pc. De Flatpak maakt gebruik van de tools van het host-systeem om game-vensters vast te leggen. Op Fedora kan dit als volgt:
sudo dnf install wmctrl gstreamer1 gstreamer1-plugins-good
Stap 4: De Flatpak installeren en uitvoeren
Installeer en start de Flatpak op de pc:
flatpak install --user RNDS-Stream.flatpak
flatpak run io.github.gavff64.RNDSStream
Stap 5: Starten
Open RNDS-Stream.nds op de DSi en kies een spel.
Beperkingen en problemen
- De server lijkt niet te herkennen wanneer de client de verbinding verbreekt.
- Er is mogelijk een fundamentele limiet van 20 fps vanwege de decodeersnelheid.
- De server moet handmatig worden herstart vanaf de pc om van spel te wisselen.
- De toetscombinaties (keybinds) zijn hardcoded.
- De resolutie is inherent beperkt, waardoor tekst en UI moeilijk te zien zijn.
- De muis moet worden vergrendeld aan het venster.