Syniurge / ShieldControllerWinDriver

HIDUSB lower filter driver for NVIDIA Shield Controller
70 stars 15 forks source link

Wireless support #14

Open RivervdMeulen opened 6 years ago

RivervdMeulen commented 6 years ago

Does this driver currently have wireless support? It's the feature I'm missing most in the official driver. The controller uses a P2P wifi connection as far as I'm aware, which seems like it should be possible to also implement in windows (as long as the windows computer has wifi).

mirh commented 6 years ago

As long as computer has wifi direct, which is a bit more difficult (albeit not impossible) https://github.com/devmapal/nvidia-shield-controller-driver

RivervdMeulen commented 6 years ago

Wifi direct means a wifi signal between 2 devices instead of going through the router first. So in theory, any device that can use wifi for internet can also use p2p/wifi direct. Only, instead of getting a signal from the router, you'd get it from the other device. In windows 10 this is even built-in to connect to other windows computers, however that's as far as the built-in windows solution goes. So you'd need a third-party program that can connect to different devices to connect the controller.

Wish I could use the driver you linked, but it's linux only, and thus won't work on windows.

Syniurge commented 6 years ago

I looked into it one year ago: only the most modern Windows Wifi controller drivers built around the new Windows 10 stack may be able to connect to WiFi Direct devices:

https://docs.microsoft.com/en-us/windows-hardware/drivers/partnerapps/wi-fi-direct

Last year I had not been able to find a single dongle with such drivers. But should you find one, then you should be able to connect to the gamepad straightaway, but even though the microphone and touchpad should probably work, without a proper driver it won't be detected as a DirectInput gamepad.

And yes on Linux most Wifi controller drivers already support every WiFi Direct modes, hence making it possible to use the gamepad wirelessly with @devmapal's restored ozproto driver.


EDIT (one year later): actually no, a driver for the protocol developed by Ozmo Devices (since bought by Atmel) si needed . The protocol they've developed mimics a USB host controller, so any driver for a Wi-Fi direct device relying on the Ozwpan protocol should theoretically work with the Shield controller, like the ozwpan driver on Linux used to work with a variety of devices.

I was kind of motivated at some point to write an open source driver and have the controller work wirelessly on Windows, but honestly it'd be a lot of work and Ozmo Devices doesn't even exist anymore, their protocol seems to have vanished out of use since they were bought.

I've also found a few Windows drivers for Ozwpan devices, but on shady sites so I didn't try them.

mirh commented 6 years ago

I don't doubt that W10 apis might be easier to use, though there were already some in W8 to be really honest (which are more likely to be supported by something by now then) https://msdn.microsoft.com/en-us/library/windows/desktop/dn457944.aspx

Syniurge commented 6 years ago

What's missing from the Wifi Direct support of Windows 8 is P2P device discovery.

i.e with the netsh wlan show wirelesscap command, Wifi controller drivers written for the Win8 API show:

P2P Device Discovery        : Not Supported
P2P Service Name Discovery  : Not Supported
P2P Service Info Discovery  : Not Supported
P2P Background Discovery    : Not Supported
mirh commented 6 years ago

https://web.archive.org/web/20141027154843/http://msdn.microsoft.com:80/en-us/library/windows/hardware/hh440285(v=vs.85).aspx What you have there, means your *driver* doesn't support discovery (whatever the OS tbh)

If any, I guess like, having to start from scratch if you want to write a wdi driver, might or might not be a good excuse to also back in whatever new stuff you want - though I wouldn't say that's guaranteed either.

P.s. do you really need device discovery? I mean, with dualshocks I think that's not needed if you pre-pair the controller via usb to a selected mac address.

RivervdMeulen commented 6 years ago

I seem to get the following result with the same command @Syniurge used:

Wi-Fi Direct Device        : Supported
Wi-Fi Direct GO              : Supported
Wi-Fi Direct Client          : Supported

and

P2P Device Discovery              : Supported
P2P Service Name Discovery   : Supported
P2P Service Info Discovery       : Not Supported
P2P Background Discovery      : Supported
P2P GO on 5 GHz                     : Supported

So I should be able to find the controller somehow. Not sure how I'd go about using device discovery though, any ideas what commands I'd need to use?