sc-controller icon indicating copy to clipboard operation
sc-controller copied to clipboard

Windows Version

Open uppps opened this issue 7 years ago • 135 comments

There is a WIP Windows branch but there have not been any progress in the last month. Can I expect a release anytime soon?

uppps avatar Jun 21 '17 10:06 uppps

Nope, unless you have someone with at least some Windows coding experience :D

What I was trying to do was to get at least SendInput level of "emulation", what would work badly and with no gamepad support. AFAIK, there is no way to actually emulate gamepad spare of replacing xinput.dll and/or some system libraries.

kozec avatar Jun 21 '17 11:06 kozec

There are two main options for emulating an Xbox 360 gamepad across the system on Windows. The old standby is using the Scp Virtual Bus Driver. That driver is not really being maintained anymore though. A newer driver that will eventually replace it is called ViGEm. One nice feature about that driver is that it will be capable of emulating more than just an Xbox 360 gamepad. It still has some stability problems so it is not ready for mass consumption yet. Hopefully those issues will be ironed out soon.

https://github.com/nefarius/ViGEm

Ryochan7 avatar Jun 21 '17 21:06 Ryochan7

Thanks, that sounds useful.

But just to be clear, Windows support is currently somewhere at very bottom of TODO list, somewhere bellow support for non-steam controllers, i18n and probably VR integration or something :D But contributions are always welcomed.

There is long list of stuff that needs to be solved in potential Windows port:

  • [x] libusb is not exactly reliable under Windows and pyusb is not 100% compatible with Linux version. Later is partially solved at least for wired controller
  • [x] There is no uinput, so keyboard and mouse emulation has to be rewritten. This should be possible using winapi.
  • [x] There is no uinput, so gamepad emualtion has to be rewritten. Most likely using ViGEm that @Ryochan7 linked post above
  • [x] Windows uses different keycodes, button names etc, so conversion code has to be made to convert stuff like Keys.KEY_LEFTMETA to whatever numerical constant Windows uses for Winkey.
  • [x] Reverse conversion has to be done for grabbing keys using GUI
  • [x] And grabing keys in GUI will not work with current code at all :)
  • [x] GUI uses unix socket to communicate with daemon. And while it's easy to just use TCP here, it opens whole can of security issues along with possibility of everything crashing when something else uses same port
  • [x] And when we are talking about daemon, there is no such thing on Windows. Or rather, proces can act as daemon without all magic needed on Linux. This is already partially fixed by converting daemon into normal "exe", but stuff like stopping and restarting currently does nothing.
  • [x] OSD (including on-screen keyboard) depends on X11 to create non-clickable, non-managed window. I'm not sure if same is even possible on Windows
  • [ ] Gesture recognition uses OSD. But at least drawing "blindly" should work.
  • [ ] Similarly, stuff like restricting mouse to specific area depends on X11 as well. But adding support throug winapi shouldn't be hard
  • [ ] And autoswitcher is X11-only as well.

I'll update that list if I remember anything else :)

kozec avatar Jun 23 '17 20:06 kozec

Well, thanks for at least having it on the todo list!!

BanCrash avatar Aug 02 '17 14:08 BanCrash

Absolutely nothing is happening, I'm just writing down library that may be usable as uinput replaceament.

http://vjoystick.sourceforge.net/site/index.php/dev216

kozec avatar Oct 30 '17 15:10 kozec

Like the meme says, it's something!! Thanks for letting us know!

BanCrash avatar Oct 30 '17 16:10 BanCrash

@kozec Any progress? There haven't been any new commits in the windows branch recently.

uppps avatar Jun 19 '18 10:06 uppps

I know nothing about windows programming (at least at that low level), so I cannot help, but would love to see this implemented.

I understand the priority of the tasks, but man, having this app on windows would be awesome. I always said that the worst thing about steam controller is... steam, and this app solves that issue and in a very, very good manner, seriously! good job @kozec and other collaborators!

elboletaire avatar Jul 11 '18 11:07 elboletaire

If someone is still watching this and feels really adventurous, there is now work-in-progress SCC that should work on Windows.

kozec avatar Nov 26 '18 00:11 kozec

I AM STILL WATCHING.... :) i have been for a long time, its awesome to see this might one day be a real thing, i would love to ditch the steam setup for my non steam games.

faldor20 avatar Dec 12 '18 13:12 faldor20

It kinda works already, as long as you don't need GUI :)

Main problem is this ViGEM issue that can literally freeze Windows 7, but I can make another prerelease with xinput-compatible pad emulation at least for Win10 tomorow.

kozec avatar Dec 12 '18 22:12 kozec

ahh i see, well considering most of the world is moving towards windows 10 anyway i think even if it never gets fixed dropping support for windows 7 while unfortunate is not totally unacceptable.

faldor20 avatar Dec 12 '18 23:12 faldor20

Win 7 user, seems to work but it only emulate ps4 pad, i cannot use the mouse pad or mix desktop option with mouse or keyboard. Also Desktop mode only work outside of game, inside game it stop working. Also i need to launch many time the daemon, because it always return serial number can't be obtain.

Is there a way to get mouse pad ? Or something useful ? Also the camera pad for ps4 don't work : relXY function is not here. So for now the pad is not usable.

dastious avatar Dec 13 '18 23:12 dastious

Win 7 user, seems to work but it only emulate ps4 pad

That's intentional, and probably will stay like that for foreseeable future :( It's better alternative than crashing entire OS.

Also i need to launch many time the daemon, because it always return serial number can't be obtain.

... but this is not. Those serials are working differently between "versions" of Steam Controller, but I thought I had it finally got it right. I'll add workaround for case when it can't be retrieved at all.

Also the camera pad for ps4 don't work : relXY function is not here.

Probably good thing to prioritize, thanks for reminding me.

kozec avatar Dec 14 '18 07:12 kozec

New pre-release now works with XInput on Windows 10.

