Changes

1,600 bytes added ,  17:00, 17 August 2020
no edit summary
Line 1: Line 1:  
Joy-Con is the name for the Switch's primary game controllers. The controllers communicate to the console through bluetooth and can be disconnected from the main unit.
 
Joy-Con is the name for the Switch's primary game controllers. The controllers communicate to the console through bluetooth and can be disconnected from the main unit.
   −
==Hardware==
+
== Hardware ==
 
The controllers themselves are simple to disassemble and identify.
 
The controllers themselves are simple to disassemble and identify.
 
[[File:JoyconFront.jpg|400px|thumb|The front of the Joy-Con internal[https://www.ifixit.com/Teardown/Nintendo+Switch+Teardown/78263]]]
 
[[File:JoyconFront.jpg|400px|thumb|The front of the Joy-Con internal[https://www.ifixit.com/Teardown/Nintendo+Switch+Teardown/78263]]]
Line 15: Line 15:  
|}
 
|}
   −
 
+
== Firmware ==
==Firmware==
   
''See also: [[Joy-Con Firmware]]''
 
''See also: [[Joy-Con Firmware]]''
   Line 30: Line 29:  
A dump of the ROM region (taken while firmware was running) can be found [[:File:bcm20734_rom.bin|here]]. Note this is the same SoC used on the other controller models, as well.
 
A dump of the ROM region (taken while firmware was running) can be found [[:File:bcm20734_rom.bin|here]]. Note this is the same SoC used on the other controller models, as well.
   −
== Left & Right Separate Joy-con ==
+
== Bluetooth HID ==
 +
=== Commands ===
 +
{| class="wikitable" border="1"
 +
|-
 +
! Command || Name
 +
|-
 +
| 0x00 ||
 +
|-
 +
| 0x01 || PairingOut
 +
|-
 +
| 0x02 || GetDeviceInfo
 +
|-
 +
| 0x03 || SetDataFormat
 +
|-
 +
| 0x04 || LRButtonDetection
 +
|-
 +
| 0x05 || Page
 +
|-
 +
| 0x06 || Reset
 +
|-
 +
| 0x07 || ClearPairingInfo
 +
|-
 +
| 0x08 || Shipment
 +
|-
 +
| 0x10 || SerialFlashRead
 +
|-
 +
| 0x11 || SerialFlashWrite
 +
|-
 +
| 0x12 || SerialFlashSectorErase
 +
|-
 +
| 0x20 || McuReset
 +
|-
 +
| 0x21 || McuWrite
 +
|-
 +
| 0x22 || McuResume
 +
|-
 +
| 0x23 ||
 +
|-
 +
| 0x24 || McuPollingEnable
 +
|-
 +
| 0x25 || McuPollingDisable
 +
|-
 +
| 0x28 || AttachmentWrite
 +
|-
 +
| 0x29 ||
 +
|-
 +
| 0x2A || AttachmentEnable
 +
|-
 +
| 0x2B ||
 +
|-
 +
| 0x30 || SetIndicatorLed
 +
|-
 +
| 0x31 || GetIndicatorLed
 +
|-
 +
| 0x38 || SetNotificationLed
 +
|-
 +
| 0x40 || SensorSleep
 +
|-
 +
| 0x41 || SensorConfig
 +
|-
 +
| 0x42 || SensorWrite
 +
|-
 +
| 0x43 || SensorRead
 +
|-
 +
| 0x48 || MotorEnable
 +
|-
 +
| 0x50 || GetBatteryVoltage
 +
|-
 +
| 0x51 || WriteChargeSetting
 +
|-
 +
| 0x52 ||
 +
|-
 +
| 0x58 || ExtDevWrite
 +
|-
 +
| 0x59 || GetExtDevInfo
 +
|-
 +
| 0x5A || ExtDevPollingEnable
 +
|-
 +
| 0x5B || ExtDevPollingDisable
 +
|-
 +
| 0x5C || ExtDevInFormatConfig
 +
|-
 +
| 0x60 || InternalAttachmentWrite
 +
|-
 +
| 0x61 ||
 +
|-
 +
| 0x62 || InternalAttachmentEnable
 +
|-
 +
| 0x63 || InternalAttachmentPollingEnable
 +
|-
 +
| 0x64 || InternalAttachmentPollingDisable
 +
|-
 +
| 0x80 || Ack
 +
|-
 +
| 0x81 || PairingIn
 +
|-
 +
| 0x82 || DeviceInfo
 +
|-
 +
| 0x83 || LRButtonElapsedTime
 +
|-
 +
| 0x90 || SerialFlashData
 +
|-
 +
| 0xA0 || McuData
 +
|-
 +
| 0xA8 || AttachmentData
 +
|-
 +
| 0xAA || InternalAttachmentRead
 +
|-
 +
| 0xB0 || IndicatorLed
 +
|-
 +
| 0xC0 || SensorData
 +
|-
 +
| 0xD0 || BatteryVoltage
 +
|-
 +
| 0xD8 || ExtDevRead
 +
|-
 +
| 0xD9 || ExtDevInfo
 +
|}
    +
=== Left & Right Separate Joy-con ===
 
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.
 
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.
   Line 215: Line 332:  
|}
 
|}
   −
==Colors==
+
== Colors ==
 
HEX codes for the colors shown in the "Controllers" menu of the Switch UI can be found in a Joy-con SPI dump starting at offset 0x6050. Body color is first followed by button color and each is 3 bytes long. These values are able to be re-written with any HEX color value to make the Joy-cons show up as different colors in the UI. The following is a list of official HEX colors recovered from SPI dumps.
 
HEX codes for the colors shown in the "Controllers" menu of the Switch UI can be found in a Joy-con SPI dump starting at offset 0x6050. Body color is first followed by button color and each is 3 bytes long. These values are able to be re-written with any HEX color value to make the Joy-cons show up as different colors in the UI. The following is a list of official HEX colors recovered from SPI dumps.
 
{| class="wikitable"
 
{| class="wikitable"
Line 251: Line 368:  
|}
 
|}
   −
==Additional Links==
+
== Additional Links ==
 
[https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering Reverse Engineering of the Joy-Con by Github user dekuNukem]
 
[https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering Reverse Engineering of the Joy-Con by Github user dekuNukem]