Skip to content
This repository has been archived by the owner on Jan 1, 2024. It is now read-only.

Ryochan7 2.0.12 not working while Jays2Kings does while using ShadowPc #1146

Closed
marlouis opened this issue Mar 12, 2020 · 20 comments
Closed

Comments

@marlouis
Copy link

marlouis commented Mar 12, 2020

Ryochan7 2.0.12
Windows 10 v1909 on ShadowPc
Intel Nuc Windows 10 v1909
Official DS4 Sony controller
Usb connection

Hello everyone,
I'm having an issue with the Ryochan7 DS4 Windows program. Both Bluetooth and USB connection shows "no controllers connected" when using inside ShadowPc.
I've been using the Jays2Kings version since now without problems. By Usb connection and Bluetooth (but since I installed SCPT drivers I can't connect DS4 bluetooth Device on Windows anymore...)

I'm using an Intel Nuc with Windows 10 v1909 on which I'm able to get working both versions of DS4 without problems in USB and Bluetooth.

Inside Shadow: my DS4 controller is recongized using Joy.cpl command but not in the Controller Readings from DS4 profile editor.
I tried uninstall / reinstall - Disable / Enable the HID-compliant game controller.
I installed Microsoft .NET 4.6.2 (it says an higher version is already installed).
I installed Visual C++ 2015-2019 Redistributable x86
I installed ViGEmBus driver.
I installed HidGuard Helper.

I also removed older DS4Windows versions and profiles.

Important: ShadowPc recognize my DS4 controller as Xbox360 controller (see https://help.shadow.tech/hc/en-gb/articles/360000916214-Connect-a-Sony-PS4-Controller-to-Shadow)

Here is the log:
Debug2.txt

Best regards,

@Ryochan7
Copy link
Owner

What is your HidGuardian configuration like? Are you using a different tool (HidCerberus) to manage the whitelist or is the tool included with DS4Windows all that is being used? My first assumption would be that the whitelist entry does not exist for DS4Windows so the device is considered hidden to the program.

The debug log shows that no DS4 controllers are listed when the enumeration routine is called.

@marlouis
Copy link
Author

Hello Ryochan7 and thank you for your quick response.

I tried to know my HidGuardian configuration usine WhiteKnight from this tutorial https://www.youtube.com/watch?v=TBGJZ_e9ybI
My controller is shown on the HidGuardian configuration webpage http://localhost:26762/ -> see img.1
HidGuardian configuration

I would like to say that ion order to makes the controller appear in ShadowPc I do have to run DS4Windows on the Nuc which is running Shadow.

@mika-n
Copy link
Collaborator

mika-n commented Mar 13, 2020

So, you are using ShadowPC streaming gaming platform like this:
Client Win10 NUC computer:

  • DS4Windows app running
  • DS4 gamepad connected over usb
  • Runs ShadowPC client application
  • HidGuardian and HidCerberus tools

Remote streaming ShadowPC server where you have installed games.

The logfile you provided in the first post was a bit strange because it didn't list any DS4 gamepads. Maybe HidGuardian is not configured correctly. You could test this theory by temporarily disabling HidGuardian (open regedit.exe tool and clear AffectedDevices hidguardian sysreg entries. Or add a dummy "&xxx" tag at the end of each line to make sure the hardware ID doesn't much with any of the gamepads).
#669 (comment)

@marlouis
Copy link
Author

Thank you very much Mika-n for your kind response.

I would like to be sure that I can delete the "AffectedDevices" sysreg entrie as shown on the screenshot:
Sysreg

@mika-n
Copy link
Collaborator

mika-n commented Mar 15, 2020

@marlouis Dont delete the sysreg entry. Just edit it and append &xxxx string at the end of each line. This will make the gamepad hardware identifier to be something else than the actual hardware, so HidGuardian won't try to hide DS4 gamepads because HidG can no longer match a gamepad identiifier (because of the dummy tag at the end of each identifier).

Afterward it is easy to revert back to normal situation by simply removing the extra dummy tag.

Also, while testing things without HidG it may be required to disable HidCerberus. I'm not sure, because I don't use HidCerberus with DS4Windows and HidGuardian. I use just DS4Windows + HidGuardian driver and the built-in support for HidGuardian in DS4Windows. DS4Windows will call automagically HidGuardHelper.exe application (see the same folder where you have DS4Windows app). This helper tool will add the process ID of DS4Windows to whitelist sysreg entry of HidGuardian, so DS4Windows will see the physical gamepad but other apps won't see the physical gamepad.

