Xiaomi Pro X2 - Build Thread

Absolutely stellar work Darren!

Love the 3dp balance wire guide.

There is a VESC compatible firmware for the stock controller; GitHub - Koxx3/SmartESC_STM32_v2: M365_MC_WB
I bought 5 controllers for cheap to play around with.

I like the looks of that MCPCB DC-DC, thanks for the tip.

What kind of cells you are using?
Thanks. I did see the VESC port but I didn't use it because I didn't want to mess about with a laptop whilst trying to tune the controllers. If I was using the Xiaomi controllers to power another EV or non stock motors I would definitely use the VESC firmware as there is no auto config via SHFW.

I am using the new low IR variant of the LG MJ1, these are OK for 12A peaks if configured correctly. I was originally going to use VTC5 but when I compared them side by side the loses at 12A were not so far apart that it would be worth sacrificing the added capacity and this gap would close even further as the SOC decays faster on the lower capacity VTC5.
 
I designed a custom 10A 5525 DC charge port, this was much more difficult than it looks. The stock 8mm one might be OK but I decided to change it out for this one as it's rated for the current, charging current is continuous so it's quite important. I didn't go for the typical XT30 as it's not round and more often than not requires line of sight, the DC5525 is way more convenient. I managed to keep the magnetic port cover too which is really nice.IMG_1496.JPGIMG_1497.JPG
 
The rear motor and brake light connectivity. The rear motor will need to be disconnected for servicing so I wanted it to be able to disconnect it easily and simply without messing about with the cables etc. The peak phase current will be around 60A so I used 3x Wago 221s stacked together, a more traditional MR60 was completely out of the question because it will not fit through the motor cable hole in the chassis. For the motor signal cables I used an OTG micro USB breakout PCB and bare male terminal, the male micro USB connector without the plastic housing is no wider than the motor cable itself so it will fit through the hole in the chassis allowing for a really quick disconnect, USB C is bidirectional connector so it would require either 2 sets of cables or possibly trying more than once to connect it the right way around, too much bulk or hassle. I used a regular 2 pin JST for the brake light and designed a small enclosure for everything. I am going to use flat cables for the signals and phases and I will run them down the side of the chassis behind a printed panel, this will make use of all the space whilst making the cable runs neater. IMG_1595.JPGIMG_1596.JPGIMG_1597.JPG
IMG_1599.JPGIMG_1600.JPG
IMG_1520.JPGIMG_1521.JPG
 
Last edited:
Rear motor connectivity and flat phase cables finished. All of the cables run behind the printed panel so they are kept out of the way without taking any usable space. The rear motor can be removed by simply unplugging the USB and unclipping the Wago connectors.IMG_1602 2.JPGIMG_1604.JPGIMG_1606.JPG
 
Last edited:
Looking good! I love the flat, fat, phase wires. Great use of space!
Thanks. Each phase is 0.5x8mm so ~11AWG. I could have used the stock cables by just buying a replacement motor cable and extending them but I have a lot of spare copper and I wanted them hidden with the lowest voltage drop possible. When finished the phase current will be around 100A total and split 60/40 biased towards the rear.
 
Crazy good work,

Which spot welder are you using?
Its nickel copper sandwich copper 3mm and nickel how much thick?
Are you using and copper paste for welding?
 
Crazy good work,

