Written on 2020-10-01
The first draft of this post was for the weekly meeting @Bigblue, where we shared awesome stuff we found on the internet (or made ourselves) related to technology in general. I think they don’t do it anymore.
When my awesome colleague @Shubham (he makes great videos and streams in French about code, no-code, AI, and lots of other topics: check him out!) was throwing away his Boosted Board because it wasn’t working anymore (he used it on a rainy day; the controller is not waterproof, which feels like a terrible design flaw), I tried to fix it.
The battery provided voltage for a few seconds and then shut off with a light error. The battery controller expects some kind of response over the CAN bus, but I had nothing to check what it wanted and no working controller. So, I plugged the two battery cables directly onto the cells to get voltage to the VESCs (my friends jokingly nicknamed me “Tractopelle”, French for “backhoe loader” since my approach to code and repairs at the time was more brute force than finesse 😄).
The two motors are standard brushless FOC motors. I used what I had in stock: two standalone VESCs connected to each other via CAN bus.
I added an ESP32 connected to the PWM of the master VESC. Later, I added a strip of WS2812 LEDs at the back of the board because I wasn’t very visible at night. I also added a UART connection with the VESC to get feedback from the board, like battery voltage. I added a beeper too, to know that everything was correctly connected and powered before using it.
The ESP32 uses the ESP-IDF SDK; everything is in the repo board_esp32 .
At first, I tried to use the remote, but without any controller, it was the same problem as the battery CAN bus: I couldn’t intercept messages to reverse-engineer it. The only thing I knew was that the host controller was the board and the remote was the device.
I didn’t have any remote in my storage, but I had some old Android phones that can use BLE without issue.
The app is very simple: you open it, it searches for the board and connects to it. If you want to go forward, you scroll up and maintain pressure on the touchscreen to keep the duty cycle. If you release, the board goes free. If you want to brake or go backward, scroll down.
The big 40 is the data computed from the scroll behavior, and the small 40 is the data sent to the controller (it’s debounced since BLE doesn’t have high enough bandwidth, but I don’t really feel it: it’s like 10ms).
Since my sense of direction is… very poor, to be honest, I added Google Maps in the background to check where I was. The top right button was to create an itinerary on the map as a bicycle (I used bike paths when riding this board) and display instructions, but I didn’t develop it further.
I didn’t need anything else; it was simple and effective. Everything is in the repo board_flutter .
I can’t show you the inside of the box, I don’t have it anymore and can’t find any pictures. Trust me, it wasn’t pretty at all. But it was waterproof.
This prototype had many problems:
A big problem with this board was that the power of the VESC is much stronger compared to the original controller. The first belts I bought from China were pretty fragile and broke constantly. I invested in some real belts with textile inside, and it was much better.
Every time you want to change the belt, you have to open the motor cover and remove the wheel. It was like 30 minutes of work per week, a bit too much, in my opinion.
The Boosted Board team made a video guide to change the belt .
Running without a motor sensor made the VESC run only in the required direction. Now, there is a computation program in VESC that listens to the energy feedback of the motor to deduce the position (if I understood it correctly), but it didn’t exist at the time. It was really hard on belts too, which is why they broke so often.
I tried to use this sensor, but everything is molded in plastic, so I didn’t even know the wiring. It’s not a standard hall sensor but a chip that decodes the hall effect; everything is detailed in the datasheet of the AS5134 . The serial output from this component wasn’t handled by the VESC anyway.
I wanted to use the original controller box while covering and waterproofing all the necessary parts. The temperature was clearly okay in the big white box, so I didn’t need any more ventilation.
I ordered the Flipsky FSESC 4.20 , which was the perfect size. It’s the same as two standalone VESCs with the CAN bus soldered on the board.
I added a switch to turn it on and off without needing to open the box (just a small hole on the side) and added some wires for the back light. The ESP32 was using the 5V from one of the ESCs and was hot-glued to the top plastic side (remember, the backhoe loader?).
It was very good, worked really well, and I wasn’t afraid of the “pavés” anymore.
On Leboncoin (French Craigslist), I found another broken Boosted Board V1. The guy told me that the motor caught fire while he was riding! There were carbon traces everywhere, the belt melted on the wheel, the wheel melted a little, and the copper inside the motor was dark. It was a mess, but the controller and the remote were working!
A colleague from Bigblue was a US citizen, and I found an eBay listing for a truck with motors (I guess the controller was dead, again?). My colleague was very kind to bring it back (it was about a kilogram) with him on his next trip. After resoldering, the motor wasn’t spinning correctly and was very hot, the controller was faulty (again!), but I could reverse the CAN bus of the battery, the communication with the remote, and maybe the motor sensor.
It wasn’t usable, but I was happy, I had something to reverse-engineer.
I spent days sniffing the bus and trying to make the battery controller work without a real controller, but it didn’t work. I think they used some weird frequency for the communication or something like that and I wasn’t able to negotiate.
Too bad I can’t find the dump anymore.
I have a Motorola MC75, an industrial barcode scanner with Windows Mobile 6.5. It has Bluetooth, 3G, and Wi-Fi 2.4. You said Bluetooth? Can I use it to control my board? Hell yeah! So I started a Windows XP VM, installed the SDK and some old stuff, and started coding. I can’t find the complete source code or any screenshots, but it was awesome! I only found the repo board_wm ; the lost source code isn’t a heavy loss, in my opinion.
What do you do when you lose your phone and want to use your skateboard? You use Web Bluetooth with Chrome! Please, don’t skateboard with a laptop in your hand, it’s a terrible idea and people will look at you like you’re an alien 👽. If you’re crazy, here’s the repo board_web .
Battery died; cells are consumable and maybe I was a bit too hard on it (backhoe loader again). I was too lazy to fix it (swap the battery from the “new” board to the “old” board), and to be honest, this is not the best way to get around the city: I fell a lot because of pavement asperities at high speed. I bought a Onewheel XR+ instead.
EDIT 2025-07-18: I put a VESC inside my Onewheel, currently writing another blog post, stay tuned!
Tell @vmarchaud that I have two boards in my flat that I want to give him.
I added all the pictures I could find of the Boosted board to an album .