Coder Social home page Coder Social logo

blockfeed / sam-fusee-launcher-internal Goto Github PK

View Code? Open in Web Editor NEW

This project forked from quantum-cross/sam-fusee-launcher-internal

7.0 4.0 0.0 38.89 MB

Internal/External Fusee Launcher for the Nerdonic Exen Mini (Switch "modchip"/"dongle")

License: GNU General Public License v2.0

C++ 1.43% Python 0.21% C 98.36%
samd21 samd21g18 nintendo switch rcm fusee-gelee fusee-gelee-payload modchip arduino nerdonic exen exenmini

sam-fusee-launcher-internal's Introduction

sam-fusee-launcher-internal

This is an implementation of the Fusée Gelée launcher for the very tiny Nerdonic Exen Mini board.

As a matter of principal, assume that every commit is a new release. I will generally only update anything once I have tested it personally and it is confirmed to work on my own chip. Some of this involves one following the releases of hekate/atmosphere and understanding how this all works. No support is offered.

THIS HAS NOT BEEN TESTED ON RCM-PATCHED UNITS.

Based on sam fusee launcher by atlas44 and the fork by noemu, as well as the Quantum-cross fork.

Build and tested with Arduino SDK.

I created this fork to create an internal Nerdonic Exen Mini mod. It detects RCM mode it will upload a payload, blink the LED once and go to sleep. If it cannot find RCM mode it will also simply blink twice and then go to sleep.

(For the faint of heart, this code can be used for an external "dongle" as well. Simply program the device and attach a 3V 2032 battery + power toggle.) External use requires an RCM-capable system.

external install

If you expose a reset wire outside the switch or put a magnetic or physical button on the switch you can put the Exen Mini into bootloader mode and flash a new payload without opening it again. You can also drill a small hole at the exact position where the reset button sits under the back case.

The system needs to be booted into Horizon, or powered by an external 3V or 5V supply in order to enable bootloader mode.

CTCaer's fork of Hekate supports chainloading, so bootloader mode should not be needed after initial install. It is included as the default payload in this package.

If you have a newer payload, you should be able to copy it to your SD card as /bootloader/update.bin, per the Hekate documentation.

This installation is NOT for the faint of heart. It requires soldering to one end of an extremely small capacitor.

Additionally, this is all experimental, there are some issues (see below).

This code and these instructions are distributed with no warranty or support.

You are responsible for your own actions. Only perform this if you have the

skills and equipment to do so.

This is provided simply as "Works for Me" and if you kill your system, it's on you. You have been warned.

Software Installation

Go through exen mini setup guide and install any necessary software.

Summary:

  • Download and install arduino IDE http://www.arduino.cc/en/Main/Software
  • go to "Tools > Board > Board Manager" and select Type: All and
  • Install "Arduino - Boards SAMD"
  • Select the Nerdonic Exen Mini with "Tools > Board > Arduino/Genuino Zero (Native USB Port)’"
  • Go to Sketch > Include Library > Manage Libraries
  • Install USBHost

You will need to power the Exen Mini with a separate 5V or 3.3V power supply during first-time programming (the device has pins for either). A cut off USB cable works well and can be connected to the power input and ground of the Exen Mini. Power the device and the red LED should come on. Then double-click the reset button on the Exen Mini.

Connect the Nerdonic Exen Mini to your computer via the micro USB port -- Windows device manager should detect the device and assign it a COM port.

Got to Tools > Port and select your connected Exen Mini

Download this Repository, open main/main.ino with Arduino IDE.

Then Verify/Compile (Ctrl + R) If no errors appear Upload (Ctrl + U).

The Exen Mini is ready for installation.

NOTE: The Exen Mini has a power LED that is not addressable by software. It is recommended that the power LED be removed.

** You might also consider removing the microUSB port from the device after first-time programming and testing. You will then need to solder wires from the appropriate data pins on the Exen Mini (D+ and D-, see included image).

Update the Payload

Download your favorite payload as a .bin file. Run the python script tools/binConverter.py with the path to the file as an argument: python binConverter.py "C:\pathToMyPayload\hekateNew.bin or just drag the .bin file on the script

In the same folder as the .bin file is located, a new .h file should appear. Copy the new file to the main folder and in the main.ino go to line 6 #include "hekate_ctcaer_4.0.h" and rename it to your new file #include "hekateNew.h"

Then just compile and upload.

Alternative bootloader ("Can I use UF2 files?")

This device can be flashed with the adafruit uf2-samdx1 bootloader (so it operates like a trinket m0, effectively).

You will need to program the bootloader with OpenOCD via SWD (or your programmer of choice), outside the scope of this project.

This is not really required, since Hekate 4 supports chainloading.

Installation into the Nintendo Switch

See INSTALL.md

Reflashing the Exen Mini while installed

This is hacky and may not work forever, but somehow it works:

  • Boot into horizon, leave it at the home screen
  • Put the Exen Mini into bootloader mode by pulling the Exen Mini RST line to ground twice quickly (or double-click the reset button).
  • Plug the switch into your computer, and you should see the Exen Mini as a COM port in Windows Device Manager.
  • Flash the Exen Mini with the Arduino IDE as normal.

Issues

  • The Exen Mini is always "on" but remains in deep sleep. If you store the switch unplugged for a very long time there is a chance that the switch battery could drain to 0% (very bad for a lithium ion battery). I have good reason to believe the point marked for power is after the battery protection circuit, so it should be safe. But I cannot confirm it 100%. basically if your switch catches fire and burns your house down it's not my fault

IMPORTANT: To be safe, always power your system down via the Hekate menu (click the Vol- button during initial boot).

Install pin points

solder points

Install Picture

installation

Thanks!

sam-fusee-launcher-internal's People

Contributors

atlas44 avatar blockfeed avatar noemu avatar quantumcross avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.