kozec avatar Dec 15 '18 09:12 kozec

i can't move in-game(seems like the left stick works like the right one), do I have to remap the keys in some config? should it be done in one of the sccprofiles?

thanks for adding windows support!

pk044 avatar Dec 25 '18 12:12 pk044

Firstly monster thanks! I have it working as a keyboard and mouse but I would like some help as I am not sure I am using it right. I have VIGEM installed and see a couple of profiles loaded when I start the daemon how do I activate different profiles? (if I just wanted the SC as an generic / Xbox controller, could I just overwrite the currently loaded profile with the xbox one?)

I gather the OSD is not working yet (? or does it require some GTK dependencies on windows?

john-2000 avatar Dec 26 '18 13:12 john-2000

Thank you for the work on the Windows port. I have tried it and the daemon can interact with ViGEm but there are issues with the controller state translation.

  1. ABS_RY is inverted.
  2. LS mapped to ABS_LX and ABS_LY causes some erratic behavior especially when the stick is moved almost due north. ABS_LY will get inverted only for a small region of the stick.
  3. ABS_RZ seems to get stuck at about 3/4 pull sometimes.
  4. The gamepad state seems to reset when there is no new activity on the Steam Controller. Buttons will not stay held down if there is no axis activity.

Since exclusive access to the Steam Controller cannot be obtained yet, I have been testing playing Turok 2 from GOG Galaxy.

Ryochan7 avatar Dec 26 '18 19:12 Ryochan7

i can't move in-game(seems like the left stick works like the right one), do I have to remap the keys in some config? should it be done in one of the sccprofiles?

Yes, until GUI is there, editing sccprofile file in text editor should work.

I start the daemon how do I activate different profiles? (if I just wanted the SC as an generic / Xbox controller, could I just overwrite the currently loaded profile with the xbox one?)

I gather the OSD is not working yet (? or does it require some GTK dependencies on windows?

OSD menu should work, but I noticed it takes few seconds to load on Windows. Pressing steam button should spawn it.

@Ryochan7 thanks for report, I'll check on those points.

kozec avatar Dec 28 '18 10:12 kozec

I recorded a short video showing some of the issues that I was having. Hopefully that will be a useful reference.

https://www.youtube.com/watch?v=j_V0lwKFlTc

Ryochan7 avatar Dec 28 '18 18:12 Ryochan7

Okay, I believe I managed to fix all of that and put it into prerelease number 3.

kozec avatar Dec 29 '18 12:12 kozec

I've just tried that latest version and works pretty well under windows 10. Great work @kozec 😃.

Some errors were risen to the console, although the controller continued working as expected and the executable didn't exit in any of them; given that, I'd say these are more warnings than errors, as everything continues working as expected.

Basically, the warnings arise when you:

  • Press the steam button when the overlay is already open.
  • Every time you select any of the overlay options.

The error is the same for all (Error 10054; dropping client), although, when you try to open the overlay again there's a different message before that error:

[E] OSD          Failed to lock controller

Edit: I just found an issue stopping my controller using the overlay; I powered it off, and when trying to turn it on again, the scc-daemon console started throwing a lot of Input/Output errors (without any other details). Shutting down the daemon and starting it again didn't help; neither with the controller. Restarting windows finally "fixed it", and now I can't reproduce it again. I didn't reboot after installing ViGEMBus, so it may be related.

elboletaire avatar Dec 29 '18 13:12 elboletaire

Basically, the warnings arise when you:

  • Press the steam button when the overlay is already open.

That's by design, only one menu should be shown at time. Menus are "locking" buttons they are using and that mechanism is used to prevent multiple menus spawning at once.

  • Every time you select any of the overlay options.

The error is the same for all (Error 10054; dropping client),

That's just means that menu is finished and closed connection, so it's expected, but I should probably silence it.

kozec avatar Dec 29 '18 19:12 kozec

Just tried the latest pre-release and all of those issues have been fixed. Thank you.

Ryochan7 avatar Dec 30 '18 21:12 Ryochan7

My only issue currently is that sc-controller doesn't take over exclusive control of the device. So Lizard Mode or Steam Configs will activate as well as the sc-controller profile. I figure that you're already aware of this but it is the largest hurdle for the program currently. Otherwise, excellent job on getting it to where its at. I'm looking forward to see the Windows version evolve into the full blown Steam Input replacement that the Linux version is.

CriticalComposer avatar Mar 06 '19 17:03 CriticalComposer

New pre-release added

It now includes GUI, which actually makes it even more experimental than one before :)

kozec avatar Apr 21 '19 10:04 kozec

(also, I'm not ignoring @CriticalComposer message, it's just that I don't know if I can help with that. AFAIK, this is just how Windows works. But I'll definitely take opportunity if I find that I'm mistaken)

kozec avatar Apr 21 '19 11:04 kozec

Dang, that sucks. It kinda overrides some of the utility of sc-controller. You either end up with double inputs or you have to run a blank Desktop config in Steam, which technically works but the whole point of sc-controller (in my eyes) is to circumvent the Steam dependency. I'm not a huge Steam user (I prefer Itch and GOG) so I'm always looking for ways to ditch Steam while retaining the full capabilities of the Steam Controller.

edit: on your "Running SC Controller on Windows" wiki page you have a link that directs to a tutorial for installing ViGEm via Powershell. The recent update to ViGEm (https://github.com/ViGEm/ViGEmBus/releases/tag/v1.16.112) has changed from using Powershell to using a Windows setup wizard so it's a LOT easier to install for your average user.

CriticalComposer avatar Apr 21 '19 14:04 CriticalComposer

The recent update to ViGEm (https://github.com/ViGEm/ViGEmBus/releases/tag/v1.16.112) has changed from using Powershell to using a Windows setup wizard so it's a LOT easier to install for your average user.

Great, I changed page accordingly.

kozec avatar Apr 21 '19 18:04 kozec

I have a problem, the program doesn't seem to hook with the controller i get the following errors:

[E] USB Failed to open device 2 on bus 1: No such device (it may have been disconnected) [E] sc_by_cable Failed to open '/win32/usb/1/2'

. Before it kind of worked and the inputs where detected in windows devices, the emulated xbox pad recognized my inputs (this was in v0.4.9.3 on a previous windows 10 installation with avast) and the guide buttom worked and showed the modes but now when I run the scc-deamon.exe or sc_controller.exe nothing is happening, no response from the controller inputs (apart from lizard mode) on emulated xbox controller.

BTW, I have in this installation of windows a kind of phantom xbox controller that appears when I open the devices, it doesn't even show inputs to test. I have glosc and that works but do not know if I somehow Flunked my installation of ViGEm.

dan990 avatar Apr 25 '19 21:04 dan990

On the Gyro per-axis control, i can't adjust any of the settings, they're all greyed out.

Same goes for the settings too.

Bricky5 avatar Apr 27 '19 00:04 Bricky5

The program only works when using the dongle, not when the controller is plugged directly. I tried, and when putting new bateries and trying with the dongle the scc daemon suddenly comes to life.

I prefer to use a wired connection so I don't waste a lot of batteries.

dan990 avatar May 20 '19 20:05 dan990

Ok, more specificity Using Dongle. I'll try the batteries, but it's not the daemon. it's the GUI

Bricky5 avatar May 20 '19 23:05 Bricky5

Sorry about that, I meant the emulation, the GUI opens and all but there are no response from the controller. Just tried it again connected and the daemon throws these two errors

[E] USB          Failed to open device 3 on bus 2: No such device (it may have been disconnected)
[E] sc_by_cable  Failed to open '/win32/usb/2/3'

The GUI controller symbol (the one that lights on green when emulating) is grey

Then connect via dongle and the daemon is responsive, all inputs I use are registered and the GUI controller symbol shows green.

I already tried using games when connected via dongle and it does work, all keybindings are responsive, high precision template works

In short, the program always worked, but only recognizes my controller via dongle, not when directly plugged in.

dan990 avatar May 21 '19 00:05 dan990

Ok, separate error from all the buttons in the GUI being greyed out. got it.

Bricky5 avatar May 21 '19 00:05 Bricky5

I'm sorry, I'm not entirely sure what are you reporting. But gyroscope is what's am implementing right now, so anything related to it doesn't work yet and that's why it is grayed out in GUI.

kozec avatar May 21 '19 18:05 kozec

Ah. Then what about the settings? why are they greyed out?

On Tuesday, May 21, 2019, 2:05:22 PM EDT, kozec <[email protected]> wrote:  

I'm sorry, I'm not entirely sure what are you reporting. But gyroscope is what's am implementing right now, so anything related to it doesn't work yet and that's why it is grayed out in GUI.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Bricky5 avatar May 21 '19 19:05 Bricky5

Sorry about the mess of replying through email

To clarify: The Global settings for everything are also greyed out

Bricky5 avatar May 21 '19 19:05 Bricky5

Its an experimental build for windows, I imagine that the linux version already has those features.

dan990 avatar May 22 '19 19:05 dan990

that's why this is in an issue titled "windows version"

Bricky5 avatar May 22 '19 22:05 Bricky5

The Global settings for everything are also greyed out

Yes, that's same case. I should have probably write that somewhere.

kozec avatar May 23 '19 21:05 kozec

Does Steam have to be running? Because when i exit Steam the controller goes into Lizard mode and is just kinda of a keyboard and mouse... I can't seem to get sc-controller to work...

Everytime i open scc-daemon.exe i get these messages:

[I] Daemon Starting SC Controller Daemon v0.4.5... [I] Daemon Created control socket C:\Users\xxx\AppData\Roaming\scc\daemon.socket [I] Daemon Initializing drivers... [D] Mapper Creating virtual devices... [d] Mapper Gamepad: <ViGEm x360 Controller 0x0110baf0> [d] Mapper Mouse: <Winapi mouse device 0x0127ea68> [d] Mapper keyboard: <Winapi keyboard device 0x0127eb98> [I] Daemon Activated default profile 'C:\Users\xxx\Downloads\sc-controller-0.4.9.4-win32-pre-release\share\default_profiles\Desktop.sccprofile' [E] USB Failed to open device 10 on bus 2: No such device (it may have been disconnected) [E] sc_by_cable Failed to open '/win32/usb/2/a' [I] Daemon Ready.

rusagent avatar Jun 15 '19 17:06 rusagent

Does Steam have to be running? Because when i exit Steam the controller goes into Lizard mode and is just kinda of a keyboard and mouse... I can't seem to get sc-controller to work...

No, running Steam will conflict with sc-controller.

kozec avatar Jun 16 '19 07:06 kozec

I was having the same problem as rusagent and it took me a few hours to figure out but I realized that the problem might be that the sc-controller folder is not in the OS drive. My OS drive is C: but sc-controller was located in the D: drive. So I moved the folder to the C: drive and the problem was fixed!

You should add a warning that says the sc-controller folder should be in the OS drive. I'm using Windows 10, by the way.

JPili avatar Jun 25 '19 23:06 JPili

Nevermind... It stopped working again for some reason... The problem isn't the folder location. It's something else.

Edit: And now it's working again... I'm not completely sure what did it but I'm pretty sure it was because I launched sc-controller, turned off emulation, and then manually launched sc-daemon.exe. But now, I don't have to do all that because now it just automatically works when I launch sc-controller. Maybe doing all that fixed something. It's even working when I launch sc-controller from my other hard drives; it doesn't have to be my OS drive.

JPili avatar Jun 26 '19 03:06 JPili

Can confirm that this isn't working when wired, or that there's something wrong.

... and also, if we don't find a way to disable Lizard Mode all might be useless. Maybe if it won't conflict with Steam, then we could technically create a nulled config and load it up when we use SC Controller.

notNSANE avatar Jun 26 '19 09:06 notNSANE

... and also, if we don't find a way to disable Lizard Mode all might be useless. Maybe if it won't conflict with Steam, then we could technically create a nulled config and load it up when we use SC Controller.

sc-controller disables lizard mode right after it gains access to steam controller, so once I manage to find reason why it can't get access to wired controller, that should be solved as well.

kozec avatar Jun 27 '19 20:06 kozec

I have a bug that prevents me from opening the "Right Pad" window whenever there's anything set to it. It's openable if there's nothing set to it yet but as soon as I save any sort of binding to it. It's unable to be opened. Is that only happening to me?

JPili avatar Jun 30 '19 13:06 JPili

New release added, should be fixing all bugs mentioned so far with exception of wired SC issues.

kozec avatar Jul 08 '19 18:07 kozec

Just tested the new release and no matter what button I click on I get this error

Exception AttributeError: "Parameter instance has no attribute '_cparam'" in <object repr() failed> ignored
Traceback (most recent call last):
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/gui/controller_widget.py", line 64, in on_click
    self.app.show_editor(self.id)
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/gui/app.py", line 384, in show_editor
    ae = self.choose_editor(action, "", id)
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/gui/binding_editor.py", line 162, in choose_editor
    e = ActionEditor(self.app, self.on_action_chosen)
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/gui/action_editor.py", line 106, in __init__
    self.load_components()
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/gui/action_editor.py", line 163, in load_components
    self.load_component(c)
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/gui/action_editor.py", line 179, in load_component
    instance = cls(self.app, self)
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/gui/ae/axis_action.py", line 45, in __init__
    self.circular_axis = MouseAction(Rels.REL_WHEEL)
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/actions.py", line 169, in __init__
    pars = [ Parameter(v) for v in args ]
  File "C:\Users\SteamOS\Downloads\sc-controller-0.4.9.5-win32-pre-release\python/scc/actions.py", line 75, in __init__
    raise TypeError("Cannot convert %s" % (repr(value),))
TypeError: Cannot convert <Rels.REL_WHEEL: 1032>

Also, I can't get my DS4 recognized at all. The config is loaded and Emulation is enabled, the ViGEm driver is showing up but when I test the output for it (in Windows' Game Controllers window) I get no output. I'm on Windows 10 64-bit v1809.

CriticalComposer avatar Jul 08 '19 19:07 CriticalComposer

@CriticalComposer are you using physical DS4, or emulating DS4? That first thing is not yet supported on Windows.

As for main bug, I have it replicated, so give me a moment.

kozec avatar Jul 09 '19 07:07 kozec

Another release, fixing above breaking bug.

kozec avatar Jul 09 '19 09:07 kozec

I can't add a second controller in the latest release. The Daemon Returns the following log:

[I] Daemon Starting SC Controller Daemon v0.4.5... [I] Daemon Created control socket C:\Users\Travis\AppData\Roaming\scc\daemon.socket [I] Daemon Initializing drivers... [D] Mapper Creating virtual devices... [d] Mapper Gamepad: <ViGEm x360 Controller 0x011ded78> [d] Mapper Mouse: <Winapi mouse device 0x011deea8> [d] Mapper keyboard: <Winapi keyboard device 0x010e0260> [E] CemuHook Bind failed: error 10048 [I] Daemon Activated default profile 'C:\Users\Travis\Desktop\sc-controller-0.4.9.6-win32-pre-release\share\default_profiles\Desktop.sccprofile' [I] Daemon Ready. [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [D] Daemon Assigned default_mapper to <SC FC615205E8> [I] Daemon Controller added: <SC FC615205E8> [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] USB sccd_usb_dev_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] Daemon Cannot add controller with ID '(null)', duplicate ID. [D] sc_dongle Failed to add controller to daemon

Turning both contoller off and back on will always result in the first controller turned on being successfully added and the second will fail. Thanks for your work on creating this fantastic tool!

theclarkmeister avatar Jul 17 '19 01:07 theclarkmeister

Added new release which should fix all issues with wired controller and IO errors.

kozec avatar Sep 02 '19 18:09 kozec

The right pad trackball in joystick mouse and joystick move mode seem to not work in the game controllers as xbox axis...

Edit: nevermind works now 2nd Edit: Mouse trackball as right stick joystick doen't work 3rd Edit: When setting the right pad config tool on the menu to mouse it is unresponsive and cant be modified (nothing happens when clicking de rigth pad menu)

dan990 avatar Sep 03 '19 01:09 dan990

Just following up on my previous post about not being able to add a second controller. Here is the log from the daemon in the updated version:

[I] Daemon Starting SC Controller Daemon v0.4.5... [I] Daemon Created control socket C:\Users\Travis\AppData\Roaming\scc\daemon.socket [I] Daemon Initializing drivers... [D] Mapper Creating virtual devices... [d] Mapper Gamepad: <ViGEm x360 Controller 0x02960ea8> [d] Mapper Mouse: <Winapi mouse device 0x0295da88> [d] Mapper keyboard: <Winapi keyboard device 0x02960fd8> [E] CemuHook Bind failed: error 10048 [I] Daemon Activated default profile 'C:\Users\Travis\Desktop\sc-controller-0.4.9.7-win32-pre-release\share\default_profiles\Desktop.sccprofile' [I] Daemon Ready. [D] Daemon Assigned default_mapper to <SC FC61921F95> [I] Daemon Controller added: <SC FC61921F95> [E] input_libusb sccd_input_libusb_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] input_libusb sccd_input_libusb_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] input_libusb sccd_input_libusb_hid_request: out: Input/Output Error [E] sc Failed to retrieve serial number [E] Daemon Cannot add controller with ID '(null)', duplicate ID. [D] sc_dongle Failed to add controller to daemon

Looks slightly better than before, but as you can see still a few issues going on. Let me know if I can do anything else to help out and as always, thanks for your help and hard work on this lovely piece of software!

theclarkmeister avatar Sep 07 '19 00:09 theclarkmeister

@theclarkmeister

[E] Daemon Cannot add controller with ID '(null)', duplicate ID.

This sounds like bug and reason. I've created #497 as separate issue for it.

kozec avatar Sep 07 '19 06:09 kozec

Super late but here's my current report for Windows 10. Wired SC.

First, Lizard mode or Steam isn't being disabled so it causes a lot of issues right now. Second, I don't know if it's because lizard mode or what, but buttons are incorrectly mapped and games don't respond correctly. Not sure how to test this.

For the record, there aren't any game controllers recognized on the Game Controllers control panel. But if I press the Guide button, it opens the SC-Controller green panel on bottom left.

notNSANE avatar Sep 18 '19 06:09 notNSANE

As a separate issue, the scc-daemon.exe isn't closing correctly when exiting the app, so it's stuck until we kill the process.

notNSANE avatar Sep 18 '19 06:09 notNSANE

Added new release.

scc-daemon now uses hidapi and requests exclusive access, which (at least on my machine) prevents Steam from grabbing controller, switching it to Lizard mode and generally wrecking havoc.

kozec avatar Oct 27 '19 12:10 kozec

Did you revert the changes from #461 by accident? I always had that problem but it was finally fixed in v0.4.9.7, now I'm getting Failed to open device errors again with v0.4.9.8.

indoormatic avatar Nov 06 '19 10:11 indoormatic

I can confirm that the new release doesn't start Lizard mode on Windows!

But the OSD is broken and doesn't work.

notNSANE avatar Nov 06 '19 12:11 notNSANE

@indoormatic No, that shoudn't be happening. And OSD should work as well :( I'll check if I missed anything on another machine, but any details are welcome.

kozec avatar Nov 06 '19 21:11 kozec

@indoormatic @notNSANE I can't reproduce neither of your problems. Can you try closing everything scc-related, starting scc-daemon.exe and copy-pasting any error messages from console window it should open?

kozec avatar Nov 07 '19 15:11 kozec

Got a lot of data.

With Steam opened, then starting scc-daemon.exe

[E] input_hidapi Failed to open device \\?\hid#vid_28de&pid_1142&mi_01#8&1c2f7806&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}: hid_open_path failed [E] sc_dongle Failed to open '/hidapi//?/hid#vid_28de&pid_1142&mi_01#8&1c2f7806&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}' [E] input_hidapi Failed to open device \\?\hid#vid_28de&pid_1142&mi_04#8&13bb7739&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}: hid_open_path failed [E] sc_dongle Failed to open '/hidapi//?/hid#vid_28de&pid_1142&mi_04#8&13bb7739&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}' [E] input_hidapi Failed to open device \\?\hid#vid_28de&pid_1142&mi_02#8&33f3044b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}: hid_open_path failed [E] sc_dongle Failed to open '/hidapi//?/hid#vid_28de&pid_1142&mi_02#8&33f3044b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}' [E] input_hidapi Failed to open device \\?\hid#vid_28de&pid_1102&mi_02#8&15dae965&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}: hid_open_path failed [E] sc_by_cable Failed to open '/hidapi//?/hid#vid_28de&pid_1102&mi_02#8&15dae965&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}' [E] input_hidapi Failed to open device \\?\hid#vid_28de&pid_1142&mi_03#8&101bc689&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}: hid_open_path failed [E] sc_dongle Failed to open '/hidapi//?/hid#vid_28de&pid_1142&mi_03#8&101bc689&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}' [I] Daemon Ready.

With Steam closed, at first it was working fine (apparently), but after pressing the Guide button I've got this:

` [[[EEE]]] mmmeeennnuuu___dddaaatttaaa...ccc FFFaaaiiillleeeddd tttoo o o opopepenen n ' 'D'D:D::\G\GaGamameme'e':': : N NoNo o s susucuchch h f fifililele e o oror r d didirierrceetcctotororyry y [ [E[E]E] ] O OSOSDSD D FFFaaaiiillleeeddd tttooo dddeeecccooodddeee mmmeeennnuuu

[E] menu_data.c Failed to open 'D:\Game': No such file or directory [E] OSD Failed to decode menu [E] menu_data.c Failed to open 'D:\Game': No such file or directory [E] OSD Failed to decode menu [E] menu_data.c Failed to open 'D:\Game': No such file or directory [E] OSD Failed to decode menu `

It seems that the software is failing because there's a space in the path. I confirmed this by moving it to the root directory of the partition then changing "sc-controller" to "sc controller".

Hope this helps! Waiting for the next release, meanwhile I'll keep the app on the root folder

notNSANE avatar Nov 08 '19 09:11 notNSANE

Ok, that makes sense. Only one program can use controller now, so if Steam is started before SC-Controller, Steam is who's controlling. It not really possible to "steal" controller access, at least not without risking crashing Steam.

kozec avatar Nov 08 '19 19:11 kozec

OSD issue should be fixed in latest release

kozec avatar Nov 10 '19 19:11 kozec

hX8qpF9

is a constant 10% CPU usage normal? this is regardless of whether the GUI is open or not

notNSANE avatar Nov 15 '19 13:11 notNSANE

@notNSANE IMHO you should specify which CPU do you have, as you're complaining about a CPU issue. My usage is completely normal using an i7-7700 under Windows 10 Pro

imatge

elboletaire avatar Nov 15 '19 13:11 elboletaire

you're right! AMD Ryzen 1600

notNSANE avatar Nov 15 '19 14:11 notNSANE

so I'm launching SCC via a command line on Windows. To close it, I close the window, but sometimes it doesn't close and it's completely stuck. Appears like this on Device Manager.

wohGvvo

It's kind of catastrophic since after this happens there's no way to use the SC anymore until a system restart.

What other info should I get?

notNSANE avatar Nov 22 '19 18:11 notNSANE

@notNSANE It sounds like closing window kills scc-daemon instantly, without giving it any time to cleanup. Does same thing happens if you close it using "control-c" or through option in GUI?

kozec avatar Nov 23 '19 11:11 kozec

it doesn't happen via GUI or using Ctrl-C (which I'll be starting to use from now on).

