Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"MD003": { "style": "atx" },
"MD004": { "style": "asterisk"},
"MD007": { "indent": 4 },
"MD013": false,
"MD024": false,
"MD026": { "punctuation": ".,;:。,;:"},
"MD029": { "style": "one" },
"MD033": { "allowed_elements": ["br", "u", "span"], "table_allowed_elements": ["hr", "br", "ul", "li", "u", "span"]},
"MD035": { "style": "---" },
"MD036": false,
"MD040": false,
"MD045": false,
"MD046": { "style": "fenced" },
"MD048": { "style": "backtick" },
"MD049": { "style": "asterisk" },
"MD050": { "style": "asterisk" },
"MD055": { "style": "leading_and_trailing" },
"MD060": { "style": "aligned" }
}
4 changes: 2 additions & 2 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (c) 2024, Nintendo Homebrew
Copyright (c) 2024-2026 Nintendo Homebrew

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
Expand All @@ -14,7 +14,7 @@ PERFORMANCE OF THIS SOFTWARE.

Additionally, files in `docs/.vitepress` is licensed under the following:

Copyright (c) 2024, Nintendo Homebrew
Copyright (c) 2024 Nintendo Homebrew

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
# Switch Guide
# Switch Hacks Guide

[The guide can be found here!](https://switch.hacks.guide)
A collaboration from Nintendo Homebrew's Discord community, getting you from a stock Switch to Atmosphère.

Nintendo Switch homebrew guide written by staff members of the Nintendo Homebrew Discord server.
[![Website Badge](https://img.shields.io/badge/website-switch.hacks.guide-E60012?logo=vitepress&logoColor=FFFFFF)](https://switch.hacks.guide/)
[![Discord Server](https://img.shields.io/badge/chat-nintendo%20homebrew-7289DA?logo=discord&logoColor=FFFFFF)](https://discord.gg/C29hYvh)
[![Last Commit Badge](https://img.shields.io/github/last-commit/nh-server/switch-guide)](https://github.com/nh-server/switch-guide/commits/master/)
[![ISC License](https://img.shields.io/badge/license-ISC-0081C5)](https://github.com/nh-server/switch-guide/blob/master/LICENSE.md)

## Running the site locally

Expand All @@ -12,16 +15,19 @@ This requires the following installed on your system:

To test the website locally, clone the source code:

```bash
```shell
git clone https://github.com/nh-server/switch-guide.git --recurse-submodules
cd switch-guide
```

Then simply run the following commands:

```bash
```shell
npm ci
npm run docs:dev
```

The website should now be running on http://127.0.0.1:5173/ (or a port shown on the terminal). Any edits you make should appear live!
> [!TIP]
> If you choose to run multiple web servers at once, they will begin running at the next highest usable port (e.g. :5174, :5175, and so on).

The website should now be running on <http://127.0.0.1:5173/> (or whatever port is shown on the terminal).
10 changes: 4 additions & 6 deletions docs/.vitepress/config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ export default defineConfig({
},
head: [['link', { rel: 'icon', href: '/img/favicon.ico' }]],
themeConfig: {
outline: {
level: 'deep'
},
docFooter: {
prev: false,
next: false
Expand All @@ -30,15 +33,10 @@ export default defineConfig({
locales: {
root: i18n.en_US
},
cleanUrls: true,
vite: {
resolve: {
alias: [
{
find: /^.*\/VPDocOutlineItem\.vue$/,
replacement: fileURLToPath(
new URL('./theme/components/VPDocOutlineItem.vue', import.meta.url)
)
},
{
find: /^.*\/VPFooter\.vue$/,
replacement: fileURLToPath(
Expand Down
2 changes: 1 addition & 1 deletion docs/.vitepress/i18n/en_US.js
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ const themeConfig = {
],
},
footer: {
copyright: 'Copyright © 2025 Nintendo Homebrew',
copyright: 'Copyright © 2026 Nintendo Homebrew',
items: [
{ text: localeData.pages["about"], link: `/about` }
]
Expand Down
73 changes: 37 additions & 36 deletions docs/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,47 +5,48 @@ This guide was written by community members of the [Nintendo Homebrew Discord Se
[You can find this guide on GitHub](https://github.com/nh-server/switch-guide), It is licensed under the [ISC license](https://github.com/nh-server/switch-guide/blob/master/LICENSE.md).

## Guide Writers / Maintainers
- [SuchMemeManySkill](https://github.com/suchmememanyskill)
- [DefenderOfHyrule](https://github.com/DefenderOfHyrule)
- [ha1vorsen](https://github.com/ha1vorsen)
- [Dardel](https://codeberg.org/Dardel)
- [MarigoldZephyrNio](https://github.com/MarigoldZephyrNio)
- [Sanras](https://github.com/Sanrax)
- [JeffVi](https://github.com/JeffVi)
- [eip618](https://github.com/eip618)
- [Flump](https://github.com/Flumpster)
- [oreo639](https://github.com/oreo639)
- [thedax](https://github.com/thedax)
- [dorkeline](https://github.com/dorkeline)
- [ihaveahax](https://github.com/ihaveamac)
- [PhazonicRidley](https://github.com/PhazonicRidley)
- [emmo](https://github.com/el-emmo)
- [xGhostBoyx](https://github.com/xGhostBoyx)
- jerbear64
- Phoenix
- the Nintendo Homebrew community

* [SuchMemeManySkill](https://github.com/suchmememanyskill)
* [DefenderOfHyrule](https://github.com/DefenderOfHyrule)
* [ha1vorsen](https://github.com/ha1vorsen)
* [Dardel](https://codeberg.org/Dardel)
* [MarigoldZephyrNio](https://github.com/MarigoldZephyrNio)
* [Sanras](https://github.com/Sanrax)
* [JeffVi](https://github.com/JeffVi)
* [eip618](https://github.com/eip618)
* [Flump](https://github.com/Flumpster)
* [oreo639](https://github.com/oreo639)
* [thedax](https://github.com/thedax)
* [dorkeline](https://github.com/dorkeline)
* [ihaveahax](https://github.com/ihaveamac)
* [PhazonicRidley](https://github.com/PhazonicRidley)
* [emmo](https://github.com/el-emmo)
* [xGhostBoyx](https://github.com/xGhostBoyx)
* jerbear64
* Phoenix
* the Nintendo Homebrew community

Thank you to [everyone else](https://github.com/nh-server/switch-guide/graphs/contributors) that contributed to the guide on GitHub, but special thanks to **noirscape**.

## Developers

- [**Atmosphère-NX**](https://github.com/Atmosphere-NX) for [Atmosphère](https://github.com/Atmosphere-NX/Atmosphere).
- [**switchbrew**](https://github.com/switchbrew) for [nx-hbloader](https://github.com/switchbrew/nx-hbloader) and [nx-hbmenu](https://github.com/switchbrew/nx-hbmenu).
- [**nwert**](https://github.com/nwert) and [**CTCaer**](https://github.com/CTCaer) for [hekate](https://github.com/CTCaer/hekate).
- [**WerWolv**](https://github.com/WerWolv) for [EdiZon](https://github.com/WerWolv/EdiZon).
- [**J-D-K**](https://github.com/J-D-K) for [JKSV](https://github.com/J-D-K/JKSV).
- [**Flagbrew**](https://github.com/FlagBrew) for [Checkpoint](https://github.com/FlagBrew/Checkpoint).
- [**mtheall**](https://github.com/mtheall) for [FTPD](https://github.com/mtheall/ftpd/).
- [**joel16**](https://github.com/joel16/) for [NX-Shell](https://github.com/joel16/NX-Shell).
- [**Cease & DeSwitch**](https://github.com/Cease-and-DeSwitch) for [fusee-gelee](https://github.com/Qyriad/fusee-launcher).
- [**MenosGrante**](https://github.com/MenosGrante) for [Rekado](https://github.com/MenosGrante/Rekado).
- [**eliboa**](https://github.com/eliboa) for [TegraRcmGUI](https://github.com/eliboa/TegraRcmGUI).
- [**vgmoose**](https://github.com/vgmoose), [**pwsincd**](https://github.com/pwsincd), [**rw-r-r_0644**](https://github.com/rw-r-r-0644) and [**crc32**](https://github.com/crc-32) for [hb-appstore](https://github.com/vgmoose/hb-appstore).
- [**Essometer**](https://gbatemp.net/members/essometer.265523/) for collecting patched Switch serials.
- [**Ave**](https://gitlab.com/a) for [90DNS](https://gitlab.com/a/90dns).
- [**Nexrem (meganukebmp)**](https://github.com/meganukebmp) for the [Switch 90DNS Tester](https://github.com/meganukebmp/Switch_90DNS_tester).
- [**exelix11**](https://github.com/exelix11) for [Switch Theme Injector](https://github.com/exelix11/SwitchThemeInjector).
- [**suchmememanyskill**](https://github.com/suchmememanyskill) for [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer)
* [**Atmosphère-NX**](https://github.com/Atmosphere-NX) for [Atmosphère](https://github.com/Atmosphere-NX/Atmosphere).
* [**switchbrew**](https://github.com/switchbrew) for [nx-hbloader](https://github.com/switchbrew/nx-hbloader) and [nx-hbmenu](https://github.com/switchbrew/nx-hbmenu).
* [**nwert**](https://github.com/nwert) and [**CTCaer**](https://github.com/CTCaer) for [hekate](https://github.com/CTCaer/hekate).
* [**WerWolv**](https://github.com/WerWolv) for [EdiZon](https://github.com/WerWolv/EdiZon).
* [**J-D-K**](https://github.com/J-D-K) for [JKSV](https://github.com/J-D-K/JKSV).
* [**Flagbrew**](https://github.com/FlagBrew) for [Checkpoint](https://github.com/FlagBrew/Checkpoint).
* [**mtheall**](https://github.com/mtheall) for [FTPD](https://github.com/mtheall/ftpd/).
* [**joel16**](https://github.com/joel16/) for [NX-Shell](https://github.com/joel16/NX-Shell).
* [**Cease & DeSwitch**](https://github.com/Cease-and-DeSwitch) for [fusee-gelee](https://github.com/Qyriad/fusee-launcher).
* [**MenosGrante**](https://github.com/MenosGrante) for [Rekado](https://github.com/MenosGrante/Rekado).
* [**eliboa**](https://github.com/eliboa) for [TegraRcmGUI](https://github.com/eliboa/TegraRcmGUI).
* [**vgmoose**](https://github.com/vgmoose), [**pwsincd**](https://github.com/pwsincd), [**rw-r-r_0644**](https://github.com/rw-r-r-0644) and [**crc32**](https://github.com/crc-32) for [hb-appstore](https://github.com/vgmoose/hb-appstore).
* [**Essometer**](https://gbatemp.net/members/essometer.265523/) for collecting patched Switch serials.
* [**Ave**](https://gitlab.com/a) for [90DNS](https://gitlab.com/a/90dns).
* [**Nexrem (meganukebmp)**](https://github.com/meganukebmp) for the [Switch 90DNS Tester](https://github.com/meganukebmp/Switch_90DNS_tester).
* [**exelix11**](https://github.com/exelix11) for [Switch Theme Injector](https://github.com/exelix11/SwitchThemeInjector).
* [**suchmememanyskill**](https://github.com/suchmememanyskill) for [TegraExplorer](https://github.com/suchmememanyskill/TegraExplorer)

::: tip

Expand Down
67 changes: 53 additions & 14 deletions docs/extras/adding_udev.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Linux - Run payload injector without root
# Linux - Running Payload Injector without root

This section details how to add an `udev` rule to let you send a payload to your Switch without needing to use `sudo`.

The following instructions only work if you have a system that implements `udev`. Most modern distros come with `systemd` already installed, which includes a `udev` implementation.

Do the following instructions while your Switch is _not_ connected to your computer.
Do the following instructions while your Switch is *not* connected to your computer.

::: tip

Expand All @@ -14,7 +14,7 @@ The package `android-udev` includes rules that will also allow for payload injec

:::

## Option 1: Manually adding rules and group
## Option I - Manually adding rules and group

The following instructions are not for beginners. Only do this if you understand what you are doing.

Expand All @@ -23,33 +23,72 @@ The following instructions are not for beginners. Only do this if you understand
To start, we will create a new group and add ourselves to it. The group the Nintendo Switch device will be owned by on Linux will be set to this group.

1. Open a terminal.
1. Enter the following command: `sudo groupadd nintendo_switch`.
1. Enter the following command:

```shell
sudo groupadd nintendo_switch
```

1. Enter your password when prompted.
1. Enter the following command: `sudo usermod -a -G nintendo_switch $USER`. Make sure that the `G` is capitalized!
1. Enter the following command. Make sure that the `G` is capitalized:

```shell
sudo usermod -a -G nintendo_switch $USER
```

1. Close the terminal.

### Adding a udev rule

Next we're gonna add a new `udev` rule. `udev` is a device manager for the linux kernel. The rule we're gonna specify is that if the Switch is connected in `RCM`, the group the Switch belongs to will be the group we made in the previous section.
Next, we will add a new `udev` rule. `udev` is a device manager for the linux kernel. The rule we will specify is that if the Switch is connected in `RCM`, the group the Switch belongs to will be the group we made in the previous section.

1. Open a terminal.
1. Change to the root user with the following command: `sudo -i`. Enter your password when prompted.
1. Enter the following command: `mkdir -p /etc/udev/rules.d`.
1. Enter the following command: `echo 'SUBSYSTEMS=="usb", ATTRS{manufacturer}=="NVIDIA Corp.", ATTRS{product}=="APX", GROUP="nintendo_switch"' > /etc/udev/rules.d/10-switch.rules`.
1. Enter the following command: `udevadm control --reload`.
1. Enter the following command: `udevadm trigger`.
1. Change to the root user with the following command.. Enter your password when prompted:

```shell
sudo -i
```

1. Enter the following command:

```shell
mkdir -p /etc/udev/rules.d
```

1. Enter the following command:

```shell
echo 'SUBSYSTEMS=="usb", ATTRS{manufacturer}=="NVIDIA Corp.", ATTRS{product}=="APX", GROUP="nintendo_switch"' > /etc/udev/rules.d/10-switch.rules
```

1. Enter the following command:

```shell
udevadm control --reload
```

1. Enter the following command:

```shell
udevadm trigger
```

1. Logout and log back in.

You should now be able to run the payload sender without having to use `sudo`.

## Option 2: Installing a package with the rules
## Option II - Installing a package with the rules

These rules will actually allow _ANY_ user to access your Switch via USB, not only _your_ user.
These rules will actually allow *ANY* user to access your Switch via USB, not only *your* user.

You may just follow the instructions at [nx-udev](https://github.com/pheki/nx-udev), or if you're on Ubuntu / Debian:

1. Download [nx-udev_latest_all.deb](https://github.com/pheki/nx-udev/releases/latest/download/nx-udev_latest_all.deb).
1. Open a terminal in the same directory as your download.
1. Run `sudo dpkg -i nx-udev_latest_all.deb` to install the package
1. Run the following command to install the package:

```shell
sudo dpkg -i nx-udev_latest_all.deb
```

You should now be able to run the payload injector and homebrew with USB communication without having to use `sudo`.
20 changes: 10 additions & 10 deletions docs/extras/alternate_bootsetups.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Alternate boot setups
# Alternate Boot Setups

If you need to troubleshoot something, or need to try a different boot setup, read on.

Expand All @@ -12,32 +12,32 @@ Unless you are experiencing problems with booting or Atmosphère itself, it's st

## Chainloading Fusee from hekate

- The latest release of [hekate](https://github.com/CTCaer/hekate/releases/)
- The latest release of [Atmosphère](https://github.com/Atmosphere-NX/Atmosphere/releases)
- You will need to download both the release zip and the `fusee.bin`
* The latest release of [hekate](https://github.com/CTCaer/hekate/releases/)
* The latest release of [Atmosphère](https://github.com/Atmosphere-NX/Atmosphere/releases)
* You will need to download both the release zip and the `fusee.bin`

### Instructions:
### Instructions

1. Insert your Switch's microSD card into your PC.
1. Copy *the contents of* the Atmosphere `.zip` file to the root of your microSD card.
1. Copy the `bootloader` folder from the hekate `.zip` file to the root of your microSD card.
1. Copy `fusee.bin` to the `sd:/bootloader/payloads` folder on your microSD card.
1. The setup is complete, you can inject the hekate payload (Unpatched Switch users) or place the hekate payload on the root of your microSD card and rename it to `payload.bin` (Modchipped Switch users).
1. Navigate to and select `Payloads` > `fusee.bin`.
- Note: `fusee` uses a set boot order that is not as easily configurable as hekate. Its boot order is `emuMMC` > `sysCFW` > `stock`.
* Note: `fusee` uses a set boot order that is not as easily configurable as hekate. Its boot order is `emuMMC` > `sysCFW` > `stock`.
If an emuMMC isn't present, it will boot into sysCFW for example. Make sure you have a method of blocking Nintendo's servers set up (such as [DNS-MITM](../extras/blocking_nintendo#instructions-ams-dns-redirection)) if you do use `fusee` and have an `emuMMC`.

## Using Fusee without hekate

This method will *not* work for Modchipped Switch users.

- The latest release of [Atmosphère](https://github.com/Atmosphere-NX/Atmosphere/releases)
- You will need to download both the release zip and the `fusee.bin`
* The latest release of [Atmosphère](https://github.com/Atmosphere-NX/Atmosphere/releases)
* You will need to download both the release zip and the `fusee.bin`

### Instructions:
### Instructions

1. Insert your Switch's microSD card into your PC.
1. Copy *the contents of* the Atmosphere `.zip` file to the root of your microSD card.
1. The setup is complete, you can inject the `fusee.bin` payload.
- Note: `fusee` uses a set boot order that is not as easily configurable as hekate. Its boot order is `emuMMC` > `sysCFW` > `stock`.
* Note: `fusee` uses a set boot order that is not as easily configurable as hekate. Its boot order is `emuMMC` > `sysCFW` > `stock`.
If an emuMMC isn't present, it will boot into sysCFW for example. Make sure you have a method of blocking Nintendo's servers set up (such as [DNS-MITM](../extras/blocking_nintendo#instructions-ams-dns-redirection)) if you do use `fusee` and have an `emuMMC`.
Loading