<?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=Smartperson</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=Smartperson"/>
	<link rel="alternate" type="text/html" href="https://switchbrew.org/wiki/Special:Contributions/Smartperson"/>
	<updated>2026-05-14T19:39:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=3.0.1&amp;diff=2946</id>
		<title>3.0.1</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=3.0.1&amp;diff=2946"/>
		<updated>2017-10-27T14:53:59Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: /* Change-log */ Update formatting to match Nintendo official info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Switch 3.0.1 system update was released on July 31, 2017. This Switch update was released for the following regions: ALL.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: &amp;lt;fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General system stability improvements to enhance the user&#039;s experience, including:&#039;&#039;&#039;&lt;br /&gt;
* Addressed an issue in which the remaining battery charge can&#039;t be displayed accurately &lt;br /&gt;
** If the system&#039;s battery power display suddenly increases or decreases, it will gradually improve by [http://en-americas-support.nintendo.com/app/answers/detail/a_id/27111 following these steps].&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
Exactly the following was updated:&lt;br /&gt;
* Every sysmodule.&lt;br /&gt;
* Every web-applet.&lt;br /&gt;
* Sysupdate titlelisting-title, browser &amp;quot;shareddata:/&amp;quot;, [[System Version Title]], and all FIRM packages.&lt;br /&gt;
&lt;br /&gt;
All sysmodules were rebuilt, where the only change was the hashid following the &amp;quot;GNU&amp;quot; string, however some sysmodules have additional changes.&lt;br /&gt;
* Some sysmodules have strings containing &amp;quot;D:\&#039;&#039;&#039;h&#039;&#039;&#039;ome\teamcity\work\sdk\Externals\{...}&amp;quot; changed to &amp;quot;D:\&#039;&#039;&#039;H&#039;&#039;&#039;ome\teamcity\work\sdk\Externals\{...}&amp;quot;.&lt;br /&gt;
* Build timestamp in wlan-sysmodule was updated.&lt;br /&gt;
&lt;br /&gt;
Actual updated sysmodules:&lt;br /&gt;
* nvservices&lt;br /&gt;
* pcv&lt;br /&gt;
* account&lt;br /&gt;
* nim&lt;br /&gt;
* pctl&lt;br /&gt;
* npns&lt;br /&gt;
* eupld&lt;br /&gt;
&lt;br /&gt;
The only changes for npns and account: The &amp;lt;nowiki&amp;gt;&amp;quot;https://dauth-%.ndas.srv.nintendo.net/v1/device_auth_token&amp;quot;&amp;lt;/nowiki&amp;gt; URL was changed to &amp;lt;nowiki&amp;gt;&amp;quot;https://dauth-%.ndas.srv.nintendo.net/{hex string}/device_auth_token&amp;quot;&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The above new URL was added(not replacing any URL in .(ro)data) to nim, + code changes. A &amp;quot;device_auth_token&amp;quot; string in nim was removed.&lt;br /&gt;
&lt;br /&gt;
As of October 19, 2017, manually accessing the above new URL with the proper post-data works fine, however accessing the old URL returns the following: &amp;lt;code&amp;gt;{&amp;quot;errors&amp;quot;:[{&amp;quot;code&amp;quot;:&amp;quot;0007&amp;quot;,&amp;quot;message&amp;quot;:&amp;quot;System update is required.&amp;quot;}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
Hence, all sysmodules using the old URL would throw a sysupdate-required error.&lt;br /&gt;
&lt;br /&gt;
===FIRM packages===&lt;br /&gt;
819:&lt;br /&gt;
&lt;br /&gt;
Everything under RomFS was updated.&lt;br /&gt;
&lt;br /&gt;
Kernel wasn&#039;t updated.&lt;br /&gt;
&lt;br /&gt;
The following firm-sysmodules were updated: FS, boot, and sm. The remaining modules(Loader, NCM, ProcessMana, and spl) were rebuilt: hashid following &amp;quot;GNU&amp;quot; string was updated.&lt;br /&gt;
&lt;br /&gt;
====[[Filesystem_services|FS]]====&lt;br /&gt;
Basically all code changes are related to the new [[NCA_Format|NCA]] crypto. Key-init function was updated due to the new NCA crypto. Various keyindex values were updated due to the new NCA crypto, for non-NCA and NCA code. A function which returned ncahdr_x206(&amp;quot;Crypto Type&amp;quot;) was replaced with a branch to the new &amp;lt;get-final-cryptotype&amp;gt; function described [[NCA_Format|here]](equivalent to similar changes elsewhere).&lt;br /&gt;
&lt;br /&gt;
====boot====&lt;br /&gt;
Updated 1 func and added a new func:&lt;br /&gt;
* Added a call to &amp;lt;new func&amp;gt;. w1 value passed to L_381c(prev ver L_37d4) is now the output of &amp;lt;mask&amp;gt;, instead of fixed to 0x1.&lt;br /&gt;
&lt;br /&gt;
==Internet Browser==&lt;br /&gt;
All webapplets were updated, vulnerabilities were fixed. 803/buildinfo/buildinfo.dat contains the following:&lt;br /&gt;
  r:14938&lt;br /&gt;
  p:NX64&lt;br /&gt;
  v:Release&lt;br /&gt;
  d:2017-07-11 17:51&lt;br /&gt;
  n:0.6.10&lt;br /&gt;
&lt;br /&gt;
==Keys==&lt;br /&gt;
The bootloader [[BCT#bootloader0_info|version]] was changed from 2 to 3.&lt;br /&gt;
&lt;br /&gt;
New keydata was introduced for NCA content, see [[NCA_Format|here]].&lt;br /&gt;
&lt;br /&gt;
New keydata was introduced for [[BCAT_Content_Container| BCAT containers]] for indexes 0x10 to 0x1F.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=07-31-17_08-05-16&amp;amp;sys=hac]&lt;br /&gt;
&lt;br /&gt;
{{NavboxVersions}}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=3.0.2&amp;diff=2945</id>
		<title>3.0.2</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=3.0.2&amp;diff=2945"/>
		<updated>2017-10-27T14:51:57Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Update formatting to match Nintendo official change log&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Switch 3.0.2 system update was released on September 5, 2017. This Switch update was released for the following regions: ALL.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: &amp;lt;fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:&lt;br /&gt;
* Nintendo Switch Online &lt;br /&gt;
** Added online play in Argentina, Brazil, Chile, Colombia, and Peru. This is currently available for free until the paid online service launches in 2018. &lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
&amp;lt;fill this in (manually) later&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FIRM-packages===&lt;br /&gt;
819:&lt;br /&gt;
&lt;br /&gt;
The only change under RomFS &amp;quot;/nx/&amp;quot; was package2. Filesize is same as before.&lt;br /&gt;
&lt;br /&gt;
Kernel was updated. FIRM-sysmodules were not updated.&lt;br /&gt;
&lt;br /&gt;
===0100000000000823===&lt;br /&gt;
The [[Title_list|0100000000000823]] title was updated, the following was updated in RomFS:&lt;br /&gt;
* /ac_0_not_b_nx&lt;br /&gt;
* /ac_1_not_b_nx&lt;br /&gt;
* /ac_2_not_b_nx&lt;br /&gt;
* /ac_3_b1_nx&lt;br /&gt;
* /ac_3_b2_nx&lt;br /&gt;
* /ac_3_not_b_nx&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=09-05-17_08-05-14&amp;amp;sys=hac]&lt;br /&gt;
&lt;br /&gt;
{{NavboxVersions}}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2944</id>
		<title>4.0.0</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2944"/>
		<updated>2017-10-27T14:39:36Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: /* Unofficial Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Switch 4.0.0 system update was released on October 18, 2017. This Switch update was released for the following regions: ALL.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: &amp;lt;fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Added the following system functionality&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Capture video on select games&lt;br /&gt;
** To capture video, hold down the Capture Button during gameplay&lt;br /&gt;
** Up to maximum of the previous 30 seconds will be saved in the Album. You can trim the beginning and end of each clip, and post to Facebook and Twitter. &lt;br /&gt;
** As of October 18th, 2017, this feature is compatible with The Legend of Zelda: Breath of the Wild, Mario Kart 8 Deluxe, ARMS, and Splatoon 2&lt;br /&gt;
* Select from 12 new Super Mario Odyssey and The Legend of Zelda: Breath of the Wild icons for your user&lt;br /&gt;
** To edit your user icon, head to your My Page on the top left of the Home Menu &amp;gt; Profile &lt;br /&gt;
* Transfer user and save data to another system&lt;br /&gt;
** To transfer, head to System Settings &amp;gt; Users &amp;gt; Transfer Your User and Save Data&lt;br /&gt;
* Pre-purchase option on Nintendo eShop&lt;br /&gt;
** A pre-purchase option will be available for certain games. This option allows pre-load of the game to your system for quicker play when the game is released.&lt;br /&gt;
** This feature will be supported by future game releases &lt;br /&gt;
* News channel updates&lt;br /&gt;
** The news feed has been updated with a new look. &lt;br /&gt;
**  Unfollowing a channel will remove that channel&#039;s content from the news feed and following the channel again will make it reappear.&lt;br /&gt;
* Match software version with a group of local users&lt;br /&gt;
** To create a group, head to the software&#039;s Options &amp;gt; Software Update &amp;gt; Match Version with Local Users&lt;br /&gt;
** Everyone&#039;s software will be updated to match the most recent version in the group&lt;br /&gt;
** All users must be on system menu version 4.0.0 or later to view and join a group &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General system stability improvements to enhance the user&#039;s experience, including&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Changed the specification which hid wireless networks using TKIP security from the network search results.  Wireless networks using TKIP security will now display in search results as a grayed-out selection instead of not being displayed&lt;br /&gt;
** The Nintendo Switch console supports WEP, WPA-PSK(AES), and WPA2-PSK(AES). If your router is using a different security type (e.g. WPA-PSK(TKIP)), you will need to change this security type within your router&#039;s settings.&lt;br /&gt;
&lt;br /&gt;
==Unofficial Changes==&lt;br /&gt;
* Added support for Wii U GameCube Adapter and Headsets [[List of compatible USB devices | over USB]]&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
&amp;lt;fill this in (manually) later&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Every single system title was updated, except for: 0100000000000805(&amp;quot;Chinese and Korean dictionaries&amp;quot;), 0100000000000808(&amp;quot;European, English and Japanese dictionaries&amp;quot;), and 010000000000080C(&amp;quot;EULA&amp;quot;).&lt;br /&gt;
* 4 new sysmodules were added, and new FIRM-package title 010000000000081C was added.&lt;br /&gt;
&lt;br /&gt;
===FIRM===&lt;br /&gt;
Everything under RomFS was updated.&lt;br /&gt;
&lt;br /&gt;
The package1 entrypoint address specified by BCT was increased by 0x20-bytes, since there&#039;s now an additional 0x20-bytes at the start of package1. The additional data is identical to the 0x20-byte block before it.&lt;br /&gt;
&lt;br /&gt;
====Package1====&lt;br /&gt;
  setKeyslotFlags (LT_4001011a)&lt;br /&gt;
  Instead of writing ~flags directly to securityEngine-&amp;gt;KEYSLOT_FLAGS[keyslot], this now preserves the high bits of the existing flags.&lt;br /&gt;
  &lt;br /&gt;
  getOdmFuse4Type (LT_40010614)&lt;br /&gt;
  This func now includes bits 16-19 in the OR&#039;d flag used in the switch, and now returns 4 as a default invalid result instead of the low bit of [[Fuses|FUSE_SPARE_BIT_5]].&lt;br /&gt;
  &lt;br /&gt;
  checkFuseCoherency (LT_400106e4)&lt;br /&gt;
  This func was updated to take into account the new invalid retval for getOdmFuse4Type.&lt;br /&gt;
  Checks that were only enforced on retail prior to this update (bootROM patch must be &amp;lt; 0x7F and EKS must be provisionned) are now enforced for dev too.&lt;br /&gt;
  The now redundant bootROM patch version &amp;lt; 0x1F check was removed.&lt;br /&gt;
    &lt;br /&gt;
  decryptAndParsePK11 (LT_40010734)&lt;br /&gt;
  The entrypoint calculation code no longer adds *(package11Header + 0x4) to the address.&lt;br /&gt;
  &lt;br /&gt;
  generateKeys (LT_400107a2)&lt;br /&gt;
  setKeyslotFlags(keyslot, 0x15) is now additionally called on keyslots 14 and 15.&lt;br /&gt;
  The code for switching key generation method depending on fuses (unit type) and last byte of PKC modulus has been removed, and replaced with a call to a single key generation function.&lt;br /&gt;
  The code block inbetween the keyslot-config code was replaced with just a call to LT_40011264(same function mentioned above).&lt;br /&gt;
  setKeyslotFlags(keyslot, 0xFF) is now used on keyslots 12 and 15 instead of 12 and 13.&lt;br /&gt;
  &lt;br /&gt;
  downgradeFuseCheck (LT_400111cc)&lt;br /&gt;
  The burnt fuse information stored in .rodata now expects 5 fuses to be burnt for retail units, instead of 4.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromBITAddress (LT_40011264)&lt;br /&gt;
  Instead of calling generateKeysLegacyMethod, this now calls generateKeysFromKeyblobAndKeyseeds (the main key generation function). Legacy key generation code has been removed.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromKeyblobAndKeyseeds (LT_400112f0)&lt;br /&gt;
  The function now takes in two keyseeds and sizes, previously it only took in one (keyseed, size) pair.&lt;br /&gt;
  Keyslot 15 (initially SSK) is now used where keyslot 10 was used previously, and keyslot 15 is no longer cleared when keyslot 14 (initially SBK) is cleared.&lt;br /&gt;
  The [[Flash_Filesystem|Keyblob]] keyseed was updated for keyblob 4.&lt;br /&gt;
  code block following the keyblob clear code was updated:&lt;br /&gt;
  After the decrypted keyblob is cleared, decryptDataIntoKeyslot(KEYSLOT_14, KEYSLOT_12, secondKeySeed, secondKeySeedSize) is now called before decryptDataIntoKeyslot(KEYSLOT_12, KEYSLOT_12, firstKeySeed, firstKeySeedSize).&lt;br /&gt;
  At the end of the function, &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_10, perConsoleKeyseed2, 0x10); clearKeyslot(KEYSLOT_10);&amp;quot; has been replaced with &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_15, perConsoleKeyseed3, 0x10); decryptDataIntoKeyslot(KEYSLOT_15, KEYSLOT_15, perConsoleKeyseed2, 0x10);&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Keys==&lt;br /&gt;
All of these updated titles now use the new [[NCA_Format|NCA]] crypto for [[NCA|non-ncatype0]](all content except .cnmt content), except for all of the FIRM-packages including the new one(required for FIRM installation).&lt;br /&gt;
&lt;br /&gt;
[[Flash_Filesystem|Keyblob]] 4 is now used, instead of 3.&lt;br /&gt;
&lt;br /&gt;
==OSS==&lt;br /&gt;
The updated [https://www.nintendo.co.jp/support/oss/index.html OSS] includes WebKit changes.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=10-18-17_08-05-13&amp;amp;sys=hac]&lt;br /&gt;
&lt;br /&gt;
{{NavboxVersions}}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2943</id>
		<title>4.0.0</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2943"/>
		<updated>2017-10-27T14:39:12Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Added note for GCN controller and USB headset support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Switch 4.0.0 system update was released on October 18, 2017. This Switch update was released for the following regions: ALL.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: &amp;lt;fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Added the following system functionality&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Capture video on select games&lt;br /&gt;
** To capture video, hold down the Capture Button during gameplay&lt;br /&gt;
** Up to maximum of the previous 30 seconds will be saved in the Album. You can trim the beginning and end of each clip, and post to Facebook and Twitter. &lt;br /&gt;
** As of October 18th, 2017, this feature is compatible with The Legend of Zelda: Breath of the Wild, Mario Kart 8 Deluxe, ARMS, and Splatoon 2&lt;br /&gt;
* Select from 12 new Super Mario Odyssey and The Legend of Zelda: Breath of the Wild icons for your user&lt;br /&gt;
** To edit your user icon, head to your My Page on the top left of the Home Menu &amp;gt; Profile &lt;br /&gt;
* Transfer user and save data to another system&lt;br /&gt;
** To transfer, head to System Settings &amp;gt; Users &amp;gt; Transfer Your User and Save Data&lt;br /&gt;
* Pre-purchase option on Nintendo eShop&lt;br /&gt;
** A pre-purchase option will be available for certain games. This option allows pre-load of the game to your system for quicker play when the game is released.&lt;br /&gt;
** This feature will be supported by future game releases &lt;br /&gt;
* News channel updates&lt;br /&gt;
** The news feed has been updated with a new look. &lt;br /&gt;
**  Unfollowing a channel will remove that channel&#039;s content from the news feed and following the channel again will make it reappear.&lt;br /&gt;
* Match software version with a group of local users&lt;br /&gt;
** To create a group, head to the software&#039;s Options &amp;gt; Software Update &amp;gt; Match Version with Local Users&lt;br /&gt;
** Everyone&#039;s software will be updated to match the most recent version in the group&lt;br /&gt;
** All users must be on system menu version 4.0.0 or later to view and join a group &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General system stability improvements to enhance the user&#039;s experience, including&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Changed the specification which hid wireless networks using TKIP security from the network search results.  Wireless networks using TKIP security will now display in search results as a grayed-out selection instead of not being displayed&lt;br /&gt;
** The Nintendo Switch console supports WEP, WPA-PSK(AES), and WPA2-PSK(AES). If your router is using a different security type (e.g. WPA-PSK(TKIP)), you will need to change this security type within your router&#039;s settings.&lt;br /&gt;
&lt;br /&gt;
==Unofficial Changes==&lt;br /&gt;
* Support for Wii U GameCube Adapter and Headsets [[List of compatible USB devices | over USB]]&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
&amp;lt;fill this in (manually) later&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Every single system title was updated, except for: 0100000000000805(&amp;quot;Chinese and Korean dictionaries&amp;quot;), 0100000000000808(&amp;quot;European, English and Japanese dictionaries&amp;quot;), and 010000000000080C(&amp;quot;EULA&amp;quot;).&lt;br /&gt;
* 4 new sysmodules were added, and new FIRM-package title 010000000000081C was added.&lt;br /&gt;
&lt;br /&gt;
===FIRM===&lt;br /&gt;
Everything under RomFS was updated.&lt;br /&gt;
&lt;br /&gt;
The package1 entrypoint address specified by BCT was increased by 0x20-bytes, since there&#039;s now an additional 0x20-bytes at the start of package1. The additional data is identical to the 0x20-byte block before it.&lt;br /&gt;
&lt;br /&gt;
====Package1====&lt;br /&gt;
  setKeyslotFlags (LT_4001011a)&lt;br /&gt;
  Instead of writing ~flags directly to securityEngine-&amp;gt;KEYSLOT_FLAGS[keyslot], this now preserves the high bits of the existing flags.&lt;br /&gt;
  &lt;br /&gt;
  getOdmFuse4Type (LT_40010614)&lt;br /&gt;
  This func now includes bits 16-19 in the OR&#039;d flag used in the switch, and now returns 4 as a default invalid result instead of the low bit of [[Fuses|FUSE_SPARE_BIT_5]].&lt;br /&gt;
  &lt;br /&gt;
  checkFuseCoherency (LT_400106e4)&lt;br /&gt;
  This func was updated to take into account the new invalid retval for getOdmFuse4Type.&lt;br /&gt;
  Checks that were only enforced on retail prior to this update (bootROM patch must be &amp;lt; 0x7F and EKS must be provisionned) are now enforced for dev too.&lt;br /&gt;
  The now redundant bootROM patch version &amp;lt; 0x1F check was removed.&lt;br /&gt;
    &lt;br /&gt;
  decryptAndParsePK11 (LT_40010734)&lt;br /&gt;
  The entrypoint calculation code no longer adds *(package11Header + 0x4) to the address.&lt;br /&gt;
  &lt;br /&gt;
  generateKeys (LT_400107a2)&lt;br /&gt;
  setKeyslotFlags(keyslot, 0x15) is now additionally called on keyslots 14 and 15.&lt;br /&gt;
  The code for switching key generation method depending on fuses (unit type) and last byte of PKC modulus has been removed, and replaced with a call to a single key generation function.&lt;br /&gt;
  The code block inbetween the keyslot-config code was replaced with just a call to LT_40011264(same function mentioned above).&lt;br /&gt;
  setKeyslotFlags(keyslot, 0xFF) is now used on keyslots 12 and 15 instead of 12 and 13.&lt;br /&gt;
  &lt;br /&gt;
  downgradeFuseCheck (LT_400111cc)&lt;br /&gt;
  The burnt fuse information stored in .rodata now expects 5 fuses to be burnt for retail units, instead of 4.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromBITAddress (LT_40011264)&lt;br /&gt;
  Instead of calling generateKeysLegacyMethod, this now calls generateKeysFromKeyblobAndKeyseeds (the main key generation function). Legacy key generation code has been removed.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromKeyblobAndKeyseeds (LT_400112f0)&lt;br /&gt;
  The function now takes in two keyseeds and sizes, previously it only took in one (keyseed, size) pair.&lt;br /&gt;
  Keyslot 15 (initially SSK) is now used where keyslot 10 was used previously, and keyslot 15 is no longer cleared when keyslot 14 (initially SBK) is cleared.&lt;br /&gt;
  The [[Flash_Filesystem|Keyblob]] keyseed was updated for keyblob 4.&lt;br /&gt;
  code block following the keyblob clear code was updated:&lt;br /&gt;
  After the decrypted keyblob is cleared, decryptDataIntoKeyslot(KEYSLOT_14, KEYSLOT_12, secondKeySeed, secondKeySeedSize) is now called before decryptDataIntoKeyslot(KEYSLOT_12, KEYSLOT_12, firstKeySeed, firstKeySeedSize).&lt;br /&gt;
  At the end of the function, &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_10, perConsoleKeyseed2, 0x10); clearKeyslot(KEYSLOT_10);&amp;quot; has been replaced with &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_15, perConsoleKeyseed3, 0x10); decryptDataIntoKeyslot(KEYSLOT_15, KEYSLOT_15, perConsoleKeyseed2, 0x10);&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Keys==&lt;br /&gt;
All of these updated titles now use the new [[NCA_Format|NCA]] crypto for [[NCA|non-ncatype0]](all content except .cnmt content), except for all of the FIRM-packages including the new one(required for FIRM installation).&lt;br /&gt;
&lt;br /&gt;
[[Flash_Filesystem|Keyblob]] 4 is now used, instead of 3.&lt;br /&gt;
&lt;br /&gt;
==OSS==&lt;br /&gt;
The updated [https://www.nintendo.co.jp/support/oss/index.html OSS] includes WebKit changes.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=10-18-17_08-05-13&amp;amp;sys=hac]&lt;br /&gt;
&lt;br /&gt;
{{NavboxVersions}}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2940</id>
		<title>4.0.0</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2940"/>
		<updated>2017-10-27T10:43:13Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: /* Change-log */ Removed overzealous Nintendo format matching (red color).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Switch 4.0.0 system update was released on October 18, 2017. This Switch update was released for the following regions: ALL.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: &amp;lt;fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Added the following system functionality&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Capture video on select games&lt;br /&gt;
** To capture video, hold down the Capture Button during gameplay&lt;br /&gt;
** Up to maximum of the previous 30 seconds will be saved in the Album. You can trim the beginning and end of each clip, and post to Facebook and Twitter. &lt;br /&gt;
** As of October 18th, 2017, this feature is compatible with The Legend of Zelda: Breath of the Wild, Mario Kart 8 Deluxe, ARMS, and Splatoon 2&lt;br /&gt;
* Select from 12 new Super Mario Odyssey and The Legend of Zelda: Breath of the Wild icons for your user&lt;br /&gt;
** To edit your user icon, head to your My Page on the top left of the Home Menu &amp;gt; Profile &lt;br /&gt;
* Transfer user and save data to another system&lt;br /&gt;
** To transfer, head to System Settings &amp;gt; Users &amp;gt; Transfer Your User and Save Data&lt;br /&gt;
* Pre-purchase option on Nintendo eShop&lt;br /&gt;
** A pre-purchase option will be available for certain games. This option allows pre-load of the game to your system for quicker play when the game is released.&lt;br /&gt;
** This feature will be supported by future game releases &lt;br /&gt;
* News channel updates&lt;br /&gt;
** The news feed has been updated with a new look. &lt;br /&gt;
**  Unfollowing a channel will remove that channel&#039;s content from the news feed and following the channel again will make it reappear.&lt;br /&gt;
* Match software version with a group of local users&lt;br /&gt;
** To create a group, head to the software&#039;s Options &amp;gt; Software Update &amp;gt; Match Version with Local Users&lt;br /&gt;
** Everyone&#039;s software will be updated to match the most recent version in the group&lt;br /&gt;
** All users must be on system menu version 4.0.0 or later to view and join a group &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General system stability improvements to enhance the user&#039;s experience, including&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Changed the specification which hid wireless networks using TKIP security from the network search results.  Wireless networks using TKIP security will now display in search results as a grayed-out selection instead of not being displayed&lt;br /&gt;
** The Nintendo Switch console supports WEP, WPA-PSK(AES), and WPA2-PSK(AES). If your router is using a different security type (e.g. WPA-PSK(TKIP)), you will need to change this security type within your router&#039;s settings.&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
&amp;lt;fill this in (manually) later&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Every single system title was updated, except for: 0100000000000805(&amp;quot;Chinese and Korean dictionaries&amp;quot;), 0100000000000808(&amp;quot;European, English and Japanese dictionaries&amp;quot;), and 010000000000080C(&amp;quot;EULA&amp;quot;).&lt;br /&gt;
* 4 new sysmodules were added, and new FIRM-package title 010000000000081C was added.&lt;br /&gt;
&lt;br /&gt;
===FIRM===&lt;br /&gt;
Everything under RomFS was updated.&lt;br /&gt;
&lt;br /&gt;
The package1 entrypoint address specified by BCT was increased by 0x20-bytes, since there&#039;s now an additional 0x20-bytes at the start of package1. The additional data is identical to the 0x20-byte block before it.&lt;br /&gt;
&lt;br /&gt;
====Package1====&lt;br /&gt;
  setKeyslotFlags (LT_4001011a)&lt;br /&gt;
  Instead of writing ~flags directly to securityEngine-&amp;gt;KEYSLOT_FLAGS[keyslot], this now preserves the high bits of the existing flags.&lt;br /&gt;
  &lt;br /&gt;
  getOdmFuse4Type (LT_40010614)&lt;br /&gt;
  This func now includes bits 16-19 in the OR&#039;d flag used in the switch, and now returns 4 as a default invalid result instead of the low bit of [[Fuses|FUSE_SPARE_BIT_5]].&lt;br /&gt;
  &lt;br /&gt;
  checkFuseCoherency (LT_400106e4)&lt;br /&gt;
  This func was updated to take into account the new invalid retval for getOdmFuse4Type.&lt;br /&gt;
  Checks that were only enforced on retail prior to this update (bootROM patch must be &amp;lt; 0x7F and EKS must be provisionned) are now enforced for dev too.&lt;br /&gt;
  The now redundant bootROM patch version &amp;lt; 0x1F check was removed.&lt;br /&gt;
    &lt;br /&gt;
  decryptAndParsePK11 (LT_40010734)&lt;br /&gt;
  The entrypoint calculation code no longer adds *(package11Header + 0x4) to the address.&lt;br /&gt;
  &lt;br /&gt;
  generateKeys (LT_400107a2)&lt;br /&gt;
  setKeyslotFlags(keyslot, 0x15) is now additionally called on keyslots 14 and 15.&lt;br /&gt;
  The code for switching key generation method depending on fuses (unit type) and last byte of PKC modulus has been removed, and replaced with a call to a single key generation function.&lt;br /&gt;
  The code block inbetween the keyslot-config code was replaced with just a call to LT_40011264(same function mentioned above).&lt;br /&gt;
  setKeyslotFlags(keyslot, 0xFF) is now used on keyslots 12 and 15 instead of 12 and 13.&lt;br /&gt;
  &lt;br /&gt;
  downgradeFuseCheck (LT_400111cc)&lt;br /&gt;
  The burnt fuse information stored in .rodata now expects 5 fuses to be burnt for retail units, instead of 4.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromBITAddress (LT_40011264)&lt;br /&gt;
  Instead of calling generateKeysLegacyMethod, this now calls generateKeysFromKeyblobAndKeyseeds (the main key generation function). Legacy key generation code has been removed.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromKeyblobAndKeyseeds (LT_400112f0)&lt;br /&gt;
  The function now takes in two keyseeds and sizes, previously it only took in one (keyseed, size) pair.&lt;br /&gt;
  Keyslot 15 (initially SSK) is now used where keyslot 10 was used previously, and keyslot 15 is no longer cleared when keyslot 14 (initially SBK) is cleared.&lt;br /&gt;
  The [[Flash_Filesystem|Keyblob]] keyseed was updated for keyblob 4.&lt;br /&gt;
  code block following the keyblob clear code was updated:&lt;br /&gt;
  After the decrypted keyblob is cleared, decryptDataIntoKeyslot(KEYSLOT_14, KEYSLOT_12, secondKeySeed, secondKeySeedSize) is now called before decryptDataIntoKeyslot(KEYSLOT_12, KEYSLOT_12, firstKeySeed, firstKeySeedSize).&lt;br /&gt;
  At the end of the function, &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_10, perConsoleKeyseed2, 0x10); clearKeyslot(KEYSLOT_10);&amp;quot; has been replaced with &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_15, perConsoleKeyseed3, 0x10); decryptDataIntoKeyslot(KEYSLOT_15, KEYSLOT_15, perConsoleKeyseed2, 0x10);&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Keys==&lt;br /&gt;
