This guide covers installation of the public beta release of Switchroot Android 11/R, based on LineageOS 18.1, on all Switch models.
This is BETA SOFTWARE, delivered to you AS-IS with NO WARRANTY. While hardware damage is unlikely outside of heavy overclocking, you may run into issues, etc.. However, this is a rather stable beta release, and extensive testing has shown it to work just fine, minus a couple remaining missing Q features (see the latest release highlights in the Discord announcement).
Updating is pretty easy! Download the latest zip, extract the lineage-18.1....zip
file, and drop it on the root of your SD card. Boot into TWRP (VOL+ while booting Android) and flash the Lineage zip, then just reboot right into Android. Your releavant ini configuration and any uenv will be ported over automatically. You may experience a crash/forced reboot to recovery shortly after first boot--just ignore this and reboot without selecting Format Data. If you encounter long-term instability, just back up relevant stuff with Seedvault or standard Google account backup, wipe everything in recovery, and hard reinstall.
hekate
>= 6.0.3 is REQUIRED, so please update BEFORE attempting an upgrade
hekate
>= 6.0.5v2 is needed for some >= Beta 2 featureshekate
bootloader from HERE (hekate_ctcaer_[version]_Nyx_[version].zip
)hekate
archive to the root of the SD cardnx-tab
(standard tablet Android) or nx-atv
(Android TV)Your SD card should now look like this, assuming it is shared with HOS (Horizon OS/Switch OS):
root
|- bootloader
| |- ini
| | |- ...
| |- payloads
| | |- ...
| |- res
| | |- ...
| |- sys
| | |- ...
Prepare Switch, boot into hekate, and dump JoyCon pairing info
a. Boot into HOS and ensure Joy-Cons are paired
b. Insert your SD card into your Switch
c. (Unpatched v1 only) Slide the RCM jig into the right rail, and hook your Switch up to your PC (or other payload injector) via USB-C and power off the console
d. (Unpatched v1 only) Press Power and VOL + simultaneously to enter RCM mode and inject the hekate payload (hekate_ctcaer_[version].bin
) that came with your downloaded hekate zip
NOTE: To keep it simple you can use this in Google Chrome (not compatible with other browsers), check "Upload .bin payload" and select the payload mentioned above, then click "Do the thing!" and select "APX" from the pop-up menu.
e. Once booted into hekate
, you can remove the RCM jig, and launch Nyx Settings
f. Dump your Joy-Con BT pairing information (with your Joy-Cons railed)
g. Ensure the message is correct, otherwise physically re-connect and re-pair the JoyCons in HOS and try again
Partition SD card in hekate
a. Navigate to hekate
's partition manager (on the Tools tab)
b. Use sliders to select appropriate space for each OS (we recommend at least 16 GB for Android, although it should be usable with ~8GB), then press Next Step
NOTE: this step creates multiple partitions for a somewhat standard AOSP layout -- look HERE for more information if interested
c. You may want backup Nintendo folder or any CFW files if necessary via hekate
's SD UMS tool over USB-C or by removing the SD card and reading directly on a PC (hekate
/Nyx can pause and reload when SD is removed), but hekate
will offer to backup and restore up to 1 GB of data from your existing file-system.
Add ROM zips to SD
a. Plug the Switch into your PC and select "SD UMS"
b. Extract the nx-tab
or nx-atv
.7z
to the root of the SD card
Your SD card should now look like this:
root
|- bootloader
| |- ini
| | |- ...
| |- payloads
| | |- ...
| |- res
| | |- ...
| |- sys
| | |- ...
|- Nintendo (if you use stock)
| |- ...
|- switchroot
| |- android
| | |- ...
| |- install
| | |- ...
|- lineage-18.1-[date]-UNOFFICIAL-[device].zip
Add other zips and enter recovery
a. Google Play and GMS minimal are now included--do NOT flash other Gapps
b. If you have any other flashable zips, place them on the root of the SD card
c. Safely remove/eject the SD UMS device from your computer
d. Back on the Switch, select "Flash Android" and accept the prompt to reboot to recovery
e. Select Factory Reset, and format data and system (NOTE: an "error" will print about the cache partition (fs type unsupported)--this is a soft error and should be ignored)
f. Go back, select "Apply Update", then "Choose from SWITCH SD"
g. Install the Lineage zip and any other zips you may have to install, and select Reboot -> System (NOTE: signature verification errors may occur and can be ignored)
First boot
a. Your JoyCons may not auto-pair on first boot--reboot to auto-pair your dumped JoyCons in Android
Subsequent boots
a. Boot Lineage 18.1 from More Configs --> Switchroot Android 11 in hekate
b. Hold VOL + on choosing this option to get back to recovery to flash zips
c. Hold VOL - on choosing this option to get back to hekate
without having to reinject a payload
d. Rebooting the Switch will take you back to stock firmware
Asking for support/If you get stuck
a. First, get a screenshot of SD Info in hekate
--this will allow us to rule out the most common issue first
b. If you are experiencing seemingly unintended behavior while already booted into Android, try and get us a log--find a guide on how to install adb
, enable USB debugging in developer options on the Switch, plug into the computer with adb installed, and run adb logcat > switchroot.log
. If this seems like too much for you, just get a bug report from developer settings.
c. Submit the screenshot and logs if needed to in our Discord server--the invite link can be found HERE.
The old Device and Performance Configuration menu has been rebranded into the Switch Configuration app, which brings with it many improvements for the new release.
As in previous releases, we have a resolution selecter, but now preferences are properly adhered to across docking and undocking loops. Choose a profile with a resolution, refresh rate, and colorimetry setting that works for you. A setting has been added to choose whether the internal panel should turn off when docked. Additionally, OLED units can select hardware panel color modes, including a Vivid preset and various Night modes.
In the Switch Configuration app/Settings menu, you can now enable some JoyCon/ProCon/etc. modifications without a flashable zip
LTRIGGER
and RTRIGGER
axis emulation--when disabled, the BUTTON_L2
and BUTTON_R1
keys register instead--this can help troubleshoot/solve weird trigger behavior in different appsWe use NVIDIA's nvcpl
userspace service in conjunction with U-Boot scriped modification of the device tree to set max clocks on the CPU and GPU, with higher limits than Android Q had. To improve this along with the overall experience on Mariko consoles, we have introduced overclocking profiles. Each profile has Perf Mode Docked (A), Perf Mode Handheld/Stock Docked (B), and Stock Handheld (C) clocks. Perf mode is enabled via the toggle in Switch Configuration. Different profiles are enabled using the new oc
ini option, but they sometimes require (or are different with) the dvfsb
, gpu_dvfsc
, and limit_gpu_clk
ini options. RAM OC is handled in bootloader and information on this can be found on the hekate
GitHub page, linked above.
WARNING: These profiles are not all tested, and there may be issues with some of them. Plus, extreme overclocking can damage your device, so be cautious. Overclocks >1 are considered unstable on increasingly higher-binned chips (better binnings will work on higher OC levels without frequency throttling or becoming unstable). Overclocking is not recommended, but is there for those who want to experiment.
How to read: columns are entries in bootloader/ini/android.ini
, with the values indicated in each row. "N/A" indicates that the key has no effect, while "any" indicates that the key of that column is irrelevant for that clock profile with the other values. Entries of the form ">$number" indicate any value greater than $number, for example ">0". dvfsb
and gpu_dvfsc
are voltage/frequency scaling curve modifiers for better-binned hardware. Some profiles require this. Read the INI Guide for details.
CPU Clocks (MHz):
sku | oc | dvfsb | A | B | C |
---|---|---|---|---|---|
any | 0 | N/A | 1785 | 1785 | 1428 |
v1 | 1 | N/A | 1887 | 1887 | 1785 |
v1 | 2 | N/A | 1989 | 1989 | 1785 |
v1 | 3 | N/A | 2091 | 2091 | 1785 |
Lite | 1 | any | 1963 | 1963 | 1785 |
Lite | 2 | 1 | 2091 | 2091 | 1785 |
v2/OLED | 1 | any | 1963 | 1963 | 1785 |
v2/OLED | 2 | any | 2091 | 2091 | 1785 |
v2/OLED | 3 | any | 2295 | 2295 | 2091 |
v2/OLED | 4 | 1 | 2397* | 2397* | 2091 |
* reportedly not working properly
GPU Clocks (MHz):
sku | oc | dvfsb | gpu_dvfsc | limit_gpu_clk | A | B | C |
---|---|---|---|---|---|---|---|
v1 | any | N/A | N/A | N/A | 921 | 768 | 461 |
Lite | any | 0 | N/A | N/A | 768 | 768 | 461 |
Lite | >0 | 1 | N/A | N/A | 844 | 844 | 768 |
v2/OLED | 0 | any | any | any | 921 | 768 | 461 |
v2/OLED | 1 | 0 | 0 | 0 | 999 | 999 | 922 |
v2/OLED | >1 | 1 | any | any | 1075 | 1075 | 999 |
v2/OLED | >1 | any | any | 1 | 1075 | 1075 | 999 |
v2/OLED | >1 | 0 | 1 | 0 | 1229 | 1229 | 999 |
v2/OLED | >1 | 0 | 0 | 0 | 1267 | 1267 | 999 |
Updates are pushed through OTA (over-the-air) updates, just like any standard Android OEM. Use the Updater in Settings to get the latest updates without losing data.
twrp.img
, put it in switchroot/install
and hit "Flash Android" in hekate
partitioner again