Skip to content

Commit aa4b9f5

Browse files
make autoRCM boot0/boot1 warning less passive aggressive, 'improve' serial number checker and move modchip guide to getting started page as opposed to on the modchip introduction page.
1 parent 2f68c6d commit aa4b9f5

File tree

5 files changed

+65
-47
lines changed

5 files changed

+65
-47
lines changed

docs/_internal/serialNumberChecker.html

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,7 @@
1919
<option>XAK7</option>
2020
<option>XAK9</option>
2121
</optgroup>
22-
<optgroup label="Mariko (not hackable via software)">
23-
<option>XKW1</option>
24-
<option>XKW4</option>
25-
<option>XKW7</option>
26-
<option>XKW9</option>
27-
<option>XKJ1</option>
28-
<option>XKJ4</option>
29-
<option>XKJ7</option>
30-
<option>XKJ9</option>
31-
<option>XTW1</option>
32-
<option>XTW4</option>
33-
<option>XTW7</option>
34-
<option>XTW9</option>
35-
<option>XTJ1</option>
36-
<option>XTJ4</option>
37-
<option>XTJ7</option>
38-
<option>XTJ9</option>
39-
<option>XTE1</option>
40-
<option>XTE4</option>
41-
<option>XTE7</option>
42-
<option>XTE9</option>
43-
<option>XJW0</option>
44-
<option>XWW0</option>
22+
<optgroup label="Mariko (not hackable via software)" id="mariko-prefixes">
4523
</optgroup>
4624
<optgroup label="Switch 2 (not hackable)">
4725
<option>HAE1</option>

docs/extras/autorcm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ AutoRCM causes the console to believe it is bricked, and will automatically laun
88

99
**If you don't have a BOOT0/1 backup yet...**
1010

11-
You really want to kill your console, huh? If you haven't made a BOOT0/1 backup yet, it is recommended to make one **right now**.
11+
If you haven't made a BOOT0/1 backup yet, it is recommended to make one **right now**. Please follow the steps below to do so:
1212

1313
1. Boot into hekate.
1414
1. Go to `Tools`, and select `Backup eMMC`.

