FRC4564 / Xbox

Python class to support xbox 360 controller under Linux on RaspberryPi
129 stars 35 forks source link

Rumble Motor Support #5

Closed judahnator closed 6 years ago

judahnator commented 6 years ago

Howdy!

Definitely loving this handy class so far, so many thanks for all the hard work! I was wondering if it was possible, or at least on the roadmap, to add rumble motor support?

Many thanks!

FRC4564 commented 6 years ago

I had tried to get rumble working a while back, but couldn't figure it out. Maybe someone else has had success.

Astra3 commented 5 years ago

I was doing some research of what we can do to enable force feedback/rumble support and I think I might have something. When you run xboxdrv in daemon mode you can use xboxdrvctl to control some functions, for example rumble (xboxdrvctl -r left:right for each motor). However xboxdrv in daemon mode doesn't have any output at all. It can however show if controller was disconnected/connected by using --verbose option. For registering input of the controller, another program will have to be used, for example jstest.

It's complicated and will definitely have some hardware resource impact, but it might work. I will look into this tomorrow, but my skills in Python aren't still big enough to write something as advanced as I'd need to to do this.

UPDATE: So it's possible. I have managed to get output via jstest and make rumble work by xboxdrvctl. I will add all buttons, axis and comments tomorrow and create a pull request (or my own repo) with new module in beta stage. Also disconnect detection isn't working really well. And...because xboxdrv is running in daemon, there's also a future possibility to add support for more controllers independent of each other.

Astra3 commented 5 years ago

OK, I created pull request for new file, it's in very early stage and contains one serious bug.