matandoocorpo / Zwift-Steer

Sterzo simulator with an ESP32 and joystick / Simulador de Sterzo con un ESP32 y un joystick
GNU General Public License v3.0
31 stars 4 forks source link

Is the Zwift Steerer code still working? #4

Open Berg0162 opened 2 years ago

Berg0162 commented 2 years ago

I have been testing the Zwift-Steerer code with little success. The code connects (successful) via the Power Pairing screen but the steering activation is hanging with "Activating" forever... No transfer of steering angles is ever reached... I would not be surprised if the protocol has been changed with the latest Sterzo/Zwift update....? It seems that Zwift never issues the 0310 starting value on Char 31... By hand that works : I did some testing with NRF-Connect and the code reacts correctly on the offered protocol data...? Do you have a working version at this moment? Kind regards, Jörgen van den Berg.

miertink commented 2 years ago

I found the same issue, exactly as @Berg0162 described (testing with nRF).

I suppose, they did a update on ZWIFT togheter with a firmware update on STERZO to block "parallel-versions" of it: https://zwiftinsider.com/sterzo-smart-update/

Search on the web, I found very interesting input from Keith Wakeham - see https://www.youtube.com/watch?v=BPVFjz5zD4g to get our Home Made Version "activated" on ZWIFT - if it is still to update... I can say it...

Below is the piece of example code it should be included into the code.. but nothing for me, I'm just a beginner - maybe experts could help us.

// // it's taken a few days but the (almost!) complete list of challenge and responses that was published has, // (after much head scratching, hair pulling etc ..) enabled me to work out the functional relationship //

uint16_t calculate_response_code( uint16_t challenge ) { int n = challenge % 11; uint16_t m = (challenge << n) | (challenge >> (16 - n)); uint16_t x = ((challenge + 38550) ^ m); return x % 65336; // this value is correct (perhaps a typo for 65536 in the original?) }

Flo100 commented 1 year ago

Does anyone have some information, or better: a solution for this?

sheitmaster commented 1 year ago

I'm also interested in knowing this. Anyone made it work?

vincent290587 commented 1 year ago

https://github.com/vincent290587/steering_challenge/blob/develop/README.md

wvddrss commented 1 year ago

@vincent290587 Thx for the contribution. Could it be that the STEERING_RX_CHAR_UUID is also changed? Or the initial notify values? Because zwift doesn't respond anything on the write characteristic.

vincent290587 commented 1 year ago

@vincent290587 Thx for the contribution. Could it be that the STEERING_RX_CHAR_UUID is also changed? Or the initial notify values? Because zwift doesn't respond anything on the write characteristic.

I added the complete code to the repo, they indeed added more characteristics

sheitmaster commented 1 year ago

I know that people have been reverse engineering the zwift play controllers encryption and i think it would be a better way to go than steerzo, as you also would have the option to use the extra button functionality you don't get with a keyboard, like rideon bombs and breaking and potentially gear changes at some point. I know this is off-topic, but i'm hoping someone makes code for a diy-zwiftplay, bechause i want the button steering and the rideon-bombs..