Device access library for Joycon(Nintendo Switch)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Nintendo Switch's Joycon Device access library(via bluetooth only)

Reverse engineering info


  • supported deveces: Joycon(L/R), Pro-Controller
  • get: Digial Buttons state
  • get: Analog Sticks state
  • set: Raw Vibration data
  • calibration support for analog stick.


  • go get -u
  • go get -u optional


In advance, you perform Bluetooth pairing for Joycon. (Joycon must be connected before execute below code.)

Note: When Joycon is fitted to the main body, BT sessions are overwritten, so when you connect to PC later, you need to redo pairing.

package main

import ""

func main() {
    devices, err := joycon.Search(joycon.JoyConL)
    if err != nil {
    jc, err := joycon.NewJoycon(devices[0].Path, false)
    if err != nil {
    s := <-jc.State()
    fmt.Println(s.Buttons)  // Button bits
    fmt.Println(s.LeftAdj)  // Left Analog Stick State
    fmt.Println(s.RightAdj) // Right Analog Stick State
    a := <-jc.Sensor()
    fmt.Println(a.Accel) // Acceleration Sensor State
    fmt.Println(a.Gyro)  // Gyro Sensor State



  • Deadzone parameter read from SPI memory.
  • Rich Vibration support.
  • Set Player LED.
  • Set HomeButton LED.
  • Low power mode support.
  • IR sensor capture.(wip)