Giter Site home page Giter Site logo

hid-joy-con-whispering's Introduction

HID Joy-Con Whispering

A collection of projects to talk to Joy-Con over HID.

Projects

  • hidtest, Can initialize Joy-Con in a charging grip or Pro Controller and get full input, dump SPI flash, etc.
  • uinputdriver, Can expose Joy-Con in a charging grip or a Pro Controller as an single evdev controller on Linux

Research

Largely based on research here by dekuNukem and contributors, USB HID protocol based on my own research here.

hid-joy-con-whispering's People

Contributors

ctcaer avatar ggliv avatar panzi avatar shinyquagsire23 avatar techjar avatar wulfystylez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hid-joy-con-whispering's Issues

Segmentation fault when running

This may just be the cause of me being bad with this stuff but I can't seem to be able to get this running. I am running Arch Linux here are the steps I took:

  1. Download source
  2. Go to uinputdriver/
  3. make, I got some warnings: https://pastebin.com/gs7jgeW8
  4. ./uinputdriver: immediately gives Segmentation fault (core dumped)

I am trying to use a wired pro controller. Any help is appreciated. If you need any more info I'd be happy to provide it.

Can't compile hidtest.cpp due to undefined references

Hey there, I apologize in advance for the (likely) dumb question but despite a huge amount of attempts and searches, I still haven't found a solution.

Basically, trying to compile hidtest.cpp gives me a dozen or so unresolved symbols (hid_write, hid_read, etc)

I see this stuff comes from libhidapi-hidraw which is correctly linked in the command line (and present in my system, a Raspberry Pi 4 with RaspiOS 64 bit) but for some reason, the linker fails.

Any suggestion/obvious thing that I might have missed?

Best regards

Problem with SPI read/write through USB-HID

Hi,
Thanks for your work and your code.
As I understood from your blog, we are now able to dump/write SPI through USB-HID with Joy-Con Charging Grip.
Although everything else works, dumping always returns zeroed files.
Writing does nothing. Tested with color change and clearing switch controller cache.

Is there something I'm missing?

exe file

I'm unable to get this working using Visual Studio Code on Windows. Is anyone able to get me the .exe file this produces, or another way to do it without using the commands? Thanks!

License?

I would very much appreciate it if you would officially add a license to the project in case someone wants to use it in something else. My personal recommendation seeing how relatively small it is would be the MIT license.

uinputdriver crashing with Segfault

When running uinputdriver it just prints "uinput creation failed" (line 381 in the code). Errno is set to 19 (No such device), however I have both joycons in the changing grip and connected to the pc using the usb-C to usb-A cable.

lsusb finds the device as "Bus 001 Device 009: ID 057e:200e Nintendo Co., Ltd".

I'm running Arch Linux with kernel version 4.10.13-1-ARCH.

I also tried running as root.

uinputdriver can't handle pro controller

Hello, once compiled and launched, I get this error with uinputdriver :

USB device info:
vid: 0x057E pid: 0x2009
path: /dev/hidraw0
MAC: 000000000001
interface_number: 0
Manufacturer: Nintendo Co., Ltd.
Product: Pro Controller
Failed to open controller at Failed to get handle for right Joy-Con or Pro Controller, exiting...

I'm on an Antergos 64bit.

Disable mouse control

Is there a way to prevent the controller from moving the mouse and just act as a normal controller? I'm unable to use it on Steam and games.

libhidapi-hidraw is not found

I figured out that I need to install hidapi myself, don't worry. However, as I am an absolute noob, I probably did something wrong. I'm running ./uinputdriver and it gives the following error: "error while loading shared libraries: libhidapi-hidraw.so.0: cannot open shared object file: No such file or directory" Am I using this wrong, or did I install hidapi wrong?

No hidapi/hidapi.h file

m_reaman@appleacer ~/HID-Joy-Con-Whispering/uinputdriver $ make
cc -o uinputdriver uinputdriver.c -lpthread -ludev -lhidapi-hidraw -s
uinputdriver.c:11:27: fatal error: hidapi/hidapi.h: No such file or directory
compilation terminated.
Makefile:19: recipe for target 'uinputdriver' failed
make: *** [uinputdriver] Error 1
After cloning the target to my desktop on Linux mint, I ran the above code and received the above error. Any fix?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.