streamer-ds is a homebrew application that is able to stream desktop to the Nintendo DS created by Daniel Zalega (aka dbeef).
How to use
- Create hotspot on your laptop.
- Run .nds file on your NDS.
- Connect to your hotspot on your NDS via the .nds file.
- Run the python script: desktop_client.py.
How it works
NDS opens port 8080, python script connects PC to it, then:
- Python makes screenshot, resizes it to 256px or 128px (depends how smooth transmition you want, 256px takes ~0.6s on frame, 128px ~0.3s).
- Calls grit to make a 16 bit, lz77 compressed raw binary version.
- Sends image size to the NDS.
- Sends image.
- Receives ACK character from NDS.
How to make WIFI hotspot
- In Ubuntu open Network Connections > Add New.
- Go to Wi-Fi security - NDS supports only WEP security (note that it's dangerous to beacon that poorly secured network all the time, use this hotspot only when playing with your NDS), select WEP 40/128 bit key (Hex or ASCII).
- Select some random 5 character (only digits) password.
- In Wi-Fi tab select Mode to Hotspot.
- Save it, then open Network.
- Click Connect to to a hidden network.
- Select network that you've just created (by default its name will be hotspot).
- You're done, if you were previously connected with another network via wifi you'll be disconnected.
- Now you can connect to this network through your NDS.
Since it only sends lz77 compressed bitmaps through the network, you won't be suprised that for a 2004 portable console that much of bytes will be a shock therapy. On average it's somewhere between 10-20 kB per 256px frame and 5-10 per 128px frame.
Every frame must be decompressed on NDS (it has a dedicated hardware for that so it's not that bad in this task) and that's the thing that takes most of the time (around 2/3 of frame time).
Attempts have been made to send non-compressed bitmaps but it took around 80kB per each and it took even more time (this time the WiFi capabilities of the NDS were the bottleneck).
Q. Can I control my desktop through this app?
You could do it though an alternative version (can be found on this video, however capturing input only occur every frame due to the absent of multiple threads on NDS, which means it will happen every ~0.3 second and not practical.
If you're interested only in capturing key input (without the video part), you can use another program pc-controller-ds.
Streaming desktop to the 2004 NintendoDS - Smooth, stable 3 fps (dbeef)
Streaming desktop to the 2004 NintendoDS - Little performance improvement (dbeef)
- Author's website - https://dbeef.lol
- GitHub - https://github.com/dbeef/streamer-ds
- GBAtemp - https://gbatemp.net/threads/streaming-pc-desktop-to-nds.512965