a.k.a Tiny Touch MK3, kinda. I redesign this from scratch with fusion360 (told ya I plan on something big when learning F360 a few months back). MK2 was working great until I wanted to test a different extruder, or hot end, or simply just a different extruder mount. Let’s say if I want to test a volcano heater block, I’ll need to print another mount or a different flag for it.
So, I decided to completely redesign the whole thing with the same concept. But making it compatible with 18mm probe mounts is key. A few weeks and 10+ iterations later, I’ve got it.
Now that I use SKR v1.3, I have a dedicated servo port on the board. I no longer wish to splice the power off the optical switch. This design is very simple and everyone should understand how to put things together, nevertheless, I’ve also written a complete guide on thingiverse.
If for some games you just can find the NSZ files instead of the regular NSP. Or you just want to download a smaller file, it’s super easy to convert it. I make this post because there are not a lot of resources online for this. My research always landed to a shoddy Windows only tool. So here we go,
Install the NSZ tool by running sudo pip3 install nsz
On the Switch, launch emuMMC, and then from the homebrew tools, launch Lockpick. Once that’s done, you should have the prod.keys file in [SD card]/switch/
Shut down, and pop the SD card to computer. Copy the prod.keys file to ~/.switch/
Finished. To extract the the .nsz files just run nsz -D filename.nsz
Once you’ve got into Hekate (part 1), the hard part is done. To get to the homebrew menu you just need to open the “Album” on your Switch. To backup your own game just launch the NXDumpTool, pick NSP Dump, and you’re done. The file will be in /switch/NXDumpTool/NSP. This is a huge tip in finding a backup games that has fallen out of the back of the truck right on your lap 😉
Installing the backup is also as easy. Just launch Goldleaf, find the .nsp file, click install on SD card, and you’re done.
Again, the hard part is done. Just download retroarch, scroll down for switch. Follow the instruction video. Download some roms, and enjoy. Above is me launching Chrono Trigger, going to replay it for, I don’t know, the umpteenth time.
Bonus: Backup emuMMC Partition (aka Upgrading to a larger SD Card)
It’s a good idea to backup the emuMMC partition from time to time. It’ll also work if you want to upgrade to a larger partition. Some NSP might ruin your install. In my case it’s the SNES Online thingy. So here we go;
Let’s call spade a spade. We all know why we hack the Nintendo Switch. Those developers creating the custom firmwares know it too, despite they love to say “we don’t support pirates,” guess who’re donating and supporting the continuation of their fights against Nintendo?
A long time ago, my younger self — I may have told this story back on my tumblr, I had this pretty big budget for a new PC. Back then I played a lot of games, even with that in mind, I opted for a graphics card that is more hackable and easier to overclock than the top of the line GPU that’s twice the price. Maybe that’s my frugal self talking, but hell, I managed to push my GPU benchmark numbers to about 80% of the top of the line GPU. That is super satisfying, way more than playing games.
That is when I realize I’m much more of a hacker / tinkerer than a gamer. Now my Nintendo Switch has been collecting dust for a bit. While I enjoy some games on it, I just don’t have the time to complete games like I used to. Like the only game I’ve completed on my Switch was South Park: The Fractured But Whole (amazing game btw). Anyway, I feel like I didn’t get much enjoyment out of my Switch yet. So I start looking into hacking the Switch. In this post I’ll share the results of my research and what I need to do to get mine up and running. Key point is that you do need an unpatched (aka: old) Switch.
YouTube has make these things super easy. Although it’s still not straightforward. No plug and play hacks like we have it on Nintendo DS. And it is slow, like allocate a whole afternoon to do this. You’ll need at least 90 minutes to do this without needing to troubleshoot. About 30 mins to backup your NAND, another 30 mins to create emuMMC, and about 30 mins to configure and test things. That is if you have all the hardwares and downloaded everything including a “backed-up” game.
Custom Firmware (CFW)
First, watch the video above by sthetix, a fellow Indonesian. Follow the instructions as is, up to when you need to create emuMMC. But before that, the hardware choices, I went with the Android route. I print my own jig (thingiverse), and if you look for reviews, there are no good options. Except maybe the DragonInjector purely for the form factor, I plan on getting it if I keep playing the Switch. Android is the cheapest option too, about $1 for an USB-C OTG thing, and maybe another $1 for the jig if you don’t have access to a 3D printer. Even the shoddiest RCM injector cost at least $10.
Another great option is using the fusee web launcher on Chrome (either the browser or OS, though it doesn’t work on Windows). Switch is the cheapest and easiest possible mod I’ve ever encountered. Once you’ve got into Hekate, you’re practically done. Everything else is preparing the SD Cards, making backups, partitions, etc. Just follow the youtube video above, not hard, but time consuming.
Next, what I have to do differently from the video: I need to partition my SD Card, and choose SD Partition when creating the emuMMC. When I picked the SD File, I can’t boot into the CFW. It just stuck with a black screen until I forced reboot the Switch (by pressing and holding the power buttons for 12-15 seconds). Now to partition the SD Card, I have to use command line;
XX.XX is the remaining space you have on your SD card. I had to do the partition with FAT32 for some reason. It spits out an error if I make it exFAT right off the bat. Not a big deal, I just re-format the HOMEBREW partition to exFAT (you’ll need exFAT for this, most games are about 5-6GB).
Once that is done, when launching the CFW, if you got this following error:
A fatal error occurred when running Atmosphére.
Title ID: 010041544d530000
Error Desc: std::abort() called (0xffe)
I believe this is caused by using exFAT, and Atmosphere can’t open file. The fix is pop the SD card back to your computer and run sudo chflags -R arch on all directories except for the official Nintendo directory.
And I personally do not have the autoRCM enabled. Just some online speculations, but it’s possible that Nintendo might be able to see that that the boot loader has been tinkered and may ban your device. That and it boots up to a black screen by default freaks me out a bit, especially since I don’t always have my Android phone with me.
A filament guide for 2020 / 2040 extrusion inspired by this thing. I haven't found other filament guide that is better than this style. You need a pair of M5x10 and T-slot nut to attach it to the extrusion, it is strong and will not be pulled around by the extruder.
This is the continuing series of me learning Fusion360 as I designing more complex models and and getting used to designing things with Fusion360. I have quite a big goal in mind. Stay tune.
The generator is easy and boring. Not much to say on that end, I just throw that in as “might as well add it while I’m working on this QR thing.”
Now the scanner is much more interesting. I’m know there are plenty of native apps for any native platforms, iOS, Android, Mac, Windows, and even Linux. But I can’t find any for online QR Code scanner. Heck, it was easier to find an online vector editor that works reasonably well than a QR Code scanner.
And recently I’ve just made a prototype app for a cinema ticketing system that needs to scan QR Code so the audience can redeem their tickets. So this is more of a repackaging, because that prototype was made as a web app to speed things up — instant multi-platforms. The only part that I thought that needed a native implementation was a QR Code scanner.
However, after further research, I thought wrong. Thanks to jsQR, everything was so easy and simple and works on most modern browsers including the ones on smartphones. Definitely good enough for a prototype and I think it’s perfect for web only implementation.
Upgrading to SKR boards is a lot simpler than a lot of tutorials make them to be because they want to cover a lot of things. Let's boil it down to the essential;
Download and install PlatformIO (so this includes installing VSCode). Then git (if you're on WinOS).
Download the latest stable Marlin — v2.0.1 as of the writing of this post.
Move the sample configuration.h & configuration_adv.h file for your printer to the Marlin folder. Or just copy your current Marlin's config files over.
Open Marlin in PlatformIO, then open the platformio.ini file. Select the environment depending on which the SKR board you bought.
The rests just configuring Marlin. Start by setting the MOTHERBOARD. I personally prefer SKR v1.3 for the price vs flexibility, if I kill a driver I just need to replace the driver instead of the whole board.
Then set the drivers (do a search for TMC). TMC2209 is considered best driver for its price at the moment. Silent, hybrid mode with spread cycle, UART, and sensor-less homing capable. It is slightly trickier if you use E1 as Z2 instead of just using a motor splitter.
Next is the advanced configuration. Enable a bunch of TMC shits if you have UART or SPI drivers.
And the rest is just printer configuration. Or if you pull information from previous Marlin configs if you already have them prior to getting the SKR board, you're done.
I’d consider this as my final upgrade for my A8, I’d get very little return by doing the linear rails upgrade. I’d rather build a new printer for it. 400-500mm build plate. Maybe something like Ender 5 style if I fully DIY, or just build a Voron.
Also, I ordered my v1.3 like a couple weeks prior to v1.4 was released 🤷♂️ The differences are minor and has no effect if you put it in Anet A8 or Ender 3 setup. There are enough unused pins on v1.3 to do anything that v1.4 can. However, if I were to order one today, I’d get the v1.4 turbo.