Como conectar-se a um compartilhamento SMB do 3DS no Linux?

Como conectar-se a um compartilhamento SMB do 3DS no Linux?

O novo 3DS da Nintendo (“novo” faz parte do nome) tem a capacidade de expor uma parcela SMB de seu cartão micro SD.

Ele pede que você defina um nome para o 3DS aparecer, além de um nome de usuário e uma senha. A seguir, suponha que eu nomeei o dispositivo my3dse o nome de usuário é myuser. Além disso, dei a ele um IP estático - digamos que seja 1.2.3.4para exemplos. Posso fazer ping neste IP com sucesso.

No Windows, funciona sem problemas. Se eu entrar \\my3dsno Explorer ele mostra um único compartilhamento chamado "microSD" e permite acesso aos seus arquivos.Não foi necessário instalar nada no Windows, ele apenas vê da mesma forma que qualquer outra pasta compartilhada.
Nota importante: Quando faço isso, o 3DS mostra “Conectado ao PC” na tela.Nenhum dos métodos que tentei no Linux produziu qualquer resposta na tela do 3DS, provavelmente indicando falha na comunicação desde o início.

A seguir estão os diferentes métodos que tentei e a resposta para cada um deles. Estou usando a edição KDE de 64 bits do Linux Mint.

1) Usando o Golfinho
Método:Inserindo smb://my3ds, smb://my3ds/microSDou na barra de smb://myuser@my3dsendereçosmb://myuser@my3ds/microSD
Resposta:O Dolphin exibe "carregando pasta" por um tempo e depois expira.

Método:O acima, mas usando 1.2.3.4em vez demy3ds
Resposta:Dolphin diz que a pasta não existe.

2) Usandomount -t cifs
Usando mount -t cifse o nome da máquina:

$ 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)

Nota: O IP mostrado acima é aquele para o qual meu ISP redireciona nomes de host inválidos. Em outras palavras, meu roteador não consegue resolver problemas my3ds.

Usando mount -t cifse o IP estático:

$ 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=********

...e aqui está. Não faz nada até que eu pressione Ctrl+C. O monitor do sistema mostra que o processo "mount.cifs" está em suspensão no disco e permanece mesmo após Ctrl + C. Mesmo rodar killall -9 mount.cifscomo root não os impede!

3) Usando smbclient

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

Nenhuma resposta, apenas retorna.É a mesma coisa se eu usar o 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)

É estranho que outros métodos pareçam não conseguir resolver o nome, mas este mostra que não consegue resolver o IP.

De acordo comum comentário no Reddit, o Nautilus pode se conectar. Instalei o Nautilus e tentei, mas ainda falhou com o tempo limite, assim como o Dolphin.

Alegadamente, os usuários do Mac OSX se conectaram usando o protocolo cifs:// e não smb://. Isso parece ser o equivalente a usar a versão 1.0 com mount -t cifs, que é o padrão, mas também tentei especificá-lo explicitamente com vers=1.0e não fez diferença.

Existe algum outro método ou configuração para mount.cifs ou smbclient que eu possa tentar? Alguém pode explicar por que não funciona?

EDITAR:Conforme solicitado, a saída de smbclient -L:

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

Além disso, parte de um tcpdump do Dolphin tentando se conectar, dado o IP (0,100 é o PC, 0,30 o 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  [email protected]$...
    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..<..@[email protected]
    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..(..@[email protected]
    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..@[email protected]
    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.....

EDITAR 2:Há algum progresso. Seguindo o conselho dehttps://askubuntu.com/questions/302159/ubuntu-13-04-will-not-connect-to-share-network-drivefez o Dolphin pedir um nome de usuário e senha em vez de apenas expirar. No entanto, ele continua pedindo isso indefinidamente.
Cada vez que isso acontece, a tela do 3DS muda para o status “conectado” por um momento e depois volta.

smbclient agora tem uma saída diferente:

$ smbclient --user=myuser -L my3ds
Enter myuser's password: 
session setup failed: NT_STATUS_INVALID_NETWORK_RESPONSE

Responder1

sudo mount.cifs //3DS-3885/microSD -o user=3dsUser,password=3dsPass,ip=3dsIP,servern=3DS-3885,uid=linuxUser,gid=users,nounix,vers=1.0 mountPoint

Então, passei alguns meses atrás forçando brutalmente todas as opções CIFs para tentar fazê-las funcionar e foi isso que descobri que funciona.

A opção importante é "servern"

Quando digo que funciona, quero dizer que funciona uma vez, então você tem que desmontar e reconectar ...

Eu apenas o uso para copiar jogos únicos ocasionalmente.

Responder2

A informação importante aqui é que embora você possa montar o compartilhamento Nintendo usando este comando cifs, você não deve nem tentar "ls" dentro, o que desconectará o compartilhamento! Portanto, para transferir arquivos, basta montar o compartilhamento e copiar seus arquivos da linha de comando (você deve saber de cor a localização da pasta de destino), também não use o preenchimento automático!

informação relacionada