atar-axis / xpadneo

Advanced Linux Driver for Xbox One Wireless Controller (shipped with Xbox One S)
https://atar-axis.github.io/xpadneo/
GNU General Public License v3.0
2.01k stars 113 forks source link

Port the dongle driver from OSX #137

Closed Littleweisheit closed 4 years ago

Littleweisheit commented 5 years ago

It's seems @medusalix have finished the dongle driver on for macOS. Do you have plan port it to linux?

atar-axis commented 5 years ago

Absolutely (but I am a bit busy right now). I would also love to see @medusalix joining this project here (as a maintainer maybe?)

medusalix commented 5 years ago

Sure thing 😃. I think the first step would be to get the Linux developers to include the VID and PID of the Xbox dongle in their MT76 driver. I've just spent the last ~3 months working on the macOS version (including reverse engineering) and to be honest I'm a little bit exhausted right now 😄. Having a Linux driver for the WLAN chipset would definitely make things a little bit easier.

atar-axis commented 5 years ago

At least the old one is already included in the current kernel.

I would love if you would join this project here when you had some to recover :)

NoXPhasma commented 5 years ago

Wasn't there already a Kernel driver added for the dongle this year? When I connect the dongle I get this in the Kernel log:

Okt 19 20:18:23 NoXP-PC kernel: usb 3-1.2: new high-speed USB device number 4 using xhci_hcd
Okt 19 20:18:23 NoXP-PC kernel: usb 3-1.2: New USB device found, idVendor=045e, idProduct=02fe, bcdDevice= 1.00
Okt 19 20:18:23 NoXP-PC kernel: usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Okt 19 20:18:23 NoXP-PC kernel: usb 3-1.2: Product: XBOX ACC
Okt 19 20:18:23 NoXP-PC kernel: usb 3-1.2: Manufacturer: Microsoft Inc.
Okt 19 20:18:23 NoXP-PC kernel: usb 3-1.2: SerialNumber: 101653

And lsusb also shows the device with

Bus 003 Device 005: ID 045e:02fe Microsoft Corp.

Tell me if I understand something wrong here.

medusalix commented 5 years ago

@NoXPhasma The kernel driver only attaches to the old dongle (PID 02e6). The newer dongle is not included in the list of hardware ids and fails this check because it's a MT7632. Feel free to submit a patch to the Linux developers (I don't know the exact procedure, that's why this issue is on hold).

NoXPhasma commented 5 years ago

Thanks for clarify this. I don't have any experience with submitting kernel patches either.

wgpierce commented 5 years ago

FYI I posted this on xpad GitHub for this issue.

ddragic commented 4 years ago

@NoXPhasma The kernel driver only attaches to the old dongle (PID 02e6). The newer dongle is not included in the list of hardware ids and fails this check because it's a MT7632. Feel free to submit a patch to the Linux developers (I don't know the exact procedure, that's why this issue is on hold).

I opened a pull request earlier this year to add the new ids in the openwrt/mt76 repo (https://github.com/openwrt/mt76/pull/272 ; hmm, i just noticed I wrote it's a mt7612u in the comment there, I should change it) since it looks like it's were the upstream development is going on, but maybe it should go to the kernel mailing list...

Oh, and thanks for all of your work on this @medusalix

javsanpar commented 4 years ago

@ddragic

but maybe it should go to the kernel mailing list...

It would be great if you send the patch to the kernel mailing list. I can help you :smile:

voider1 commented 4 years ago

Anything else we could do to make this work?

medusalix commented 4 years ago

@voider1 I'm working on a user-mode driver (based on libusb) for the wireless dongle right now as I ran into some problems with the MT76 kernel driver (apart from the missing hardware id). It shares most of its code with the macOS driver, so I expect to have a demo ready in a few weeks.

zypangpang commented 4 years ago

Very excited and thankful for your work! @medusalix I just bought this wireless controller and found it cannot work on Linux. It really sucks. Hope it' ll work soon.

EnriqueWood commented 4 years ago

@medusalix I offer myself to help if there's anything I can do. I have a windows 10-Ubuntu 19.04 dual boot setup, a dongle to Xbox one controllers and two controllers

medusalix commented 4 years ago

linux

It's working pretty well so far, although I still have quite a few problems/bugs that I want to have fixed before releasing the full source code 😃. (This is running on a Banana Pi by the way).

Neverest commented 4 years ago

Awesome seeing support with the dongle. I can also help test if you need more info. Have the old big dongle and one controller(revised version).

Hedronmx commented 4 years ago

Will this support only the 2nd version of the dongle? Or will it support both models?

medusalix commented 4 years ago

It's finally ready to be released 😄. Support for the older dongle will be added, but I need packet captures done under Windows and with the Linux driver to see why it's not working.

medusalix commented 4 years ago

I would love if you would join this project here

@atar-axis I'm happy to help with any technical issues concerning the controller's protocol, aside from that the two drivers are unfortunately quite different. I don't think we'll end up merging them as xow is running in user mode. Could you please close this issue?

atar-axis commented 4 years ago

Could you please close this issue?

:+1: sure