Hacking (3)DS Download Play - Tunneling?

Steffan

Member
OP
Newcomer
Joined
Sep 7, 2006
Messages
5
Trophies
0
XP
139
Country
Hey everyone,

With Monster Hunter 3G not having online multiplayer, I started looking into ways to enable Download Play over the internet.(Also known as "tunneling")
Because if I can't play online, I won't have anyone to play with at all. And that makes me sad.

I found a tunneling program called Xlink Kai, which is used by PSP Monster Hunter players to play online with each other, but unfortunately it does not support either NDS or 3DS.
I believe the main reason for this program not having DS/3DS support is because setting up a connection between the PC and the console is too hard.

Now, if I recall correctly there used to be a thing called WifiMe, which was used to send some homebrew app to the DS using download play. Doesn't this mean that a connection between PC and DS is possible after all? It even let you send data from your PC to your DS, so to me it seems that WifiMe was pretty advanced for its time. (considering that was back in '06 or something)
The way I see it, if this WifiMe can be used to make the console think your PC is another DS, the DS could send the multiplayer data to the PC after which the software running on the PC sends it to the other player over the internet. Then when the other player receives this data, it gets passed on to their DS, allowing for DS Download Play over the internet.

Now, I have to say that I really don't know much about any of this, so I'm ready to be laughed at, scolded at and pissed on for even thinking this could be possible.
But hey, you never know, maybe we can make something work if we try.

I'd like to hear what others have to say on the subject.
 
  • Like
Reactions: 1 person

someonewhodied

Lazy Person
Member
Joined
Sep 21, 2008
Messages
871
Trophies
1
Age
28
XP
1,061
Country
United States
In theory, it could be possible with a nintendo wifi usb connector. I may still have mine somewhere. If i find it I'll take a look. I dont know much about how it works though, so i can't guarantee any results.


You could also take the wireless thingy (not sure if its a chip, antennae, or something else) out of a spare ds/3ds and with some knowledge of soldering and programming, make a program and the hardware for wireless play through apps. I doubt anyones gonna worry about that till the 3ds is at least hacked with basic stuff though.
 

KvinMoreaux

Member
Newcomer
Joined
Feb 23, 2012
Messages
18
Trophies
0
XP
52
Country
France
I think it was possible but really hard...

1st step listen comunications between 2 3ds (packet sniffing).

When you have enought data make a tool which can auto-detect, sniff and forward the data to another tool for resend the data other the air...
 

whofan

Member
Newcomer
Joined
May 17, 2009
Messages
9
Trophies
0
XP
93
Country
Finland
Tunneling raw 802.11 frames over the internet is very hard. The timing needs to be perfect and I think there's just too much latency over a typical internet connection to get the 3ds systems to communicate reliably. A 3ds simply won't accept packets that arrive too late. Streetpass might work timing-wise, but the 3ds also changes the mac address it uses in streetpass communications regularly.

Conclusion: It's hard but not impossible.
 
  • Like
Reactions: 1 person

AceWarhead

"Must Construct Additional Pylons"
Member
Joined
Apr 9, 2011
Messages
1,277
Trophies
0
XP
601
Country
United States
Tunneling raw 802.11 frames over the internet is very hard. The timing needs to be perfect and I think there's just too much latency over a typical internet connection to get the 3ds systems to communicate reliably. A 3ds simply won't accept packets that arrive too late. Streetpass might work timing-wise, but the 3ds also changes the mac address it uses in streetpass communications regularly.

Conclusion: It's hard but not impossible.
So basically what you're saying is the timing must be exact to the millisecond? Man, that would be a hard feat to accomplish...
 

ferofax

End of the World
Member
Joined
Jan 26, 2009
Messages
2,570
Trophies
0
Age
42
Location
Philippines
Website
nonwhatso.blogspot.com
XP
687
Country
i remember that's the case with DS wifi, which is why the Xlink Kai team gave up on the DS tunneler. the DS assumes you're near each other and therefore expects near-instant responses, something that's fairly hard to accomplish on the internet.
 

Tsukurimashou

Well-Known Member
Member
Joined
Oct 8, 2011
Messages
128
Trophies
0
Age
33
XP
202
Country
i remember that's the case with DS wifi, which is why the Xlink Kai team gave up on the DS tunneler. the DS assumes you're near each other and therefore expects near-instant responses, something that's fairly hard to accomplish on the internet.
I don't think it's really different than LAN with PC and hamachi did it.
 

Cyan