All of these updated titles now use the new [[NCA_Format|NCA]] crypto for [[NCA|non-ncatype0]](all content except .cnmt content), except for all of the FIRM-packages including the new one(required for FIRM installation).&lt;br /&gt;
&lt;br /&gt;
[[Flash_Filesystem|Keyblob]] 4 is now used, instead of 3.&lt;br /&gt;
&lt;br /&gt;
==OSS==&lt;br /&gt;
The updated [https://www.nintendo.co.jp/support/oss/index.html OSS] includes WebKit changes.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=10-18-17_08-05-13&amp;amp;sys=hac]&lt;br /&gt;
&lt;br /&gt;
{{NavboxVersions}}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=4.0.1&amp;diff=2939</id>
		<title>4.0.1</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=4.0.1&amp;diff=2939"/>
		<updated>2017-10-27T10:35:25Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Created page with &amp;quot;The Switch 4.0.1 system update was released on October 25, 2017. This Switch update was released for the following regions: ALL.  Security flaws fixed: &amp;lt;fill this in manually...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Switch 4.0.1 system update was released on October 25, 2017. This Switch update was released for the following regions: ALL.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: &amp;lt;fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/~/nintendo-switch-system-updates-and-change-history Official] ALL change-log:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;General system stability improvements to enhance the user&#039;s experience, including:&#039;&#039;&#039;&lt;br /&gt;