Which spot welder are you using?
Its nickel copper sandwich copper 3mm and nickel how much thick?
Are you using and copper paste for welding?
I use a Kweld with a custom LS MTRON ultra capacitor made from 3x LSUC 002R8P 3000F EA. It's really old now and I know there are much more powerful welders available but it still does 2kA without an issue and this is all I need. I made the display from a redundant iPhone, it isn't really needed anymore but it was useful when I was tuning/calibrating the circuit resistance as it allows me to set any welding voltage between 6-8.1V and it's also useful for monitoring each cell/capacitor. I charge it from a 2S 8.4V 8A charger and I set the BMS HVP to 8V so I never enter the CV phase of charging, doing this allows me to keep the charge power at 64W and the voltage of the capacitor at 8V, this is how I get a consistent 2kA and low pulse time with a small charger. I don't use paste for anything as it's far too messy and I can weld any thickness I want with it by simply adding more layers. I use a machine to cut the nickel into uniform squares and I weld into the corner of the squares to increase the weld energy, ideally you would use a piece of material no bigger than the weld area but that would be too difficult to place and handle so I use the corner of 5mm squares instead. I typically use 0.1mm material for everything copper/nickel/steel/stainless but sometimes I use 0.15mm if I only need 1 layer, I never bother with 0.2mm as it's more difficult to work with, you need a very low circuit resistance and high current or a gas welder to layer 0.2mm reliably plus it's much more difficult to cut.
IMG_0471.JPGScreenshot 2025-11-30 at 05.49.46.png
 
Last edited:
Here is my new brake setup, it's a fully programmable progressive ebrake on a stock lever and controller. I have been testing it throughly over the last 3 months on my single motor 1S and it's extremely good. I bought a right handed lever which is designed for the German version of the original M365 and I connected only this hall sensor to the controller, I disconnected my old left handed lever but left it physically connected to the mechanical brake. I have a German display with 2 ports for hall sensors but decided to keep the mechanical and electrical systems completely separate as the mechanical brake is only used if the ebrake were to fail and adding another sensor would increase the probability of a failure or an error so I simply used one. The result of separating the two systems and using a custom brake curve via the firmware is a buttery smooth braking experience, the lever feels sublime and the braking is accurate and predictable, it's absolutely nothing like the original stock brake which feels notchy, sticky and inaccurate. I also overhauled the mechanical system with a new caliper, brake line housing, brake cable, pads and rotor. This noticeably improved the mechanical braking, it feels more powerful and a lot less sticky. Here are my SHFW settings for the ebrake, don't directly copy these as your battery and motor combination will probably be different so you will need to make your own curve, I don't use any other enhancements like "brake boost" as this will only add potential noise or closed loop errors which I don't want happening whilst braking, I did test it and it doesn't make a very noticeable difference so it's really not worth it in my opinion. I don't really like auto braking either as it decreases efficiency over just coasting. It's also worth mentioning that SHFW doesn't solely rely on regenerative braking so you can also use it with non programable batteries or fully charged batteries.

Right handed lever:
https://www.aliexpress.com/item/1005006120280858.html

Brake cable assembly:
https://www.aliexpress.com/item/1005009793090623.html

Caliper:
https://www.aliexpress.com/item/1005009731654932.html

Screenshot_20251202_224838_ScooterHacking Utility.jpg
Single motor 52V Xiaomi 1S
IMG_1524.JPG
 
Last edited:
I did a quick test fit. I still need to finish the cables for the display and controller. I also mounted the DC-DC converter to the chassis with some thermal paste and the temperature dropped from ~75°C to 25°C which was only 4°C above ambient. I measured the efficiency too and it's about 90% with a 58V input and 6V 3A output.IMG_1619.JPG
 
Controllers have been conformally coated, the heatsinks have been pressed and epoxied into position and the cabling is almost finished. I didn't use potting compound as it adds a lot of weight and the battery compartment it sealed with a gasket, the FETs are directly thermally connected to the chassis like with the stock controller so heat will not be an issue.
IMG_1631.JPG
IMG_1633.JPG
IMG_1632.JPG
 
Last edited:
Crazy clean
Thanks. The actual density isn't very high, there is a lot of wasted space because the stock controllers use TO-220 FETs and single sided PCBs. The main advantage is the cost and being able to keep the stock footprint, for a 3kW+ (5kW@72V) dual motor controller it's incredibly cheap, the total for all the parts used is ~$38 and it's a direct bolt in replacement. Thanks to SHFW these controllers support a fully programmable throttle, programmable progressive ebrake, field weakening, motor overmodulation, motor RPM limiting, programmable display, voltage calibration, profiles, programmable lighting, programable hall sensors, PID tuning and it's compatible with all of the cheap Xiaomi stock accessories. It's also programable via the bluetooth app and it's free.


