I've ridden about 1,000 km in total since buying my M365, nearly the distance between Portland and the SF Bay Area. Back when I was looking to buy, a big advantage for this scooter was the community around custom firmware. As a result I have the scooter's handling characteristics exactly how I want them, and now they're time-tested. Only a few kicks and it climbs hills easily. It responds just as I expect to to the throttle. I'm used to the regenerative braking. I really feel I can put the scooter exactly where I want it in a lane when riding with traffic.

As with any software, there are shortcomings. While the custom firmware is lightyears ahead of stock, if I had to point to the biggest drawback it would be the control of the regenerative braking. It's a known issue that custom firmware can make it wonky and jerky. Often it feels that you can't find a happy smooth level when going down a hill. Other times it engages and disengages unevenly despite keeping the lever in the same position.

I have a custom speed display and occasionally I find that it gets stuck on a speed. This is a bug in the DRV firmware as well.

Though the latest version of the firmware addresses these issues, there are dealbraker trade-offs that keep me staying put for now.

The Beta Patcher

A new version of the firmware patcher is in beta testing and introduces settings around braking behavior. It also replaces the idea of the power constant with phase and battery current.

The beta patcher produces non-pro versions, which go up to 1.4.3. Higher versions are Pro versions, produced by a different patcher (see next section).

I took a swing at building beta firmware using the equivalent of my old-world settings. Noting the instructions for converting the old power constant to mA, that means:

(51575 / 33000) * 17000

That produces 26569. This is the battery current as one preset has almost exactly this value. Take twice that, as the tip says, and you get around 50000 as the max phase current.

However, there's a big caveat. The old patcher scales the output of the Russian throttle algorithm by the power constant. This one has no power constant at all, so it does not seem to scale it by anything. I tested a couple values for max battery and phase current, and I was not able to produce anything close to the hill climbing ability of my 1.3.8 settings. When I tried same firmware without the Russian algorithm, the scooter launched itself off like a rocket but then we were back to the heavy and kludgy throttle.

Sooo, that means if you want to use the beta firmware, you must stick with the standard speed-control rather than the Russian throttle algorithm if you want any improved power over stock. I'm not sure why the Russian algo isn't more widely liked as it gives you much finer control of the scooter.

On the other hand, we now have some options around braking. I wrote my test firmware with standard / preset brake lever params, tested going down several hills, and found it a lot less wonky.

You also have the option of increasing the brake's virtual limit to increase the required travel of the lever at which the motor brake kicks in. That means you have to squeeze harder to get there, resulting in your disc brake doing more of the work before that point. I tested it at 120 and found that to be the smoothest configuration of all.

The Pro Patcher

With the introduction of the M365 Pro, there is also now a fairly experimental firmware patcher for Pro firmware. It's almost the same as classic versions but has a third drive mode and assumes a more powerful motor.

Pro firmware is 1.5.2+. It's recommended to flash 1.4.1, a non-pro version, before jumping to a Pro version (see Encryption).

You can run Pro on the non-Pro M365, but realize that the motor is less beefy and Sport mode won't do anything for you. Pro Eco and Drive mode are non-Pro Eco and normal mode.

This patcher appears new and under lots of development. I haven't yet tested this one out, I just want to share what I currently know about it so far. I intend to circle back with results of actual testing when I have some more time to recover from inevitably corrupting the DRV firmware a couple times.


With the introduction of version 1.4.1, Xiaomi began encrypting firmware. Once you install that version, going forward you can only install encrypted firmware. However, you don't need to be concerned with this because the patchers now always produce an encrypted & non-encrypted binary. M365 DownG chooses the right one to flash to the scooter automatically.

If you ever want to go back to unencrypted firmware, that would require m365rec, a small .exe restoration script, and an ST-Link cable.

Newer is not always better

These two new patchers hold lots of promise. For now, you either get a smooth throttle or brake, but they are still very much a work in progress and I hope we can have the best of both worlds soon.

See Also

Recovering a Xiaomi M365 with an ST-Link dongle

More blog posts