The firmware on the M365 can make or break your riding experience. The behavior of both the throttle and motor brake is software-controlled, so modding has huge potential to refine how the scooter's controls feel. Since custom firmware is community-supported, I've found this article somewhat hard to write because so much information is just floating around out there, and much of it is new and changing.
I'm only an enthusiast that enjoys following the development and testing. Here is an attempt to summarize what's out there and recommend a "golden path." Some of the details here may not be quite 100% accurate. It's all a moving target.
There are a lot of options available to us now. At time of writing, these are currently the three major patchers and the independent developers behind them. Each have benefits and drawbacks. They all improve power via a Motor Power Constant or by setting amperage values. Most implement a current-based (AKA "Russian Throttle Algorithm") acceleration algorithm, a drastic improvement over stock. And the newer ones allow customizing how hard and at what point while pulling the brake lever the regenerative brake activates.
David's (@BotoXbz) Classic and Beta patcher. These open-source patchers are for the classic (non-Pro) M365. One lets you improve the brake and the other lets you improve the throttle. I've gone into more detail in this article about them.
Oleg's (@velocidad_absurda, AKA Conejo) patcher. This closed-source patcher costs about €10 one-time to get access to and is the farthest ahead in terms of development. The patcher not only improves the speed, brake, and throttle, but it's also starting to have interesting bonus features. It also handles both brake and throttle, and can produce both pro and non-pro versions.
I am currently running Oleg's 1.3.8 firmware with similar/equivalent settings to my classic patcher settings. One big improvement with Oleg's patcher is the quadratic acceleration curve which drastically smooths out throttle behavior. Coupled with lower-power motor brake lever settings (and a tight stock or hydraulic brake), I've pretty much felt like I've got the whole riding experience the smoothest I can get it.
1.3.8 is the go-to version for the classic M365. It's considered the most desirable version because of handling characteristics and it allows flashing any version over it. Recovering your ESC via ST Link flashes this version.
Don't bother with this version. Also for classic M365, it's less smooth than 1.3.8 because of a change where it cuts power when not pushing on the throttle. That results in a "clonk" or a brief jerk forward or backward which comes from the motor engaging or disengaging at speed. Otherwise, Xiaomi didn't seem to change much.
It's possible to downgrade from this version.
1.4.1 / 1.4.2
These versions seem to be Xiaomi's attempts to patch holes in order to prevent further modding on the classic M365. They also started encoding firmware at version 1.4.2.
The only way to downgrade from either of these versions is to either ST Link or flash this modified firmware (Gyronews Page). That rolls back to 1.4.0, and from there you can flash 1.3.8 or any other version. This firmware comes as a .bin file, meaning that you must use the Android version of M365 DownG to do the job.
Xiaomi produced the Pro and used any version starting with 1.5 for it. These versions work fine on the classic M365 too.
These are not downgradable without a hardwired ST Link flash.
1.5.5 may fix a bug where your current speed gets stuck when using a custom display.
Newest version that is intended for Pro use.
I believe 1.6.0 is downgradable, but 1.6.1 and above requires ST Linking.
Very new version, not much is known about it. Definitely requires ST Link to downgrade.