ScooterHacking Utility
62482764.png
 
Last edited:
Dang it I sold an M365 2 months ago and bought a kukirin...
Yes the Xiaomi M365 is a really dated now. The main reason I did this project is because I want to one day upcycle ewaste and refresh it into something usable for people who are less fortunate. With training they could repurpose our ewaste and make something reasonable with it. The EU, USA and UK are producing lots of solar panels, batteries and small rental EV waste and recycling technology and development has not yet caught up with production rates so they often pay for it to be removed, I figure why not let the people that do not have much upcycle it whilst proper recycling technology and methods are still in development.90.jpeg
 
The controller is 100% complete. When I first powered it up I needed to clear the "no bms communication" and "abnormal voltage" errors by flashing a temporary custom firmware and then I flashed SHFW. Once SHFW was installed everything was working but the rear motor was spinning in reverse because it is mounted in reverse so the 2 outer hall sensors and phases needed to also be reversed. After doing this I tested the display to make sure it could control both of the controllers, this worked fine. I couldn't go much further because the Monorim rear wheel motor adaptor didn't have enough clearance between the spacer and the brake rotor mounting plate so it was rubbing slightly and causing some vibration, this is the reason I am not keen on Monorim products. I have ordered some precision shims from Aliexpress and once they arrive I will finish tuning it.IMG_1634.JPG
 
Custom 16W headlight and mount. I designed a universal mounting bracket which can accept any type of typical headlight mount, it replaces the stock clear reflector. I used a aluminium go pro mount because I wasn't sure if a printed one would slip over time. The custom headlight is not programable as it cannot be controlled via the controller but it's easy to switch it on or off. I will still use the stock headlight as a DRL and it's also useful as a visual indicator as it can be programmed for different boot/startup sequences.IMG_1637.JPGIMG_1636.JPG
 
I have swapped out all screws on the scooter which are used frequently or are used for adjustment, I swapped them with more modern black stainless 6 lobe Torx as the old 5 side hex (beyond M3) are absolute rubbish in my opinion and the cost of the screws is insignificant when compared to trying to remove a screw with a chewed up head. Because the 6 point design is so much stronger you can use a lower profile head as you don't need the huge cap head to increase the strength, this not only looks nice but it's really useful for mounting brake rotors with tight clearances. I have been testing a new anaerobic glue/thread lock too recently and it's really good for small EV stuff like M3-M8 screws, I can't really afford to maintain the whole Loctite catalog as they need replacing but these ones cost just a few $ each. I have tested 222 against my genuine Loctite 248 and the 222 is better in every way, it cures sooner, it requires less for the same torque, the screw can be reused without reapplication and it works on screws that have not been thoroughly cleaned/degreased from the factory.

Old 5 sided hex
IMG_1642.JPG

6 lobe Torx
IMG_1641.JPG

Aliexpress anaerobic glues, ones worth considering for EV projects.
https://www.aliexpress.com/item/1005007987790483.html

This one is my favourite:
Screenshot 2025-12-13 at 05.22.48.png

Low viscosity, ideal for wicking:
Screenshot 2025-12-13 at 05.23.26.png

High strength and high oil resistance, good for oily conditions:
Screenshot 2025-12-13 at 05.23.45.png
 
I spent $15 on this stealth kit to replace all the broken and worn out parts. I purchased 3 front reflectors so that I can install 2 of them on the rear as the front ones have enough space to fit over the motor axle nut and they also have clearances for the motor cable which should hopefully give it an OE aesthetic when finished. I don't really like too many accented details which is why I have kept everything black wherever possible. IMG_1647.JPG
 
Back
Top