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