<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://switchbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stuckpixel</id>
	<title>Nintendo Switch Brew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://switchbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Stuckpixel"/>
	<link rel="alternate" type="text/html" href="https://switchbrew.org/wiki/Special:Contributions/Stuckpixel"/>
	<updated>2026-04-14T22:30:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=EMMC_pinout&amp;diff=9667</id>
		<title>EMMC pinout</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=EMMC_pinout&amp;diff=9667"/>
		<updated>2020-06-18T23:07:36Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: add reset pin to eMMC connector pinout.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Front ===&lt;br /&gt;
[[File:HAC-EMMC-Side-B.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Back ===&lt;br /&gt;
[[File:HAC-EMMC-Side-A.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Supply power via the VCC 3.3V and 1.8V pins, and solder the CLK, CMD, and DAT0 pins to an SD Card reader in order to extract the data off the eMMC chip.&lt;br /&gt;
&lt;br /&gt;
=== eMMC Connector ===&lt;br /&gt;
&lt;br /&gt;
[[File:Jackpinassignment.png|200px|thumb|right|eMMC Board Connector Pinout]]&lt;br /&gt;
[[File:Plugpinassignment.png|200px|thumb|right|eMMC Motherboard connector pinout]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Pin #&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3.3v&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| CMD&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| DAT_STRB(?)&lt;br /&gt;
| OUT&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| DAT4&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| DAT5&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| DAT6&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| DAT7&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 1.8v&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| 1.8v&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| DAT2&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| DAT1&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| DAT0&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| DAT3&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| CLK&lt;br /&gt;
| IN&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| RESET&lt;br /&gt;
| IN&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| 3.3v&lt;br /&gt;
| PWR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The eMMC connector plug on the board mates with the receptacle on the Switch motherboard. The receptacle is a [http://www.molex.com/molex/products/datasheet.jsp?part=active/5009130302_PCB_RECEPTACLES.xml&amp;amp;channel=Products&amp;amp;Lang=en-US Molex 5009130302], and is available from retailers such as [https://www.digikey.com/product-detail/en/molex-llc/5009130302/WM6833CT-ND/3045233 Digi-Key].&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Testpads&amp;diff=8899</id>
		<title>Testpads</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Testpads&amp;diff=8899"/>
		<updated>2020-03-11T20:56:40Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Nintendo Switch mainboard has a series of testpads on the front and back, presumably used in factory test, diagnostics, and early board bringup procedures.&lt;br /&gt;
&lt;br /&gt;
== Raw Logic captures ==&lt;br /&gt;
&lt;br /&gt;
These are reference materials, taken from poking at I/O on various testpads. https://github.com/hedgeberg/Switch-Logic-Captures&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
[[File:Switchre_side1.jpg|200px]]&lt;br /&gt;
[[File:Switchre_side2.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
== Pinouts ==&lt;br /&gt;
&lt;br /&gt;
=== Cluster A ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Batt GND? || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Battery pulse? || Pulse train || 0-3.3V || L-5? || ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Battery Vdd || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Speaker R + || Square wave || 0-3.3V || ||  || Speaker Right +&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Speaker R - || Square wave || 0-3.3V || ||  || Speaker Right -&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Weak GND? || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 7 || SDA || I2C || 0-1.8V || || ||	&lt;br /&gt;
|-&lt;br /&gt;
| 8 || SCL || I2C || 0-1.8V  || || || &lt;br /&gt;
|-&lt;br /&gt;
| 9 || USB-PWR-WAVE? || Square wave || 0-3.3V || K-4, K-5? || ~11 Hz || &lt;br /&gt;
|-&lt;br /&gt;
| 10 || USB-PWR-WAVE? || Square wave || 0-3.3V || K-4, K-5? || ~11 Hz || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster B ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||  || DBVDD || || || || from ALC5639 pin 43&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D+ || USB-C || || || || Cluster B - 3&lt;br /&gt;
|-&lt;br /&gt;
| 3 || D- || USB-C || || || || Cluster B - 2&lt;br /&gt;
|-&lt;br /&gt;
| 4 || +3.3V || XRST || || || || from M92T36 pin 4&lt;br /&gt;
|-&lt;br /&gt;
| 5 || +3.3V || VSVR || || || || from M92T36 pin 6&lt;br /&gt;
|-&lt;br /&gt;
| 5(b) || VUSB || VB || || || || from M92T36 pin 9&lt;br /&gt;
|-&lt;br /&gt;
| 6 || GND ||  || || || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster C ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ?? || || 0-1.8V || || || No clue. This is definitely important, we just have no idea how. May need to interface with dock for comms.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || UART-A RX || || 0-1.8V || || || UART input&lt;br /&gt;
|-&lt;br /&gt;
| 3 || UART-A TX || || 0-1.8V || || || UART output&lt;br /&gt;
|-&lt;br /&gt;
| 4 || ?? || || 0-1.8V || || || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || ?? || || 0-1.8V || || || &lt;br /&gt;
|-&lt;br /&gt;
| 6 || UART-A RTS || || 0-1.8V || || || UART-A Flow control&lt;br /&gt;
|-&lt;br /&gt;
| 7 || ?? || || 0-1.8V || || || &lt;br /&gt;
|-&lt;br /&gt;
| 8 || UART-A CTS || || 0-1.8V || || || UART-A Flow control&lt;br /&gt;
|-&lt;br /&gt;
| 9 || ?? || || 0-1.8V || || || &lt;br /&gt;
|-&lt;br /&gt;
| 10 || ?? || || 0-1.8V || || || &lt;br /&gt;
|-&lt;br /&gt;
| 11 || +1.8V || || 0-1.8V || || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster D ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GND || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Seaker L + || || || || || Speaker Left +&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Seaker L - || || || || || Speaker Left - &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster E ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Vol (-)  || || || || || Button Vol (-)&lt;br /&gt;
|-&lt;br /&gt;
| 10 || Reset || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 11 || Vdd Referance|| || || || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster G ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || || || || || &lt;br /&gt;
|-&lt;br /&gt;
| 4 || Vol(+) || || || || || Button Vol (+)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Li-Ion Batt Vdd Mirror || || || || || Power Supply&lt;br /&gt;
|-&lt;br /&gt;
| 9 || BUTTON_HOME || || || || || RCM strap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster H ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Screen_on || On/Off || 0-1.8v || I-2 ||  || Screen power state, active high&lt;br /&gt;
|-&lt;br /&gt;
| 5 ||  || Flow control || 0-1.8V || I-5 || Flow control for pad I-4? ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 ||  || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 7 ||  || UART || 0-1.8V || I-4 || 1.5MBaud?||&lt;br /&gt;
|-&lt;br /&gt;
| 8 ||  || UART || 0-1.8V || I-3 || 1.5MBaud?||&lt;br /&gt;
|-&lt;br /&gt;
| 9 ||  || || ||  || ||&lt;br /&gt;
|-&lt;br /&gt;
| 10 ||  || || || || H-12 || On the same trace&lt;br /&gt;
|-&lt;br /&gt;
| 11 ||  || || || || || Goes to a small ceramic cap near WiFi/BT IC?&lt;br /&gt;
|-&lt;br /&gt;
| 12 ||  || || || H-10 || || On the same trace&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster I ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GND || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Screen_on || On/Off || 0-1.8V || || || Screen power state, active high&lt;br /&gt;
|-&lt;br /&gt;
| 3 || || UART || 0-1.8V || || 1.5MBaud? || &lt;br /&gt;
|-&lt;br /&gt;
| 4 || || UART || 0-1.8V || || 1.5MBaud? || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || || Flow control || 0-1.8V || || || Flow control for pad I-4?&lt;br /&gt;
|-&lt;br /&gt;
| 6 || || || 0-1.8V || || || Needs testing with chip/touch screen interface board plugged in&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cluster J ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ? || Edge || 0-1.8V || || || Turns on around same time as pad J-3&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 || ? || Edge || 0-1.8V || || || Turns on around same time as pad J-1, slightly after&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Power button || Pushbutton || 4V-0V || || || Active low&lt;br /&gt;
|-&lt;br /&gt;
| 5 || ? || Constant? || 0V || Ground?-NT || ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 || ? || Edge || 0-1.8V || || || Turns on with pad J-6, ~1s after J-1/J-3&lt;br /&gt;
|-&lt;br /&gt;
| 7 || ? || Edge || 0-1.8V || || || Turns on with pad J-5, ~1s after J-1/J-3&lt;br /&gt;
|-&lt;br /&gt;
| 8 || ? || Edge? || 0-1.8V || || || Turns on ~1s after J-6/J-7, turns off at unknown point&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster K ===&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GND || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D- || USB-C || || || || Cluster B - 3&lt;br /&gt;
|-&lt;br /&gt;
| 3 || D+ || USB-C || || || || Cluster B - 2&lt;br /&gt;
|-&lt;br /&gt;
| 4 || USB-PWR-WAVE? || Square wave || 0V-3.3V || A-9, A-10? || ~11 Hz ||&lt;br /&gt;
|-&lt;br /&gt;
| 5 || USB-PWR-WAVE? || Square wave || 0V-3.3V || A-9, A-10? || ~11 Hz || Appears to mirror K4. Duty cycle 66.67%. Low on screen lock. Off until first interaction.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || USB-C V+ || Supply power || || || || support fast charger : &amp;quot;normal mode = 5V+&amp;quot;  &amp;quot;Fast changer = 12V+&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| 7 || BQ24193 VBUS + M92T36 VEX || Power supply? || ~3V-0V || None known || N/A || 0 when usb-c not plugged in, falls slowly on first interaction if USB-C plugged in. Power draw related?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cluster L ===&lt;br /&gt;
&lt;br /&gt;
TODO: Update diagram&lt;br /&gt;
&lt;br /&gt;
{| class=wikitable&lt;br /&gt;
! Pad # || Name || Type || Levels || Continuity || Frequency || Comment&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Li-Ion Batt Vdd Mirror || Power Supply || Std. Li-Ion || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Li-Ion Batt Vdd || Battery Input || Std. Li-Ion || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Mirrored Ground? || || || || || Holds steady @ 0, looks like a decoupled isolated ground&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Battery pulse? ||  || || || &amp;lt;1 Hz || Duty cycle ~0%&lt;br /&gt;
|-&lt;br /&gt;
| 6 || GND || || || || ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=EMMC_pinout&amp;diff=8657</id>
		<title>EMMC pinout</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=EMMC_pinout&amp;diff=8657"/>
		<updated>2020-01-10T22:29:02Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: Add full eMMC connector pinout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Front ===&lt;br /&gt;
[[File:HAC-EMMC-Side-B.png|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Back ===&lt;br /&gt;
[[File:HAC-EMMC-Side-A.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Supply power via the VCC 3.3V and 1.8V pins, and solder the CLK, CMD, and DAT0 pins to an SD Card reader in order to extract the data off the eMMC chip.&lt;br /&gt;
&lt;br /&gt;
=== eMMC Connector ===&lt;br /&gt;
&lt;br /&gt;
[[File:Jackpinassignment.png|200px|thumb|right|eMMC Board Connector Pinout]]&lt;br /&gt;
[[File:Plugpinassignment.png|200px|thumb|right|eMMC Motherboard connector pinout]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Pin #&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 3.3v&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| CMD&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| DAT_STRB(?)&lt;br /&gt;
| OUT&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| DAT4&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| DAT5&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| DAT6&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| DAT7&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 1.8v&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| 1.8v&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| DAT2&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| DAT1&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| DAT0&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| DAT3&lt;br /&gt;
| BI&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| CLK&lt;br /&gt;
| IN&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| GND&lt;br /&gt;
| PWR&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| NC(?)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| 3.3v&lt;br /&gt;
| PWR&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The eMMC connector plug on the board mates with the receptacle on the Switch motherboard. The receptacle is a [http://www.molex.com/molex/products/datasheet.jsp?part=active/5009130302_PCB_RECEPTACLES.xml&amp;amp;channel=Products&amp;amp;Lang=en-US Molex 5009130302], and is available from retailers such as [https://www.digikey.com/product-detail/en/molex-llc/5009130302/WM6833CT-ND/3045233 Digi-Key].&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=File:Plugpinassignment.png&amp;diff=8656</id>
		<title>File:Plugpinassignment.png</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=File:Plugpinassignment.png&amp;diff=8656"/>
		<updated>2020-01-10T22:03:55Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: Switch motherboard eMMC connector pin numbers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Switch motherboard eMMC connector pin numbers&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=File:Jackpinassignment.png&amp;diff=8655</id>
		<title>File:Jackpinassignment.png</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=File:Jackpinassignment.png&amp;diff=8655"/>
		<updated>2020-01-10T21:58:01Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: pin numbering of eMMC board.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
pin numbering of eMMC board.&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=PCV_services&amp;diff=6701</id>
		<title>PCV services</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=PCV_services&amp;diff=6701"/>
		<updated>2019-04-21T02:43:19Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: clear up some inaccuracies&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= bpc =&lt;br /&gt;
This is &amp;quot;nn::bpc::IBoardPowerControlManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ShutdownSystem&lt;br /&gt;
|-&lt;br /&gt;
| 1 || RebootSystem&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetWakeupReason&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GetShutdownReason&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GetAcOk&lt;br /&gt;
|-&lt;br /&gt;
| 5 || GetBoardPowerControlEvent&lt;br /&gt;
|-&lt;br /&gt;
| 6 || [2.0.0+] GetSleepButtonState&lt;br /&gt;
|-&lt;br /&gt;
| 7 || [2.0.0+] GetPowerEvent&lt;br /&gt;
|-&lt;br /&gt;
| 8 || [2.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 9 || [2.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 10 || [2.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 11 || [3.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 12 || [3.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 13 || [3.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 14 || [6.0.0+]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= bpc:r =&lt;br /&gt;
This is &amp;quot;nn::bpc::IRtcManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetExternalRtcValue&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetExternalRtcValue&lt;br /&gt;
|-&lt;br /&gt;
| 2 || ReadExternalRtcResetFlag&lt;br /&gt;
|-&lt;br /&gt;
| 3 || [2.0.0+] ClearExternalRtcResetFlag&lt;br /&gt;
|-&lt;br /&gt;
| 4 || [3.0.0+]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
GetExternalRtcValue / SetExternalRtcValue directly accesses the max77620_rtc0 device.&lt;br /&gt;
&lt;br /&gt;
= pcv =&lt;br /&gt;
This is &amp;quot;nn::pcv::detail::IPcvService&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 0 || SetPowerEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 1 || SetClockEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 2 || SetClockRate&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 3 || GetClockRate&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 4 || GetState&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 5 || GetPossibleClockRates&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 6 || SetMinVClockRate&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 7 || SetReset&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 8 || SetVoltageEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 9 || GetVoltageEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 10 || GetVoltageRange&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 11 || SetVoltageValue&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 12 || GetVoltageValue&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 13 || GetTemperatureThresholds&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 14 || SetTemperature&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-5.1.0] 15 || Initialize&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-5.1.0] 16 || IsInitialized&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-5.1.0] 17 || Finalize&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 18 || PowerOn&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 19 || PowerOff&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 20 || ChangeVoltage&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 21 || GetPowerClockInfoEvent&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 22 || GetOscillatorClock&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 23 || GetDvfsTable&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 24 || GetModuleStateTable&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 25 || GetPowerDomainStateTable&lt;br /&gt;
|-&lt;br /&gt;
| 26 || [3.0.0+] GetFuseInfo&lt;br /&gt;
|-&lt;br /&gt;
| 27 || [5.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0-7.0.1] 28 ||&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0-7.0.1] 29 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[7.0.0+] The type-0xA output buffers were replaced with type-0x22 output buffers, for the following: GetDvfsTable, GetModuleStateTable, and GetPowerDomainStateTable.&lt;br /&gt;
&lt;br /&gt;
== User Name to Block Maps ==&lt;br /&gt;
=== Power Switch / Clocking / Reset ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Block || Rail || Notes&lt;br /&gt;
|-&lt;br /&gt;
|  0 || CpuBus || vdd_cpu ||&lt;br /&gt;
|-&lt;br /&gt;
|  1 || GPU || vdd_gpu ||&lt;br /&gt;
|-&lt;br /&gt;
|  2 || I2S1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  3 || I2S2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  4 || I2S3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  5 || PWM || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  6 || I2C1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  7 || I2C2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  8 || I2C3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  9 || I2C4 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 10 || I2C5 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 11 || I2C6 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 12 || SPI1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 13 || SPI2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 14 || SPI3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 15 || SPI4 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 16 || DISP1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 17 || DISP2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 20 || SDMMC1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 21 || SDMMC2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 || SDMMC3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 23 || SDMMC4 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 24 || - || - || Not actual block. Used for debug and stuff.&lt;br /&gt;
|-&lt;br /&gt;
| 25 || CSITE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 26 || TSEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 27 || MSELECT || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 28 || HDA2CODEC_2X || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 29 || ACTMON || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 30 || I2C_SLOW || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 31 || SOR1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 33 || HDA || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 34 || XUSB_CORE_HOST || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 35 || XUSB_FALCON || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 36 || XUSB_FS || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 37 || XUSB_CORE_DEV || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 38 || XUSB_SS_HOSTDEV || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 39 || UARTA || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 40 || UARTB || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 41 || UARTC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 42 || UARTD || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 43 || HOST1X || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 44 || ENTROPY || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 45 || SOC_THERM || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 46 || VIC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 47 || NVENC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 48 || NVJPG || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 49 || NVDEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 50 || QSPI || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 52 || TSECB || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 53 || APE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 54 || ACLK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 55 || UARTAPE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 56 || EMC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 57 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 58 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 59 || DSI || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 60 || MAUD || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 61 || DPAUX1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 62 || MIPI_CAL || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 63 || UART_FST_MIPI_CAL || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 64 || OSC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 65 || SCLK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 66 || SOR_SAFE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 67 || XUSB_SS || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 68 || XUSB_HOST || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 69 || XUSB_DEV || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 70 || EXTPERIPH1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 71 || AHUB || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 72 || HDA2HDMICODEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 73 || PLLP5 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 74 || USBD || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 75 || USB2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 76 || PCIE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 77 || AFI || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 78 || PCIEXCLK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 79 || PEX_USB_UPHY || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 80 || XUSB_PADCTL || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 81 || APBDMA || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 82 || USB2_TRK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 83 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 84 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 85 || CEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+] 86 || EXTPERIPH2 || vdd_soc ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Block || Notes&lt;br /&gt;
|-&lt;br /&gt;
|  0 || max77620_sd0 || &lt;br /&gt;
|-&lt;br /&gt;
|  1 || max77620_sd1 || &lt;br /&gt;
|-&lt;br /&gt;
|  2 || max77620_sd2 || &lt;br /&gt;
|-&lt;br /&gt;
|  3 || max77620_sd3 || &lt;br /&gt;
|-&lt;br /&gt;
|  4 || max77620_ldo0 || 1.2v&lt;br /&gt;
|-&lt;br /&gt;
|  5 || max77620_ldo1 || &lt;br /&gt;
|-&lt;br /&gt;
|  6 || max77620_ldo2 || SDcard power, 1.8v - 3.3v&lt;br /&gt;
|-&lt;br /&gt;
|  7 || max77620_ldo3 || GC ASIC 3.1v&lt;br /&gt;
|-&lt;br /&gt;
|  8 || max77620_ldo4 || RTC power, 0.85v&lt;br /&gt;
|-&lt;br /&gt;
|  9 || max77620_ldo5 || GC ASIC 1.8v&lt;br /&gt;
|-&lt;br /&gt;
| 10 || max77620_ldo6 || AVDD touchscreen, 2.9v&lt;br /&gt;
|-&lt;br /&gt;
| 11 || max77620_ldo7 || &lt;br /&gt;
|-&lt;br /&gt;
| 12 || max77620_ldo8 || DisplayPort, 1.05v&lt;br /&gt;
|-&lt;br /&gt;
| 13 || max77621_cpu || &lt;br /&gt;
|-&lt;br /&gt;
| 14 || max77621_gpu || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: max77620 GPIOs are only used internally by the driver during init, and not exposed via an API.&lt;br /&gt;
&lt;br /&gt;
= pcv:arb =&lt;br /&gt;
This is &amp;quot;nn::pcv::IArbitrationManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This service no longer exists in [8.0.0+]. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ReleaseControl&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= pcv:imm =&lt;br /&gt;
This is &amp;quot;nn::pcv::IImmediateManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This service no longer exists in [8.0.0+]. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || SetClockRate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= clkrst, clkrst:i =&lt;br /&gt;
These are &amp;quot;nn::clkrst::IClkrstManager&amp;quot; and &amp;quot;nn::clkrst::IClkrstImmediateManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These were added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || OpenSession&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GetTemperatureThresholds&lt;br /&gt;
|-&lt;br /&gt;
| 2 || SetTemperature&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GetPossibleClockRates&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GetPowerClockInfoEvent&lt;br /&gt;
|-&lt;br /&gt;
| 5 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IClkrstSession ==&lt;br /&gt;
This is &amp;quot;nn::clkrst::IClkrstSession&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || SetClockEnabled&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetClockDisabled&lt;br /&gt;
|-&lt;br /&gt;
| 2 || SetResetAsserted&lt;br /&gt;
|-&lt;br /&gt;
| 3 || SetResetDeasserted&lt;br /&gt;
|-&lt;br /&gt;
| 4 || SetPowerEnabled&lt;br /&gt;
|-&lt;br /&gt;
| 5 || SetPowerDisabled&lt;br /&gt;
|-&lt;br /&gt;
| 6 || GetState&lt;br /&gt;
|-&lt;br /&gt;
| 7 || SetClockRate&lt;br /&gt;
|-&lt;br /&gt;
| 8 || GetClockRate&lt;br /&gt;
|-&lt;br /&gt;
| 9 || SetMinVClockRate&lt;br /&gt;
|-&lt;br /&gt;
| 10 || GetPossibleClockRates&lt;br /&gt;
|-&lt;br /&gt;
| 11 || GetDvfsTable&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= clkrst:a =&lt;br /&gt;
This is &amp;quot;nn::clkrst::IClkrstArbitrationManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This was added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= rgltr =&lt;br /&gt;
This is &amp;quot;nn::regulator::IRegulatorManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This was added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || OpenSession&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IRegulatorSession ==&lt;br /&gt;
This is &amp;quot;nn::regulator::IRegulatorSession&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || [[#SetVoltageEnabled]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || [[#GetVoltageEnabled]]&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GetVoltageRange&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GetVoltageValue&lt;br /&gt;
|-&lt;br /&gt;
| 5 || [[#SetVoltageValue]]&lt;br /&gt;
|-&lt;br /&gt;
| 6 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SetVoltageEnabled ===&lt;br /&gt;
Takes a bool. Enables/disables the LDO this session was opened for.&lt;br /&gt;
&lt;br /&gt;
=== GetVoltageEnabled ===&lt;br /&gt;
Returns a bool. True if voltage is enabled, false if not.&lt;br /&gt;
&lt;br /&gt;
=== SetVoltageValue ===&lt;br /&gt;
Takes in a voltage in microvolts and sets the LDO to this voltage.&lt;br /&gt;
&lt;br /&gt;
= rtc =&lt;br /&gt;
This was added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= time:u, time:a, time:s =&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::IStaticService&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetStandardUserSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GetStandardNetworkSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetStandardSteadyClock || Returns an [[#ISteadyClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GetTimeZoneService || Returns an [[#ITimeZoneService]].&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GetStandardLocalSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 5 || [4.0.0+] GetEphemeralNetworkSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 20 || [6.0.0+] GetSharedMemoryNativeHandle || &lt;br /&gt;
|-&lt;br /&gt;
| 30 || [6.0.0+] GetStandardNetworkClockOperationEventReadableHandle || &lt;br /&gt;
|-&lt;br /&gt;
| 31 || [6.0.0+] GetEphemeralNetworkClockOperationEventReadableHandle || &lt;br /&gt;
|-&lt;br /&gt;
| 50 || [4.0.0+] SetStandardSteadyClockInternalOffset || &lt;br /&gt;
|-&lt;br /&gt;
| 100 || IsStandardUserSystemClockAutomaticCorrectionEnabled || &lt;br /&gt;
|-&lt;br /&gt;
| 101 || SetStandardUserSystemClockAutomaticCorrectionEnabled || &lt;br /&gt;
|-&lt;br /&gt;
| 102 || [5.0.0+] GetStandardUserSystemClockInitialYear || &lt;br /&gt;
|-&lt;br /&gt;
| 200 || [3.0.0+] IsStandardNetworkSystemClockAccuracySufficient || &lt;br /&gt;
|-&lt;br /&gt;
| 201 || [6.0.0+] GetStandardUserSystemClockAutomaticCorrectionUpdatedTime || &lt;br /&gt;
|-&lt;br /&gt;
| 300 || [4.0.0+] CalculateMonotonicSystemClockBaseTimePoint || &lt;br /&gt;
|-&lt;br /&gt;
| 400 || [4.0.0+] GetClockSnapshot || &lt;br /&gt;
|-&lt;br /&gt;
| 401 || [4.0.0+] GetClockSnapshotFromSystemClockContext || &lt;br /&gt;
|-&lt;br /&gt;
| 500 || [4.0.0+] CalculateStandardUserSystemClockDifferenceByUser || &lt;br /&gt;
|-&lt;br /&gt;
| 501 || [4.0.0+] CalculateSpanBetween || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ISteadyClock ==&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::ISteadyClock&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetCurrentTimePoint || No input, returns an output [[#SteadyClockTimePoint]].&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetTestOffset || No input, returns an output [[#TimeSpanType]].&lt;br /&gt;
|-&lt;br /&gt;
| 3 || SetTestOffset || Takes an input [[#TimeSpanType]], no output.&lt;br /&gt;
|-&lt;br /&gt;
| 100 || [2.0.0+] GetRtcValue || No input, returns an output s64.&lt;br /&gt;
|-&lt;br /&gt;
| 101 || [2.0.0+] IsRtcResetDetected || No input, returns an output u8 bool.&lt;br /&gt;
|-&lt;br /&gt;
| 102 || [2.0.0+] GetSetupResultValue || No input, returns an output u32.&lt;br /&gt;
|-&lt;br /&gt;
| 200 || [3.0.0+] GetInternalOffset || No input, returns an output [[#TimeSpanType]].&lt;br /&gt;
|-&lt;br /&gt;
| 201 || [3.0.0-3.0.2] SetInternalOffset || Takes an input [[#TimeSpanType]], no output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SteadyClockTimePoint ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8|| A u64 representing a point in time.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x10 || An ID representing the clock source.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is a 0x18-byte struct.&lt;br /&gt;
&lt;br /&gt;
=== TimeSpanType ===&lt;br /&gt;
This is an u64.&lt;br /&gt;
&lt;br /&gt;
== ISystemClock ==&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::ISystemClock&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetCurrentTime || Returns an output [[#PosixTime]].&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetCurrentTime || Takes an input [[#PosixTime]].&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetSystemClockContext || Returns an output [[#SystemClockContext]].&lt;br /&gt;
|-&lt;br /&gt;
| 3 || SetSystemClockContext  || Takes an input [[#SystemClockContext]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PosixTime ===&lt;br /&gt;
This is an u64 for UTC POSIX time.&lt;br /&gt;
&lt;br /&gt;
=== SystemClockContext ===&lt;br /&gt;
This is an 0x20-byte struct.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8|| a [[#PosixTime]] representing the system clock epoch.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x18 || a [[#SteadyClockTimePoint]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ITimeZoneService ==&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::ITimeZoneService&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetDeviceLocationName || No input, returns an output [[#LocationName]].&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetDeviceLocationName || Takes an input [[#LocationName]], no output.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetTotalLocationNameCount || No input, returns an output s32.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || LoadLocationNameList || &lt;br /&gt;
|-&lt;br /&gt;
| 4 || LoadTimeZoneRule || Takes an input [[#LocationName]] and a type-0x16 output buffer for [[#TimeZoneRule]], no output.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || [2.0.0+] GetTimeZoneRuleVersion ||  No input, returns an output [[#TimeZoneRuleVersion]].&lt;br /&gt;
|-&lt;br /&gt;
| 6 || [5.0.0+] GetDeviceLocationNameAndUpdatedTime || &lt;br /&gt;
|-&lt;br /&gt;
| 100 || ToCalendarTime || Takes an input [[#PosixTime]] and a type-0x15 input buffer for [[#TimeZoneRule]], returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]].&lt;br /&gt;
|-&lt;br /&gt;
| 101 || ToCalendarTimeWithMyRule || Takes an input [[#PosixTime]], returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]].&lt;br /&gt;
|-&lt;br /&gt;
| 201 || ToPosixTime || Takes an input [[#CalendarTime]], a type-0x15 input buffer for [[#TimeZoneRule]], an type-0xA output buffer for [[#PosixTime]] array, and returns an output s32.&lt;br /&gt;
|-&lt;br /&gt;
| 202 || ToPosixTimeWithMyRule || Takes an input [[#CalendarTime]], an type-0xA output buffer for [[#PosixTime]] array, and returns an output s32.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LoadLocationNameList ===&lt;br /&gt;
Takes an input s32 LocationName_index and a type-0x6 output buffer for [[#LocationName]], returns an output s32 for total output entries.&lt;br /&gt;
&lt;br /&gt;
=== LocationName ===&lt;br /&gt;
This contains a TimeZone location string with a max size of 0x24 bytes.&lt;br /&gt;
&lt;br /&gt;
=== TimeZoneRule ===&lt;br /&gt;
This is an 0x4000-byte struct. Official sw uses fixed-size 0x4000 for the buffer size with the above commands.&lt;br /&gt;
&lt;br /&gt;
This is loaded from the [[Title_list|TimeZoneBinary]] title with the specified LocationName under the zoneinfo/ directory, the content is then converted into this TimeZoneRule structure.&lt;br /&gt;
&lt;br /&gt;
=== TimeZoneRuleVersion ===&lt;br /&gt;
This is an u128.&lt;br /&gt;
&lt;br /&gt;
=== CalendarTime ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x2 || Year&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x1 || Month&lt;br /&gt;
|-&lt;br /&gt;
| 0x3 || 0x1 || Day&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || Hour&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x1 || Minute&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 || 0x1 || Second&lt;br /&gt;
|-&lt;br /&gt;
| 0x7 || 0x1 || Padding / unknown?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is an 0x8-byte struct.&lt;br /&gt;
&lt;br /&gt;
=== CalendarAdditionalInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || 0-based day-of-week.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || 0-based day-of-year.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Timezone name string.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || 0 = no DST, 1 = DST.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || s32 seconds relative to UTC for this timezone.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is an 0x18-byte struct. This stores timezone info.&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=PCV_services&amp;diff=6697</id>
		<title>PCV services</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=PCV_services&amp;diff=6697"/>
		<updated>2019-04-20T09:23:08Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: Add unofficial IRegulatorSession names + notes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= bpc =&lt;br /&gt;
This is &amp;quot;nn::bpc::IBoardPowerControlManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ShutdownSystem&lt;br /&gt;
|-&lt;br /&gt;
| 1 || RebootSystem&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetWakeupReason&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GetShutdownReason&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GetAcOk&lt;br /&gt;
|-&lt;br /&gt;
| 5 || GetBoardPowerControlEvent&lt;br /&gt;
|-&lt;br /&gt;
| 6 || [2.0.0+] GetSleepButtonState&lt;br /&gt;
|-&lt;br /&gt;
| 7 || [2.0.0+] GetPowerEvent&lt;br /&gt;
|-&lt;br /&gt;
| 8 || [2.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 9 || [2.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 10 || [2.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 11 || [3.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 12 || [3.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 13 || [3.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| 14 || [6.0.0+]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= bpc:r =&lt;br /&gt;
This is &amp;quot;nn::bpc::IRtcManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetExternalRtcValue&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetExternalRtcValue&lt;br /&gt;
|-&lt;br /&gt;
| 2 || ReadExternalRtcResetFlag&lt;br /&gt;
|-&lt;br /&gt;
| 3 || [2.0.0+] ClearExternalRtcResetFlag&lt;br /&gt;
|-&lt;br /&gt;
| 4 || [3.0.0+]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
GetExternalRtcValue / SetExternalRtcValue directly accesses the max77620_rtc0 device.&lt;br /&gt;
&lt;br /&gt;
= pcv =&lt;br /&gt;
This is &amp;quot;nn::pcv::detail::IPcvService&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 0 || SetPowerEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 1 || SetClockEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 2 || SetClockRate&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 3 || GetClockRate&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 4 || GetState&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 5 || GetPossibleClockRates&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 6 || SetMinVClockRate&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 7 || SetReset&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 8 || SetVoltageEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 9 || GetVoltageEnabled&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 10 || GetVoltageRange&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 11 || SetVoltageValue&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 12 || GetVoltageValue&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 13 || GetTemperatureThresholds&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-7.0.1] 14 || SetTemperature&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-5.1.0] 15 || Initialize&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-5.1.0] 16 || IsInitialized&lt;br /&gt;
|-&lt;br /&gt;
| [1.0.0-5.1.0] 17 || Finalize&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 18 || PowerOn&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 19 || PowerOff&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 20 || ChangeVoltage&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 21 || GetPowerClockInfoEvent&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 22 || GetOscillatorClock&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 23 || GetDvfsTable&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 24 || GetModuleStateTable&lt;br /&gt;
|-&lt;br /&gt;
| [3.0.0-7.0.1] 25 || GetPowerDomainStateTable&lt;br /&gt;
|-&lt;br /&gt;
| 26 || [3.0.0+] GetFuseInfo&lt;br /&gt;
|-&lt;br /&gt;
| 27 || [5.0.0+]&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0-7.0.1] 28 ||&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0-7.0.1] 29 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[7.0.0+] The type-0xA output buffers were replaced with type-0x22 output buffers, for the following: GetDvfsTable, GetModuleStateTable, and GetPowerDomainStateTable.&lt;br /&gt;
&lt;br /&gt;
== User Name to Block Maps ==&lt;br /&gt;
=== Power Switch / Clocking / Reset ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Block || Rail || Notes&lt;br /&gt;
|-&lt;br /&gt;
|  0 || CpuBus || vdd_cpu ||&lt;br /&gt;
|-&lt;br /&gt;
|  1 || GPU || vdd_gpu ||&lt;br /&gt;
|-&lt;br /&gt;
|  2 || I2S1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  3 || I2S2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  4 || I2S3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  5 || PWM || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  6 || I2C1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  7 || I2C2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  8 || I2C3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
|  9 || I2C4 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 10 || I2C5 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 11 || I2C6 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 12 || SPI1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 13 || SPI2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 14 || SPI3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 15 || SPI4 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 16 || DISP1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 17 || DISP2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 20 || SDMMC1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 21 || SDMMC2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 22 || SDMMC3 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 23 || SDMMC4 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 24 || - || - || Not actual block. Used for debug and stuff.&lt;br /&gt;
|-&lt;br /&gt;
| 25 || CSITE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 26 || TSEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 27 || MSELECT || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 28 || HDA2CODEC_2X || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 29 || ACTMON || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 30 || I2C_SLOW || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 31 || SOR1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 33 || HDA || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 34 || XUSB_CORE_HOST || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 35 || XUSB_FALCON || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 36 || XUSB_FS || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 37 || XUSB_CORE_DEV || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 38 || XUSB_SS_HOSTDEV || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 39 || UARTA || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 40 || UARTB || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 41 || UARTC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 42 || UARTD || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 43 || HOST1X || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 44 || ENTROPY || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 45 || SOC_THERM || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 46 || VIC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 47 || NVENC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 48 || NVJPG || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 49 || NVDEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 50 || QSPI || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 52 || TSECB || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 53 || APE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 54 || ACLK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 55 || UARTAPE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 56 || EMC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 57 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 58 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 59 || DSI || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 60 || MAUD || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 61 || DPAUX1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 62 || MIPI_CAL || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 63 || UART_FST_MIPI_CAL || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 64 || OSC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 65 || SCLK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 66 || SOR_SAFE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 67 || XUSB_SS || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 68 || XUSB_HOST || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 69 || XUSB_DEV || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 70 || EXTPERIPH1 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 71 || AHUB || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 72 || HDA2HDMICODEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 73 || PLLP5 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 74 || USBD || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 75 || USB2 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 76 || PCIE || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 77 || AFI || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 78 || PCIEXCLK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 79 || PEX_USB_UPHY || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 80 || XUSB_PADCTL || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 81 || APBDMA || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 82 || USB2_TRK || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 83 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 84 || PLLE0 || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| 85 || CEC || vdd_soc ||&lt;br /&gt;
|-&lt;br /&gt;
| [6.0.0+] 86 || EXTPERIPH2 || vdd_soc ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Voltage ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Block || Notes&lt;br /&gt;
|-&lt;br /&gt;
|  0 || max77620_sd0 || &lt;br /&gt;
|-&lt;br /&gt;
|  1 || max77620_sd1 || &lt;br /&gt;
|-&lt;br /&gt;
|  2 || max77620_sd2 || &lt;br /&gt;
|-&lt;br /&gt;
|  3 || max77620_sd3 || &lt;br /&gt;
|-&lt;br /&gt;
|  4 || max77620_ldo0 || 1.2v&lt;br /&gt;
|-&lt;br /&gt;
|  5 || max77620_ldo1 || &lt;br /&gt;
|-&lt;br /&gt;
|  6 || max77620_ldo2 || SDcard power, 1.8v - 3.3v&lt;br /&gt;
|-&lt;br /&gt;
|  7 || max77620_ldo3 || GC ASIC 3.1v&lt;br /&gt;
|-&lt;br /&gt;
|  8 || max77620_ldo4 || RTC power, 0.85v&lt;br /&gt;
|-&lt;br /&gt;
|  9 || max77620_ldo5 || GC ASIC 1.8v&lt;br /&gt;
|-&lt;br /&gt;
| 10 || max77620_ldo6 || AVDD touchscreen, 2.9v&lt;br /&gt;
|-&lt;br /&gt;
| 11 || max77620_ldo7 || &lt;br /&gt;
|-&lt;br /&gt;
| 12 || max77620_ldo8 || DisplayPort, 1.05v&lt;br /&gt;
|-&lt;br /&gt;
| 13 || max77621_cpu || &lt;br /&gt;
|-&lt;br /&gt;
| 14 || max77621_gpu || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: max77620 GPIOs are only used internally by the driver during init, and not exposed via an API.&lt;br /&gt;
&lt;br /&gt;
= pcv:arb =&lt;br /&gt;
This is &amp;quot;nn::pcv::IArbitrationManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This service no longer exists in [8.0.0+]. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || ReleaseControl&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= pcv:imm =&lt;br /&gt;
This is &amp;quot;nn::pcv::IImmediateManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This service no longer exists in [8.0.0+]. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || SetClockRate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= clkrst, clkrst:i =&lt;br /&gt;
These are &amp;quot;nn::clkrst::IClkrstManager&amp;quot; and &amp;quot;nn::clkrst::IClkrstImmediateManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These were added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || OpenSession&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 ||&lt;br /&gt;
|-&lt;br /&gt;
| 5 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IClkrstSession ==&lt;br /&gt;
This is &amp;quot;nn::clkrst::IClkrstSession&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || SetClockEnabled&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || SetReset&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 || SetPowerEnabled&lt;br /&gt;
|-&lt;br /&gt;
| 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| 6 || &lt;br /&gt;
|-&lt;br /&gt;
| 7 ||&lt;br /&gt;
|-&lt;br /&gt;
| 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| 9 ||&lt;br /&gt;
|-&lt;br /&gt;
| 10 ||&lt;br /&gt;
|-&lt;br /&gt;
| 11 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= clkrst:a =&lt;br /&gt;
This is &amp;quot;nn::clkrst::IClkrstArbitrationManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This was added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= rgltr =&lt;br /&gt;
This is &amp;quot;nn::regulator::IRegulatorManager&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This was added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 || OpenSession&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IRegulatorSession ==&lt;br /&gt;
This is &amp;quot;nn::regulator::IRegulatorSession&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || SetLdoEnabled || Takes a bool. Enables the LDO this session was opened for.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetLdoEnabled || Returns a bool. True if voltage is enabled, false if not.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 5 || SetLdoVoltage || Takes in a voltage and sets the LDO to this voltage.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= rtc =&lt;br /&gt;
This was added with [8.0.0+].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name&lt;br /&gt;
|-&lt;br /&gt;
| 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= time:u, time:a, time:s =&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::IStaticService&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetStandardUserSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GetStandardNetworkSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetStandardSteadyClock || Returns an [[#ISteadyClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GetTimeZoneService || Returns an [[#ITimeZoneService]].&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GetStandardLocalSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 5 || [4.0.0+] GetEphemeralNetworkSystemClock || Returns an [[#ISystemClock]].&lt;br /&gt;
|-&lt;br /&gt;
| 20 || [6.0.0+] GetSharedMemoryNativeHandle || &lt;br /&gt;
|-&lt;br /&gt;
| 30 || [6.0.0+] GetStandardNetworkClockOperationEventReadableHandle || &lt;br /&gt;
|-&lt;br /&gt;
| 31 || [6.0.0+] GetEphemeralNetworkClockOperationEventReadableHandle || &lt;br /&gt;
|-&lt;br /&gt;
| 50 || [4.0.0+] SetStandardSteadyClockInternalOffset || &lt;br /&gt;
|-&lt;br /&gt;
| 100 || IsStandardUserSystemClockAutomaticCorrectionEnabled || &lt;br /&gt;
|-&lt;br /&gt;
| 101 || SetStandardUserSystemClockAutomaticCorrectionEnabled || &lt;br /&gt;
|-&lt;br /&gt;
| 102 || [5.0.0+] GetStandardUserSystemClockInitialYear || &lt;br /&gt;
|-&lt;br /&gt;
| 200 || [3.0.0+] IsStandardNetworkSystemClockAccuracySufficient || &lt;br /&gt;
|-&lt;br /&gt;
| 201 || [6.0.0+] GetStandardUserSystemClockAutomaticCorrectionUpdatedTime || &lt;br /&gt;
|-&lt;br /&gt;
| 300 || [4.0.0+] CalculateMonotonicSystemClockBaseTimePoint || &lt;br /&gt;
|-&lt;br /&gt;
| 400 || [4.0.0+] GetClockSnapshot || &lt;br /&gt;
|-&lt;br /&gt;
| 401 || [4.0.0+] GetClockSnapshotFromSystemClockContext || &lt;br /&gt;
|-&lt;br /&gt;
| 500 || [4.0.0+] CalculateStandardUserSystemClockDifferenceByUser || &lt;br /&gt;
|-&lt;br /&gt;
| 501 || [4.0.0+] CalculateSpanBetween || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ISteadyClock ==&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::ISteadyClock&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetCurrentTimePoint || No input, returns an output [[#SteadyClockTimePoint]].&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetTestOffset || No input, returns an output [[#TimeSpanType]].&lt;br /&gt;
|-&lt;br /&gt;
| 3 || SetTestOffset || Takes an input [[#TimeSpanType]], no output.&lt;br /&gt;
|-&lt;br /&gt;
| 100 || [2.0.0+] GetRtcValue || No input, returns an output s64.&lt;br /&gt;
|-&lt;br /&gt;
| 101 || [2.0.0+] IsRtcResetDetected || No input, returns an output u8 bool.&lt;br /&gt;
|-&lt;br /&gt;
| 102 || [2.0.0+] GetSetupResultValue || No input, returns an output u32.&lt;br /&gt;
|-&lt;br /&gt;
| 200 || [3.0.0+] GetInternalOffset || No input, returns an output [[#TimeSpanType]].&lt;br /&gt;
|-&lt;br /&gt;
| 201 || [3.0.0-3.0.2] SetInternalOffset || Takes an input [[#TimeSpanType]], no output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SteadyClockTimePoint ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8|| A u64 representing a point in time.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x10 || An ID representing the clock source.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is a 0x18-byte struct.&lt;br /&gt;
&lt;br /&gt;
=== TimeSpanType ===&lt;br /&gt;
This is an u64.&lt;br /&gt;
&lt;br /&gt;
== ISystemClock ==&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::ISystemClock&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetCurrentTime || Returns an output [[#PosixTime]].&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetCurrentTime || Takes an input [[#PosixTime]].&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetSystemClockContext || Returns an output [[#SystemClockContext]].&lt;br /&gt;
|-&lt;br /&gt;
| 3 || SetSystemClockContext  || Takes an input [[#SystemClockContext]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PosixTime ===&lt;br /&gt;
This is an u64 for UTC POSIX time.&lt;br /&gt;
&lt;br /&gt;
=== SystemClockContext ===&lt;br /&gt;
This is an 0x20-byte struct.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x8|| a [[#PosixTime]] representing the system clock epoch.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x18 || a [[#SteadyClockTimePoint]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ITimeZoneService ==&lt;br /&gt;
This is &amp;quot;nn::timesrv::detail::service::ITimeZoneService&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Cmd || Name || Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0 || GetDeviceLocationName || No input, returns an output [[#LocationName]].&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetDeviceLocationName || Takes an input [[#LocationName]], no output.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || GetTotalLocationNameCount || No input, returns an output s32.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || LoadLocationNameList || &lt;br /&gt;
|-&lt;br /&gt;
| 4 || LoadTimeZoneRule || Takes an input [[#LocationName]] and a type-0x16 output buffer for [[#TimeZoneRule]], no output.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || [2.0.0+] GetTimeZoneRuleVersion ||  No input, returns an output [[#TimeZoneRuleVersion]].&lt;br /&gt;
|-&lt;br /&gt;
| 6 || [5.0.0+] GetDeviceLocationNameAndUpdatedTime || &lt;br /&gt;
|-&lt;br /&gt;
| 100 || ToCalendarTime || Takes an input [[#PosixTime]] and a type-0x15 input buffer for [[#TimeZoneRule]], returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]].&lt;br /&gt;
|-&lt;br /&gt;
| 101 || ToCalendarTimeWithMyRule || Takes an input [[#PosixTime]], returns an output [[#CalendarTime]] and [[#CalendarAdditionalInfo]].&lt;br /&gt;
|-&lt;br /&gt;
| 201 || ToPosixTime || Takes an input [[#CalendarTime]], a type-0x15 input buffer for [[#TimeZoneRule]], an type-0xA output buffer for [[#PosixTime]] array, and returns an output s32.&lt;br /&gt;
|-&lt;br /&gt;
| 202 || ToPosixTimeWithMyRule || Takes an input [[#CalendarTime]], an type-0xA output buffer for [[#PosixTime]] array, and returns an output s32.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LoadLocationNameList ===&lt;br /&gt;
Takes an input s32 LocationName_index and a type-0x6 output buffer for [[#LocationName]], returns an output s32 for total output entries.&lt;br /&gt;
&lt;br /&gt;
=== LocationName ===&lt;br /&gt;
This contains a TimeZone location string with a max size of 0x24 bytes.&lt;br /&gt;
&lt;br /&gt;
=== TimeZoneRule ===&lt;br /&gt;
This is an 0x4000-byte struct. Official sw uses fixed-size 0x4000 for the buffer size with the above commands.&lt;br /&gt;
&lt;br /&gt;
This is loaded from the [[Title_list|TimeZoneBinary]] title with the specified LocationName under the zoneinfo/ directory, the content is then converted into this TimeZoneRule structure.&lt;br /&gt;
&lt;br /&gt;
=== TimeZoneRuleVersion ===&lt;br /&gt;
This is an u128.&lt;br /&gt;
&lt;br /&gt;
=== CalendarTime ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x2 || Year&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x1 || Month&lt;br /&gt;
|-&lt;br /&gt;
| 0x3 || 0x1 || Day&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || Hour&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x1 || Minute&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 || 0x1 || Second&lt;br /&gt;
|-&lt;br /&gt;
| 0x7 || 0x1 || Padding / unknown?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is an 0x8-byte struct.&lt;br /&gt;
&lt;br /&gt;
=== CalendarAdditionalInfo ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset || Size || Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0 || 0x4 || 0-based day-of-week.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || 0-based day-of-year.&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x8 || Timezone name string.&lt;br /&gt;
|-&lt;br /&gt;
| 0x10 || 0x4 || 0 = no DST, 1 = DST.&lt;br /&gt;
|-&lt;br /&gt;
| 0x14 || 0x4 || s32 seconds relative to UTC for this timezone.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is an 0x18-byte struct. This stores timezone info.&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Gamecard&amp;diff=5039</id>
		<title>Gamecard</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Gamecard&amp;diff=5039"/>
		<updated>2018-09-22T05:55:20Z</updated>

		<summary type="html">&lt;p&gt;Stuckpixel: The chip on the card reader board is a touchscreen controller. The actual controller is on the motherboard.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For the Gamecard partitions that can be [[Filesystem_services|mounted]], see [[Gamecard_Partition|here]].&lt;br /&gt;
&lt;br /&gt;
For the format of the Gamecard image, see [[Gamecard_Format|here]].&lt;br /&gt;
&lt;br /&gt;
= Gamecard controller =&lt;br /&gt;
&lt;br /&gt;
The gamecard controller (a separate chip on the motherboard) is responsible for communicating with the Gamecard.&lt;br /&gt;
[[Filesystem_services|FS]], to access the gamecard data, will communicate with the gamecard controller. At each boot, firmware blobs (with a fixed size of 0x7800 bytes) are sent by FS to the gamecard controller.&lt;br /&gt;
&lt;br /&gt;
The gamecard controller firmware is encrypted, signed and follows the format below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x0&lt;br /&gt;
| 0x100&lt;br /&gt;
| RSA-PKCS#1 signature&lt;br /&gt;
|-&lt;br /&gt;
| 0x100&lt;br /&gt;
| 0x4&lt;br /&gt;
| Magic (&amp;quot;LAFW&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x104&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown (0xFF000000, 0xFFFF0000 or 0xFFFFFF00)&lt;br /&gt;
|-&lt;br /&gt;
| 0x108&lt;br /&gt;
| 0x4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 0x10C&lt;br /&gt;
| 0x4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x110&lt;br /&gt;
| 0x4&lt;br /&gt;
| Version (0, 1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| 0x114&lt;br /&gt;
| 0x4&lt;br /&gt;
| Unknown (0x80000000)&lt;br /&gt;
|-&lt;br /&gt;
| 0x118&lt;br /&gt;
| 0x4&lt;br /&gt;
| Data size&lt;br /&gt;
|-&lt;br /&gt;
| 0x11C&lt;br /&gt;
| 0x4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 0x120&lt;br /&gt;
| 0x10&lt;br /&gt;
| Data hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x130&lt;br /&gt;
| 0x10&lt;br /&gt;
| Placeholder string (&amp;quot;IDIDIDIDIDIDIDID&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| 0x140&lt;br /&gt;
| 0x40&lt;br /&gt;
| Empty&lt;br /&gt;
|-&lt;br /&gt;
| 0x180&lt;br /&gt;
| 0x7680&lt;br /&gt;
| Encrypted data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
{|  style=&amp;quot;float:right; margin-left: 0px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:ZeldaFront.jpg|200px|thumb|right|A Switch game cartridge, frontside]] &lt;br /&gt;
| [[File:ZeldaBack.jpg|200px|thumb|right|A Switch game cartridge, backside]] &lt;br /&gt;
|-&lt;br /&gt;
| [[File:CartridgeFront.jpeg|200px|thumb|right|Close-up of frontside PCB]]&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|[[File:CartridgeBack.jpeg|200px|thumb|right|Close-up of backside PCB]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:CartridgeFrontBare.jpeg|200px|thumb|right|Close-up of stripped frontside PCB]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pinout ==&lt;br /&gt;
[[File:Gamecard-pinout.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin&lt;br /&gt;
! Name&lt;br /&gt;
! Direction&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0 &lt;br /&gt;
| IRQ?&lt;br /&gt;
| Output&lt;br /&gt;
| Always wired to GND inside game cartridge; Possibly used for interrupt signaling&lt;br /&gt;
|- &lt;br /&gt;
| 1 &lt;br /&gt;
| RCLK&lt;br /&gt;
| Output&lt;br /&gt;
| Return clock; Game cartridge sends back CLK signal delayed by a few ns&lt;br /&gt;
|- &lt;br /&gt;
| 2 &lt;br /&gt;
| CLK &lt;br /&gt;
| Input&lt;br /&gt;
| Clock, 25MHz&lt;br /&gt;
|- &lt;br /&gt;
| 3 &lt;br /&gt;
| CS&lt;br /&gt;
| Input&lt;br /&gt;
| Chip select; Switch pulls this LOW during a transfer&lt;br /&gt;
|- &lt;br /&gt;
| 4&lt;br /&gt;
| DAT0 &lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 0&lt;br /&gt;
|- &lt;br /&gt;
| 5 &lt;br /&gt;
| DAT1 &lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 1&lt;br /&gt;
|- &lt;br /&gt;
| 6 &lt;br /&gt;
| VCC 3.3v &lt;br /&gt;
| Input&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| 7 &lt;br /&gt;
| DAT2 &lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 2&lt;br /&gt;
|- &lt;br /&gt;
| 8 &lt;br /&gt;
| DAT3 &lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 3&lt;br /&gt;
|- &lt;br /&gt;
| 9 &lt;br /&gt;
| VCC 1.8v &lt;br /&gt;
| Input&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| 10 &lt;br /&gt;
| DAT4 &lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 4&lt;br /&gt;
|- &lt;br /&gt;
| 11 &lt;br /&gt;
| DAT5&lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 5&lt;br /&gt;
|- &lt;br /&gt;
| 12 &lt;br /&gt;
| DAT6&lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 6&lt;br /&gt;
|- &lt;br /&gt;
| 13 &lt;br /&gt;
| DAT7&lt;br /&gt;
| Inout&lt;br /&gt;
| Data bus pin 7&lt;br /&gt;
|- &lt;br /&gt;
| 14 &lt;br /&gt;
| GND&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|- &lt;br /&gt;
| 15 &lt;br /&gt;
| RST&lt;br /&gt;
| Input&lt;br /&gt;
| Reset, active LOW.&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All IO use 1.8V for logic HIGH and 0V for logic LOW.&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
Switch game cartridges use a simple (but Nintendo proprietery) SPI-like bus with 8-bit width (DAT7..0). It is very similar to the bus interface of 3DS game cartridges, except with very different commands.&lt;br /&gt;
&lt;br /&gt;
The Switch host starts a transfer by first pulling CS low, followed by clocking a byte each clock cycle. The bus data will always be ready before the rising edge of the CLK signal, so that it can be captured on the rising edge.&lt;br /&gt;
After command bytes are written to the bus, the direction of the bus implicitly changes and the game cartridge responds. The Switch host keeps clocking while the game cartridge responds.&lt;br /&gt;
After the transfer is ended, the CS line is pulled high again.&lt;br /&gt;
&lt;br /&gt;
Commands are 16 bytes long, and followed immediately by a 4-byte CRC-32 over the command bytes. After this, the Switch stops driving the data bus, and the bus will be &#039;floating&#039;. Due to the pull-ups on the bus, it will slowly converge to logic HIGH state. The Switch will clock 2 cycles to allow the bus to settle a direction change. The Switch host will then clock another cycle and if the game cartridge didn&#039;t receive the CRC OK, it will respond with &amp;quot;01&amp;quot;. Otherwise it will respond with &amp;quot;00&amp;quot; and pull DAT0 low on the next cycle to signal it is busy. The Switch host will then keep clocking until the cartridge is ready.&lt;br /&gt;
&lt;br /&gt;
When the game cartridge is ready to send the actual data response, it will pull the DAT0 pin high for 2 cycles to let the Switch host know. After this, the game cartridge will send the actual data response bytes.&lt;br /&gt;
&lt;br /&gt;
The actual response bytes are also followed immediately by a 4-byte CRC-32 over the actual data response bytes.&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
A typical boot up sequence of a game cartridge (in this case, the game &amp;quot;1,2 Switch&amp;quot;) looks like this:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command&lt;br /&gt;
! Size&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5B000000000000010000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x200&lt;br /&gt;
| Read sector 0, contains &amp;quot;HEAD&amp;quot; blob&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;5B000000000000010000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x200&lt;br /&gt;
| Read sector 0, contains &amp;quot;HEAD&amp;quot; blob&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;56000000000000000000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Read card id &amp;quot;AE F8 01 21&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;28000000000000000000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Read ??? &amp;quot;02 00 00 00&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;A5000000000000000000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Read ??? &amp;quot;00 00 00 00&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;56000000000000000000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Read card id &amp;quot;AE F8 01 21&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;28000000000000000000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Read ??? &amp;quot;02 00 00 00&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;5B000000380000010000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x200&lt;br /&gt;
| Read sector 0x38, contains &amp;quot;CERT&amp;quot; blob&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;E2000000000000000000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Read ??? &amp;quot;01 00 00 00&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;E0000000000000000000000000000000&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x200&lt;br /&gt;
| Read crypto-challenge header&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;200838A25A344F818ABB6456694D4E8D&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0&lt;br /&gt;
| Enter crypto mode1 with HOST-RANDOM &amp;quot;0838A25A344F818ABB6456694D4E8D&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;7EE41FDF12C01C157CC899910673A0CF&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x40&lt;br /&gt;
| Encrypted crypto mode1 command, reads CART-RANDOM&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;263C8230EC15FAE3CE79365BD850F4BD&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x0&lt;br /&gt;
| Encrypted mode1 command, enters crypto mode2 with (HOST-RANDOM, CART-RANDOM)&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;B6FDA6F37FFA29E18831D0B217DFBDBE&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Encrypted mode2 command, possibly read card id?&lt;br /&gt;
|- &lt;br /&gt;
| &amp;lt;code&amp;gt;7B97F7DF07240AA9870E1C974336FA8A&amp;lt;/code&amp;gt;&lt;br /&gt;
| 0x4&lt;br /&gt;
| Encrypted mode2 command&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The meaning of some these commands are currently unknown.&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
* The &amp;quot;update&amp;quot; and &amp;quot;normal&amp;quot; partitions can be dumped using the plaintext 5B commands&lt;br /&gt;
* The &amp;quot;secure&amp;quot; partition can only be read from encrypted mode.&lt;br /&gt;
&lt;br /&gt;
== Encryption ==&lt;br /&gt;
After a few initial plaintext commands, the Switch instructs the game cartridge to enter into encrypted mode. From that point on, commands and responses are sent encrypted over the bus. The encryption algorithm used is currently unknown.&lt;br /&gt;
&lt;br /&gt;
There appear to be 2 kinds of crypto mode. &lt;br /&gt;
&lt;br /&gt;
Crypto mode1 is initiated solely by the HOST-RANDOM as random session seed. In that mode, the Switch host requests for the game cartridge random seed, and then sends a command to enter crypto mode2.&lt;br /&gt;
&lt;br /&gt;
Crypto mode2 takes into account the CART-RANDOM seed generated by the cartridge, and possibly the previous HOST-RANDOM.&lt;br /&gt;
The game cartridge will always send a different CART-RANDOM even if the exact same command sequence is replayed and thus with this scheme replay attacks are not possible.&lt;br /&gt;
&lt;br /&gt;
== Manufacturers ==&lt;br /&gt;
;Macronix (MX)&lt;br /&gt;
: Uses package: LGA&lt;br /&gt;
: Uses card id: 0xC2&lt;br /&gt;
;OKI Semiconductor &lt;br /&gt;
: Uses package: TSOP-48&lt;br /&gt;
: Uses card id: 0xAE&lt;br /&gt;
;SanDisk?&lt;br /&gt;
: Uses package: ??&lt;br /&gt;
: Uses card id: 0x45 ?&lt;/div&gt;</summary>
		<author><name>Stuckpixel</name></author>
	</entry>
</feed>