Share 3DS Screenshots to macOS over Wifi with Ruby
Sharing Nintendo 3DS Screenshots: By using a ruby script to make a local web server and file upload form, you can share 3DS screenshots to your macOS laptop over wifi.
Table of Contents
- Compatibility Notes
- Caution: Don’t Use This on Public Wifi
- Get Started Sharing 3DS Screenshots to Your Mac
This stuff works for me on macOS Mojave (v10.14) with ruby v2.3. YMMV for other operating system or ruby versions.
When I say 3DS, I mean compatible consoles in the 3DS family. I use a 2DS XL.
Caution: Don’t Use This on Public Wifi
This script is convenient, but it’s not safe for use on public networks. If you run the script while connected to public wifi, other people using the same wifi router could easily save files to your Downloads folder.
Get Started Sharing 3DS Screenshots to Your Mac
Download a copy of my
share-screenshot.rbruby script. The script starts a local web server with a file upload form. The server uses webrick from the ruby standard library, so you won’t need to install any extra gems.
If you want to: You may need to: View share-screenshot.rb right-click then pick Save As… Download share-screenshot.rb click Keep or Allow to get past a warning prompt from your browser
Open Terminal, and run the ruby script from the command line prompt:
$ ruby ~/Downloads/share-screenshot.rb [2020-04-23 18:05:16] INFO WEBrick 1.3.1 [2020-04-23 18:05:16] INFO ruby 2.3.7 (2018-03-28) [universal.x86_64-darwin18] [2020-04-23 18:05:16] INFO WEBrick::HTTPServer#start: pid=1959 port=8000 ...
The first time you run a ruby web server script on macOS, you may see a system dialog box prompt asking you for permission to let ruby listen for network connections. If that happens, click the button to allow the connection.
Make sure your mac and 3DS are connected to the same wifi router.
Check your mac’s IP address in Apple Menu > System Preferences > Network. You should see some text like:
“Wi-Fi is connected to … and has the IP address 192.168.0.100”
On your 3DS, open the internet browser and type the URL for HTTP port 8000 on your mac’s IP. For an IP address of 192.168.0.100, the link would be:
In your 3DS browser, you should see a file upload form with a Browse… button like this:
Select the screenshot you want to share to your mac and tap Confirm:
You should see the file upload form again. But, instead of “No file selected” next to the browse button, there should be a file name, like this:
If it worked, the file should be saved into the Downloads folder on your mac, like this:
…and the file upload form should show a success message like this:
If you delete old screenshots using the camera app on your 3DS, the 3DS will re-use those jpeg file names when you take more screenshots.
To prevent accidentally overwriting files, the script checks if the name of the file being shared from your 3DS matches a file that’s already in your Downloads folder.
If the new name matches an older file, the script resolves the conflict by adding a number to the new file’s name. That way, you can keep both files.
To share more screenshots, tap Go to the File Upload Form, then start over from tapping the Browse… button.
When you’re done sharing screenshots, go back to the Terminal window on your Mac where you ran the ruby script. You should see http request log messages—you can ignore them.
Click in the Terminal window so it will get keyboard focus, then type control-c to stop the ruby script. The result should look sort of like this:
... ^C[2020-04-23 19:47:06] INFO going to shutdown ... [2020-04-23 19:47:06] INFO WEBrick::HTTPServer#start done. $