Nintendo_Switch_Reverse_Engineering
A look at inner workings of Joycon and Nintendo Switch
File Explorer
Download Latest Version (.zip)- AN0059.pdf
- BCM20734.pdf
- BCM20734_OTA_Failsafe_update.pdf
- BCM20734_OTA_Firmware_update.pdf
- BCM20734_OTA_Firwmare_upgrade - (Example Protocol, Commands, and Scripts).pdf
- DTR-DSR-RTS-CTS_Difference.pdf
- LSM6DS3.pdf
- LSM6DS3_application_info.pdf
- mx25.pdf
- STM32F048.pdf
- stm32f072xb.h
- stm32f072xb.h~RF65c594c.TMP
- stm32f0xx.h
- system_stm32f0xx.h
- startup_stm32f072xb.s
- arm_common_tables.h
- arm_const_structs.h
- arm_math.h
- cmsis_armcc.h
- cmsis_armcc_V6.h
- cmsis_gcc.h
- core_cm0.h
- core_cm0plus.h
- core_cm3.h
- core_cm4.h
- core_cm7.h
- core_cmFunc.h
- core_cmInstr.h
- core_cmSimd.h
- core_sc000.h
- core_sc300.h
- stm32_hal_legacy.h
- stm32f0xx_hal.h
- stm32f0xx_hal_cortex.h
- stm32f0xx_hal_dac.h
- stm32f0xx_hal_dac_ex.h
- stm32f0xx_hal_def.h
- stm32f0xx_hal_dma.h
- stm32f0xx_hal_dma_ex.h
- stm32f0xx_hal_flash.h
- stm32f0xx_hal_flash_ex.h
- stm32f0xx_hal_gpio.h
- stm32f0xx_hal_gpio_ex.h
- stm32f0xx_hal_i2c.h
- stm32f0xx_hal_i2c_ex.h
- stm32f0xx_hal_iwdg.h
- stm32f0xx_hal_pcd.h
- stm32f0xx_hal_pcd_ex.h
- stm32f0xx_hal_pwr.h
- stm32f0xx_hal_pwr_ex.h
- stm32f0xx_hal_rcc.h
- stm32f0xx_hal_rcc_ex.h
- stm32f0xx_hal_spi.h
- stm32f0xx_hal_spi_ex.h
- stm32f0xx_hal_tim.h
- stm32f0xx_hal_tim_ex.h
- stm32f0xx_hal_uart.h
- stm32f0xx_hal_uart_ex.h
- stm32f0xx_hal.c
- stm32f0xx_hal_cortex.c
- stm32f0xx_hal_dac.c
- stm32f0xx_hal_dac_ex.c
- stm32f0xx_hal_dma.c
- stm32f0xx_hal_flash.c
- stm32f0xx_hal_flash_ex.c
- stm32f0xx_hal_gpio.c
- stm32f0xx_hal_i2c.c
- stm32f0xx_hal_i2c_ex.c
- stm32f0xx_hal_iwdg.c
- stm32f0xx_hal_pcd.c
- stm32f0xx_hal_pcd_ex.c
- stm32f0xx_hal_pwr.c
- stm32f0xx_hal_pwr_ex.c
- stm32f0xx_hal_rcc.c
- stm32f0xx_hal_rcc_ex.c
- stm32f0xx_hal_spi.c
- stm32f0xx_hal_spi_ex.c
- stm32f0xx_hal_tim.c
- stm32f0xx_hal_tim_ex.c
- stm32f0xx_hal_uart.c
- stm32f0xx_hal_uart_ex.c
- cmd_parser.h
- delay_us.h
- helpers.h
- joycon_cmd.h
- main.h
- max572x.h
- my_usb.h
- shared.h
- stm32f0xx_hal_conf.h
- stm32f0xx_it.h
- usb_device.h
- usbd_cdc_if.h
- usbd_conf.h
- usbd_desc.h
- RTE_Components.h
- RTE_Components.h
- cmd_parser.crf
- cmd_parser.d
- cmd_parser.o
- delay_us.crf
- delay_us.d
- delay_us.o
- ExtDll.iex
- helpers.crf
- helpers.d
- helpers.o
- joycon_cmd.crf
- joycon_cmd.d
- joycon_cmd.o
- main.crf
- main.d
- main.o
- max572x.crf
- max572x.d
- max572x.o
- my_usb.crf
- my_usb.d
- my_usb.o
- startup_stm32f072xb.d
- startup_stm32f072xb.o
- stm32f0xx_hal.crf
- stm32f0xx_hal.d
- stm32f0xx_hal.o
- stm32f0xx_hal_cortex.crf
- stm32f0xx_hal_cortex.d
- stm32f0xx_hal_cortex.o
- stm32f0xx_hal_dac.crf
- stm32f0xx_hal_dac.d
- stm32f0xx_hal_dac.o
- stm32f0xx_hal_dac_ex.crf
- stm32f0xx_hal_dac_ex.d
- stm32f0xx_hal_dac_ex.o
- stm32f0xx_hal_dma.crf
- stm32f0xx_hal_dma.d
- stm32f0xx_hal_dma.o
- stm32f0xx_hal_flash.crf
- stm32f0xx_hal_flash.d
- stm32f0xx_hal_flash.o
- stm32f0xx_hal_flash_ex.crf
- stm32f0xx_hal_flash_ex.d
- stm32f0xx_hal_flash_ex.o
- stm32f0xx_hal_gpio.crf
- stm32f0xx_hal_gpio.d
- stm32f0xx_hal_gpio.o
- stm32f0xx_hal_i2c.crf
- stm32f0xx_hal_i2c.d
- stm32f0xx_hal_i2c.o
- stm32f0xx_hal_i2c_ex.crf
- stm32f0xx_hal_i2c_ex.d
- stm32f0xx_hal_i2c_ex.o
- stm32f0xx_hal_iwdg.crf
- stm32f0xx_hal_iwdg.d
- stm32f0xx_hal_iwdg.o
- stm32f0xx_hal_msp.crf
- stm32f0xx_hal_msp.d
- stm32f0xx_hal_msp.o
- stm32f0xx_hal_pcd.crf
- stm32f0xx_hal_pcd.d
- stm32f0xx_hal_pcd.o
- stm32f0xx_hal_pcd_ex.crf
- stm32f0xx_hal_pcd_ex.d
- stm32f0xx_hal_pcd_ex.o
- stm32f0xx_hal_pwr.crf
- stm32f0xx_hal_pwr.d
- stm32f0xx_hal_pwr.o
- stm32f0xx_hal_pwr_ex.crf
- stm32f0xx_hal_pwr_ex.d
- stm32f0xx_hal_pwr_ex.o
- stm32f0xx_hal_rcc.crf
- stm32f0xx_hal_rcc.d
- stm32f0xx_hal_rcc.o
- stm32f0xx_hal_rcc_ex.crf
- stm32f0xx_hal_rcc_ex.d
- stm32f0xx_hal_rcc_ex.o
- stm32f0xx_hal_spi.crf
- stm32f0xx_hal_spi.d
- stm32f0xx_hal_spi.o
- stm32f0xx_hal_spi_ex.crf
- stm32f0xx_hal_spi_ex.d
- stm32f0xx_hal_spi_ex.o
- stm32f0xx_hal_tim.crf
- stm32f0xx_hal_tim.d
- stm32f0xx_hal_tim.o
- stm32f0xx_hal_tim_ex.crf
- stm32f0xx_hal_tim_ex.d
- stm32f0xx_hal_tim_ex.o
- stm32f0xx_hal_uart.crf
- stm32f0xx_hal_uart.d
- stm32f0xx_hal_uart.o
- stm32f0xx_hal_uart_ex.crf
- stm32f0xx_hal_uart_ex.d
- stm32f0xx_hal_uart_ex.o
- stm32f0xx_it.crf
- stm32f0xx_it.d
- stm32f0xx_it.o
- switchmod_code.axf
- switchmod_code.build_log.htm
- switchmod_code.htm
- switchmod_code.lnp
- switchmod_code.map
- switchmod_code.sct
- switchmod_code_switchmod_code.dep
- system_stm32f0xx.crf
- system_stm32f0xx.d
- system_stm32f0xx.o
- usb_device.crf
- usb_device.d
- usb_device.o
- usbd_cdc.crf
- usbd_cdc.d
- usbd_cdc.o
- usbd_cdc_if.crf
- usbd_cdc_if.d
- usbd_cdc_if.o
- usbd_conf.crf
- usbd_conf.d
- usbd_conf.o
- usbd_core.crf
- usbd_core.d
- usbd_core.o
- usbd_ctlreq.crf
- usbd_ctlreq.d
- usbd_ctlreq.o
- usbd_desc.crf
- usbd_desc.d
- usbd_desc.o
- usbd_ioreq.crf
- usbd_ioreq.d
- usbd_ioreq.o
- EventRecorderStub.scvd
- startup_stm32f072xb.lst
- startup_stm32f072xb.s
- switchmod_code.uvguix.Allen
- switchmod_code.uvoptx
- switchmod_code.uvprojx
- usbd_cdc.h
- usbd_cdc.c
- usbd_core.h
- usbd_ctlreq.h
- usbd_def.h
- usbd_ioreq.h
- usbd_core.c
- usbd_ctlreq.c
- usbd_ioreq.c
- cmd_parser.c
- delay_us.c
- helpers.c
- joycon_cmd.c
- main.c
- max572x.c
- my_usb.c
- stm32f0xx_hal_msp.c
- stm32f0xx_it.c
- system_stm32f0xx.c
- usb_device.c
- usbd_cdc_if.c
- usbd_conf.c
- usbd_desc.c
- .mxproject
- parse.py
- README.md
- switchmod_code.ioc
- temp.c
- stm32f072xb.h
- stm32f072xb.h~RF65c594c.TMP
- stm32f0xx.h
- system_stm32f0xx.h
- startup_stm32f072xb.s
- arm_common_tables.h
- arm_const_structs.h
- arm_math.h
- cmsis_armcc.h
- cmsis_armcc_V6.h
- cmsis_gcc.h
- core_cm0.h
- core_cm0plus.h
- core_cm3.h
- core_cm4.h
- core_cm7.h
- core_cmFunc.h
- core_cmInstr.h
- core_cmSimd.h
- core_sc000.h
- core_sc300.h
- stm32_hal_legacy.h
- stm32f0xx_hal.h
- stm32f0xx_hal_cortex.h
- stm32f0xx_hal_dac.h
- stm32f0xx_hal_dac_ex.h
- stm32f0xx_hal_def.h
- stm32f0xx_hal_dma.h
- stm32f0xx_hal_dma_ex.h
- stm32f0xx_hal_flash.h
- stm32f0xx_hal_flash_ex.h
- stm32f0xx_hal_gpio.h
- stm32f0xx_hal_gpio_ex.h
- stm32f0xx_hal_i2c.h
- stm32f0xx_hal_i2c_ex.h
- stm32f0xx_hal_iwdg.h
- stm32f0xx_hal_pcd.h
- stm32f0xx_hal_pcd_ex.h
- stm32f0xx_hal_pwr.h
- stm32f0xx_hal_pwr_ex.h
- stm32f0xx_hal_rcc.h
- stm32f0xx_hal_rcc_ex.h
- stm32f0xx_hal_spi.h
- stm32f0xx_hal_spi_ex.h
- stm32f0xx_hal_tim.h
- stm32f0xx_hal_tim_ex.h
- stm32f0xx_hal_uart.h
- stm32f0xx_hal_uart_ex.h
- stm32f0xx_hal.c
- stm32f0xx_hal_cortex.c
- stm32f0xx_hal_dac.c
- stm32f0xx_hal_dac_ex.c
- stm32f0xx_hal_dma.c
- stm32f0xx_hal_flash.c
- stm32f0xx_hal_flash_ex.c
- stm32f0xx_hal_gpio.c
- stm32f0xx_hal_i2c.c
- stm32f0xx_hal_i2c_ex.c
- stm32f0xx_hal_iwdg.c
- stm32f0xx_hal_pcd.c
- stm32f0xx_hal_pcd_ex.c
- stm32f0xx_hal_pwr.c
- stm32f0xx_hal_pwr_ex.c
- stm32f0xx_hal_rcc.c
- stm32f0xx_hal_rcc_ex.c
- stm32f0xx_hal_spi.c
- stm32f0xx_hal_spi_ex.c
- stm32f0xx_hal_tim.c
- stm32f0xx_hal_tim_ex.c
- stm32f0xx_hal_uart.c
- stm32f0xx_hal_uart_ex.c
- cmd_parser.h
- delay_us.h
- helpers.h
- joycon_cmd.h
- main.h
- max572x.h
- my_usb.h
- shared.h
- stm32f0xx_hal_conf.h
- stm32f0xx_it.h
- usb_device.h
- usbd_cdc_if.h
- usbd_conf.h
- usbd_desc.h
- RTE_Components.h
- RTE_Components.h
- cmd_parser.crf
- cmd_parser.d
- cmd_parser.o
- delay_us.crf
- delay_us.d
- delay_us.o
- ExtDll.iex
- helpers.crf
- helpers.d
- helpers.o
- joycon_cmd.crf
- joycon_cmd.d
- joycon_cmd.o
- main.crf
- main.d
- main.o
- max572x.crf
- max572x.d
- max572x.o
- my_usb.crf
- my_usb.d
- my_usb.o
- startup_stm32f072xb.d
- startup_stm32f072xb.o
- stm32f0xx_hal.crf
- stm32f0xx_hal.d
- stm32f0xx_hal.o
- stm32f0xx_hal_cortex.crf
- stm32f0xx_hal_cortex.d
- stm32f0xx_hal_cortex.o
- stm32f0xx_hal_dac.crf
- stm32f0xx_hal_dac.d
- stm32f0xx_hal_dac.o
- stm32f0xx_hal_dac_ex.crf
- stm32f0xx_hal_dac_ex.d
- stm32f0xx_hal_dac_ex.o
- stm32f0xx_hal_dma.crf
- stm32f0xx_hal_dma.d
- stm32f0xx_hal_dma.o
- stm32f0xx_hal_flash.crf
- stm32f0xx_hal_flash.d
- stm32f0xx_hal_flash.o
- stm32f0xx_hal_flash_ex.crf
- stm32f0xx_hal_flash_ex.d
- stm32f0xx_hal_flash_ex.o
- stm32f0xx_hal_gpio.crf
- stm32f0xx_hal_gpio.d
- stm32f0xx_hal_gpio.o
- stm32f0xx_hal_i2c.crf
- stm32f0xx_hal_i2c.d
- stm32f0xx_hal_i2c.o
- stm32f0xx_hal_i2c_ex.crf
- stm32f0xx_hal_i2c_ex.d
- stm32f0xx_hal_i2c_ex.o
- stm32f0xx_hal_iwdg.crf
- stm32f0xx_hal_iwdg.d
- stm32f0xx_hal_iwdg.o
- stm32f0xx_hal_msp.crf
- stm32f0xx_hal_msp.d
- stm32f0xx_hal_msp.o
- stm32f0xx_hal_pcd.crf
- stm32f0xx_hal_pcd.d
- stm32f0xx_hal_pcd.o
- stm32f0xx_hal_pcd_ex.crf
- stm32f0xx_hal_pcd_ex.d
- stm32f0xx_hal_pcd_ex.o
- stm32f0xx_hal_pwr.crf
- stm32f0xx_hal_pwr.d
- stm32f0xx_hal_pwr.o
- stm32f0xx_hal_pwr_ex.crf
- stm32f0xx_hal_pwr_ex.d
- stm32f0xx_hal_pwr_ex.o
- stm32f0xx_hal_rcc.crf
- stm32f0xx_hal_rcc.d
- stm32f0xx_hal_rcc.o
- stm32f0xx_hal_rcc_ex.crf
- stm32f0xx_hal_rcc_ex.d
- stm32f0xx_hal_rcc_ex.o
- stm32f0xx_hal_spi.crf
- stm32f0xx_hal_spi.d
- stm32f0xx_hal_spi.o
- stm32f0xx_hal_spi_ex.crf
- stm32f0xx_hal_spi_ex.d
- stm32f0xx_hal_spi_ex.o
- stm32f0xx_hal_tim.crf
- stm32f0xx_hal_tim.d
- stm32f0xx_hal_tim.o
- stm32f0xx_hal_tim_ex.crf
- stm32f0xx_hal_tim_ex.d
- stm32f0xx_hal_tim_ex.o
- stm32f0xx_hal_uart.crf
- stm32f0xx_hal_uart.d
- stm32f0xx_hal_uart.o
- stm32f0xx_hal_uart_ex.crf
- stm32f0xx_hal_uart_ex.d
- stm32f0xx_hal_uart_ex.o
- stm32f0xx_it.crf
- stm32f0xx_it.d
- stm32f0xx_it.o
- switchmod_code.axf
- switchmod_code.build_log.htm
- switchmod_code.htm
- switchmod_code.lnp
- switchmod_code.map
- switchmod_code.sct
- switchmod_code_switchmod_code.dep
- system_stm32f0xx.crf
- system_stm32f0xx.d
- system_stm32f0xx.o
- usb_device.crf
- usb_device.d
- usb_device.o
- usbd_cdc.crf
- usbd_cdc.d
- usbd_cdc.o
- usbd_cdc_if.crf
- usbd_cdc_if.d
- usbd_cdc_if.o
- usbd_conf.crf
- usbd_conf.d
- usbd_conf.o
- usbd_core.crf
- usbd_core.d
- usbd_core.o
- usbd_ctlreq.crf
- usbd_ctlreq.d
- usbd_ctlreq.o
- usbd_desc.crf
- usbd_desc.d
- usbd_desc.o
- usbd_ioreq.crf
- usbd_ioreq.d
- usbd_ioreq.o
- EventRecorderStub.scvd
- startup_stm32f072xb.lst
- startup_stm32f072xb.s
- switchmod_code.uvguix.Allen
- switchmod_code.uvoptx
- switchmod_code.uvprojx
- usbd_cdc.h
- usbd_cdc.c
- usbd_core.h
- usbd_ctlreq.h
- usbd_def.h
- usbd_ioreq.h
- usbd_core.c
- usbd_ctlreq.c
- usbd_ioreq.c
- cmd_parser.c
- delay_us.c
- helpers.c
- joycon_cmd.c
- main.c
- max572x.c
- my_usb.c
- stm32f0xx_hal_msp.c
- stm32f0xx_it.c
- system_stm32f0xx.c
- usb_device.c
- usbd_cdc_if.c
- usbd_conf.c
- usbd_desc.c
- .mxproject
- switchmod_code.ioc
- temp.c
- left_grey_joycon_botw_rumble.logicdata
- left_grey_joycon_botw_rumble.txt
- left_grey_joycon_docking_controllers_screen.logicdata
- left_grey_joycon_spi_flash_power_on.logicdata
- left_grey_joycon_spi_poweron_then_dock.logicdata
- left_red_joycon_docking_controllers_screen.logicdata
- M92T55 I2C.txt
- right_grey_joycon_docking_controllers_screen.logicdata
- touchscreen_controller_poweron_i2c.logicdata
- AUTHORS
- CMakeLists.txt
- packet-nxbt.c
- README.md
- bt_over_usb_wireshark_dissector.lua
- c2j.txt
- console2joycongrey.csv
- j2c.txt
- joycon2consolegrey.csv
- joycon_console_conversation.txt
- joycon_crc.py
- parse.py
- together.py
- startlink joy mainboard.jpg
- startlink joycon back.jpg
- startlink joycon.jpg
- bluetooth_hid_notes.md
- bluetooth_hid_subcommands_notes.md
- imu_sensor_notes.md
- joycon_pcb.pdf
- push.sh
- README.md
- rumble_data_table.md
- spi_flash_notes.md
- USB-HID-Notes.md
# Installation Guide
1. Get the code
git clone https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering
Downloads the entire project code from GitHub to your computer.
cd Nintendo_Switch_Reverse_Engineering
Moves into the project folder you just downloaded.
2. CMake
Medium RecommendedPrerequisites
β οΈ This is a large repository, so this method may point to an internal sub-package rather than the actual core product. Check the full README as well.
cd packet_parse/nxbt
This project's files live in a subfolder, so move into it first.
mkdir build && cd build
Creates a folder to hold the build output and moves into it.
cmake ..
Analyzes the source code and generates build configuration files (must be run inside the build folder).
make
Compiles the code based on the generated build configuration to produce an executable.
Check that an executable was created inside the build folder, then run it directly (e.g. ./build/app_name).
// repository documentation
Was this content helpful?
(0 ratings)