I'm guessing it happens in stress situations, like, with lower RAM or some other processes hanging out... but that only happens after several hours of playing. Besides, I always have opened several browsers at all times, which also hog the PC a bit over time.

I'll try to reproduce it again later, but isn't there a way to prevent the window from being closed instantly? (I have no idea how these actually work).

notNSANE avatar Nov 23 '19 12:11 notNSANE

Hi, is anything needed in order to run scc with GUI? When I try to run sc-controller.exe, it does nothing. But when I run only deamon, it works properly (even in games).

On W10.

perirexcz avatar Dec 04 '19 14:12 perirexcz

OSD still doesn't show up for me even with the latest version. Edit: The menu OSD doesn't show. it shows up if I press the button in the app Edit2: It seems to work now but only when the dongle is used. Bluetooth doesn't properly work.

CritLoren avatar Dec 06 '19 14:12 CritLoren

@m-vlad OSD shows properly for me (after pressing "steam" button on controller and waiting for few seconds. But GUI doesn't. Have you installed any python packages or are there any other prerequisites other than vigem and xbox driver as written in wiki? Thanks for answer. :)

perirexcz avatar Dec 07 '19 18:12 perirexcz

@m-vlad Bluetooth is not supported yet, sorry.

@magjir Can you try starting that exe from command line? It may display some error message.

kozec avatar Dec 07 '19 21:12 kozec

@m-vlad Bluetooth is not supported yet, sorry.

@magjir Can you try starting that exe from command line? It may display some error message.

Here is screenshot. Unfortunately, running sc-controller from powershell still does nothing. :/ image

I am curious if it might have problem with central european symbols in my user folder path... But scc-deamon works fine and osd is drawn. image

perirexcz avatar Dec 08 '19 09:12 perirexcz

Added new release.

@magjir I've added scc-controller-console.exe binary that, unlike one I told you to run before, actually stays attached to terminal and should display some error message. Please, try that one as well.

kozec avatar Dec 25 '19 12:12 kozec

@kozec Here is screen of error message. :)

