COM8/UWP-Onewheel

Onewheel Pint

TomasHubelbauer opened this issue · 14 comments

Hey, first of all, thank you for a great app! You're code helped me a lot when implementing a Web Bluetooth based Onewheel companion app of my own. Especially the unlock part, although I am still struggling with the reminder to the board to stay unlocked. I'm sure I'll be able to figure it out though based on further reading of your code.

Will you be getting a Pint and extending this app to support it? I am thinking of ordering one now that they are shipping them. Of course it will take a while before it actually arrives.

I heard that there will be a different app for the Pint, hopefully that doesn't mean it will be more locked down than the current one is.

COM8 commented

The thing with the unlock:

For me the board unlock mechanism also does not work 100% of the time. Sometimes it locks up roughly after 10-25 min and sometimes it doesn't. Until know I thought it was a problem of my phone since when I was testing it with my laptop it was working always without any problem - even for hours...

Pint

I personally won't get one (too much money right now ;D).
BUT people over at pOneWheel are buying them as well and in theory all that is required for unlocking the new board is to get it's firmware revision number and add it to the OnewheelUnlockHelper.cs class.
So yes I plan to support the Pint.

My Pint should be here in a few weeks and I'll be updating (and live streaming) the OWCE app. I'll come do a PR here with required changes as well.

COM8 commented

Awesome! Let me know where and when you are streaming and I will try to hang around in the chat :D

COM8 commented

My Pint should be here in a few weeks and I'll be updating (and live streaming) the OWCE app. I'll come do a PR here with required changes as well.

Any updates on the Pint front?

FM delayed my shipment, Fedex delayed my shipment. It is on route to me now. I’ll let you know when it arrives.

@COM8 , Pint has arrived. Hopefully Ill get some time this weekend to play with it.

@COM8, Pint has changed things a little. Here is a little list of what I have found so far.

  • It will actively disconnect itself from the device it's connected to if its handshake does not complete. Makes using LightBlue difficult.
  • The service UUID is the same and there is the same characteristics that exist.
  • (I think) the board serial number is no longer 2 bytes. I don't know what other properties have changed.
  • OWCE will detect the board and connect but a lot of the stats coming through are non existent. Handshake has possibly changed.
  • I have yet to take my Pint out for a ride, some other things are also lots of fun.
  • Progress has been slowed by a few things on my end. I am halfway through moving from Plugin.BLE to my own BLE implementation due to Android issues. One of either iOS 13 SDK, Xcode 11, or Visual Studio for Mac Preview is not playing well with my system making debugging hard. Things should get smoother over the next week.
COM8 commented

Hmm let me know if I can help you in some way.

Have not had a lot of time to work on this. But I have built a new tool for looking into how the OW BLE works. I am hoping this will reveal more secrets about the Pint connection system.

I'll have my Pint within a month, an interested in using your tool to aid investigation where I can with my board!

More update from the Pint.

I have setup a BT passthrough thing to monitor all BT traffic to decipher what is happening. Any request that comes in gets forwarded to the board and then from the board back to the OW app. Currently its intercepting OW Plus just fine, I'm seeing all of the data logged. Seeing the handshake take place. Seeing some other things I didn't know happens (writing 0 to the RPM every few seconds).

Pint however stops at some point after the handshake. Going to keep investigating.

@beeradmoore thanks for looking into this, whatever you find we can roll into the app.
fwiw, the latest build is on google play and it's finally back to stable and steady... and ready to be hit with some experimental pint support :)
we will need all the help we can get as far as testing. my XR is so dialed in, and other then being able to fly with the pint - which is still not clear - i'm waiting it out.

I got my Pint a few weeks back and now have tried it with my Web Bluetooth based app:
https://tomashubelbauer.github.io/onewheel-web-bluetooth

This app has trouble staying connected to the XR (the hey-I'm-still-here handshake every half a minute just doesn't work and I don't know why) so I don't know if Pint is any different in this regard, but right off the bat it is clear that all characteristic names must have changed, because I am getting zeroes across the board.

Does anyone know how to download the Onewheel firmware updates? I know the app is capable of updating the board, so presumably in the official app's codebase, there is an update endpoint somewhere from which the firmware update blobs could be downloaded for reversing?

AFAIK Pint had no firmware update since release though and I am not sure the original factory firmware would be obtainable from this update service anyway. Has anyone looked into this?

EDIT: Use at your own risk. FM are IP banning people who attempt to use this unlock code when it appears to be invalid.

Pint (+ new XR probably) unlock is complete, ponewheel/android-ponewheel#109 (comment)