@marlouis
Copy link
Author

Thank you mika-n for your answer.

I did append &xxxx string at the end of each line (see photo 1) but the controller is still:

  1. Recognized by shadow (which have a built-in conrtoller support (see photo 2)
  2. Not recognized by DS4 Windows in Shadow.

I tried to enable / disable DS4 on the Nuc host.

Here is my log with sysreg modified (photo 3)

Regards,

Photo 1
Photo 2
Debug 3.txt

@mika-n
Copy link
Collaborator

mika-n commented Mar 16, 2020

  1. Recognized by shadow (which have a built-in conrtoller support (see photo 2)
  2. Not recognized by DS4 Windows in Shadow.
    Here is my log with sysreg modified (photo 3)
    Debug 3.txt

Is this "Debug 3.txt" debug log from the remote Shadow server running DS4Windows app? Or from the local ShadowPC client NUC PC machine?

Anyway. Are you trying to make make DS4Windows app running in remote Shadow server machine to recognize a gamepad and DS4Windows app running in local ShadowPC client NUC machine over UDP server? That doesn't work. Maybe you have slightly misunderstood the UDP server. It is not meant to be used between DS4Windows apps to communicate remotely with each other. UDP server in DS4Windows is used by some 3rd party emulator apps, but DS4Windows itself doesn't use it for anything but as a UDP server endpoint.

To relay gamepad events to ShadowPC server machine from a ShadowPC client machine is something which should happen purely within ShadowPC client app. If it cannot use the virtual output gamepad device running in the client PC then there must be something in ShadowPC client app preventing it working.

@marlouis
Copy link
Author

marlouis commented Mar 16, 2020

"Debug 3.txt" comes from the remote Shadow server running DS4Windows app.
Another instance of DS4Windows is running on the Nuc (otherwise, shadow doesn’t recognize the controller).

I’m trying tu use the UDP server to make the remote controls working with CEMU emulation. I use PadTest to check if those remote controls are correctly configured within UDP Server. When used on the Nuc everything works (see photo 1).
But on Shadow, as my controller is not recognized by DS4Windows I can’t use the remote controls.

I’m presuming that some configuration I’ve made on Shadow / SCPT drivers, has messed up the connection in Shadow. I cannot use a DS4 controller without DS4Windows running on the NUC and Bluetooth controller is not showing on the ShadowPc Windows.

PadTest

@Rogus
Copy link

Rogus commented Mar 16, 2020

And what about GeForce now? Can it work? I am in Brazil so it is a little far away from the servers but it does work for games, the only downside it's that I can't download games in their servers, even owning the games.

@mika-n
Copy link
Collaborator

mika-n commented Mar 16, 2020

I have used only Google Stadia and Sony PS4RemotePlay services with DS4Windows app (ie. used re-mapped buttons and macros in Stadia and PS4RemotePlay games). Stadia and PS4RemotePlay works with DS4Windows app, but don't know about GeForceNow. However, technically it should work if those streaming/remote play client side apps can use the virtual output controller (xbox360 or dualshock4) created by DS4Windows and ViGem driver. Then it is up to those client apps to relay gamepad events to server side app.

@Rogus
Copy link

Rogus commented Mar 16, 2020

Cool @mika-n is that right about stadia having a bad connection at the launch? If it weren't so overpriced and had compatibility with other countries besides USA and some parts (of Europe I think?) If only it didn't such dirt tactics like buying the same game twice? Is this lame tactic still active?

@mika-n
Copy link
Collaborator

mika-n commented Mar 17, 2020

@Rogus I'm from Finland, so I know only how Stadia works here in the Nordic countries.

During the very first weeks there were all kind of issues in Stadia, but that was understandable from a new service. After those initial issues I have been positively surprised how well Stadia works (technically). Depending on the game the lag is almost non-existing or a player cannot "see and feel" it. Tombraider, AssasinsCreed, Destiny2 or FarmSimulator works great. Even the Grid racing game is very playable which was a big surprise (I thought it might need "bare metal" response times).

DS4Windows works perfectly with Stadia streaming gaming service. A profile can use either xbox360 or dualshock4 output mode and games in Stadia service know how to show either xbox or ds4 button symbols. Even rumble feedback events work great both in xbox and dualshock output mode with DS4Windows app. Re-mapped buttons and macros work. For example I have used the "360-steering wheel emulation" feature of DS4Windows to re-map gyro to left-X axis and used gyro as a steering axis with Grid game in Stadia.
https://github.com/Ryochan7/DS4Windows/wiki/Settings#steering-wheel
#491 (comment)

I can say the same from Sony PS4 RemotePlay app. However, it is a bit different case because local PC is connected to PS4 console running in the same LAN network. But, from a technical point of view it is the same as with any streaming gaming service. Streaming client side app talks to the physical gamepad over DS4Windows app running in local PC and then it is up to the streaming client app to send those gamepad events to backend server (Stadia/GeforceNow/ShadowPC/PS4 console).

One thing to note that both Stadia and PS4RemotePlay require a working exclusive access mode (=Hide DS4 Controller option in DS4Windows) or 3rd party HidGuardian driver to work and properly configured. Double input issues screws up things in both services, but HideDS4Controller or HidGuardian solves that issue.
https://github.com/Ryochan7/DS4Windows/wiki/Exclusive-Mode-(Hide-DS4-Controller-config-option)-tips-and-issues

With the experience I have from streaming gaming services I can easily believe that the upcoming PS5 and XboxSX generation of traditional game consoles will be the last console generation. If the console generation lasts 5-8 years then streaming gaming services are even more common and technology works even better in 5 years. Who needs a big noisy console in a living room anymore when you can have Chromecast or RasperryPI size of client hardware connected to big TV in a living room and all games work without CPU/GPU performance problems?

But, back to the original issue @marlouis has with ShadowPC streaming gaming service. Based on the experience I have with Stadia and PS4RemotePlay I would say that DS4Windows should work with ShadowPC also it the client side app of ShadowPC service can talk to the virtual gamepad controller AND the original physical gamepad is hidden in local PC where the physical gamepad is connected.

ClientPC:

  • ShadowPC client app
  • Physical gamepad connected over USB or BT
  • DS4Windows app running using HideDS4Controller (and it works, see the exclusive mode doc link above) or HidGuardian driver
  • DS4Windows exposes a virtual xbox or dualshock4 gamepad and ShadowPC client app is connected to this virtual gamepad

ShadowServerPC:

  • Normal ShadowPC server stuff installed and games
  • Note! If I have understood things correctly then DS4Windows/HidGuardian/VigEm apps are NOT needed in ShadowPC server side because the ShadowPC client app sends gamepad events to ShadowPC server using ShadowPC custom protocol. The server side app of ShadowPC then probably creates some sort of its own virtual gamepad device.

@marlouis
Copy link
Author

marlouis commented Mar 17, 2020

Hello Rogus and thank you for your message.
I used Geforce now as a beta-tester and suscribed to the prenium membership when it cames up to Europe.
DS4 worked very well on it.
For your information, editors such as Activision and 2K have been removing a lot of their titles from the catalog those past weeks.
That makes the offer of Geforce Now well less attractive than Shadow which is basically a powerfull PC on streaming.

Concerning my issue, I would like you to know that DS4Windows do work on my ShadowPc.
As the title says: only the Jay2Kings version works. The Ryochan7 2.0.12 shows "no controllers connected".
Which sounds very strange to me...
Is there a way to get a log from Jay2kings version such a the one created by the Debug App?
I join you a picture instead (photo1).

Note! If I have understood things correctly then DS4Windows/HidGuardian/VigEm apps are NOT needed in ShadowPC server side because the ShadowPC client app sends gamepad events to ShadowPC server using ShadowPC custom protocol. The server side app of ShadowPC then probably creates some sort of its own virtual gamepad device.

Yes. A recent update added a full controller support on Shadow. See this article: https://community.shadow.tech/gben/blog/update/controllers-on-shadow

DS4Windows exposes a virtual xbox or dualshock4 gamepad and ShadowPC client app is connected to this virtual gamepad

If DS4Windows is running on the Client PC: Shadow will see an Xbox 360 Controller (photo2).
If DS4Windows in not running on the Client PC: Shadow will see a DS4 Controller (photo3)

DS4 1
Photo 2
DS4 3

@mika-n
Copy link
Collaborator

mika-n commented Mar 17, 2020

Is there a way to get a log from Jay2kings version such a the one created by the Debug App?

No. That Jay2Kings doesn't have a debug option.

If DS4Windows is running on the Client PC: Shadow will see an Xbox 360 Controller (photo2).
If DS4Windows in not running on the Client PC: Shadow will see a DS4 Controller (photo3)

Yes because by default DS4Windows profile uses xbox360 virtual output controller type, but you can change a profile to output a virtual dualshock4 controller. This is why ShadowPC server see xbox360 gamepad type, But feel free to change a profile in DS4Windows to use dualshock4 output type if a game supports it.
https://github.com/Ryochan7/DS4Windows/wiki/Settings#controller

When ds4windows is not running then ShadowPC sees the original physical DS4 gamepad.

@marlouis
Copy link
Author

marlouis commented Mar 17, 2020

Thak you Mika-n for your response.

When ds4windows is not running then ShadowPC sees the original physical DS4 gamepad.

According to you what would be the reason of DS4Windows Ryochan7 version 2.0.12 not seeing the gamepad while every other programs does?
Is there any solution i'd try again like installing / reinstalling programs or drivers, checking logs...
Or are we stuck with this problem now?

Thank by the way for your time !

@mika-n
Copy link
Collaborator

mika-n commented Mar 17, 2020

According to you what would be the reason of DS4Windows Ryochan7 version 2.0.12 not seeing the gamepad while every other programs does?

Are you talking about the client PC and DS4Windows running there? I assumed it can see the gamepad because the system has the virtual xbox360 gamepad.

If you are talking about the remote ShadowPC machine then I don't know. DS4Windows app accepts only those gamepads which are listed as "DS4 compatible", so maybe the virtual gamepad created by ShadowPC in the server machine is not exposed as fully DS4 compatible. At least one of the earlier debug.txt logfiles from the server PC didn't list any DS4 compatible gamepads. Jay2Kings version used ScpVBus virtual gamepad driver and veeeeery sneaky toolkit to hijack the physical gamepad. Don't know what it did differently, but ScpVBus was a bit dangerous driver especially if you wanted to use other BT devices in the same PC

@marlouis
Copy link
Author

Yes I'm talking about the remote ShadowPc machine.
Ok so apparently the problem would come from the virtual gamepad created by ShadowPc in the server machine. I'm gonna write to the support to ask if I could disable this feature in order to have DS4Windows working properly.

@mika-n
Copy link
Collaborator

mika-n commented Mar 18, 2020

Have you tried to set a DS4Windows profile in local PC to use dualshock4 virtual controller type. Instead of the default xbox360 output mode? In this case does ShadowPC server machine create a virtual device with DS4 gamepad type? Or does it always create virtual gamepads in the server side using some custom ShadowPC gamepad VID/PID hardware identifiers?

Anyway. I still don't understand why you want to run DS4Windows app in the remote ShadowPC machine because all buttons re-maps and macros are run in the local PC. If ShadowPC client feeds the output of these DS4Windows/VigEm virtual gamepads back to the server machine then the ShadowPC created virtual gamepad should spit out the button and stick activities you re-mapped in the local PC. Games could use that ShadowPC virtual gamepad directly.

@marlouis
Copy link
Author

marlouis commented Mar 18, 2020

I just tried to set a DS4Windows profile with controller set as DS4 instead of the default xbox360. But ShadowPc is still recognizing an Xbox360 controller even 2 controllers sometimes.

does it always create virtual gamepads in the server side using some custom ShadowPC gamepad VID/PID hardware identifiers?

I don't know...

I still don't understand why you want to run DS4Windows app in the remote ShadowPC machine

That's because I want to use the UDP server fonction of DS4Windows with the CEMU emulator in order to have the motion controls (gyroscop of DS4 controller) working on Zelda BOTW.

@mika-n
Copy link
Collaborator

mika-n commented Mar 18, 2020

That's because I want to use the UDP server fonction of DS4Windows with the CEMU emulator in order to have the motion controls (gyroscop of DS4 controller) working on Zelda BOTW.

Okey. I see. Can you set CEMU to connect directly to the client side UDPServer? If you set UDPServer in DS4Windows running in the client PC to use 0.0.0.0 IP number instead of the localhost 127.0.0.1 then UDP server allows remote incoming connections (for example CEMU running in the remote ShadowPC server). But naturally this would require that there is an open firewall and UDP rerouting in your home router setup to allow incoming UDP connections from an outside of your home network. Technically this would work but it is up to you to setup router to allow this and secure it to allow it only from your ShadowPC server IP address.

@mika-n mika-n closed this as completed Aug 29, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants