Share 3DS Screenshots to macOS over Wifi with Ruby

File upload form browse button

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

  1. This stuff works for me on macOS Mojave (v10.14) with ruby v2.3. YMMV for other operating system or ruby versions.

  2. 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

  1. Download a copy of my share-screenshot.rb ruby 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
  2. 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
    ...
    
  3. 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.

  4. Make sure your mac and 3DS are connected to the same wifi router.

  5. 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

  6. 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:

    http://192.168.0.100:8000
    
  7. In your 3DS browser, you should see a file upload form with a Browse… button like this:

    File upload form browse button

    Tap Browse…

  8. Select the screenshot you want to share to your mac and tap Confirm:

    Selecting a screenshot in 3DS file browser

  9. 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:

    File upload form with selected file name

    Tap Submit

  10. If it worked, the file should be saved into the Downloads folder on your mac, like this:

    3DS screenshot

    …and the file upload form should show a success message like this:

    File upload form with success message

    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.

  11. 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.

  12. 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.
    $
    

4/23/2020