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

Add IDs for various devices #27

Open
wants to merge 7 commits into
base: trunk
Choose a base branch
from

Conversation

sanjay900
Copy link

@sanjay900 sanjay900 commented Jan 23, 2025

I have done a lot of work on emulating all these in hardware, so I have a list handy of all the VIDs and PIDs for them
Is this all we need to add to make these supported?

Closes #5
Closes #26

@ryanmcgrath
Copy link
Contributor

You might be the missing link we've needed all these years. :)

I can cut a beta with these IDs this weekend. If I don't get to it by Sunday evening please feel free to poke here and remind me. I own none of these accessories so it's on you or others to test, but I am very happy to include the device IDs if it enables these devices for others.

Do any of these require USB power config things? IIRC the work I did for the Skylanders portal some years back needed it, but that might just be a quirk of that particular device.

@sanjay900 sanjay900 changed the title Add IDs for various instruments Add IDs for various devices Jan 23, 2025
@sanjay900
Copy link
Author

sanjay900 commented Jan 23, 2025

https://github.com/TheNathannator/PlasticBand/tree/main/Docs/Instruments
You might find this helpful, a bunch of us put it together as we implemented support for various instruments in both unity and emulating them all via various microcontrollers

@sanjay900
Copy link
Author

I don't think they require any power configs, i know the portals are a bit special in general so it wouldn't surprise me to find out they are different

@sanjay900
Copy link
Author

Since i was working on this stuff for RPCS3, ive just added a bunch of IDs it supports

@sanjay900
Copy link
Author

@ryanmcgrath did you get a chance to cut a release with the IDs?

@ryanmcgrath
Copy link
Contributor

https://secretkeys.io/gcadapterdriver/GCAdapterDriver-1.8-beta.app.zip

There's a beta here you can try. The delay was partly my life, and partly having to remember how the hell the entire signing/notarizing/etc chain works for drivers.

(Of note, I don't mind doing this for the DriverKit extension. I'm at the moment less enthused about supporting anything pre-1.015 via kext, because that side of driver shipping is even more byzantine to remember how to do it.)

@sanjay900
Copy link
Author

sanjay900 commented Jan 31, 2025

Its all good, i only really care about driverkit myself, so we are both in agreement there!

No worries about the delay, i totally understand

@sanjay900
Copy link
Author

Just tested with a PS3 Rock Band guitar and that is working, ill get more things tested that i can.
Thanks again!
Quite a few people are excited about this!

@ryanmcgrath
Copy link
Contributor

Ha, happy to help. :)

Question: are the -ps3 devices PS3-specific identifiers? My naive understanding is "yes" since you labeled them that way but want to be sure I grok this properly.

@sanjay900
Copy link
Author

sanjay900 commented Jan 31, 2025

Yeah, and the ones with wii in the name are wii specific
for the ones i grabbed of RPCS3 i probably should have thrown -ps3 on them
all the ones that don't have -ps3 or -wii are ps3 ones, i can fix that

@sanjay900
Copy link
Author

the only one thats a bit special is ghl-guitar-ps3
That is like the only device where they used a single dongle for both Wii U and PS3

@sanjay900
Copy link
Author

had the thought to do a quick skim through dolphins whitelist and noted id missed the wii ride controller, so ive just added that

driverkit/GCAdapterDriverKitExtension/Info.plist Outdated Show resolved Hide resolved
<key>idVendor</key>
<integer>3695</integer>
</dict>
<key>rlff-c283-c29b-ps3</key>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<key>rlff-c283-c29b-ps3</key>
<key>lgff-c283-c29b-ps3</key>

On ps3/rpcs3 this filter covers the entire range between 046D:c283 and 046D:c29b, while here you cover a single device (C283) which is a rare flight sim joystick from ps2 era.
I'm adding the entire list below:

c283-c29b

  • 046D:C283 - Logitech WingMan Force 3D
  • 046D:C285 - Logitech WingMan Strike Force 3D
  • 046D:C286 - Logitech Force 3D Pro
  • 046D:C287 - Logitech Flight System G940
  • 046D:C291 - Logitech WingMan Formula Force
  • 046D:C293 - Logitech WingMan Formula Force GP / GT Force
  • 046D:C294 - Logitech Driving Force
  • 046D:C295 - Logitech Momo Force
  • 046D:C298 - Logitech Driving Force Pro
  • 046D:C299 - Logitech G25
  • 046D:C29A - Logitech Driving Force GT
  • 046D:C29B - Logitech G27

Copy link

@Florin9doi Florin9doi Feb 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The latest version still doesn't cover the steering wheels. Maybe something like this:

			<key>idProduct</key>
			<integer>49792</integer> <!-- 0xC280 -->
			<key>idProductMask</key>
			<integer>65504</integer> <!-- 0xFFE0 -->

or

			<key>idProductArray</key>
			<array>
				<integer>49795</integer> <!-- 0xC283 Logitech WingMan Force 3D -->
				<integer>49797</integer> <!-- 0xC285 Logitech WingMan Strike Force 3D -->
				<integer>49798</integer> <!-- 0xC286 Logitech Force 3D Pro -->
				<integer>49799</integer> <!-- 0xC287 Logitech Flight System G940 -->
				<integer>49809</integer> <!-- 0xC291 Logitech WingMan Formula Force -->
				<integer>49811</integer> <!-- 0xC293 Logitech WingMan Formula Force GP / GT Force -->
				<integer>49812</integer> <!-- 0xC294 Logitech Driving Force -->
				<integer>49813</integer> <!-- 0xC295 Logitech Momo Force -->
				<integer>49816</integer> <!-- 0xC298 Logitech Driving Force Pro -->
				<integer>49817</integer> <!-- 0xC299 Logitech G25 -->
				<integer>49818</integer> <!-- 0xC29A Logitech Driving Force GT -->
				<integer>49819</integer> <!-- 0xC29B Logitech G27 -->
			</array>

but I haven't tested any of them.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm, game-specific devices (Rock Band etc) are one thing but I'm not sure about having Logitech device IDs included in here. I'll mull this one over before merging.

@sanjay900
Copy link
Author

@Florin9doi i assume we can only do matching here based on usb attributes right? I assume hid attributes are off the table?

If they aren't we could generically match any PS controller since they all have the following specified in their HID reports:

HID Usage Page: 0xFF00
HID Usage: 0x2621 (PS3). 0x2721 (PS4), 0x2821 (PS5)
HID Report Type: Feature

Portals do NOT count here, since they aren't classified as controllers so all this stuff is missing from them but every actual controller out there should have it specified.

@Florin9doi
Copy link

i assume we can only do matching here based on usb attributes right? I assume hid attributes are off the table?

Should be possible with a different IOProviderClass: https://github.com/search?q=IOHIDInterface+DeviceUsage+DeviceUsagePage&type=code

@sanjay900
Copy link
Author

i assume we can only do matching here based on usb attributes right? I assume hid attributes are off the table?

Should be possible with a different IOProviderClass: https://github.com/search?q=IOHIDInterface+DeviceUsage+DeviceUsagePage&type=code

Yeah, just wasn't sure if things would still work correctly if we did that

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 this pull request may close these issues.

Adding support for Skylanders Portals of Power Adding support for RockBand USB drumkit
3 participants