-
Notifications
You must be signed in to change notification settings - Fork 39
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
Peloton Bike+ compatibility? #73
Comments
https://fccid.io/2AA3N-TTR01 |
It appears that this is the processor for the sensor/resistance board (based on the FCC photos of internals): |
Hi @skoregon, nice investigating! I don't have access to a Bike+ so take everything I say with a grain of salt. Also just a warning to anyone reading: there's always a chance of damaging gear, so please don't try anything below unless you are comfortable doing so. I have heard that the connection between sensor board and tablet is USB with a Type-C connector on the tablet side? If so, I would guess based on that microcontroller datasheet you linked (STM32L432KC) that it is USB 2.0. And that it probably shows up as a CDC (Virtual Com Port) when plugged into a computer/tablet. If so, it should be possible to communicate with it the same way as the Peloton Bike (non-plus). It is even possible that parts of the protocol are the same and some things Just Work already. It is of course possible that they made an entirely new protocol too. An easy first step would be to plug the USB cable into a computer, see if a USB CDC device shows up, try running If that actually works then I think the next things to figure out would be:
If not, a next step could be to try capture some data and figure out the protocol. |
I plugged in the USBC cable from the resistance control unit into a Pi4revB running gymnasticon. I add the line The Pi4 boots when connected to the USB-C from the resistance control unit, so that's a good start. I got on the bike and pedaled a bit and it is in a no resistance state. libusb-t yields
dmesg output attached. I don't see anything that looks like a device, or the peloton resistance control unit attached. I'm a novice, so I'm not sure how to more thoroughly interrogate the Pi4's USB attachments, or even if I've configured it correctly. See link below for some discussion. It is unclear to me if the Pi4 is a suitable device for this project or not. Any further guidance would be welcome on how to investigate. I'm also having a difficult time figuring out how gymnasticon would work from a cabling perspective. Somehow the data needs to pass through the pi and be manipulated, then passed back both to the resistance control unit (if resistance control can be characterized) as well as downstream to the tablet. At the same time, power over the USBC cable has to be provided to the tablet and the RCU and presumably the Pi, although the Pi could possible do its data interface over the USB A ports with a A->C converter and be powered separately? If that strategy were used though, somehow the data needs to get back into the USB C cable w/ the power to for both the resistance control unit and the tablet. |
Hey, nice progress! I think this confirms some of our assumptions about the communications: (from your dmesg)
(and lsusb -t)
Do you see a /dev/ttyACM0 device when the bike is connected? If so, an easy thing to try is running gymnasticon with Great points on the wiring... For the non-plus bike there are two wiring options with Gymnasticon: active and passive. Active mode is when the tablet remains disconnected and Gymnasticon polls the bike for power/cadence/resistance data. Passive mode is when the tablet does the polling and Gymnasticon just listens to the responses on the wire. The user chooses the mode with their RS232 cable wiring. I feel both active and passive modes would be useful on the Bike+ too. The wiring for active mode is hopefully just plugging the bike directly into the Pi as you've already done. The wiring for passive mode, as you point out, presents some challenges. For development purposes maybe something like this could work:
The idea is that hopefully the tablet doesn't care which USB port the bike's serial device appears on. One issue with this setup is I'm pretty sure you can't use a stock Raspberry Pi for the "computer". Don't quote me but I think none of them have the hardware to act as host and gadget at the same time. You may be able to add a second USB controller via SPI but I'm not sure of an easy off-the-shelf option. I think the BeagleBone Black might be able to do it without modification though. A similar option using two computers:
You could use the Pi for computerB and any computer with a USB port for computerA. Once setup, and assuming it works, on Linux I think you should get a Some links that might help: https://www.isticktoit.net/?p=1383 Also I found this one useful for pictures and background since I don't have the bike: https://www.dcrainmaker.com/2020/09/peloton-bike-plus-details-features.html Let me know if I can help, good luck! EDIT: BTW, when setting up the CDC gadget on Linux, it'd be a good idea to use the same device info as the bike, i.e. idVendor, idProduct, Manufacturer, etc. so it looks right to the tablet. |
I was looking at this as well -- just in case anyone finds this useful, here is a windows USB dump. I think it will be better to try to do actual investigation via Linux.
English product name: "Peloton Titan" ConnectionStatus:
bLength: 0x12
bLength: 0x07
bLength: 0x07
bLength: 0x07
bLength: 0x09
bLength: 0x09
bLength: 0x05
bLength: 0x05
bLength: 0x04
bLength: 0x05
bLength: 0x07
bLength: 0x09
bLength: 0x07
bLength: 0x07
bLength: 0x05
bLength: 0x07 |
Hello, just checking if there has been any progress with this issue (adding support for Peloton Bike+). BTW I have a Peloton Bike+ and I'm waiting for the hardware to start testing and could help with this. |
I installed and used Gymnasticon on a friend's Peloton Bike. It was great. My wife is now in possession of a Peloton Bike+. Any chance of that being added to the project? I'm a useless dev, but happy to poke around with anything else if helpful.
The text was updated successfully, but these errors were encountered: