Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Could someone add Steelseries Stratus Duo? Vendor ID: 0x1038 Thank you! #1227

Open
johnnybegoode77 opened this issue Jun 13, 2022 · 7 comments · May be fixed by #1223
Open

Could someone add Steelseries Stratus Duo? Vendor ID: 0x1038 Thank you! #1227

johnnybegoode77 opened this issue Jun 13, 2022 · 7 comments · May be fixed by #1223

Comments

@johnnybegoode77
Copy link

Type of Controller

Replace this text with: Steelseries Stratus Duo (Xbox 360)

OS Version

10.14.6

Driver Version

Xbox 360 Controller Driver
Version 1.0.0-alpha.2

Connection Method

Replace this text with: Wired, Wireless Adapter, Bluetooth

Device Name and Info

(If you don't know this information, please refer to the README for how to find it. Enter N/A if not applicable)

Device Name: Steelseries Stratus Duo

Product ID: 0x1430 (Wireless)

Product ID: 0x1431 (Wired)

Vendor ID: 0x1038

Response of Controller

N/A

Response in Preference Pane

No, No Device Found

Detailed Explaination of Issue

Never had a chance to get it to work.
No Device Found

@stevenjamescox
Copy link

I have the same controller. It's set to be added in Pull Request #1223.

Unfortunately, the developer may have moved on from working on this driver. There might never be an update.

There is a way to get this controller working for you, though. This part of the README goes in detail about how to add controllers by adding them to the Info.plist file inside of 360Controller.kext.

Before doing that I recommend using the Alpha-5 build. That's the version that's worked best for my 10.14.6 machine.

Here's a copy of the Info.plist I've been using to get my SteelSeries Stratus Duo to work on 10.14.6. The file is probably only compatible with the Alpha-5 build--and you'd need to follow the instructions in the README section I linked above regarding disabling signing requirements for any changed Info.plist to work at all.

@stevenjamescox stevenjamescox linked a pull request Jun 13, 2022 that will close this issue
@stevenjamescox
Copy link

stevenjamescox commented Jun 13, 2022

Excellent, you've got Alpha-5 installed.

You'll then need to disable signing requirements as described in the README because this plist is modified from the original (having had the SteelSeries Stratus Duo wired and 2.4GHz receiver profiles added).

The installed plist to replace is located at <name-of-your-hard-drive>/Library/Extensions/360Controller.kext/Contents/Info.plist.
(You can right-click on 360Controller.kext and select Show Package Contents to view files within.

You will then probably be prompted to authorize the now-modified kext.

If it doesn't work, perhaps try booting into recovery and entering:
csrutil disable
then
csrutil enable --without kext.
To be clear, ^this method is less secure than the method described in the README.

(FYI it appears that for later OS versions including macOS 12 Monterey, that the csrutil enable --without kext method is REQUIRED for a modified version of the kext to work. It looks like that the ability to do sudo nvram boot-args="kext-dev-mode=1" has been removed or significantly changed at some post after macOS 10.14 Mojave.)

@johnnybegoode77
Copy link
Author

johnnybegoode77 commented Jun 13, 2022

Thank you!
I tried the following...

1st step: Failed
Disabling signing requirements

Jons-MacBook-Pro:~ jon$ sudo nvram boot-args="kext-dev-mode=1" Password: nvram: Error setting variable - 'boot-args': (iokit/common) not permitted

Jons-MacBook-Pro:~ jon$ sudo kextcache -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /System/Library/Extensions
unrecognized option /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext
usage: kextcache -prelinked-kernel <filename> [options] [--] [kext or directory]
       kextcache -system-prelinked-kernel
       kextcache [options] -prelinked-kernel
       kextcache -invalidate <volume> 
       kextcache -update-volume <volume> [options]
       kextcache -system-caches [options]

use kextcache -help for an explanation of each option
Jons-MacBook-Pro:~ jon$ sudo csrutil disable
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
Jons-MacBook-Pro:~ jon$ sudo csrutil enable --without kext
Password:
csrutil: requesting an unsupported configuration. This is likely to break in the future and leave your machine in an unknown state.
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.

2nd Step: I replace the info.plist with yours
Select All - Copy, - then Select All - Paste, then Save
Is this the right way to do it?
Screen Shot 2022-06-13 at 12 08 09 PM

3rd Step: Ok
Jons-MacBook-Pro:~ jon$ sudo chown -R root:wheel /Library/Extensions/360Controller.kext

4th Step:

Jons-MacBook-Pro:~ jon$ sudo kextutil /Library/Extensions/360Controller.kext
Untrusted kexts are not allowed
Kext with invalid signature (-67030) denied: /private/var/db/KernelExtensionManagement/Staging/tmp.YOT2qx/C066648C-9B03-43E1-8AF6-145CDCF3C231.kext
Bundle (/Library/Extensions/360Controller.kext) failed to validate, deleting: /private/var/db/KernelExtensionManagement/Staging/tmp.YOT2qx/C066648C-9B03-43E1-8AF6-145CDCF3C231.kext
Unable to stage kext (/Library/Extensions/360Controller.kext) to secure location.

5th Step: After rebooting
Still, no device was found and now I can't even Enable Driver.
I get error message when I tried to enable driver.
Screen Shot 2022-06-13 at 12 08 28 PM

On a side note, I noticed that my product and vendor ID is different from yours:
Product ID: 0x1431
Product ID: 0x1430
Vendor ID: 0x1038
Am I getting the Product and Vendor ID from the wrong place?
I was using your info.plist though.
Screen Shot 2022-06-13 at 12 50 56 PM

@stevenjamescox
Copy link

stevenjamescox commented Jun 13, 2022

Yikes! Super un-fun to get those error messages. Thank you for providing an exceptional level of detail!

The reason the Product IDs and Vendor IDs are different in the Info.plist is because they appear in hexadecimal form in the System Profiler but need to be in decimal form in the Info.plist. It's inherently confusing and annoying. There may technical reasons for this that I'm ignorant of.
Hexadecimal 0x1038 converts to 4152 in decimal form.
0x1430 = 5168 and 0x1431 = 5169

The steps csrutil disable and csrutil enable --without kext need to be run from within Recovery Mode.

Terminal is found in Recovery Mode under Utilities in the tippy-top menu bar.

Alternative set of steps from where you're at right now:

  1. Within normally booted macOS
    1a) Fully delete 360Controller.kext using the terminal command sudo rm -r /Library/Extensions/360Controller.kext
  2. Restart, this time in Recovery Mode.
    2a) Open Terminal from the Utilities menu.
    2b) Enter csrutil disable and press Return.
    2c) Enter csrutil enable --without kext and press Return.
  3. Restart into normal macOS.
    3a) Here's a copy of 360Controller.kext containing the modified .plist. Download it. It should unzip automatically and then be within your Downloads folder.
    3b) Install this kext using Terminal with the command sudo cp -r ~/Downloads/360Controller.kext /Library/Extensions/
    3c) Terminal: sudo chown -R root:wheel /Library/Extensions/360Controller.kext
    3d) Terminal: sudo kextload /Library/Extensions/360Controller.kext
    3e) Terminal: sudo kextcache -i /

At some point along the way between 3b and 3e, you'll be prompted to authorize the 360Controller kext in System Preferences -> Security & Privacy.

  1. Reboot.

I believe that these are the steps I used to get it to work on Mojave but am not 100% certain. It was a few weeks ago.

@johnnybegoode77
Copy link
Author

It works!!! Thank you so much!!!

Screen Shot 2022-06-13 at 6 14 27 PM

@Suraj-Gov
Copy link

Hey @stevenjamescox I got the Stratus Duo for my M1.

When I follow step 3d, I got this error:

Incompatible architecture: Binary is for x86_64, but needed arch arm64e

Can you let me know how to fix this issue on an Apple Silicon laptop?

@stevenjamescox
Copy link

stevenjamescox commented Jul 16, 2022

Hi @Suraj-Gov,

Insofar as I am aware, the binaries in the 360Controller releases are only compiled for x86_64 (the architecture used by Intel processors in Macs). To work, the project's binaries would need to be compiled for arm64 (the architecture used by Apple Silicon).

I have not been able build this project from source (whether for x86_64 or arm64). I'm too much of a noob right now to figure out how to properly adapt the project from its Xcode 7(?) state to a recent enough Xcode version that supports Apple Silicon on macOS. But I believe it would basically go something like this for your situation:

  • Clone the full project source to your computer
  • Open project in a version of Xcode capable of compiling for arm64
  • Manually add the two (one for USB 2.4GHz receiver, one for wired by USB cable) SteelSeries Stratus Duo profiles to the 360Controller Info.plist, following the pattern used by the many other controller entries
  • Do Xcode & programming wizardry to get the full driver to build for arm64 <- the part I'm woefully unqualified for

Potential alternative that I also don't know how to do:

  • Rather than rebuilding the entire driver, only recompile the driver's binaries from source for arm64. I imagine that it might be possible to do this via the command line. But, again, I'm not qualified to say that with any certainty.

@dreamingthink in the thread for #1333 (comment) has partially built the project for M1, but it looks like only some parts of 360Controller are functional therein.

As @FranticRain has explained in #1128 (comment), the best long-term solution would be for someone to develop a System Extension using DriverKit.

I wish I could be of better assistance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants