7

Nintendo's New 3DS ("new" is part of the name) has the ability to expose an SMB share of its micro SD card.

It asks you to define a name for the 3DS to appear as, and also a username and password. For the following, assume I've named the device my3ds and the username is myuser. Also, I've given it a static IP -let's say it's 1.2.3.4 for the examples. I can ping this IP successfully.

From Windows, it works with no problem. If I enter \\my3ds into Explorer it shows a single share named "microSD" and allows access to its files. It didn't need to install anything on the Windows end, it just sees it the same way as any other shared folder.
Important note: When I do that, the 3DS shows "Connected to PC" on its screen. None of the methods I've tried from Linux produced any response on the 3DS's screen, probably indicating communication fails early on.

The following are the different methods I've tried, and the response for each of them. I'm using the 64-bit KDE edition of Linux Mint.

1) Using Dolphin
Method: Entering smb://my3ds, smb://my3ds/microSD, smb://myuser@my3ds or smb://myuser@my3ds/microSD into the address bar
Response: Dolphin displays "loading folder" for a while then times out.

Method: The above, but using 1.2.3.4 instead of my3ds
Response: Dolphin says the folder does not exist.

2) Using mount -t cifs
Using mount -t cifs and the machine name:

$ sudo mount -t cifs //my3ds/microSD /media/3DS/ -o username=myuser
Password for myuser@//my3ds/microSD:
mount.cifs kernel mount options: ip={wrong IP},unc=\\my3ds\microSD,user=myuser,pass=********
mount error(115): Operation now in progress
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Note: The ip it shows above is the one my ISP redirects invalid hostnames to. In other words, my router can't resolve my3ds.

Using mount -t cifs and the static IP:

$ sudo mount -t cifs //1.2.3.4/microSD /media/3DS/ --verbose -o username=myuser
Password for myuser@//1.2.3.4/microSD:
mount.cifs kernel mount options: ip=1.2.3.4,unc=\\1.2.3.4\microSD,user=myuser,pass=********

...and here it hangs. It doesn't do anything until I Ctrl+C. System monitor shows that process "mount.cifs" is in disk sleep, and those remain even after Ctrl+C. Even running killall -9 mount.cifs as root doesn't stop them!

3) Using smbclient

$ smbclient --user=myuser \\\\my3ds\\
Enter myuser's password:

No response, it just returns. It's the same if I use the IP.

$ smbclient --user=myuser \\\\192.168.1.30\\microsd
Enter myuser's password:
Connection to 192.168.1.30 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)

It's strange that other methods seem like they can't resolve the name, but this one shows it can't resolve the IP.

According to a comment on Reddit, Nautilus can connect. I installed Nautilus and tried, but it still failed with a timeout, just like Dolphin.

Reportedly, Mac OSX users have connected by using the cifs:// protocol and not smb://. That seems to be the equivalent of using version 1.0 with mount -t cifs, which is the default, but I also tried to specify it explicitly with vers=1.0 and it made no difference.

Is there any other method, or setting for mount.cifs or smbclient that I may try? Can anyone explain why it fails to work?

EDIT: As requested, the output of smbclient -L:

$ smbclient --user=myuser -L my3ds
Enter myuser's password: 
Connection to my3ds failed (Error NT_STATUS_IO_TIMEOUT)

Also, part of a tcpdump from Dolphin trying to connect, given the IP (.100 is the PC, .30 the 3DS):

21:00:10.004622 ARP, Request who-has 192.168.1.30 tell 192.168.1.100, length 28
    0x0000:  0001 0800 0604 0001 4ceb 4294 e68e c0a8  ........L.B.....
    0x0010:  0164 0000 0000 0000 c0a8 011e            .d..........
21:00:10.007552 ARP, Reply 192.168.1.30 is-at 40:d2:8a:35:24:f2, length 28
    0x0000:  0001 0800 0604 0002 40d2 8a35 24f2 c0a8  ........@..5$...
    0x0010:  011e 4ceb 4294 e68e c0a8 0164            ..L.B......d
21:00:10.007590 IP 192.168.1.100.60644 > 192.168.1.30.139: tcp 0
    0x0000:  4500 003c a0bb 4000 4006 162e c0a8 0164  E..<..@.@......d
    0x0010:  c0a8 011e ece4 008b 550d 6daa 0000 0000  ........U.m.....
    0x0020:  a002 7210 d4e3 0000 0204 05b4 0402 080a  ..r.............
    0x0030:  ffff cd11 0000 0000 0103 0307            ............
21:00:10.019595 IP 192.168.1.30.139 > 192.168.1.100.60644: tcp 0
    0x0000:  4500 0030 0964 4000 4006 ad91 c0a8 011e  E..0.d@.@.......
    0x0010:  c0a8 0164 008b ece4 67a2 d9fd 550d 6dab  ...d....g...U.m.
    0x0020:  7012 ffff 0dd8 0000 0204 0550 0101 0402  p..........P....