image

Edit: Yeah, it really looks like it has problem with central european symbol "ř" (0xF8 in Windows-1250 encoding - stupid one of the few charsets incompatible with UTF-16) in my user folder path. Could it be possible that in case of this charset error, configs would be stored in installation path?

And do you have a donation link? You are doing great job and I'd like to appreciate it with small thank you.

perirexcz avatar Dec 25 '19 21:12 perirexcz

And do you have a donation link? You are doing great job and I'd like to appreciate it with small thank you.

All my e-begging is handled by this section of readme :)

Could it be possible that in case of this charset error, configs would be stored in installation path?

Yes, but I'd rather have it to handle those cases correctly. If Czech can break it this much, I don't wanna think what it will do with cyrilic or kanji...

kozec avatar Dec 26 '19 08:12 kozec

I posted this elsewhere already (see the feature request for a gamecube button layout setting), but would it be possible to have a "freeform touch menu"? Like, similar to a radial menu but you can place the buttons anywhere on the menu. Thanks.

ChrisNonyminus avatar Jan 07 '20 21:01 ChrisNonyminus

`I'm having a weird problem using the program since the last 2 updates, i can no longer get the settings to appear no matter how many times in click it and also the osd now refuses to exit.

I'm running this on windows 10 x64 pro version 1903 (Build 18362.535), using ryzen 7 3700x [email protected], corsair vengeance ddr4 2 x 8 gb @ 3200mhz, asus rog x370-f MB installed on 240gb ssd.

The last version that the settings and osd worked for me was v0.4.9.8.

Catcher40 avatar Jan 08 '20 07:01 Catcher40

@ChrisNonyminus Technically it wouldn't be too hard, but I can't think of any way to specify button locations (both format and UI). I don't feel like implementing my own image editor...

@Catcher40 try running sc-controller-console.exe and check if it displays any errors.

kozec avatar Jan 11 '20 21:01 kozec

this is what i get running sc-controller-console.exe

[I] GUI Starting SC Controller GUI (forced console) v0.4.5... [D] GUI Initializing python... [d] GUI Python home: C:\sc-controller [d] GUI Python path: C:\sc-controller\python;C:\sc-controller\python\scc\lib;C:\sc-controller\lib\python2.7;C:\sc-controller\lib\python2.7\lib-dynload;C:\sc-controller\lib\python2.7\site-packages

(sc-controller:33228): GLib-GIO-WARNING **: 03:51:13.540: win32 session dbus binary not found: C:\sc-controller\gdbus.exe W UDataManager enumerate_children_async returned no files [d] SCCC Connecting to 'C:\Users\steve\AppData\Roaming\scc\daemon.socket'... [E] SCCC Connection failed: error 10061 [d] SCCC Connecting to 'C:\Users\steve\AppData\Roaming\scc\daemon.socket'...

Catcher40 avatar Jan 12 '20 03:01 Catcher40

Also if i then click on the settings option i then get

Traceback (most recent call last): File "C:\sc-controller\python/scc/gui/app.py", line 477, in on_mnuGlobalSettings_activate gs = GlobalSettings(self) File "C:\sc-controller\python/scc/gui/global_settings.py", line 81, in init self.load_settings() File "C:\sc-controller\python/scc/gui/global_settings.py", line 114, in load_settings self.load_colors() File "C:\sc-controller\python/scc/gui/global_settings.py", line 176, in load_colors theme = self.app.config.get("osd_color_theme", "None") File "C:\sc-controller\python/scc/config.py", line 104, in get raise KeyError("Invalid config key: %s" % (key,)) KeyError: u'Invalid config key: osd_color_theme'

Catcher40 avatar Jan 12 '20 03:01 Catcher40

Latest version is outputting the following in the sc-daemon:

[I] Daemon Starting SC Controller Daemon v0.4.5... [I] Daemon Created control socket C:\Users\Travis\AppData\Roaming\scc\daemon.socket [I] Daemon Initializing drivers... [D] Mapper Creating virtual devices... [d] Mapper Gamepad: <ViGEm x360 Controller 0x013094e0> [d] Mapper Mouse: <Winapi mouse device 0x01309610> [d] Mapper keyboard: <Winapi keyboard device 0x0120ef98> [E] CemuHook Bind failed: error 10048 [I] Daemon Activated default profile 'C:\Users\Travis\Desktop\sc-controller-0.4.9.10-win32-pre-release\share\default_profiles\Desktop.sccprofile' [I] Daemon Ready. [d] SCCC Connecting to 'C:\Users\Travis\AppData\Roaming\scc\daemon.socket'... [d[]d D]a emSoCn C C Accepted new connection Connected to daemon, version 0.4.5 [I] Daemon Registered scc-osd-daemon [E] input_hidapi sccd_input_hid_request: hid_send_feature_report failed: A device attached to the system is not functioning. [E] sc Failed to retrieve serial number [E] input_hidapi sccd_input_hid_request: hid_send_feature_report failed: A device attached to the system is not functioning. [E] sc Failed to retrieve serial number [D] Daemon Assigned default_mapper to <SC FC615205E8> [I] Daemon Controller added: <SC FC615205E8> [E] input_hidapi sccd_input_hid_request: hid_send_feature_report failed: A device attached to the system is not functioning. [E] sc Failed to retrieve serial number [E] input_hidapi sccd_input_hid_request: hid_send_feature_report failed: A device attached to the system is not functioning. [E] sc Failed to retrieve serial number [E] input_hidapi sccd_input_hid_request: hid_send_feature_report failed: A device attached to the system is not functioning. [E] sc Failed to retrieve serial number [E] input_hidapi sccd_input_hid_request: hid_send_feature_report failed: A device attached to the system is not functioning. [E] sc Failed to retrieve serial number [D] Mapper Creating virtual devices... [d] Mapper Gamepad: <ViGEm x360 Controller 0x012119f0> [d] Mapper Mouse: <Winapi mouse device 0x01221b38> [d] Mapper keyboard: <Winapi keyboard device 0x01221c68> [I] Daemon Activated default profile 'C:\Users\Travis\Desktop\sc-controller-0.4.9.10-win32-pre-release\share\default_profiles\Desktop.sccprofile' [D] Daemon (Re)using mapper 01220b50 for <SC FC61921F95> [I] Daemon Controller added: <SC FC61921F95>

I also notice that I can only change the profile for the first controller I connect. Anything past that will always use the desktop profile. Pushing the guide button on any connected controller opens up the profile switcher, but will only respond to the first controller connected. Thanks for your continued work!

theclarkmeister avatar Feb 01 '20 20:02 theclarkmeister

Is the windows version no longer being worked on as its been almost 11 weeks since the last update, i know this isn't a bug report but i didn't know where else to ask this.

Catcher40 avatar Mar 12 '20 02:03 Catcher40

Still alive, just busier than I expected. I've managed to add support for non-steam controllers and currently porting / re-adjusting GUI for its settings. What's left is gesture recognition and then port is more-or-less done.

kozec avatar Mar 12 '20 05:03 kozec

Finally getting to try the Windows version proper, and hot damn @kozec ! It's a thing of beauty!

I have noticed a few minor issues, the main issue is the OSD, it comes up when I hit the Steam button, but there doesn't seem to be any way to dismiss it if I happened to accidentally summon it. Perhaps a toggle, if it's already running instead of it trying to run it again and throwing an error in the deamon console, it could instead just send the OSD away?

Also when I browse to all configs and select a config, it gets properly added but the OSD sub-menu for selecting the config doesn't go away. It stays on screen, on top of everything, until I kill the daemon process. The main OSD does go away, for example, if I summon it and then choose to turn off the controller, or choose a template from the main OSD window. Just seems to be the sub-menu one that gets stuck.

The other minor issue is with the daemon not closing out when I close the GUI, although that may be intentional now that I think about it, as a way to close the GUI but still have the controller mapping in place handled by the daemon. But even closing from the menu (not just hitting the X) the daemon keeps running along with the console host. Is there another to close the daemon without resorting to killing the task?

8BitCerberus avatar Mar 18 '20 23:03 8BitCerberus

Thanks, I'm glad it works at least partially :)

I have noticed a few minor issues, the main issue is the OSD, it comes up when I hit the Steam button, but there doesn't seem to be any way to dismiss it if I happened to accidentally summon it.

"B" button should dismiss menu, but it sounds like there is some issue with that. In fact, from your description, it sounds like closing any menu doesn't work at all. Can you try running scc-daemon.exe manually, so it spawns console and displays errors?

But even closing from the menu (not just hitting the X) the daemon keeps running along with the console host. Is there another to close the daemon without resorting to killing the task?

This, too, shouldn't be happening. When you have that scc-daemon.exe running, try starting sc-controller.exe as well and use that menu option to stop the daemon. It sounds like there is something that keeps processes alive even after they are supposed to exit.

kozec avatar Mar 19 '20 19:03 kozec

Hmm, no errors in coming up in console. B does dismiss the top-level menu but not the sub-menu.

Here's the output:

[I] Daemon Starting SC Controller Daemon v0.4.5... [I] Daemon Created control socket C:\Users[user]\AppData\Roaming\scc\daemon.socket [I] Daemon Initializing drivers... [D] Mapper Creating virtual devices... [d] Mapper Gamepad: <ViGEm x360 Controller 0x012bece0> [d] Mapper Mouse: <Winapi mouse device 0x011aee78> [d] Mapper keyboard: <Winapi keyboard device 0x012bee10> [I] CemuHook Created CemuHookUDP Motion Provider [I] Daemon Activated default profile 'G:\Utilities\Steam Controller\sc-controller\share\default_profiles\Desktop.sccprofile' [d] SCCC Connecting to 'C:\Users[user]\AppData\Roaming\scc\daemon.socket'... [I] Daemon Ready. [[dd]] DSaCeCmCo n A ccepted new connectionC onnected to daemon, version 0.4.5 [I] Daemon Registered scc-osd-daemon [d] Daemon Accepted new connection [D] Daemon Assigned default_mapper to <SC FC53903366> [I] Daemon Controller added: <SC FC53903366> [I] Daemon Activating profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' [I] Daemon Activated profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' on default_mapper [I] Daemon Activating profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' [I] Daemon Activated profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' on default_mapper [I] Daemon Activating profile 'C:/Users/[user]/AppData/Roaming/scc/profiles/Desktop (Gyro).sccprofile' [I] Daemon Activated profile 'C:/Users/[user]/AppData/Roaming/scc/profiles/Desktop (Gyro).sccprofile' on default_mapper [d] css Loading css_provider G:\Utilities\Steam Controller\sc-controller\share/osd_styles/Reloaded.gtkstyle.css [d] Daemon Source 20/STICK locked on <SC FC53903366> by client 011b7790 [d] Daemon Source 9/A locked on <SC FC53903366> by client 011b7790 [d] Daemon Source 11/B locked on <SC FC53903366> by client 011b7790 [d] OSD Opening submenu 'G:\Utilities\Steam Controller\sc-controller\share\default_menus\Profiles.menu' [I] Daemon Activating profile 'G:\Utilities\Steam Controller\sc-controller\share\default_profiles\Desktop.sccprofile' [I] Daemon Activated profile 'G:\Utilities\Steam Controller\sc-controller\share\default_profiles\Desktop.sccprofile' on default_mapper [I] Daemon Activating profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' [I] Daemon Activated profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' on default_mapper [I] Daemon Activating profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' [I] Daemon Activated profile 'G:/Utilities/Steam Controller/sc-controller/share/default_profiles/Desktop.sccprofile' on default_mapper

And disabling the emulation from the menu, then exiting sc-controller does properly end all processes. But just exiting sc-controller while the emulation is active keeps both sc-controller.exe in memory and tied to scc-daemon.exe. Alternatively running scc-daemon first then running sc-controller, then exiting sc-controller ends its process but scc-daemon continues running still (which would be expected as they were run separately.)

Edit to add:

A couple more things I noticed when trying to port over a few of my emulator configs from Steam, and I can't remember offhand if they're present in the Linux build (I can check later,) but when setting up a mode shift, the "Hold" and "Double Press" tabs can be clicked on, but none of the options within them are active, the only one with anything available is "Press".

Also when I adjust right pad rotation when set to Mouse-like Joystick, after that the section where it used to say "Mouse-like RStick", just says "rotate" now, and I can no longer click on it to edit it. I can click on the "pressed" action, and clicking on the right pad in the graphic brings up the same editor for the pressed action. The only way I can get back to editing the right pad is to clear it first, then start over.

Edit again to add

Looks like the "rotate" problem happens with regular Mouse input as well, not just Mouse-like Joystick.

8BitCerberus avatar Mar 23 '20 20:03 8BitCerberus

while I recall reading that this was intended, I fully support that closing SC Controller GUI closes the daemon too. It's basic UX, not doing it is decades of behavior ignored.

notNSANE avatar Mar 23 '20 20:03 notNSANE

Just tested with bunch of games and only the X axis is moving when using Mouse Like Joystick on the Right Pad.

Moving is very little (sensitivity helps in that regard) but no Y axis movement is registered from controller.

djismgaming avatar Mar 31 '20 15:03 djismgaming

I noticed the lack of Y axis on Mouse-like Joystick too, but I was only testing on one game so far and I wasn't sure yet if it was sc-controller or Cemu.

8BitCerberus avatar Mar 31 '20 16:03 8BitCerberus

I am experiencing the lack of Y axis movement with Mouse-like Joystick as well. One other big problem with the current beta build is that the Rotate modifier does not work. Pretty much makes the left touchpad useless for me. The c branch version is coming along nicely overall.

I might send a pull request with a couple of changes that I have found to improve things.

Ryochan7 avatar Apr 05 '20 18:04 Ryochan7

Hi kozec, thanks for develo;pment windows vers. and all. My question - can i attach steam controller directly to notebook or PC without original blutooth controller adapter, use BLE protocol in steam controller? When i can use it itself - your cs controller application dont recognized steam controller and controller work as mouse standart. Help.

blablabla3k avatar Apr 13 '20 04:04 blablabla3k

@blablabla3k Sorry, bluetooth support is not implemented yet. It's one of those things Windows does very differently from everything else, so I'm saving it for when everything else works.

As for Y axis on Mouse Like Joystick, I'll try to get it fixed in next release.

kozec avatar Apr 13 '20 06:04 kozec

Hey, just came here quickly to say that my antivirus (Avast) detected that scc-daemon and scc-osd-daemon were infected by "IDP.Generic". I don't know what could have caused this so i'm just reporting it.

LelouBil avatar May 17 '20 18:05 LelouBil

Actually, it was just scc-osd-daemon, I re-downloaded it just to be sure and it's still detected. Here's a Virustotal report https://www.virustotal.com/gui/file/9ce174bb6d677903c57adb3e3279d0581d382da176b64c34a46b07204c290130/detection

LelouBil avatar May 17 '20 18:05 LelouBil