** Changed the HDMI connection process specification to match that of version 3.0.2 to address video and sound output issues with some TV models.&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
&amp;lt;fill this in (manually) later&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=10-25-17_08-05-13&amp;amp;sys=hac 1]&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2938</id>
		<title>4.0.0</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=4.0.0&amp;diff=2938"/>
		<updated>2017-10-27T10:25:42Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: /* Change-log */ Updated formatting to match Nintendo&amp;#039;s official and improve readability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Switch 4.0.0 system update was released on October 18, 2017. This Switch update was released for the following regions: ALL.&lt;br /&gt;
&lt;br /&gt;
Security flaws fixed: &amp;lt;fill this in manually later, see the updatedetails page from the ninupdates-report page(s) once available for now&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Change-log==&lt;br /&gt;
[http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 Official] ALL change-log:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Added the following system functionality&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Capture video on select games&lt;br /&gt;
** To capture video, &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&#039;&#039;&#039;hold down the Capture Button&#039;&#039;&#039;&amp;lt;/span&amp;gt; during gameplay&lt;br /&gt;
** Up to maximum of the previous 30 seconds will be saved in the Album. You can trim the beginning and end of each clip, and post to Facebook and Twitter. &lt;br /&gt;
** As of October 18th, 2017, this feature is compatible with The Legend of Zelda: Breath of the Wild, Mario Kart 8 Deluxe, ARMS, and Splatoon 2&lt;br /&gt;
* Select from 12 new Super Mario Odyssey and The Legend of Zelda: Breath of the Wild icons for your user&lt;br /&gt;
** To edit your user icon, head to your My Page on the top left of the Home Menu &amp;gt; Profile &lt;br /&gt;
* Transfer user and save data to another system&lt;br /&gt;
** To transfer, head to System Settings &amp;gt; Users &amp;gt; &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&#039;&#039;&#039;Transfer Your User and Save Data&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
* Pre-purchase option on Nintendo eShop&lt;br /&gt;
** A pre-purchase option will be available for certain games. This option allows pre-load of the game to your system for quicker play when the game is released.&lt;br /&gt;
** This feature will be supported by future game releases &lt;br /&gt;
* News channel updates&lt;br /&gt;
** The news feed has been updated with a new look. &lt;br /&gt;
**  Unfollowing a channel will remove that channel&#039;s content from the news feed and following the channel again will make it reappear.&lt;br /&gt;
* Match software version with a group of local users&lt;br /&gt;
** To create a group, head to the software&#039;s Options &amp;gt; Software Update &amp;gt; &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&#039;&#039;&#039;Match Version with Local Users&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
** Everyone&#039;s software will be updated to match the most recent version in the group&lt;br /&gt;
** All users must be on system menu version 4.0.0 or later to view and join a group &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;General system stability improvements to enhance the user&#039;s experience, including&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Changed the specification which hid wireless networks using TKIP security from the network search results.  Wireless networks using TKIP security will now display in search results as a grayed-out selection instead of not being displayed&lt;br /&gt;
** The Nintendo Switch console supports WEP, WPA-PSK(AES), and WPA2-PSK(AES). If your router is using a different security type (e.g. WPA-PSK(TKIP)), you will need to change this security type &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;&#039;&#039;&#039;within your router&#039;s settings&#039;&#039;&#039;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==System Titles==&lt;br /&gt;
&amp;lt;fill this in (manually) later&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Every single system title was updated, except for: 0100000000000805(&amp;quot;Chinese and Korean dictionaries&amp;quot;), 0100000000000808(&amp;quot;European, English and Japanese dictionaries&amp;quot;), and 010000000000080C(&amp;quot;EULA&amp;quot;).&lt;br /&gt;
* 4 new sysmodules were added, and new FIRM-package title 010000000000081C was added.&lt;br /&gt;
&lt;br /&gt;
===FIRM===&lt;br /&gt;
Everything under RomFS was updated.&lt;br /&gt;
&lt;br /&gt;
The package1 entrypoint address specified by BCT was increased by 0x20-bytes, since there&#039;s now an additional 0x20-bytes at the start of package1. The additional data is identical to the 0x20-byte block before it.&lt;br /&gt;
&lt;br /&gt;
====Package1====&lt;br /&gt;
  setKeyslotFlags (LT_4001011a)&lt;br /&gt;
  Instead of writing ~flags directly to securityEngine-&amp;gt;KEYSLOT_FLAGS[keyslot], this now preserves the high bits of the existing flags.&lt;br /&gt;
  &lt;br /&gt;
  getOdmFuse4Type (LT_40010614)&lt;br /&gt;
  This func now includes bits 16-19 in the OR&#039;d flag used in the switch, and now returns 4 as a default invalid result instead of the low bit of [[Fuses|FUSE_SPARE_BIT_5]].&lt;br /&gt;
  &lt;br /&gt;
  checkFuseCoherency (LT_400106e4)&lt;br /&gt;
  This func was updated to take into account the new invalid retval for getOdmFuse4Type.&lt;br /&gt;
  Checks that were only enforced on retail prior to this update (bootROM patch must be &amp;lt; 0x7F and EKS must be provisionned) are now enforced for dev too.&lt;br /&gt;
  The now redundant bootROM patch version &amp;lt; 0x1F check was removed.&lt;br /&gt;
    &lt;br /&gt;
  decryptAndParsePK11 (LT_40010734)&lt;br /&gt;
  The entrypoint calculation code no longer adds *(package11Header + 0x4) to the address.&lt;br /&gt;
  &lt;br /&gt;
  generateKeys (LT_400107a2)&lt;br /&gt;
  setKeyslotFlags(keyslot, 0x15) is now additionally called on keyslots 14 and 15.&lt;br /&gt;
  The code for switching key generation method depending on fuses (unit type) and last byte of PKC modulus has been removed, and replaced with a call to a single key generation function.&lt;br /&gt;
  The code block inbetween the keyslot-config code was replaced with just a call to LT_40011264(same function mentioned above).&lt;br /&gt;
  setKeyslotFlags(keyslot, 0xFF) is now used on keyslots 12 and 15 instead of 12 and 13.&lt;br /&gt;
  &lt;br /&gt;
  downgradeFuseCheck (LT_400111cc)&lt;br /&gt;
  The burnt fuse information stored in .rodata now expects 5 fuses to be burnt for retail units, instead of 4.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromBITAddress (LT_40011264)&lt;br /&gt;
  Instead of calling generateKeysLegacyMethod, this now calls generateKeysFromKeyblobAndKeyseeds (the main key generation function). Legacy key generation code has been removed.&lt;br /&gt;
  &lt;br /&gt;
  generateKeysFromKeyblobAndKeyseeds (LT_400112f0)&lt;br /&gt;
  The function now takes in two keyseeds and sizes, previously it only took in one (keyseed, size) pair.&lt;br /&gt;
  Keyslot 15 (initially SSK) is now used where keyslot 10 was used previously, and keyslot 15 is no longer cleared when keyslot 14 (initially SBK) is cleared.&lt;br /&gt;
  The [[Flash_Filesystem|Keyblob]] keyseed was updated for keyblob 4.&lt;br /&gt;
  code block following the keyblob clear code was updated:&lt;br /&gt;
  After the decrypted keyblob is cleared, decryptDataIntoKeyslot(KEYSLOT_14, KEYSLOT_12, secondKeySeed, secondKeySeedSize) is now called before decryptDataIntoKeyslot(KEYSLOT_12, KEYSLOT_12, firstKeySeed, firstKeySeedSize).&lt;br /&gt;
  At the end of the function, &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_10, perConsoleKeyseed2, 0x10); clearKeyslot(KEYSLOT_10);&amp;quot; has been replaced with &amp;quot;decryptDataIntoKeyslot(KEYSLOT_13, KEYSLOT_15, perConsoleKeyseed3, 0x10); decryptDataIntoKeyslot(KEYSLOT_15, KEYSLOT_15, perConsoleKeyseed2, 0x10);&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Keys==&lt;br /&gt;
