Skip to content

Conversation

@cazzoo
Copy link

@cazzoo cazzoo commented Dec 9, 2025

This driver has been built from scratch based the previous dirty driver (see #175) and on captures from ffbsdl tool ran in windows for all possible effects (through SDL2 library).

@cazzoo cazzoo force-pushed the hardening/t500rs-driver branch from 2ae18a3 to bd43bb9 Compare December 9, 2025 00:21
@cazzoo cazzoo marked this pull request as ready for review December 9, 2025 00:23
@cazzoo
Copy link
Author

cazzoo commented Dec 9, 2025

Hi @Kimplul ,

Here is a new version of the driver, fully rebuilt from scratch. I've been trying to do my best to get it done the right way, steering its content the best I could (with my knowledge). I'll discard the previous PR that is not optimal. This one should be supporting more effects, and should be better designed. I've been also working on documentation to make it more comprehensive and based on SDL2 real examples.

Again, I am fully open to your feedback (and also @MmAaXx500 ones) that were really valuable by the other PR, so when you will have time, I'd really happy to get to your review.

Thanks

Copy link
Owner

@Kimplul Kimplul left a comment

Choose a reason for hiding this comment

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

Thanks for continuing on this project, I was getting worried that we scared you off :)

I did a quick overview. The documentation in particular looks a lot better, having clear examples of what each packet does and how they build up to a full effect upload helped greatly. I haven't done any cross-referencing between the docs and implementation, as I still found quite a lot of smaller issues I'd like taken care of first. I'll do a more thorough review after that.

Not entirely sure what you mean by 'from scratch', for instance the comment explaining the set_gain rationale is identical between this and the previous PR.

@cazzoo
Copy link
Author

cazzoo commented Dec 11, 2025

Got the code and the PR updated based on all your feedback. All were valid, the only ones I haven't worked on are the SQUARE effect I plan to work on later and the git version (that I can easily remove).
Let me know any other findings or your thoughts on this updated code

Add support for the Thrustmaster T500RS wheel base in the hid-tmff2 driver.

This driver has been built from scratch based the previous dirty driver (see Kimplul#175) on captures from ffbsdl tool ran in windows for all possible effects (through SDL2 library).
- Simplified effect slot system
- Added support of direction
- Tidy-up code here and there
- Reduced complexity overhead
- Code standardization (in regards of the base repo)
- Documentation updates
Add support for FF_SQUARE periodic waveform based on FFEdit USB captures
@cazzoo cazzoo force-pushed the hardening/t500rs-driver branch from d258e05 to 9e6319b Compare December 12, 2025 22:59
Corrected packet structure and scaling formulas
Added ramp support
@cazzoo cazzoo force-pushed the hardening/t500rs-driver branch from 9e6319b to b7d188d Compare December 12, 2025 23:01
@cazzoo
Copy link
Author

cazzoo commented Dec 12, 2025

Hi @Kimplul ,

I've been working again on the PR, responding to all your points (almost all -- if not all -- were relevant), and introducing some missing features (FF_SQUARE missing and 0x05 conditional effect that was incorrectly done). If you mind having another pass, I'd be really happy.
Thanks

@Kimplul
Copy link
Owner

Kimplul commented Dec 17, 2025

Sorry about the delay, bit busy before the end of the year. I had a look through the resolved comments, most looked good but there were a few that I decided to unresolve, please have a second look at them.

I still haven't cross-referenced documentation to the code, I'll try and get that done by the end of next week, but based on a cursory look the code looks a lot better now. Seems you managed to shave off ~400 lines of code, well done.

Please also add a copyright statement to the start of the files you created, something like https://elixir.bootlin.com/linux/v6.18.1/source/drivers/hid/hid-retrode.c for example. I really should do that as well to the bits I wrote, but this is the first 'major' new addition to the driver so I've never really had any reason to think about it before.

@cazzoo
Copy link
Author

cazzoo commented Dec 17, 2025

No worries, thank you for the feedback you provided. Take the necessary time for whatever need review. I am not in the hurry, and this driver does work for me already so It can last as long as necessary from your end.

I'm happy we trend to get somewhat a stable mergeable version.
I just pushed a new part of code that handled previously the mode switch (from boot/init to normal mode). This is the part where I have the least confidence. The logic is fully fine, it's working well, but I'm not sure at all on code quality and the compliance/integration with the base driver. If you may give a glance when you can, I'd be happy to send some more time if needed.

Cheers

@cazzoo cazzoo force-pushed the hardening/t500rs-driver branch from 408f5bf to 1c5af2c Compare December 17, 2025 23:02
@Kimplul
Copy link
Owner

Kimplul commented Dec 18, 2025

I just pushed a new part of code that handled previously the mode switch (from boot/init to normal mode). This is the part where I have the least confidence.

That's the responsibility of hid-tminit, is it not working? Regardless, please revert and if needed, open up a separate PR in https://github.com/Kimplul/hid-tminit/tree/tspc.

@cazzoo
Copy link
Author

cazzoo commented Dec 18, 2025

I just pushed a new part of code that handled previously the mode switch (from boot/init to normal mode). This is the part where I have the least confidence.

That's the responsibility of hid-tminit, is it not working? Regardless, please revert and if needed, open up a separate PR in https://github.com/Kimplul/hid-tminit/tree/tspc.

It is indeed not working with the current code. I'll revert this. Not sure how I should update the init driver yet. Maybe just specifying the boot mode, will test.
Otherwise, if you have any idea based on my commit, let me know


EDIT: I just open a PR against hid-tminit for TSCP branch (even though it's t500rs code update): Kimplul/hid-tminit#2

I tested and it appears to work fine with that code and my driver (and the mode switch reverted from within the driver)

@Kimplul
Copy link
Owner

Kimplul commented Dec 18, 2025

EDIT: I just open a PR against hid-tminit for TSCP branch (even though it's t500rs code update)

Yeah, I intended to merge tspc into usb as part of adding support for the TS-PC, but seems I forgot. I'll sort it out once we deal with this PR, don't want to start changing too many moving bits at the same time.

@cazzoo
Copy link
Author

cazzoo commented Dec 18, 2025

There we are @Kimplul , I've been addressing all the points I guess, and introduced some fix also here or there (you can check latest commits, small scoped). Take your time for the documentation cross-check and let me know, in parallel I'm trying to improve the bits where I can

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.

2 participants