GBATemp's lurking knight
Former Staff
Joined
Oct 27, 2002
Messages
23,749
Trophies
4
Age
45
Location
Engine room, learning
XP
15,649
Country
France
The Local Wifi used by DS (and maybe 3DS too?), was tagged "NiFi".
It's a Wifi packet without the last TCP/IP layer as it doesn't require an internet connection.
NiFi can't be used with usual 802.11 drivers as they expect a fully formed packet ready for Internet communication.

It's not a problem from Hamachi/XlinkKai/etc., but a driver problem which prevent your card from seeing full correct packets.


SGStair (Stephen Stair) started a NiFi Tunneling program back when he developed the DS Wifi lib for homebrew use.
http://www.akkit.org/dstunnel/
Of course you will need a RT2500 chipset to enable WiiFi me driver for your computer to communicate with the DS before sending the data into the tunnel.


His project is currently inactive since 2006.
Maybe he could share it with interested programmers?
 
  • Like
Reactions: 2 people

Steffan

Member
OP
Newcomer
Joined
Sep 7, 2006
Messages
5
Trophies
0
XP
139
Country
The Local Wifi used by DS (and maybe 3DS too?), was tagged "NiFi".
It's a Wifi packet without the last TCP/IP layer as it doesn't require an internet connection.
NiFi can't be used with usual 802.11 drivers as they expect a fully formed packet ready for Internet communication.

It's not a problem from Hamachi/XlinkKai/etc., but a driver problem which prevent your card from seeing full correct packets.


SGStair (Stephen Stair) started a NiFi Tunneling program back when he developed the DS Wifi lib for homebrew use.
http://www.akkit.org/dstunnel/
Of course you will need a RT2500 chipset to enable WiiFi me driver for your computer to communicate with the DS before sending the data into the tunnel.


His project is currently inactive since 2006.
Maybe he could share it with interested programmers?
Exactly, this is what I mean.
When a connection between the DS and PC has been set up using a wireless adapter/card with the RT2500 chipset, the process of sending data over the internet should be nearly identical to how Kai does it with the PSP.
I believe the Nintendo Wifi USB adapter actually uses this chipset? Because if so, a lot of people probably already have the hardware needed to get this working.

Connecting the 3DS and PC is one thing, I'm sure it can be done, but what about actually sending the data over the internet? Unfortunately I know only very basic C++, so I can't really tell how hard it is to accomplish this.
If there really cannot be any delay, as ferofax said, it would be a hard task, but then again other tunneling software like Hamachi and Kai does exist, so this makes me wonder how hard it could really be.
Maybe I should try to contact this Stephen Stair guy and see what his stance is on this.
 

sychotix

Well-Known Member
Member
Joined
Jul 26, 2011
Messages
103
Trophies
0
XP
696
Country
United States
I think a much easier way of doing this would be to have a PC near the 3DS broadcasting the Download Play signal sniff all the packets, send them all to the desired PC, which then rebroadcasts those packets in order for the other 3DS to pick it up. Then have that PC retransmit all packets sent out as a reply (or however the download play process works) back the same way.