All of these updated titles now use the new [[NCA_Format|NCA]] crypto for [[NCA|non-ncatype0]](all content except .cnmt content), except for all of the FIRM-packages including the new one(required for FIRM installation).&lt;br /&gt;
&lt;br /&gt;
[[Flash_Filesystem|Keyblob]] 4 is now used, instead of 3.&lt;br /&gt;
&lt;br /&gt;
==OSS==&lt;br /&gt;
The updated [https://www.nintendo.co.jp/support/oss/index.html OSS] includes WebKit changes.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
System update report(s):&lt;br /&gt;
* [https://yls8.mtheall.com/ninupdates/reports.php?date=10-18-17_08-05-13&amp;amp;sys=hac]&lt;br /&gt;
&lt;br /&gt;
{{NavboxVersions}}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=USB_services&amp;diff=2771</id>
		<title>USB services</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=USB_services&amp;diff=2771"/>
		<updated>2017-10-12T22:08:56Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: attempt to improve clarity on what &amp;#039;former&amp;#039; refers to&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One symbol in USB-sysmodule is: &amp;quot;vtable for nn::usb::detail::UsbComplexTegra21x&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= usb:ds =&lt;br /&gt;
Used for Switch&amp;lt;&amp;gt;PC USB comms, aka Switch-as-device.&lt;br /&gt;
This service is used during [[Factory Setup|factory setup]] by [[Manu Services|manu]].&lt;br /&gt;
&lt;br /&gt;
This service session is used as an IPC [[IPC_Marshalling|domain]] by [[Manu Services|manu]]. All of these {get-session} commands also return an output u8 and the u32 &amp;lt;[[IPC_Marshalling|domainID]]&amp;gt;, for using those sessions as domains.&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 || [[#BindDevice]] || &lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[#BindClientProcess]] || &lt;br /&gt;
|-&lt;br /&gt;
| 2 || [[#GetDsInterface]] || &lt;br /&gt;
|-&lt;br /&gt;
| 3 || [[#GetStateChangeEvent]] || &lt;br /&gt;
|-&lt;br /&gt;
| 4 || [[#GetState]] || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || [[#SetVidPidBcd]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Initialization done by [[Manu Services|manu]]:&lt;br /&gt;
* Initial service init:&lt;br /&gt;
** Get service/etc.&lt;br /&gt;
** Uses [[#BindDevice]].&lt;br /&gt;
** Uses [[#BindClientProcess]].&lt;br /&gt;
** Uses [[#GetStateChangeEvent]].&lt;br /&gt;
** Uses [[#SetVidPidBcd]].&lt;br /&gt;
* Interface init:&lt;br /&gt;
** Uses [[#GetDsInterface]], then uses commands from that with the rest of the following.&lt;br /&gt;
** Uses [[#GetSetupEvent]].&lt;br /&gt;
** Uses [[#GetCtrlInCompletionEvent]].&lt;br /&gt;
** Uses [[#GetCtrlOutCompletionEvent]].&lt;br /&gt;
* Initializes two endpoints via using [[#GetDsEndpoint]] twice.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
The following is the default USB config strings, while the usbds service isn&#039;t being used. All of the below configuration will reset to the defaults when all usbds-related sessions are closed. These can be set with [[#SetVidPidBcd]]. The default string for Product is loaded from [[Settings_services|settings]] config. The default is referred to by usb-sysmodule as &amp;quot;Dummy&amp;quot;.&lt;br /&gt;
  Product: Nintendo Switch&lt;br /&gt;
  Manufacturer: Nintendo&lt;br /&gt;
  SerialNumber: SerialNumber&lt;br /&gt;
&lt;br /&gt;
The following is the default &amp;lt;code&amp;gt;lsusb -v {...}&amp;lt;/code&amp;gt; output when the usbds service wasn&#039;t used.&lt;br /&gt;
&lt;br /&gt;
The endpoints are configured using [[#GetDsEndpoint]], the total number of endpoints is the number of open [[#IDsEndpoint]] sessions. bInterfaceNumber is {0-based index for the enabled [[#IDsInterface]] session.} Some of the interface fields are configured using [[#GetDsInterface]].&lt;br /&gt;
&lt;br /&gt;
Additional descriptors for use with interfaces and endpoints can&#039;t be configured with usbds, even though the former is used for the default HID interface. This seems to be the main(?) restriction with using usbds for Switch-as-arbitrary-devices. The device class fields can&#039;t be configured, interface class fields are set instead.&lt;br /&gt;
&lt;br /&gt;
  Bus 003 Device 006: ID 057e:2000 Nintendo Co., Ltd &lt;br /&gt;
  Couldn&#039;t open device, some information will be missing&lt;br /&gt;
  Device Descriptor:&lt;br /&gt;
    bLength                18&lt;br /&gt;
    bDescriptorType         1&lt;br /&gt;
    bcdUSB               2.00&lt;br /&gt;
    bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
    bDeviceSubClass         0 &lt;br /&gt;
    bDeviceProtocol         0 &lt;br /&gt;
    bMaxPacketSize0        64&lt;br /&gt;
    idVendor           0x057e Nintendo Co., Ltd&lt;br /&gt;
    idProduct          0x2000 &lt;br /&gt;
    bcdDevice            1.00&lt;br /&gt;
    iManufacturer           1 &lt;br /&gt;
    iProduct                2 &lt;br /&gt;
    iSerial                 3 &lt;br /&gt;
    bNumConfigurations      1&lt;br /&gt;
    Configuration Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         2&lt;br /&gt;
      wTotalLength           34&lt;br /&gt;
      bNumInterfaces          1&lt;br /&gt;
      bConfigurationValue     1&lt;br /&gt;
      iConfiguration          0 &lt;br /&gt;
      bmAttributes         0xc0&lt;br /&gt;
        Self Powered&lt;br /&gt;
      MaxPower              {...}&lt;br /&gt;
      Interface Descriptor:&lt;br /&gt;
        bLength                 9&lt;br /&gt;
        bDescriptorType         4&lt;br /&gt;
        bInterfaceNumber        0&lt;br /&gt;
        bAlternateSetting       0&lt;br /&gt;
        bNumEndpoints           1&lt;br /&gt;
        bInterfaceClass         3 Human Interface Device&lt;br /&gt;
        bInterfaceSubClass      0 No Subclass&lt;br /&gt;
        bInterfaceProtocol      0 None&lt;br /&gt;
        iInterface              0 &lt;br /&gt;
          HID Device Descriptor:&lt;br /&gt;
            bLength                 9&lt;br /&gt;
            bDescriptorType        33&lt;br /&gt;
            bcdHID               2.00&lt;br /&gt;
            bCountryCode            0 Not supported&lt;br /&gt;
            bNumDescriptors         1&lt;br /&gt;
            bDescriptorType        34 Report&lt;br /&gt;
            wDescriptorLength      26&lt;br /&gt;
           Report Descriptors: &lt;br /&gt;
             ** UNAVAILABLE **&lt;br /&gt;
        Endpoint Descriptor:&lt;br /&gt;
          bLength                 7&lt;br /&gt;
          bDescriptorType         5&lt;br /&gt;
          bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
          bmAttributes            3&lt;br /&gt;
            Transfer Type            Interrupt&lt;br /&gt;
            Synch Type               None&lt;br /&gt;
            Usage Type               Data&lt;br /&gt;
          wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
          bInterval              16&lt;br /&gt;
&lt;br /&gt;
== BindDevice ==&lt;br /&gt;
Takes an u32 (&#039;&#039;&#039;complexId&#039;&#039;&#039;). [[Manu_Services|Manu]] sends 0x02.&lt;br /&gt;
&lt;br /&gt;
Binding more than once with the current session is not allowed. Once this command is used, the USB device will not be listed with &amp;lt;code&amp;gt;lsusb&amp;lt;/code&amp;gt; until [[#EnableInterface]] is used.&lt;br /&gt;
&lt;br /&gt;
Returns a not-found error when complexId isn&#039;t 0x02, for values 0x0-0x4 (while in handheld-mode at least).&lt;br /&gt;
&lt;br /&gt;
== BindClientProcess ==&lt;br /&gt;
Takes 1 copy-handle for the current process (0xFFFF8001).&lt;br /&gt;
&lt;br /&gt;
== GetDsInterface ==&lt;br /&gt;
Takes 2 type-5 buffers and returns an [[#IDsInterface]]. [[Manu_Services|Manu]] sends a 0x09-byte command (e.g.: 0x09, 0x04, 0x04, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00) in the first buffer and a string (&amp;quot;usb&amp;quot;) in the second buffer.&lt;br /&gt;
&lt;br /&gt;
When the strlen output for the second buffer is &amp;gt;=0x40, size 0x40 is used instead for copying the string. This is the interface name, it&#039;s not sent over USB.&lt;br /&gt;
&lt;br /&gt;
Returns an error when [[#BindDevice]] wasn&#039;t used.&lt;br /&gt;
&lt;br /&gt;
Up to 4 interfaces can be used+[[#EnableInterface|enabled]].&lt;br /&gt;
&lt;br /&gt;
Structure of the first buffer(this is the same as [http://libusb.sourceforge.net/api-1.0/structlibusb__interface__descriptor.html libusb__interface__descriptor]):&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 || 0x1 || bLength. Must match 0x9.&lt;br /&gt;
|-&lt;br /&gt;
| 0x1 || 0x1 || bDescriptorType. Must match 0x4.&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x1 || bInterfaceNumber. When 0x4, the bInterfaceNumber is automatically allocated(error will be thrown if no space). Otherwise, it&#039;s used directly and must be &amp;lt;=3.&lt;br /&gt;
|-&lt;br /&gt;
| 0x3 || 0x1 || bAlternateSetting. Must match 0x0.&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x1 || bNumEndpoints. Ignored.&lt;br /&gt;
|-&lt;br /&gt;
| 0x5 || 0x1 || bInterfaceClass&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 || 0x1 || bInterfaceSubClass&lt;br /&gt;
|-&lt;br /&gt;
| 0x7 || 0x1 || bInterfaceProtocol&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x1 || iInterface. Ignored.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Only the first 0x9-bytes are used.&lt;br /&gt;
&lt;br /&gt;
== GetStateChangeEvent ==&lt;br /&gt;
Returns an event handle for when the state returned by [[#GetState]] changes. Signalled when Switch&amp;lt;-&amp;gt;host USB comms change between started/stopped. USB cable connected/disconnected while at least 1 interface was enabled, or interface enabled/disabled while the USB cable was connected which then caused USB-comms state to change.&lt;br /&gt;
&lt;br /&gt;
== GetState ==&lt;br /&gt;
No input. Returns an output u32. Returns an error when [[#BindDevice]] wasn&#039;t used.&lt;br /&gt;
&lt;br /&gt;
Returns the current state. Values: &lt;br /&gt;
* 0: Initial state.&lt;br /&gt;
* 6: Device init starting.&lt;br /&gt;
* 3: {Initialization}, previous state is 6.&lt;br /&gt;
* 4: {Initialization}, previous state is 3.&lt;br /&gt;
* 5: Initialization done, data-transfer is now available.&lt;br /&gt;
&lt;br /&gt;
== SetVidPidBcd ==&lt;br /&gt;
Takes a type-5 buffer with 0x66 bytes of USB descriptor data (see [[Manu_Services#manu|manu]]).&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 || 0x2 || VID (idVendor)&lt;br /&gt;
|-&lt;br /&gt;
| 0x2 || 0x2 || PID (idProduct)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x2 || bcdDevice&lt;br /&gt;
|-&lt;br /&gt;
| 0x6 || 0x20 || Manufacturer&lt;br /&gt;
|-&lt;br /&gt;
| 0x26 || 0x20 || Product&lt;br /&gt;
|-&lt;br /&gt;
| 0x46 || 0x20 || SerialNumber&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The last 3 blocks are ASCII strings. The data following each string is all-zero, for padding to size 0x20.&lt;br /&gt;
&lt;br /&gt;
== IDsInterface ==&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 || [[#GetDsEndpoint]] || &lt;br /&gt;
|-&lt;br /&gt;
| 1 || [[#GetSetupEvent]] || &lt;br /&gt;
|-&lt;br /&gt;
| 2 || || Takes a type-0x6 output buffer, no other output. Memcpys data to outbuf with outsize, uses size 0x8 if outsize is too large.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || [[#EnableInterface]] || &lt;br /&gt;
|-&lt;br /&gt;
| 4 || [[#DisableInterface]] || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || [[#CtrlInPostBufferAsync]] || &lt;br /&gt;
|-&lt;br /&gt;
| 6 || [[#CtrlOutPostBufferAsync]] || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || [[#GetCtrlInCompletionEvent]] || &lt;br /&gt;
|-&lt;br /&gt;
| 8 || [[#GetCtrlInReportData]] || &lt;br /&gt;
|-&lt;br /&gt;
| 9 || [[#GetCtrlOutCompletionEvent]] || &lt;br /&gt;
|-&lt;br /&gt;
| 10 || [[#GetCtrlOutReportData]] || &lt;br /&gt;
|-&lt;br /&gt;
| 11 || [[#StallCtrl]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Commands cmd2, [[#CtrlInPostBufferAsync]], [[#CtrlOutPostBufferAsync]], and [[#StallCtrl]], will throw an error if the interface is not [[#EnableInterface|enabled]]. [[#GetDsEndpoint]] will throw an error if the interface is [[#EnableInterface|enabled]].&lt;br /&gt;
&lt;br /&gt;
=== GetDsEndpoint ===&lt;br /&gt;
Takes a type-5 buffer and returns an [[#IDsEndpoint]]. [[Manu_Services|Manu]] uses this twice for getting two endpoint sessions, with the following 0x7-byte buffer data:&lt;br /&gt;
* First endpoint: 0x07, 0x05, 0x80, 0x02, 0x00, 0x02, 0x00&lt;br /&gt;
** bLength=0x7&lt;br /&gt;
** bDescriptorType=LIBUSB_DT_ENDPOINT&lt;br /&gt;
** bEndpointAddress=LIBUSB_ENDPOINT_IN&lt;br /&gt;
** bmAttributes=LIBUSB_TRANSFER_TYPE_BULK&lt;br /&gt;
** wMaxPacketSize=0x200&lt;br /&gt;
** bInterval=0&lt;br /&gt;
* Second endpoint: Same as above except byte2 is 0x00(bEndpointAddress=LIBUSB_ENDPOINT_OUT).&lt;br /&gt;
&lt;br /&gt;
Each field is an u8, except for offset 0x4-0x5 which is an u16.&lt;br /&gt;
&lt;br /&gt;
This structure matches [http://libusb.sourceforge.net/api-1.0/structlibusb__endpoint__descriptor.html libusb_endpoint_descriptor], with audio-only-devices fields bRefresh and bSynchAddress removed.&lt;br /&gt;
&lt;br /&gt;
The buffer size must be &amp;gt;=0x7. Only the first 0x7-bytes from the buffer are used.&lt;br /&gt;
* Byte0(bLength) must match 0x7.&lt;br /&gt;
* Byte1(bDescriptorType) must match 0x5.&lt;br /&gt;
* Byte2(bEndpointAddress) is only compared with 0x80 to determine whether to use an input or output endpoint, the actual endpoint-number is allocated automatically by checking state. Hence, all input endpoints must use bEndpointAddress==0x80. Up to endpoint-number 0xF can be allocated for each endpoint-direction, for a total of 16 endpoints including control, and 15 for non-control endpoints([[#IDsEndpoint]] sessions for each direction). This matches the Tegra maximum.&lt;br /&gt;
&lt;br /&gt;
From the Tegra datasheet: &amp;quot;The maximum packet size supported on any endpoint is 1024 bytes in high-speed mode, for both device and host modes.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== GetSetupEvent ===&lt;br /&gt;
Returns an event handle. Unknown what triggers signalling, not signalled during interface-enable / device&amp;lt;&amp;gt;host USB-comms init.&lt;br /&gt;
&lt;br /&gt;
=== EnableInterface ===&lt;br /&gt;
Takes no arguments. Enables the current interface.&lt;br /&gt;
&lt;br /&gt;
Only one interface can be enabled at a time per bInterfaceNumber. When bInterfaceNumber is auto-allocate(0x4) for [[#GetDsEndpoint]] this isn&#039;t an issue since the final bInterfaceNumber will be unique.&lt;br /&gt;
&lt;br /&gt;
Once enabled, the device/interface can then actually be used over USB.&lt;br /&gt;
&lt;br /&gt;
=== DisableInterface ===&lt;br /&gt;
Takes no arguments. Disables the current interface.&lt;br /&gt;
&lt;br /&gt;
=== CtrlInPostBufferAsync ===&lt;br /&gt;
Same as [[#PostBufferAsync]](with same input/output), except this uses control input endpoint 0x80.&lt;br /&gt;
&lt;br /&gt;
=== CtrlOutPostBufferAsync ===&lt;br /&gt;
Same as [[#PostBufferAsync]](with same input/output), except this uses control output endpoint 0x00.&lt;br /&gt;
&lt;br /&gt;
=== GetCtrlInCompletionEvent ===&lt;br /&gt;
Returns an event handle for polling the completion of input control commands. Same as [[#GetCompletionEvent]], except this uses control input endpoint 0x80.&lt;br /&gt;
&lt;br /&gt;
=== GetCtrlInReportData ===&lt;br /&gt;
Same as [[#GetReportData]](with same input/output), except this uses control input endpoint 0x80.&lt;br /&gt;
&lt;br /&gt;
=== GetCtrlOutCompletionEvent ===&lt;br /&gt;
Returns an event handle for polling the completion of output control commands. Same as [[#GetCompletionEvent]], except this uses control output endpoint 0x00.&lt;br /&gt;
&lt;br /&gt;
=== GetCtrlOutReportData ===&lt;br /&gt;
Same as [[#GetReportData]](with same input/output), except this uses control output endpoint 0x00.&lt;br /&gt;
&lt;br /&gt;
=== StallCtrl ===&lt;br /&gt;
No input/output.&lt;br /&gt;
&lt;br /&gt;
Calls a function with both control endpoints(0x80 and 0x00) with the same function. From strings: &amp;quot;m_pProtocol-&amp;gt;Stall(0x80)&amp;quot; &amp;quot;m_pProtocol-&amp;gt;Stall(0x00)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== IDsEndpoint ===&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 || [[#PostBufferAsync]] || &lt;br /&gt;
|-&lt;br /&gt;
| 1 || || No input/output.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || [[#GetCompletionEvent]] || &lt;br /&gt;
|-&lt;br /&gt;
| 3 || [[#GetReportData]] || &lt;br /&gt;
|-&lt;br /&gt;
| 4 || [[#Stall]] || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || || Takes an input u8, no output.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== PostBufferAsync ====&lt;br /&gt;
Takes an u32 (&#039;&#039;&#039;size&#039;&#039;&#039;) and an u64 (&#039;&#039;&#039;buffer&#039;&#039;&#039;). Returns an output u32 (&#039;&#039;&#039;urbId&#039;&#039;&#039;). The output urbId can then be used while parsing the output of [[#GetReportData]], after waiting for the CompletionEvent to be signalled.&lt;br /&gt;
&lt;br /&gt;
The buffer address must be 0x1000-byte aligned. The input size doesn&#039;t matter.&lt;br /&gt;
&lt;br /&gt;
Used for data-transfer with input/output endpoints.&lt;br /&gt;
&lt;br /&gt;
The user-process must flush dcache for the buffer before using this command.&lt;br /&gt;
&lt;br /&gt;
When sending data where size is larger than wMaxPacketSize, it will automatically send multiple USB packets where last packet size = {remaining size}. Every {wMaxPacketSize}-bytes is a different packet.&lt;br /&gt;
&lt;br /&gt;
For receiving data, if size is less than {actual received USB packet size} the rest of the packet will be discarded. Later PostBufferAsync cmd(s) will only return data from new packets, not the remainder of the earlier packet(s).&lt;br /&gt;
&lt;br /&gt;
==== GetCompletionEvent ====&lt;br /&gt;
No input. Returns an output event handle for polling the completion of [[#PostBufferAsync]], even when it finished via [[#Stall]].&lt;br /&gt;
&lt;br /&gt;
==== GetReportData ====&lt;br /&gt;
No input. Returns 0x84 bytes of report data from the endpoint. Seems to be eventually loaded from state, since this doesn&#039;t trigger any USB bus activity. All-zero before PostBufferAsync was used at least once.&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 || 0x10*0x8(0x80) || 0x8 entries 0x10-bytes each for each report.&lt;br /&gt;
|-&lt;br /&gt;
| 0x80 || 0x4 || u32 report count&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Entry data:&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 || u32 id (urbId from post-buffer commands)&lt;br /&gt;
|-&lt;br /&gt;
| 0x4 || 0x4 || u32 requestedSize&lt;br /&gt;
|-&lt;br /&gt;
| 0x8 || 0x4 || u32 transferredSize&lt;br /&gt;
|-&lt;br /&gt;
| 0xC || 0x4 || u32 urb status, converted to error-codes. 0x3 = success, 0x4 = 0x828c, 0x5 = 0x748c. All other values are invalid.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Stall ====&lt;br /&gt;
No input/output.&lt;br /&gt;
&lt;br /&gt;
Calls the same function used by [[#StallCtrl]], except this uses the endpoint associated with the current session.&lt;br /&gt;
&lt;br /&gt;
Stops in-progress data-transfer done by [[#PostBufferAsync]].&lt;br /&gt;
&lt;br /&gt;
= usb:hs =&lt;br /&gt;
General USB devices usage, used by hid-sysmodule and bsdsockets-sysmodule.&lt;br /&gt;
&lt;br /&gt;
= usb:pd =&lt;br /&gt;
Only system-titles with access to this are [[PTM_services|PTM]] and [[AM_services|AM]].&lt;br /&gt;
&lt;br /&gt;
= usb:pd:c =&lt;br /&gt;
USB-sysmodule symbols for this refer to &amp;quot;Cradle&amp;quot;, which is the [[Dock]].&lt;br /&gt;
&lt;br /&gt;
= usb:pm =&lt;br /&gt;
Presumably Power Management, only system-title using this is [[PTM_services|PTM]].&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=NCM_services&amp;diff=1543</id>
		<title>NCM services</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=NCM_services&amp;diff=1543"/>
		<updated>2017-07-16T15:13:48Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: /* lr */ cross-reference link to StorageID&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LR (Location Resolver) contains services for internal file path and content management.&lt;br /&gt;
&lt;br /&gt;
= LR services =&lt;br /&gt;
== lr ==&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 || GetPathResolverForStorage || Takes a [[Filesystem_services#StorageId|StorageID]]&lt;br /&gt;
|-&lt;br /&gt;
| 1 || GetPatchPathResolver? || &lt;br /&gt;
|-&lt;br /&gt;
| 2 || CheckStorage || Takes a [[Filesystem_services#StorageId|StorageID]]&lt;br /&gt;
|-&lt;br /&gt;
| 3 || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IPathResolver ===&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 || GetProgramNcaPath ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SetProgramNcaPath ||&lt;br /&gt;
|-&lt;br /&gt;
| 2 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 3 || ||&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GetControlNcaPath ||&lt;br /&gt;
|-&lt;br /&gt;
| 5 || SetControlNcaPath ||&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;
&lt;br /&gt;
= Content Manager services =&lt;br /&gt;
== ncm ==&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 || || &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 || GetIContentStorage ||&lt;br /&gt;
|-&lt;br /&gt;
| 5 || GetIContentMetaDatabase ||&lt;br /&gt;
|-&lt;br /&gt;
| 8 || || &lt;br /&gt;
|-&lt;br /&gt;
| 9 || InitializeStorageForMediaId ||&lt;br /&gt;
|-&lt;br /&gt;
| 10 || UninitializeStorageForMediaId ||&lt;br /&gt;
|-&lt;br /&gt;
| 11 || InitializeDatabaseForMediaId ||&lt;br /&gt;
|-&lt;br /&gt;
| 12 || UninitializeDatabaseForMediaId ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All of the above cmds takes a u8 as input.&lt;br /&gt;
&lt;br /&gt;
=== IContentStorage ===&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 || [[#GetRootEntry]] ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || || Takes two 0x10-sized entries, and a u64.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || || Takes a 0x10-sized entry.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || || Takes a 0x10-sized entry, returns a bool/u8.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || || Takes a 0x10-sized entry, a u64-offset, and type-5 array.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || || Takes two 0x10-sized entries.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || DeleteContent? || Takes a 0x10-sized entry.&lt;br /&gt;
|-&lt;br /&gt;
| 7 || IsNcaEntryValid || Takes a 0x10-sized entry, returns a bool/u8.&lt;br /&gt;
|-&lt;br /&gt;
| 8 || MakeNcaRegisteredPath || Takes a type-0x1A string and a 0x10-sized entry.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || MakeNcaPlaceholderPath || Takes a type-0x1A string and a 0x10-sized entry.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || || Void.&lt;br /&gt;
|-&lt;br /&gt;
| 11 || || Takes a type-6 buffer, each entry 0x10 bytes, and returns a u32.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || [[#GetNumberOfEntries]] ||&lt;br /&gt;
|-&lt;br /&gt;
| 13 || [[#GetEntries]] ||&lt;br /&gt;
|-&lt;br /&gt;
| 14 || [[#GetEntrySize]] ||&lt;br /&gt;
|-&lt;br /&gt;
| 15 || || Void.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || || Takes three 0x10-sized entries.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || || Takes a 0x10-sized entry and a u64.&lt;br /&gt;
|-&lt;br /&gt;
| 18 || [[#ReadEntryRaw]] ||&lt;br /&gt;
|-&lt;br /&gt;
| 19 || || Takes a 0x10-sized entry and returns another 0x10-sized entry.&lt;br /&gt;
|-&lt;br /&gt;
| 20 || [[#GetNcaTitleInfo]] || &lt;br /&gt;
|-&lt;br /&gt;
| 21 || || Takes a 0x10-sized entry, a u64, and a type5 buffer.&lt;br /&gt;
|-&lt;br /&gt;
| 22 || GetFreeSpace ||&lt;br /&gt;
|-&lt;br /&gt;
| 23 || GetTotalSpace ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GetRootEntry ====&lt;br /&gt;
Returns an entry of 16 completely random-looking bytes. It is not possible to read this entry.&lt;br /&gt;
&lt;br /&gt;
Changes on reboot?&lt;br /&gt;
&lt;br /&gt;
==== GetNumberOfEntries ====&lt;br /&gt;
Writes the total number of entries which can be read by GetEntries, to cmdreply &amp;lt;SFCO_offset&amp;gt;+0x10.&lt;br /&gt;
&lt;br /&gt;
==== GetEntries ====&lt;br /&gt;
Takes an output buffer, u32 offset and gets all entries starting at that offset.&lt;br /&gt;
Returns number of entries read.&lt;br /&gt;
&lt;br /&gt;
Each entry is a [[#NcaID]].&lt;br /&gt;
&lt;br /&gt;
The total read entries is exactly the same as the number of &amp;quot;&amp;lt;hex&amp;gt;.nca&amp;quot; directories in the storage FS(or at least under the &amp;quot;registered&amp;quot; directory?).&lt;br /&gt;
&lt;br /&gt;
==== GetEntrySize ====&lt;br /&gt;
Takes a [[#NcaID]] as input.&lt;br /&gt;
&lt;br /&gt;
Returns the total size readable by ReadEntryRaw. This is the same as the size-field in the [[NAX0]] &amp;quot;&amp;lt;NcaID&amp;gt;.nca/00&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
==== ReadEntryRaw ====&lt;br /&gt;
Takes an output buffer, a [[#NcaID]] as input, and a u64 file offset.&lt;br /&gt;
&lt;br /&gt;
Returns encrypted looking data from the content in the [[NAX0]]. Doesn&#039;t match the encrypted raw data in the [[NAX0]] &amp;quot;&amp;lt;NcaID&amp;gt;.nca/00&amp;quot; file. Seems to be at least one crypto layer below the initial NAX0 layer, since the data doesn&#039;t change after NAX0 recreation.&lt;br /&gt;
&lt;br /&gt;
Manually modifying the content in the NAX0(starting at offset 0x4000) results in different output data being returned by this cmd. Changing any data within the first 0x10-bytes results in the entire 0x10-byte block changing. Likewise for offset 0x4010 size 0x1, entire 0x10-byte block at 0x4010 changes. Changing the first 0x20-bytes at 0x4000 to zeros has the same combined changed output, as when offset 0x4000 size 0x10 and offset 0x4010 size 0x10 were changed to zeros separately. Output BlockA and BlockB are completely different, where the raw NAX0 data for those blocks are all-zero.&lt;br /&gt;
&lt;br /&gt;
Overwriting the entire raw NAX0 content with zeros results in output data which doesn&#039;t seem to have any duplicate blocks/data. When changing the previously mentioned raw content for the first 8 blocks to last-block-byte = 1&amp;lt;&amp;lt;i, where i is 0-7, none of the changed output blocks match any output blocks from the previously mentioned output(all-zero raw content).&lt;br /&gt;
&lt;br /&gt;
This implies that that an AES mode is being used which isn&#039;t CTR, where changing data in one block doesn&#039;t affect other blocks.&lt;br /&gt;
&lt;br /&gt;
See GetEntrySize for the total size readable with this.&lt;br /&gt;
&lt;br /&gt;
==== GetNcaTitleInfo ====&lt;br /&gt;
Takes a [[#NcaID]] and returns the following 0x10-sized entry.&lt;br /&gt;
&lt;br /&gt;
With some NcaIDs this may return 0 with an all-zero output entry. This seems to be the case for most/all (?) NandSystem NcaIds? This seems to be only usable with NcaIds which have [[NCA|type]] 1 or 4.&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;
| 0x8&lt;br /&gt;
| Big-endian titleID&lt;br /&gt;
|-&lt;br /&gt;
| 0x8&lt;br /&gt;
| 0x8&lt;br /&gt;
| Unknown. Usually zero?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== IContentMetaDatabase ===&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 || InsertContentEntry? || Takes a 0x10-sized entry, a type-5 buffer and a u64.&lt;br /&gt;
|-&lt;br /&gt;
| 1 || || Takes a 0x10-sized entry, a type-6 buffer and a u64. Returns a u64.&lt;br /&gt;
|-&lt;br /&gt;
| 2 || || Takes a 0x10-sized entry.&lt;br /&gt;
|-&lt;br /&gt;
| 3 || || Takes a 0x10-sized entry and a bool/u8. Returns an 0x10-sized entry.&lt;br /&gt;
|-&lt;br /&gt;
| 4 || || Takes a type-6 buffer, each entry being 24 bytes, 0x10-sized entry and a u32. Returns a u32.&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Iterate || Takes a type-6 buffer, each entry being 16 bytes, a 0x10-sized entry, and a u32. Returns a u32.&lt;br /&gt;
|-&lt;br /&gt;
| 6 || [[#GetTitleIdInfo]] ||&lt;br /&gt;
|-&lt;br /&gt;
| 7 || [[#GetTitleList]] || Takes a type-6 buffer, each entry being 24 bytes, and a u8/bool. Returns two u32&#039;s. &lt;br /&gt;
|-&lt;br /&gt;
| 8 || || Takes a 0x10-sized entry. Returns a bool/u8.&lt;br /&gt;
|-&lt;br /&gt;
| 9 || || Takes a type-5 buffer, each entry being 16 bytes. Returns a bool/u8.&lt;br /&gt;
|-&lt;br /&gt;
| 10 || || Takes a 0x10-sized entry. Returns a u64.&lt;br /&gt;
|-&lt;br /&gt;
| 11 || || Takes a 0x10-sized entry. Returns a u32.&lt;br /&gt;
|-&lt;br /&gt;
| 12 || || Takes a 0x10-sized entry. Returns a u64.&lt;br /&gt;
|-&lt;br /&gt;
| 13 || || Void.&lt;br /&gt;
|-&lt;br /&gt;
| 14 || || Takes a type-6 byte buffer, and a type-5 buffer with each entry being 16 bytes.&lt;br /&gt;
|-&lt;br /&gt;
| 15 || EndIteration || Void.&lt;br /&gt;
|-&lt;br /&gt;
| 16 || || Takes two 0x10-sized entries. Returns a bool/u8.&lt;br /&gt;
|-&lt;br /&gt;
| 17 || [[#GetUpdateTitleList]] || &lt;br /&gt;
|-&lt;br /&gt;
| 18 || || Takes a 0x10-sized entry. Returns a bool/u8.&lt;br /&gt;
|-&lt;br /&gt;
| 19 || || Takes a 0x10-sized entry. Returns a u32.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== GetTitleIdInfo ====&lt;br /&gt;
Takes a u64 title-id as input, returns same title-id together with info struct.&lt;br /&gt;
&lt;br /&gt;
 struct title_info {&lt;br /&gt;
   u32  version;&lt;br /&gt;
   u8   type;&lt;br /&gt;
   u8   pad[3];&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
==== GetTitleList ====&lt;br /&gt;
Each 24-byte entries is as follows:&lt;br /&gt;
&lt;br /&gt;
  u64    title_id_update;&lt;br /&gt;
  struct title_info info;&lt;br /&gt;
  u64    title_id;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== GetUpdateTitleList ====&lt;br /&gt;
Takes a type-6 output buffer, each entry being 0x10-byte bytes, a u32 entryoffset and a 0x10-sized entry. Returns a u32 for total_read_entries.&lt;br /&gt;
&lt;br /&gt;
The input entry is the output entry from [[#GetTitleIdInfo]] starting at the TID. The output 0x10-bytes entries are the same as the output from [[#GetTitleIdInfo]] starting at the TID. However, &amp;quot;pad[0]&amp;quot; is used for something else it seems?(0 for everything except for TID [[Title_list|010000000000081B]], where it&#039;s 1)&lt;br /&gt;
&lt;br /&gt;
See [[NCA#Meta_records]].&lt;br /&gt;
&lt;br /&gt;
This reads the titlelist stored in the specified title, normally a title with title-type 3, which is sysupdate-title 0100000000000816. Returns 0 with total_read_entries=0 when used with other title(s).&lt;br /&gt;
&lt;br /&gt;
=== NcaID ===&lt;br /&gt;
This is a 0x10-byte entry. This is originally from the hex portion of &amp;quot;&amp;lt;hex&amp;gt;.nca&amp;quot; directory-names from this storage FS(like [[SD_Filesystem|SD]]).&lt;br /&gt;
&lt;br /&gt;
The NcaID is the same as the first 0x10-bytes from the calculated SHA256 hash, from hashing the entire output from ReadEntryRaw.&lt;br /&gt;
&lt;br /&gt;
=== Enums ===&lt;br /&gt;
==== Title Types ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x01&lt;br /&gt;
| System Programs ([[Title_list#System_Modules|System Modules]] or [[Title_list#System_Applets|System Applets]])&lt;br /&gt;
|-&lt;br /&gt;
| 0x02&lt;br /&gt;
| [[Title_list#System_Data_Archives|System Data Archives]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x03&lt;br /&gt;
| System Update&lt;br /&gt;
|-&lt;br /&gt;
| 0x04&lt;br /&gt;
| [[Title_list|Firmware package A]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x05&lt;br /&gt;
| [[Title_list|Firmware package B]]&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| Regular application&lt;br /&gt;
|-&lt;br /&gt;
| 0x81&lt;br /&gt;
| Update title&lt;br /&gt;
|-&lt;br /&gt;
| 0x82&lt;br /&gt;
| Add-on content&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ncm:v ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Services]]&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=File:HAC-EMMC-Connector-Plug.jpg&amp;diff=206</id>
		<title>File:HAC-EMMC-Connector-Plug.jpg</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=File:HAC-EMMC-Connector-Plug.jpg&amp;diff=206"/>
		<updated>2017-03-20T02:11:34Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Smartperson uploaded a new version of File:HAC-EMMC-Connector-Plug.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Labels of which pins map to which functions. Tested with my multimeter based on the images for Front/Back here on this wiki.&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=EMMC_pinout&amp;diff=205</id>
		<title>EMMC pinout</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=EMMC_pinout&amp;diff=205"/>
		<updated>2017-03-20T01:36:45Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Added information for the eMMC&amp;#039;s connector pinout, including image.&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;
[[File:HAC-EMMC-Connector-Plug.jpg|600px]]&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>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=File:Switch_eMMC_Connector_Pinout.jpg&amp;diff=204</id>
		<title>File:Switch eMMC Connector Pinout.jpg</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=File:Switch_eMMC_Connector_Pinout.jpg&amp;diff=204"/>
		<updated>2017-03-20T01:31:52Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Smartperson moved page File:Switch eMMC Connector Pinout.jpg to File:HAC-EMMC-Connector-Plug.jpg: Renaming to match other image files on Hardware page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:HAC-EMMC-Connector-Plug.jpg]]&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=File:HAC-EMMC-Connector-Plug.jpg&amp;diff=203</id>
		<title>File:HAC-EMMC-Connector-Plug.jpg</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=File:HAC-EMMC-Connector-Plug.jpg&amp;diff=203"/>
		<updated>2017-03-20T01:31:52Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Smartperson moved page File:Switch eMMC Connector Pinout.jpg to File:HAC-EMMC-Connector-Plug.jpg: Renaming to match other image files on Hardware page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Labels of which pins map to which functions. Tested with my multimeter based on the images for Front/Back here on this wiki.&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=File:HAC-EMMC-Connector-Plug.jpg&amp;diff=202</id>
		<title>File:HAC-EMMC-Connector-Plug.jpg</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=File:HAC-EMMC-Connector-Plug.jpg&amp;diff=202"/>
		<updated>2017-03-20T01:30:16Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Labels of which pins map to which functions. Tested with my multimeter based on the images for Front/Back here on this wiki.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Labels of which pins map to which functions. Tested with my multimeter based on the images for Front/Back here on this wiki.&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Joy-Con&amp;diff=155</id>
		<title>Joy-Con</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Joy-Con&amp;diff=155"/>
		<updated>2017-03-12T23:40:43Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Unifying joy-con info since when both are paired they report identical info.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Specifications ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! &lt;br /&gt;
|-&lt;br /&gt;
| Technology     || Bluetooth&lt;br /&gt;
|-&lt;br /&gt;
| Interface     || HID&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Left &amp;amp; Right Separate Joy-con ==&lt;br /&gt;
&lt;br /&gt;
When paired directly to a computer over bluetooth, the joy-con both provide identical HID input report descriptor. This does not appear to include motion controls, IR data, or NFC. They both behave as detached single-player controllers.&lt;br /&gt;
&lt;br /&gt;
HID Input Report Descriptor (Hexadecimal):&lt;br /&gt;
 05010905A1010601FF85210921750895308102853009307508953081028531093175089669018102853209327508966901810285330933750896690&lt;br /&gt;
 18102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00&lt;br /&gt;
 007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C0&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! Parsed Bytes || Description&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        || Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x05,        || Usage (Game Pad)&lt;br /&gt;
|-&lt;br /&gt;
|0xA1, 0x01,        || Collection (Application)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x21,        ||   Report ID (33)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x21,        ||   Usage (0x21)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x30,        ||   Report ID (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (0x30)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x31,        ||   Report ID (49)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (0x31)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x32,        ||   Report ID (50)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x32,        ||   Usage (0x32)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x33,        ||   Report ID (51)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (0x33)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x3F,        ||   Report ID (63)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x19, 0x01,        ||   Usage Minimum (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x29, 0x10,        ||   Usage Maximum (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x01,        ||   Logical Maximum (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x01,        ||   Report Size (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x10,        ||   Report Count (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x39,        ||   Usage (Hat switch)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x07,        ||   Logical Maximum (7)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x42,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,Null State)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x01,        ||   Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (X)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (Y)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (Rx)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x34,        ||   Usage (Ry)&lt;br /&gt;
|-&lt;br /&gt;
|0x16, 0x00, 0x00,  ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x27, 0xFF, 0xFF, 0x00, 0x00,  ||   Logical Maximum (65534)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x10,        ||   Report Size (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x04,        ||   Report Count (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x01,        ||   Report ID (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x01,        ||   Usage (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x10,        ||   Report ID (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x10,        ||   Usage (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x11,        ||   Report ID (17)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x11,        ||   Usage (0x11)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x12,        ||   Report ID (18)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x12,        ||   Usage (0x12)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0xC0,              || End Collection&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Joy-Con&amp;diff=154</id>
		<title>Joy-Con</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Joy-Con&amp;diff=154"/>
		<updated>2017-03-12T23:36:16Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Added basic HID info for right joy-con.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Specifications ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! &lt;br /&gt;
|-&lt;br /&gt;
| Technology     || Bluetooth&lt;br /&gt;
|-&lt;br /&gt;
| Interface     || HID&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Left Joy-con ==&lt;br /&gt;
&lt;br /&gt;
HID Input Report Descriptor (Hexadecimal):&lt;br /&gt;
 05010905A1010601FF85210921750895308102853009307508953081028531093175089669018102853209327508966901810285330933750896690&lt;br /&gt;
 18102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00&lt;br /&gt;
 007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C0&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! Parsed Bytes || Description&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        || Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x05,        || Usage (Game Pad)&lt;br /&gt;
|-&lt;br /&gt;
|0xA1, 0x01,        || Collection (Application)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x21,        ||   Report ID (33)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x21,        ||   Usage (0x21)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x30,        ||   Report ID (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (0x30)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x31,        ||   Report ID (49)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (0x31)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x32,        ||   Report ID (50)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x32,        ||   Usage (0x32)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x33,        ||   Report ID (51)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (0x33)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x3F,        ||   Report ID (63)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x19, 0x01,        ||   Usage Minimum (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x29, 0x10,        ||   Usage Maximum (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x01,        ||   Logical Maximum (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x01,        ||   Report Size (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x10,        ||   Report Count (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x39,        ||   Usage (Hat switch)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x07,        ||   Logical Maximum (7)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x42,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,Null State)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x01,        ||   Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (X)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (Y)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (Rx)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x34,        ||   Usage (Ry)&lt;br /&gt;
|-&lt;br /&gt;
|0x16, 0x00, 0x00,  ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x27, 0xFF, 0xFF, 0x00, 0x00,  ||   Logical Maximum (65534)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x10,        ||   Report Size (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x04,        ||   Report Count (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x01,        ||   Report ID (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x01,        ||   Usage (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x10,        ||   Report ID (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x10,        ||   Usage (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x11,        ||   Report ID (17)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x11,        ||   Usage (0x11)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x12,        ||   Report ID (18)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x12,        ||   Usage (0x12)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0xC0,              || End Collection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Right Joy-con ==&lt;br /&gt;
&lt;br /&gt;
HID Input Report Descriptor (Hexadecimal):&lt;br /&gt;
 05010905a1010601ff85210921750895308102853009307508953081028531093175089669018102853209327508966901810285330933750896690&lt;br /&gt;
 18102853f05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027ffff00&lt;br /&gt;
 007510950481020601ff85010901750895309102851009107508953091028511091175089530910285120912750895309102c0&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! Parsed Bytes || Description&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        || Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x05,        || Usage (Game Pad)&lt;br /&gt;
|-&lt;br /&gt;
|0xA1, 0x01,        || Collection (Application)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x21,        ||   Report ID (33)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x21,        ||   Usage (0x21)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x30,        ||   Report ID (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (0x30)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x31,        ||   Report ID (49)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (0x31)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x32,        ||   Report ID (50)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x32,        ||   Usage (0x32)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x33,        ||   Report ID (51)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (0x33)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x3F,        ||   Report ID (63)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x19, 0x01,        ||   Usage Minimum (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x29, 0x10,        ||   Usage Maximum (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x01,        ||   Logical Maximum (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x01,        ||   Report Size (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x10,        ||   Report Count (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x39,        ||   Usage (Hat switch)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x07,        ||   Logical Maximum (7)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x42,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,Null State)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x01,        ||   Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (X)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (Y)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (Rx)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x34,        ||   Usage (Ry)&lt;br /&gt;
|-&lt;br /&gt;
|0x16, 0x00, 0x00,  ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x27, 0xFF, 0xFF, 0x00, 0x00,  ||   Logical Maximum (65534)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x10,        ||   Report Size (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x04,        ||   Report Count (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x01,        ||   Report ID (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x01,        ||   Usage (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x10,        ||   Report ID (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x10,        ||   Usage (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x11,        ||   Report ID (17)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x11,        ||   Usage (0x11)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x12,        ||   Report ID (18)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x12,        ||   Usage (0x12)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0xC0,              || End Collection&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Joy-Con&amp;diff=153</id>
		<title>Joy-Con</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Joy-Con&amp;diff=153"/>
		<updated>2017-03-12T23:26:33Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Added basic HID info for left joy-con.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Specifications ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! &lt;br /&gt;
|-&lt;br /&gt;
| Technology     || Bluetooth&lt;br /&gt;
|-&lt;br /&gt;
| Interface     || HID&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Left Joy-con ==&lt;br /&gt;
&lt;br /&gt;
HID Input Report Descriptor (Hexadecimal):&lt;br /&gt;
 05010905A1010601FF85210921750895308102853009307508953081028531093175089669018102853209327508966901810285330933750896690&lt;br /&gt;
 18102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00&lt;br /&gt;
 007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C0&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed wikitable&amp;quot;&lt;br /&gt;
! Parsed Bytes || Description&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        || Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x05,        || Usage (Game Pad)&lt;br /&gt;
|-&lt;br /&gt;
|0xA1, 0x01,        || Collection (Application)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x21,        ||   Report ID (33)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x21,        ||   Usage (0x21)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x30,        ||   Report ID (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (0x30)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x31,        ||   Report ID (49)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (0x31)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x32,        ||   Report ID (50)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x32,        ||   Usage (0x32)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x33,        ||   Report ID (51)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (0x33)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x96, 0x69, 0x01,  ||   Report Count (361)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x3F,        ||   Report ID (63)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x19, 0x01,        ||   Usage Minimum (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x29, 0x10,        ||   Usage Maximum (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x01,        ||   Logical Maximum (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x01,        ||   Report Size (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x10,        ||   Report Count (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x39,        ||   Usage (Hat switch)&lt;br /&gt;
|-&lt;br /&gt;
|0x15, 0x00,        ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x25, 0x07,        ||   Logical Maximum (7)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x42,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,Null State)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x09,        ||   Usage Page (Button)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x04,        ||   Report Size (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x01,        ||   Report Count (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x01,        ||   Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x05, 0x01,        ||   Usage Page (Generic Desktop Ctrls)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x30,        ||   Usage (X)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x31,        ||   Usage (Y)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x33,        ||   Usage (Rx)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x34,        ||   Usage (Ry)&lt;br /&gt;
|-&lt;br /&gt;
|0x16, 0x00, 0x00,  ||   Logical Minimum (0)&lt;br /&gt;
|-&lt;br /&gt;
|0x27, 0xFF, 0xFF, 0x00, 0x00,  ||   Logical Maximum (65534)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x10,        ||   Report Size (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x04,        ||   Report Count (4)&lt;br /&gt;
|-&lt;br /&gt;
|0x81, 0x02,        ||   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)&lt;br /&gt;
|-&lt;br /&gt;
|0x06, 0x01, 0xFF,  ||   Usage Page (Vendor Defined 0xFF01)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x01,        ||   Report ID (1)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x01,        ||   Usage (0x01)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x10,        ||   Report ID (16)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x10,        ||   Usage (0x10)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x11,        ||   Report ID (17)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x11,        ||   Usage (0x11)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0x85, 0x12,        ||   Report ID (18)&lt;br /&gt;
|-&lt;br /&gt;
|0x09, 0x12,        ||   Usage (0x12)&lt;br /&gt;
|-&lt;br /&gt;
|0x75, 0x08,        ||   Report Size (8)&lt;br /&gt;
|-&lt;br /&gt;
|0x95, 0x30,        ||   Report Count (48)&lt;br /&gt;
|-&lt;br /&gt;
|0x91, 0x02,        ||   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)&lt;br /&gt;
|-&lt;br /&gt;
|0xC0,              || End Collection&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=Main_Page/Navigation&amp;diff=152</id>
		<title>Main Page/Navigation</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=Main_Page/Navigation&amp;diff=152"/>
		<updated>2017-03-12T23:16:43Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Adding link to page for Joy-Con. I&amp;#039;m adding some details there.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main page box|Navigation|:Navigation}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: -.3em -1em -1em -1em;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; bgcolor=&amp;quot;#fff&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2px&amp;quot; cellspacing=&amp;quot;2px&amp;quot; style=&amp;quot;margin:auto;&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e7eef6&amp;quot;&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &#039;&#039;&#039;General&#039;&#039;&#039;&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &#039;&#039;&#039;Homebrew&#039;&#039;&#039;&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &#039;&#039;&#039;Switch hardware&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #F5FAFF;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
*[[Switch System Flaws]]&lt;br /&gt;
|&lt;br /&gt;
*[[Hardware|Overview]]&lt;br /&gt;
*[[Joy-Con]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: -.3em -1em -1em -1em; margin-top: +1em&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; bgcolor=&amp;quot;#fff&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2px&amp;quot; cellspacing=&amp;quot;2px&amp;quot; style=&amp;quot;margin:auto;&amp;quot;&lt;br /&gt;
|- align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e7eef6&amp;quot;&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &#039;&#039;&#039;Switch Operating System&#039;&#039;&#039; &lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &#039;&#039;&#039;Switch Software Stack&#039;&#039;&#039;&lt;br /&gt;
! width=&amp;quot;33%&amp;quot; | &#039;&#039;&#039;Switch Content&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #F5FAFF;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{box-footer-empty}}&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=News&amp;diff=121</id>
		<title>News</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=News&amp;diff=121"/>
		<updated>2017-03-04T02:36:57Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
=== News ===&lt;br /&gt;
&amp;lt;!-- Add news below --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
*&#039;&#039;&#039;3 March 17&#039;&#039;&#039; Nintendo Switch global release.&lt;br /&gt;
*&#039;&#039;&#039;2 March 17&#039;&#039;&#039; Nintendo released system update [[2.0]].&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
	<entry>
		<id>https://switchbrew.org/w/index.php?title=2.0.0&amp;diff=120</id>
		<title>2.0.0</title>
		<link rel="alternate" type="text/html" href="https://switchbrew.org/w/index.php?title=2.0.0&amp;diff=120"/>
		<updated>2017-03-04T02:35:58Z</updated>

		<summary type="html">&lt;p&gt;Smartperson: Updated with official change log from Nintendo, including link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 2.0 release added the eShop functionality, the ability to add friends via Friend Codes, and to post screenshots to Facebook and Twitter.&lt;br /&gt;
&lt;br /&gt;
This is the [http://en-americas-support.nintendo.com/app/answers/detail/a_id/22525/p/897 official changelog] from Nintendo regarding this update:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Improvements Included in Version 2.0.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following network features are now available&#039;&#039;&#039;&lt;br /&gt;
 * Nintendo Account required. Some features may not be available in all countries/regions.&lt;br /&gt;
* Playing online&lt;br /&gt;
**Online multiplayer available for free until the paid online service launches in fall 2017. Not available in all countries.&lt;br /&gt;
*Adding friends&lt;br /&gt;
**Friends can be added from My Page, head to the HOME Menu and select your icon on the upper left.&lt;br /&gt;
*Sharing Album screenshots to Facebook and Twitter&lt;br /&gt;
*Browsing and purchasing content on Nintendo eShop&lt;br /&gt;
*Receiving News relating to games, Nintendo eShop discounts, and promotions&lt;br /&gt;
*Earning My Nintendo points for game card (retail version)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Added the following system functionality&#039;&#039;&#039;&lt;br /&gt;
*Update game software&lt;br /&gt;
*Turn on the TV automatically when placing the Nintendo Switch console in the Nintendo Switch dock.&lt;br /&gt;
**HDMI settings must also be enabled on your TV. Some TV models may be unable to use this feature. To turn on this feature for the Nintendo Switch console, head to System Settings &amp;gt; TV Settings &amp;gt; Match TV Power State&lt;br /&gt;
*Display the battery percentage on the HOME Menu&lt;br /&gt;
**To turn this ON/OFF, head to System Settings &amp;gt; System &amp;gt; Console Battery (%)&lt;br /&gt;
*Format the microSD card&lt;br /&gt;
**To format, head to System Settings &amp;gt; System &amp;gt; Initialize &amp;gt; Format microSD Card&lt;/div&gt;</summary>
		<author><name>Smartperson</name></author>
	</entry>
</feed>