docs/public/scripts/ssnc.js

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
1+
const MARIKO_FAMILIES = [
2+
{ base: 'XKW', type: 'range', from: 0, to: 9 },
3+
{ base: 'XKJ', type: 'range', from: 0, to: 9 },
4+
{ base: 'XKE', type: 'range', from: 0, to: 9 },
5+
{ base: 'XTW', type: 'range', from: 0, to: 9 },
6+
{ base: 'XTJ', type: 'range', from: 0, to: 9 },
7+
{ base: 'XTE', type: 'range', from: 0, to: 9 },
8+
{ base: 'XJW', type: 'range', from: 0, to: 9 },
9+
{ base: 'XJJ', type: 'range', from: 0, to: 9 },
10+
{ base: 'XJE', type: 'range', from: 0, to: 9 },
11+
{ base: 'XWW', type: 'range', from: 0, to: 9 },
12+
{ base: 'XWJ', type: 'range', from: 0, to: 9 },
13+
{ base: 'XWE', type: 'range', from: 0, to: 9 },
14+
];
15+
16+
function buildMarikoOptions(group) {
17+
for (const family of MARIKO_FAMILIES) {
18+
const opt = document.createElement('option');
19+
opt.value = family.base;
20+
opt.textContent = `${family.base} (${family.from}${family.to})`;
21+
group.appendChild(opt);
22+
}
23+
}
24+
125
function initSerialChecker() {
226
const prefix = document.getElementById("serial-prefix");
327
const digits = document.getElementById("serial-digits");
@@ -7,7 +31,14 @@ function initSerialChecker() {
731

832
if (!prefix || !digits) return;
933

34+
const marikoGroup = document.getElementById("mariko-prefixes");
35+
if (marikoGroup) buildMarikoOptions(marikoGroup);
36+
1037
function checkSerial(s) {
38+
if (s.length >= 3) {
39+
const isMarikoFamily = MARIKO_FAMILIES.some(f => s.startsWith(f.base));
40+
if (isMarikoFamily) return 'mariko';
41+
}
1142
if (s.match(/^X[KJWT][JWCE]/)) return 'mariko';
1243
if (s.match(/^XA[JW][9]/)) return 'refurb';
1344
if (s.match(/^XAK[1479]/)) return 'krmaybe';
@@ -62,14 +93,14 @@ function initSerialChecker() {
6293
}
6394

6495
const messages = {
65-
mariko: { type: 'danger', text: 'This appears to be a <strong>Mariko (V2) Switch or Switch Lite</strong>. These are patched and not hackable via software, only via hardware modchip. Find trusted hardware modders <a href="https://nintendohomebrew.com/hardmodders">here</a>.' },
66-
switch2: { type: 'danger', text: 'This appears to be a <strong>Switch 2</strong>. These are currently not hackable.' },
67-
refurb: { type: 'warning', text: 'This prefix belongs to officially <strong>refurbished Switch</strong> consoles, it <strong>might be patched</strong>. The only way to know for sure is to manually push a payload. Continue to <a href="/user_guide/rcm/sending_payload.html">this page</a>.' },
68-
krmaybe: { type: 'warning', text: 'This serial <strong>might be patched</strong>. The only way to know for sure is to manually push a payload. Continue to <a href="/user_guide/rcm/sending_payload.html">this page</a>.' },
69-
maybe: { type: 'warning', text: 'This serial <strong>might be patched</strong>. The only way to know for sure is to manually push a payload. Continue to <a href="/user_guide/rcm/sending_payload.html">this page</a>.' },
70-
patched: { type: 'danger', text: 'This serial is <strong>patched</strong>. It is not hackable via software. Find trusted hardware modders <a href="https://nintendohomebrew.com/hardmodders">here</a>.' },
71-
unpatched: { type: 'tip', text: 'This serial is <strong>not patched</strong>! Click the following link to continue with the <a href="rcm/index">RCM path</a> of the guide.' },
72-
invalid: { type: 'danger', text: 'This serial is <strong>invalid</strong>. Double-check you typed it correctly. At minimum, provide 6 digits after the prefix.' },
96+
mariko: { type: 'danger', text: 'This appears to be a <strong>Mariko (V2) Switch or Switch Lite</strong>. These are patched and not hackable via software, only via hardware modchip. Find trusted hardware modders <a href="https://nintendohomebrew.com/hardmodders">here</a>.' },
97+
switch2: { type: 'danger', text: 'This appears to be a <strong>Switch 2</strong>. These are currently not hackable.' },
98+
refurb: { type: 'warning', text: 'This prefix belongs to officially <strong>refurbished Switch</strong> consoles, it <strong>might be patched</strong>. The only way to know for sure is to manually push a payload. Continue to <a href="/user_guide/rcm/sending_payload.html">this page</a>.' },
99+
krmaybe: { type: 'warning', text: 'This serial <strong>might be patched</strong>. The only way to know for sure is to manually push a payload. Continue to <a href="/user_guide/rcm/sending_payload.html">this page</a>.' },
100+
maybe: { type: 'warning', text: 'This serial <strong>might be patched</strong>. The only way to know for sure is to manually push a payload. Continue to <a href="/user_guide/rcm/sending_payload.html">this page</a>.' },
101+
patched: { type: 'danger', text: 'This serial is <strong>patched</strong>. It is not hackable via software. Find trusted hardware modders <a href="https://nintendohomebrew.com/hardmodders">here</a>.' },
102+
unpatched: { type: 'tip', text: 'This serial is <strong>not patched</strong>! Click the following link to continue with the <a href="rcm/index">RCM path</a> of the guide.' },
103+
invalid: { type: 'danger', text: 'This serial is <strong>invalid</strong>. Double-check you typed it correctly. At minimum, provide 6 digits after the prefix.' },
73104
}
74105

75106
function redact(s) {
@@ -110,8 +141,21 @@ function initSerialChecker() {
110141
digits.addEventListener("input", serialChangeEvent);
111142
}
112143

144+
// make sure this component loads properly upon refreshing page/random navigation :P
145+
146+
function tryInit() {
147+
const prefix = document.getElementById("serial-prefix");
148+
if (!prefix) return;
149+
if (prefix.dataset.initialized) return;
150+
prefix.dataset.initialized = "1";
151+
initSerialChecker();
152+
}
153+
113154
if (document.readyState === "loading") {
114-
document.addEventListener("DOMContentLoaded", initSerialChecker);
155+
document.addEventListener("DOMContentLoaded", tryInit);
115156
} else {
116-
initSerialChecker();
157+
tryInit();
117158
}
159+
160+
const observer = new MutationObserver(tryInit);
161+
observer.observe(document.body, { childList: true, subtree: true });

docs/user_guide/getting_started.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ head: [
1414

1515
If you already know you have a modchipped Switch console, you can skip ahead to the [Modchip Introduction](../user_guide/modchip/index) page.
1616

17+
A modchip is a physical modification to the motherboard of your Switch. It cannot be installed without decent microsoldering experience. You can outsource this work to people who are willing to do the job for you, or you can also view the following guide if you are willing- and able to install one yourself.
18+
19+
::: tip
20+
21+
<a href="https://guide.nx-modchip.info/" class="btn btn-solid">Modchip Installation guide →</a>
22+
23+
**Note:** The above guide is not hosted or supported by NH Server; we cannot provide support for reviving consoles ruined by inexperience.
24+
1725
:::
1826

1927
## Finding your serial number

docs/user_guide/modchip/index.md

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,13 @@
11
# Introduction to Modchips
22

3-
## Prerequisites
4-
5-
A modchip is a physical modification to the motherboard of your Switch. It cannot be installed without decent microsoldering experience. You can outsource this work to people who are willing to do the job for you, or you can also view the following guide if you are willing to install one yourself.
6-
7-
::: tip
8-
9-
<a href="https://guide.nx-modchip.info/" class="btn btn-solid">Modchip Installation guide →</a>
10-
11-
**Note:** The above guide is not hosted or supported by NH Server; we cannot provide support for reviving consoles ruined by inexperience.
12-
13-
:::
14-
153
## Information
164

175
Unlike "unpatched" consoles, modchips enable CFW via CPU voltage glitching, which bypass bootROM firmware verifications. It allows a ``payload.bin`` file to be launched in place of BOOT0, loaded via a modchip firmware module named `sdloader`. This is much different from RCM and its exploit, [fusee-gelee](https://github.com/Qyriad/fusee-launcher/blob/master/report/fusee_gelee.md), which "unpatched" consoles use.
186
Modchips allow any console, including all patched consoles, to run CFW!
197

208
## General knowledge
219

22-
Patched Switch consoles (consoles produced after mid-2018) are immune to the fusee-gelee exploit in RCM. Attempting to inject a payload on a Patched console will be unsuccessful.
10+
Patched Switch consoles (consoles produced after mid-2018) are immune to the fusee-gelee exploit in RCM. Attempting to inject a payload via RCM on a Patched console will be unsuccessful.
2311

2412
Depending on your modchip's firmware, you may not be able to boot the console without a microSD card inserted.
2513
This means without a microSD inserted at all times, your Switch becomes *unusable*. The likelihood of the Switch becoming *unusable* is small, but still possible. To know if your modchip and its firmware support the bypassing of the firmware module `sdloader`, consult the "**About modchips and their firmware versions**" section below.

0 commit comments

Comments
 (0)