Joy-Con: Difference between revisions

animal crossing
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]