Trying to understand how QZ talks to Zwift #2967
Unanswered
EricLauber
asked this question in
Q&A
Replies: 3 comments 2 replies
-
Why don't you start from here if it's easier for you https://github.com/ajchellew/zwiftplay ? |
Beta Was this translation helpful? Give feedback.
1 reply
-
Nope, dirconmanager is the right starting point. It's the main engine of
dircon :)
I suggest to use claude.ai to give you a great flow chart about this!
Roberto Viola
Software engineer and open source enthusiast
http://robertoviola.cloud
Il giorno mer 1 gen 2025 alle 05:03 Eric Lauber ***@***.***>
ha scritto:
… I think that takes me a bit down a different direction. I want to start
with the network communication first before understanding the
encryption/decryption.
I'm trying to find where or how the "Wahoo Kickr virtual device" shown
here gets created.
image.png (view on web)
<https://github.com/user-attachments/assets/90617c26-e98e-4d81-997c-ce09b680bdd2>
I'm searching through the repo and I see netserial.h which emulates a
serial port. I've seen a few things about webservers. There's
authentication with Zwift.
In dirconmanager.cpp there is this line, that sounds like it may line up
with the screenshot.
OP(WAHOO_KICKR, "Wahoo KICKR $uuid_hex$", DM_MACHINE_TYPE_TREADMILL | DM_MACHINE_TYPE_BIKE, P1, P2, P3) \
But dirconmanager.cpp seems to be Bluetooth focused, while the screenshot
shows a network-connected device. So I'm either missing where this gets
setup or I don't understand Qt libraries in C++ well enough.
—
Reply to this email directly, view it on GitHub
<#2967 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAALYWEOM5T4CT4W6KXA4ET2INSILAVCNFSM6AAAAABUM4VUBCVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTCNZQHA3TQMI>
.
You are receiving this because you commented.Message ID:
***@***.***
com>
|
Beta Was this translation helpful? Give feedback.
1 reply
-
Qt creator
Roberto Viola
Software engineer and open source enthusiast
http://robertoviola.cloud
Il giorno dom 5 gen 2025 alle 18:53 Eric Lauber ***@***.***>
ha scritto:
… @cagnulein <https://github.com/cagnulein> what development environment
are you using to build/develop and debug? According to your CI workflow it
looks like Python and Qt on Windows, do you use VS Code or some other
environment?
I want to step through with the debugger and see what steps are happening
in order. It's starting to make sense to me...
—
Reply to this email directly, view it on GitHub
<#2967 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAALYWHNPCW55BHKIBMMUB32JFWSHAVCNFSM6AAAAABUM4VUBCVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTCNZUGA4DKNQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***
com>
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I would like to better understand how QZ takes devices that may not be Zwift compatible and integrate them into Zwift. I'm specifically interested in the QZ->Zwift part of that communication, not the device->QZ part.
I have a project of my own I am building in C# and I would like to emulate the controlling capabilities of the Zwift Play Controllers or Wahoo Kickr Bike. I'm not super familiar with building Bluetooth connectivity but I do have LAN experience. This GP LLama video at 4:11 shows the Wahoo KICKR Bike Shift connecting as a Controller to Zwift over Wi-Fi, so I know Zwift is capable of this.
It seems like QZ has figured some of this out already. In this video QZ shows a "Wahoo KICKR 0000 33" virtual device as a Wi-Fi or LAN-connected device. A similar thing happens in this video as well.
I have been going through the QZ source code trying to understand how this works and it's honestly quite overwhelming.
I'm hoping that if I can get some help to better understand the way QZ is able to present emulated devices to Zwift and to send data to Zwift, I could do something similar for my alternative use case.
I'm seeking to understand:
References to specific source files is helpful, but a walkthrough if the flow of operations, what data has to be sent at which step, and in what format, would be amazing.
Beta Was this translation helpful? Give feedback.
All reactions