A cool idea, but alot less likely for this to happen, is to have programs that will simply broadcast pre-captured packets in order for download-play to happen, as about the closest alternative to pirating a game we will get at this point in time. The chances of the 3DS actually accepting such old packets are probably pretty slim, since the packets are probably timestamped and signed (thus we can't edit the timestamp).
 

pelago

Member
Member
Joined
Feb 20, 2006
Messages
1,019
Trophies
0
XP
565
Country
I think a much easier way of doing this would be to have a PC near the 3DS broadcasting the Download Play signal sniff all the packets, send them all to the desired PC, which then rebroadcasts those packets in order for the other 3DS to pick it up. Then have that PC retransmit all packets sent out as a reply (or however the download play process works) back the same way.
Eh? That's pretty much a description of tunneling, which is what we're talking about here. If the problem is that the 3DS won't accept a delay, though, then I can't see how this will work over the Internet.
 

akari212

Well-Known Member
Member
Joined
Dec 21, 2010
Messages
214
Trophies
0
Age
30
Location
Tokyo
XP
54
Country
DS assumes no hops were done while communicating DS-DS since it's a P-2-P connection. That's why it's impossible to be done without some heavily modified network schema. It has nothing to do with latency, because DS sucks maintaining it's latency. I got average of 52-100+ms while connected on Local WiFi network with 100% Signal / 97% Quality

As the one person said here. It's possible, but that would be really hard to do.
 

sychotix

Well-Known Member
Member
Joined
Jul 26, 2011
Messages
103
Trophies
0
XP
696
Country
United States
I think a much easier way of doing this would be to have a PC near the 3DS broadcasting the Download Play signal sniff all the packets, send them all to the desired PC, which then rebroadcasts those packets in order for the other 3DS to pick it up. Then have that PC retransmit all packets sent out as a reply (or however the download play process works) back the same way.
Eh? That's pretty much a description of tunneling, which is what we're talking about here. If the problem is that the 3DS won't accept a delay, though, then I can't see how this will work over the Internet.

There isn't that much of a delay when transmitting over the internet. I'm sure it would be unnnoticable to the 3DS, as long as they were broadcast the same way, and probably spoofed with the same MAC address.
 

RedJiggly

Well-Known Member
Member
Joined
Jun 8, 2011
Messages
215
Trophies
0
Location
There
XP
96
Country
Netherlands
I think a much easier way of doing this would be to have a PC near the 3DS broadcasting the Download Play signal sniff all the packets, send them all to the desired PC, which then rebroadcasts those packets in order for the other 3DS to pick it up. Then have that PC retransmit all packets sent out as a reply (or however the download play process works) back the same way.
Eh? That's pretty much a description of tunneling, which is what we're talking about here. If the problem is that the 3DS won't accept a delay, though, then I can't see how this will work over the Internet.

There isn't that much of a delay when transmitting over the internet. I'm sure it would be unnnoticable to the 3DS, as long as they were broadcast the same way, and probably spoofed with the same MAC address.
The delay would be about equivalent to the speed of your internet connection, right?
 

sychotix

Well-Known Member
Member
Joined
Jul 26, 2011
Messages
103
Trophies
0
XP
696
Country
United States
I think a much easier way of doing this would be to have a PC near the 3DS broadcasting the Download Play signal sniff all the packets, send them all to the desired PC, which then rebroadcasts those packets in order for the other 3DS to pick it up. Then have that PC retransmit all packets sent out as a reply (or however the download play process works) back the same way.
Eh? That's pretty much a description of tunneling, which is what we're talking about here. If the problem is that the 3DS won't accept a delay, though, then I can't see how this will work over the Internet.

There isn't that much of a delay when transmitting over the internet. I'm sure it would be unnnoticable to the 3DS, as long as they were broadcast the same way, and probably spoofed with the same MAC address.
The delay would be about equivalent to the speed of your internet connection, right?

Yes and no. You also have to take into consideration the time it takes for your computer to process the information, send it out, go through all the hops before your actual destination, the destination waiting till it can actually process that information, then actually processing it, then broadcasting it. This all should take a short amount of time irl though. Just think of sending an IM to someone right next to you. Its not instant, but pretty damn close.
 

pelago

Member
Member
Joined
Feb 20, 2006
Messages
1,019
Trophies
0
XP
565
Country
There isn't that much of a delay when transmitting over the internet. I'm sure it would be unnnoticable to the 3DS, as long as they were broadcast the same way, and probably spoofed with the same MAC address.
The delay will be a few tens of milliseconds at least, which might be enough for the 3DS to reject it as "not fast enough" as it might be expecting delays of only single-digit milliseconds. Still, it would be nice if someone could experiment with this a bit.
 

vashgs

Well-Known Member
Member
Joined
Feb 1, 2008
Messages
236
Trophies
0
XP
234
Country
United States
It's not too terribly difficult. The actual application is rather simple to write, you just need to interface with the hardware properly. The best case scenario, you get the correct hardware to sniff NiFi packets, you write a well-threaded application to interpret this data and package it nicely for transfer over the internet, then on the other end quickly unpackage it back into the form that the receiving DS is expecting. After all of that fun stuff, you interface with your hardware once more and transmit the packets to the receiving DS. If you've written your program well enough and you and your partner aren't on separate continents, perhaps the delay will be small enough that the DS still accepts it. As we all know, best case scenario doesn't exist, so when the delay is rejected, you'll have to look into editing timestamps. Editing the timestamps won't be possible in the case of the 3DS (yet), but even so, this might be an interesting DS project (since it apparently hasn't been done before?). Best of luck!

P.S. Just as an added bit of fun, if you were to look into the project for the DS (where full debuggers are readily available), you could simply modify the timestamp check on the DS itself, rather than bother with altering each and every packet. There may be a bit of noticeable lag, but it could still be possible.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Veho @ Veho: Don't walk towards the light!