21:00:10.019726 IP 192.168.1.100.60644 > 192.168.1.30.139: tcp 0
    0x0000:  4500 0028 a0bc 4000 4006 1641 c0a8 0164  E..(..@.@..A...d
    0x0010:  c0a8 011e ece4 008b 550d 6dab 67a2 d9fe  ........U.m.g...
    0x0020:  5010 7210 c827 0000                      P.r..'..
21:00:10.019864 IP 192.168.1.100.60644 > 192.168.1.30.139: tcp 72
    0x0000:  4500 0070 a0bd 4000 4006 15f8 c0a8 0164  E..p..@.@......d
    0x0010:  c0a8 011e ece4 008b 550d 6dab 67a2 d9fe  ........U.m.g...
    0x0020:  5018 7210 380d 0000 8100 0044 2044 4244  P.r.8......D.DBD
    0x0030:  4a44 4343 4f44 4244 4744 4943 4f44 4243  JDCCODBDGDICODBC
    0x0040:  4f44 4444 4143 4143 4143 4143 4100 2045  ODDDACACACACA..E
    0x0050:  4845 4645 5046 4345 4845 4643 4e45 4f44  HEFEPFCEHEFCNEOD
    0x0060:  4644 4646 4445 4d43 4143 4143 4141 4100  FDFFDEMCACACAAA.
21:00:10.022602 IP 192.168.1.30.139 > 192.168.1.100.60644: tcp 0
    0x0000:  4500 0028 0965 4000 4006 ad98 c0a8 011e  E..(.e@.@.......
    0x0010:  c0a8 0164 008b ece4 67a2 d9fe 550d 6df3  ...d....g...U.m.
    0x0020:  5010 ffb7 3a38 0000                      P...:8..
21:00:10.022832 IP 192.168.1.30.139 > 192.168.1.100.60644: tcp 5
    0x0000:  4500 002d 0966 4000 4006 ad92 c0a8 011e  E..-.f@.@.......
    0x0010:  c0a8 0164 008b ece4 67a2 d9fe 550d 6df3  ...d....g...U.m.
    0x0020:  5018 ffb7 3729 0000 8300 0001 80         P...7).......
21:00:10.022894 IP 192.168.1.100.60644 > 192.168.1.30.139: tcp 0
    0x0000:  4500 0028 a0be 4000 4006 163f c0a8 0164  E..(..@.@..?...d
    0x0010:  c0a8 011e ece4 008b 550d 6df3 67a2 da03  ........U.m.g...
    0x0020:  5010 7210 c7da 0000                      P.r.....
21:00:10.023078 IP 192.168.1.100.60644 > 192.168.1.30.139: tcp 0
    0x0000:  4500 0028 a0bf 4000 4006 163e c0a8 0164  E..(..@.@..>...d
    0x0010:  c0a8 011e ece4 008b 550d 6df3 67a2 da03  ........U.m.g...
    0x0020:  5011 7210 c7d9 0000                      P.r.....
21:00:10.023268 IP 192.168.1.100.60645 > 192.168.1.30.139: tcp 0
    0x0000:  4500 003c 9181 4000 4006 2568 c0a8 0164  E..<..@.@.%h...d
    0x0010:  c0a8 011e ece5 008b fd08 5c97 0000 0000  ..........\.....
    0x0020:  a002 7210 3df5 0000 0204 05b4 0402 080a  ..r.=...........
    0x0030:  ffff cd16 0000 0000 0103 0307            ............
21:00:10.023588 IP 192.168.1.30.139 > 192.168.1.100.60644: tcp 0
    0x0000:  4500 0028 0967 4000 4006 ad96 c0a8 011e  E..(.g@.@.......
    0x0010:  c0a8 0164 008b ece4 67a2 da03 550d 6df3  ...d....g...U.m.
    0x0020:  5011 ffb7 3a32 0000                      P...:2..
21:00:10.023642 IP 192.168.1.100.60644 > 192.168.1.30.139: tcp 0
    0x0000:  4500 0028 a0c0 4000 4006 163d c0a8 0164  E..(..@.@..=...d
    0x0010:  c0a8 011e ece4 008b 550d 6df4 67a2 da04  ........U.m.g...
    0x0020:  5010 7210 c7d8 0000                      P.r.....

EDIT 2: There is some progress. Following the advice from https://askubuntu.com/questions/302159/ubuntu-13-04-will-not-connect-to-share-network-drive has made Dolphin ask for a user name and password instead of just timing out. However, it keeps asking for it again and again endlessly.
Every time this happens, the 3DS's screen changes to the "connected" status for a moment and then back.

smbclient now has a different output:

$ smbclient --user=myuser -L my3ds
Enter myuser's password: 
session setup failed: NT_STATUS_INVALID_NETWORK_RESPONSE
  • 1
    Are you sure it's a SMB share? On Windows, `\\` handles both SMB and WebDAV. – user1686 Oct 16 '15 at 7:48
  • Can you add (1) some tcpdump output from a connection attempt, and (2) the output of smbclient -L hostname? – Flup Oct 16 '15 at 9:34
  • @grawity: Thanks for the suggestion, I didn't know about webdav. Trying that protocol also failed. – George T Oct 16 '15 at 20:09
  • @Flup: I added those to the post. -L just times out. – George T Oct 16 '15 at 20:23
  • 2
    For the record, it doesn't work with smbclient from samba 4.4.0 either. – sch Apr 10 '16 at 12:27
9
sudo mount.cifs //3DS-3885/microSD -o user=3dsUser,password=3dsPass,ip=3dsIP,servern=3DS-3885,uid=linuxUser,gid=users,nounix mountPoint

So I spent a while a few months back brute forcing every cifs option to try to get it to work and this is what I found that kind of works.

The important option is "servern"

When I say kind of works I mean it works once then you have to unmount and reconnect...

I just use it for copying single games occasionally.

  • 1
    Many thanks for the suggestion, it worked! However I don't think I should accept it as the answer, since an ls is enough to make it stop working, like you said. – George T Oct 22 '15 at 17:11
  • 1
    @GeorgeT probably necrobumping but have you triend the option vers=1.0 – carpinchosaurio Aug 20 '18 at 16:46
  • What exactly is "3DS-3885"? Network name of your 3DS? – ratijas Nov 30 '18 at 22:40
  • "3DS-3885" is the name of the 3DS as shown on the microSD Management page. In addition, to get the above to work I had to force it to use Samba 1.0 using ",vers=1.0" – Kelly Bang Jul 26 '19 at 6:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.