Hello gbatemp!
A few days ago I ended up modding my 3DS XL (well, again, but a better way) with a much cleaner USB-based mod...
Story and Explanation:
I assume a lot of you would know of the great nand flash dump (3ds xl) thread that was created a while ago with all the info about connecting your 3DS XL's eMMC NAND via the 3DS's motherboard testpoints to an SD card reader to be able to read and write to said NAND, mainly to make backup dumps and restore them if necessary.
This is most useful for one with a 3DS XL containing a vulnerable system software version for homebrew (version 4.5 or lower), as it can allow to make a complete backup of the 3DS's NAND including the vulnerable system software, and then also reflash and actually downgrade the system back to that system software version should the system be updated past a vulnerable version for whatever reason and the user end up requiring the vulnerable system version once more.
Anyways, as the thread has progressed and people have made their own implementations of accomplishing this task, I noticed a certain trend in this, mainly that they were using their own connectors that were exposing the motherboard testpoint connections directly to outside of the 3ds, and then having to connect that to an SD reader before connecting to a computer (or connecting to an SD slot on teir computer, which also requires they build a custom cable to achieve this. I also did this myself at first, using a Sparkfun brand microSD sniffer combined with a FFC cable plus corresponding connectors that I pulled from a dead printer.
But when I used it I had to be careful since the FFC cable from the mobo to the sniffer was rather short, and it had to go into a card reader before going into a computer. So it was all very tedious to use. After a while the FFC cable's connector wore out and eventually broke after repeated use too. So this was a problem.
Another problem I noticed was in regards to people using microUSB ports in their implementations. I liked the idea of using a microUSB port just like a lot of other consumer electronics, but they were just using a microUSB form factor port, connected directly to the 3DS mobo's eMMC testpoints, meaning SD protocol wa going over them, not USB, along with a custom cable with a USB plug at one end, connected to an SD adapter or reader. Also, the pinout depended on the pinout the modder decided to make for it. This could be dangerous is say, someone were to connect something that was actual USB to this port, as the setup is NOT USB. (I do not know the specifics of what would happen, but I certainly do not like the idea if accidentally connecting power directly to a data or signal line for my 3DS's NAND at any rate)
I just so happened to have bought a few of these lovely super tiny microSD readers from DealExtreme, and being so small, I wondered if I could open it up and use the internal circuitry of this inside of my 3DS XL, in the same fashion as a modchip inside of any other console. So I ripped it open and found out that it does. The microSD reader's PCB sits quite nicely on top of the 3DS XL's NAND chip along with something to hold it there like blu-tak or glue.
I did make a post about this tiny microSD reader back in the original 3DS XL Nand Dumping thread but it looks like it got buried though Dunno if people were interested in it or not.
Anyways, I dediced to try out my idea for myself. using the info on 3DBrew, and in the nand flash dump (3ds xl) thread, along with some info about SD and USB from wikipedia, I put it all together. Sat the microSD reader PCB on top of the NAND chip, and the microUSB port in the corner, replacing one of the wrist strap connector things (they come out easily). When testing, it worked, blue boot error screen on 3DS and device showing on my computer.
What I did notice though, was that because of this, the 3DS itself could not be used normally as the microSD reader was interfering with the 3DS's operation. The main task now was to be able to allow the 3DS to operate normally regardless of the microSD reader. I read here somewhere that people were saying that a reader's CLK signal will interfere with the 3DS's CLK signal, so I disconnected that signal line and tested to see if it would boot fine. Instead got bluescreen. Also disconnected CMD signal line, leaving only DAT lines and GND connected, and 3DS booted up fine. Also tested with CLK connected but CMD disconnected, but another bluescreen. So my conclusion from these tests was that BOTH CMD and CLK signals from the microSD reader interfered with the 3DS's signals.
So I tried putting a switch in between the microSD reader and the 3DS mobo's testpoints on the CMD and CLK lines. I did not have any DPST style switches, so I had to use 2 SPDT switches I had and stick them together to use as one big switch, one on each of those signal lines. Tested it out... switches set to ON, and the 3ds showed bluescreen, and computer saw the reader and could read and write the NAND. Switches set to OFF, and the 3DS booted up fine and operated normally. Problem solved! I decided to sit those switches in the other wrist strap connector's position.
And that is pretty much it. This way, the 3DS XL's eMMC NAND is accessible on a computer via USB. No custom cables or sockets, no need for a bulky card reader outside of the 3DS, no danger of damaging the 3DS itself using one cable and socket type to do something that it should not.
Some Pros and Cons to this mod (that I can think of at time of writing):
Pros:
- Much cleaner mod, incorporates card reader into 3DS and does not disrupt normal operation when not in use
- No need to open console every time to use it
- No need to use fragile cables (like FFC) externally
- No need to cut holes into original casing in order to avoid reopening it every time (unless you want to, in the case of preference for switch and USB port placement)
- interfaces with computer via USB, no need for custom cables
- also no danger of damaging 3DS NAND due to connecting USB device directly to SD testpoints
Cons:
- No direct low-level SD access to NAND for things that may need it (suc as Raspberry Pi for unbricking a GW Brick, would have to open 3DS up again instead)
- Wrist strap connection points are no longer available, removed to fit USB port and switch (subject to your preference of where USB port and switch are placed)
Here are some links and stuff:
Parts:
MicroUSB ports I used
Had to cut off overhanging metal bits to make it fit into 3DS XL case, but the pin legs on these have a bit of length, making for an easier solder job.
Switches I used
Had to use two as I did not know I had to control two lines at the time of purchase. Perhaps a bettter DPST switch would be of better use.
The lovely super tiny microSD card reader I used as the heart of this project
I just love these things! Grab this reader, pull it apart, and remove the metal contacts that touch a microSD card, along with the plastic bit that goes on top of said pins, and the PCB is then ready to be soldered into the 3DS. Kinda like a modchip
Information:
USB Pinouts (Wikipedia)
SD Pinouts (Wikipedia)
^ Look at "Four-Bit SD Bus Mode"
3DS XL SD Testpoint pinouts (3DBrew)
^ GND can be either the giant point to left of testpoints in image, where Cart Slot Casing is held down to mobo, or where big points are unpopulated in bottom-right corner of image (top big point, not bottom one)
Connection:
- Pretty straightforward really. Just wire microUSB port to USB plug connector on microSD reader PCB and 3DS testpoints to microSD reader pads, both according to the SD, USB, and 3DS testpoint pinouts.
- Make sure you have a switches on CMD and CLK lines, one each, or preferably one DPST switch to control both lines simultaneously.
- USB points on reader are like a big USB cable plug, but on a PCB. SD points on reader are like a microSD card, just make sure not to get this part all upside-down!
- Reader was held down on top of NAND chip with some Blu-Tak.
- MicroUSB port was held in with hot glue.
- Switches were stuck together with Blu-Tak to make one big switch and held in casing with some Blu-Tak and a small amount of hot glue (wwas not sure if glue would mess with switch's moving parts).
Now for some pictures: (WARNING! Big Pictures in spoiler tags!)
Main picture of the whole project completed:
Switch close-up (not best image quality)
MicroUSB port close-up
Close-up of microSD reader connected to 3DS with some basic labelling
3DS operating normally... (switches set to OFF)
Turn 3DS off, push switches to ON with stylus... (cannot really see though...)
Super happy fun time!!! (bluescreen on 3DS, NAND seen by computer, time to read/write)
Read speed around 16-17 MB/s thanks to using all DAT lines (original mod topped at about 5 MB/s)
Write speed is around 12.5 MB/s too
...and that is pretty much it!
As always...
Enjoy!
A few days ago I ended up modding my 3DS XL (well, again, but a better way) with a much cleaner USB-based mod...
Story and Explanation:
I assume a lot of you would know of the great nand flash dump (3ds xl) thread that was created a while ago with all the info about connecting your 3DS XL's eMMC NAND via the 3DS's motherboard testpoints to an SD card reader to be able to read and write to said NAND, mainly to make backup dumps and restore them if necessary.
This is most useful for one with a 3DS XL containing a vulnerable system software version for homebrew (version 4.5 or lower), as it can allow to make a complete backup of the 3DS's NAND including the vulnerable system software, and then also reflash and actually downgrade the system back to that system software version should the system be updated past a vulnerable version for whatever reason and the user end up requiring the vulnerable system version once more.
Anyways, as the thread has progressed and people have made their own implementations of accomplishing this task, I noticed a certain trend in this, mainly that they were using their own connectors that were exposing the motherboard testpoint connections directly to outside of the 3ds, and then having to connect that to an SD reader before connecting to a computer (or connecting to an SD slot on teir computer, which also requires they build a custom cable to achieve this. I also did this myself at first, using a Sparkfun brand microSD sniffer combined with a FFC cable plus corresponding connectors that I pulled from a dead printer.
But when I used it I had to be careful since the FFC cable from the mobo to the sniffer was rather short, and it had to go into a card reader before going into a computer. So it was all very tedious to use. After a while the FFC cable's connector wore out and eventually broke after repeated use too. So this was a problem.
Another problem I noticed was in regards to people using microUSB ports in their implementations. I liked the idea of using a microUSB port just like a lot of other consumer electronics, but they were just using a microUSB form factor port, connected directly to the 3DS mobo's eMMC testpoints, meaning SD protocol wa going over them, not USB, along with a custom cable with a USB plug at one end, connected to an SD adapter or reader. Also, the pinout depended on the pinout the modder decided to make for it. This could be dangerous is say, someone were to connect something that was actual USB to this port, as the setup is NOT USB. (I do not know the specifics of what would happen, but I certainly do not like the idea if accidentally connecting power directly to a data or signal line for my 3DS's NAND at any rate)
I just so happened to have bought a few of these lovely super tiny microSD readers from DealExtreme, and being so small, I wondered if I could open it up and use the internal circuitry of this inside of my 3DS XL, in the same fashion as a modchip inside of any other console. So I ripped it open and found out that it does. The microSD reader's PCB sits quite nicely on top of the 3DS XL's NAND chip along with something to hold it there like blu-tak or glue.
I did make a post about this tiny microSD reader back in the original 3DS XL Nand Dumping thread but it looks like it got buried though Dunno if people were interested in it or not.
Anyways, I dediced to try out my idea for myself. using the info on 3DBrew, and in the nand flash dump (3ds xl) thread, along with some info about SD and USB from wikipedia, I put it all together. Sat the microSD reader PCB on top of the NAND chip, and the microUSB port in the corner, replacing one of the wrist strap connector things (they come out easily). When testing, it worked, blue boot error screen on 3DS and device showing on my computer.
What I did notice though, was that because of this, the 3DS itself could not be used normally as the microSD reader was interfering with the 3DS's operation. The main task now was to be able to allow the 3DS to operate normally regardless of the microSD reader. I read here somewhere that people were saying that a reader's CLK signal will interfere with the 3DS's CLK signal, so I disconnected that signal line and tested to see if it would boot fine. Instead got bluescreen. Also disconnected CMD signal line, leaving only DAT lines and GND connected, and 3DS booted up fine. Also tested with CLK connected but CMD disconnected, but another bluescreen. So my conclusion from these tests was that BOTH CMD and CLK signals from the microSD reader interfered with the 3DS's signals.
So I tried putting a switch in between the microSD reader and the 3DS mobo's testpoints on the CMD and CLK lines. I did not have any DPST style switches, so I had to use 2 SPDT switches I had and stick them together to use as one big switch, one on each of those signal lines. Tested it out... switches set to ON, and the 3ds showed bluescreen, and computer saw the reader and could read and write the NAND. Switches set to OFF, and the 3DS booted up fine and operated normally. Problem solved! I decided to sit those switches in the other wrist strap connector's position.
And that is pretty much it. This way, the 3DS XL's eMMC NAND is accessible on a computer via USB. No custom cables or sockets, no need for a bulky card reader outside of the 3DS, no danger of damaging the 3DS itself using one cable and socket type to do something that it should not.
Some Pros and Cons to this mod (that I can think of at time of writing):
Pros:
- Much cleaner mod, incorporates card reader into 3DS and does not disrupt normal operation when not in use
- No need to open console every time to use it
- No need to use fragile cables (like FFC) externally
- No need to cut holes into original casing in order to avoid reopening it every time (unless you want to, in the case of preference for switch and USB port placement)
- interfaces with computer via USB, no need for custom cables
- also no danger of damaging 3DS NAND due to connecting USB device directly to SD testpoints
Cons:
- No direct low-level SD access to NAND for things that may need it (suc as Raspberry Pi for unbricking a GW Brick, would have to open 3DS up again instead)
- Wrist strap connection points are no longer available, removed to fit USB port and switch (subject to your preference of where USB port and switch are placed)
Here are some links and stuff:
Parts:
MicroUSB ports I used
Had to cut off overhanging metal bits to make it fit into 3DS XL case, but the pin legs on these have a bit of length, making for an easier solder job.
Switches I used
Had to use two as I did not know I had to control two lines at the time of purchase. Perhaps a bettter DPST switch would be of better use.
The lovely super tiny microSD card reader I used as the heart of this project
I just love these things! Grab this reader, pull it apart, and remove the metal contacts that touch a microSD card, along with the plastic bit that goes on top of said pins, and the PCB is then ready to be soldered into the 3DS. Kinda like a modchip
Information:
USB Pinouts (Wikipedia)
SD Pinouts (Wikipedia)
^ Look at "Four-Bit SD Bus Mode"
3DS XL SD Testpoint pinouts (3DBrew)
^ GND can be either the giant point to left of testpoints in image, where Cart Slot Casing is held down to mobo, or where big points are unpopulated in bottom-right corner of image (top big point, not bottom one)
Connection:
- Pretty straightforward really. Just wire microUSB port to USB plug connector on microSD reader PCB and 3DS testpoints to microSD reader pads, both according to the SD, USB, and 3DS testpoint pinouts.
- Make sure you have a switches on CMD and CLK lines, one each, or preferably one DPST switch to control both lines simultaneously.
- USB points on reader are like a big USB cable plug, but on a PCB. SD points on reader are like a microSD card, just make sure not to get this part all upside-down!
- Reader was held down on top of NAND chip with some Blu-Tak.
- MicroUSB port was held in with hot glue.
- Switches were stuck together with Blu-Tak to make one big switch and held in casing with some Blu-Tak and a small amount of hot glue (wwas not sure if glue would mess with switch's moving parts).
Now for some pictures: (WARNING! Big Pictures in spoiler tags!)
Main picture of the whole project completed:
...and that is pretty much it!
As always...
Enjoy!