User Tools

Site Tools


Guide for Mi generator

Detailed parameter guide for 'Mi' generator

For simplicity and convenience, the Pro2, Pro and 1s generators were merged into one gen, based on DRV155, which proved to be most stable and reliable.

Following this merge, some additional parameters were added.

Original firmware

On the top of the page, you can find direct links to original ZIPs, should you need to revert to an original state (for warranty purposes, etc.)


This category contains suggested presets, set up by community. You can base your template on any of them, however it’s suggested to start from vanilla configuration.


Remove Charging Mode

The scooter won’t enter into charging mode based on BMS’ communication. You can tell by the beep sound it makes when charger is connected. The default behavior is to prevent accidental accelleration in this mode, however when another battery pack is connected in parallel through the charging port, it prevents any sort of riding. Should be disabled only if needed.

Version spoofing

Artificially inflates the firmware version number in order to prevent any official apps from unsolicited upgrading. No side effects are to be expected with sideloading different firmwares. Recommended

Compat with newer Mi Scooter models

Self explanatory, check if you have Mi 3 or Pro2/1s and lock icon doesn't appear.

Power and Speed

Use the Reset button to get back to original settings

System Voltage

This changes the displayed wattage values, but it also enables BMS emulator, and prevents error 21 from happening with custom battery packs. Be sure to short RX/TX (marked R and T) pins on the esc first (currently only implemented for Max)

Current control

Current in the following rows should be thought as torque. More amperage means more torque, but also more stress on the components and motor, usually less range on single charge. It is suggested to start from factory values and proceed up only if necessary. 25A on Sport mode is already high enough that the motor cannot exert this level of torque for long without overheating. Bear in mind that the motor case temperature are only a fraction of the heat generated by coils, which are usually 50-60C hotter than the case.

Power limit is the 'older' setting for current. In practical sense, this would be the target current you'll reach during operation, with small fluctuations based on the current elevation or speed.

Current limit was previously known as phase current limit . This is the peak envelope power on the ABC phases, measured by the ESC itself. __Treat this as hard limit, and the estimated draw as soft limit.u When unsure, you can set this to 2-3 times of the estimated draw.

Recommended values (if you don't know what to do)

  • Sport - Estimated 25A, Limit 65A
  • Drive - Estimated 17A, Limit 65A
  • Eco - Estimated 10A

Max speed

Max speed is rather self explanatory, in speed mode, your max speed will be limited by this setting. The scooter never actually reaches this, due to various factors. Generally, 1km/h should be added here to reach the target speed, e.g. for 25km/h, set 26.

Direct power control

Changes the way the throttle reacts:

  • In speed mode, throttle position always corresponds to fractional value of the set max speed. This speed, especially with cruise control enabled, will be kept regardless of terrain or air resistance, also considering maximum current for set mode (eco/drive/sport)
  • In direct power mode, throttle position corresponds to fractional value of the max current/power set for said mode. In contrast, here the power remains constant, but the speed changes with the torque the motor needs to apply to keep you moving. This results in speeding up with low payload, low air drag or downhill, and slowing down with high payload, high air drag or uphill.
    • Direct power mode ignores any speed limits you might have set, including the global set limit.
    • Acceleration tends to be smoother, as the throttle reacts in a similar way to gas/accellerator pedal in combustion vehicles
    • In direct power mode, your scooter will try to reach the maximum speed possible, until set current limits are reached.
    • DPC mode can be disabled entirely, enabled through boot sequence with brake lever pressed (press the brake lever while turning on the scooter, and keep it pressed for 2 seconds until it’s fully on), or always enabled.
      • Since 5th March, there's also an additional method of activating DPC using shu app, Switchable, register option allows you to enable DPC in the app by activating DPC switch. It can also be automated through the Automation menu.
    • There are two response settings for the throttle – flat and quadratic
      • Flat makes the throttle response linear – e.g. throttle at 60% results in 60% of the max current set
      • Quadratic makes the throttle response, well, quadratic (or logarithmic if you prefer) :-) - 60% throttle will result in approx 40% of the max current set

Current raising coefficient

This setting controls how is the full current applied, relative to your active current. The idea here is not to stress the motor at low rotations per minute, where its efficiency is the lowest. This parameter is applicable only to speed based throttle, in DPC it's ignored.

Motor start speed

Motor will not exert any torque unless this speed is reached. Please note that even when this is set to 0, the scooter won’t accelerate from dead stop. Minimum speed here is >0.01kmh represented by the value “0” on the slider.

Braking and Recovery

Use the Reset button to get back to original settings

Brake lever parameters

Lever virtual limit – modifies the linear response of the brake lever in such a way, to apply the maximum value sooner based on relative position of the brake lever. 130 results in fully linear response, 0-100%, 85 reaches the maximum braking power at about 70% of the brake lever range.

If you have separate lever or thumb throttle for ebrake, set this to maximum to get the best dynamic range, otherwise keep to 75-100 with combined levers.

Minimum and Maximum phase current

Sets the strength of how your brake will be pulling. It is advisable not to go over 30A, as there are reports of broken controller boards due to regenerative braking. Furthermore, there is a limit to how much braking can be achieved per system voltage. Going over this limit means the scooter will try to brake by applying current instead of regeneration. This can stress the components excessively, and shouldn’t be used in other cases except emergencies. More braking power can be unlocked by raising system voltage to 48V or beyond.


Disables automatic braking when no acceleration is applied. Recommended, as the default automatic braking has no significant advantages, and only results in applying throttle more than necessary. Furthermore, small current is applied when the scooter is moving even without any throttle set. This can help with coasting, as the static magnetic forces of the motor are overcome, which would normally cause drag.

Current raising coefficient

Again, same as with adding torque, this controls the relation of the braking current applied to the speed you’re moving. Lower setting might help with finding balance between good downhill speed and regeneration, while higher values will pull more current faster, leading to quicker stop.

Brake light flash frequency

Sets the flashing frequency for rear light in flashes per minute.

No brake light flash on throttle release

By default, the rear red light will blink when the brake lever is pressed. Check this to keep that from happening.

Cruise control

Cruise control delay

Sets the time until cruise control is applied, when the throttle is kept at the same position. After the beep, your speed or power will be kept constant, until you touch the throttle again, or apply brakes.

Disable cruise control beep

Self-explanatory, disables beep, signalling the activation of cruise control.


Stay on when scooter is locked

With this enabled, the scooter will be always on in lock mode, with blocked motor to prevent theft.

Regular BLE display

Check this if you want to apply the cooked firmware to M365 classic, with 4-dot display. This will also enable extra Sport mode for this model, indicated with both green and white LED being on.

Change ESC-BMS baud rate to 76800

Enable this only if you used open source BMS, as detailed on BoToX github.

Wheel size diameter

Keep as is, if you use stock 8.5” tires. This directly affects speed limits set earlier, and should be set only in case 10” tires were put on.

Set to:
9.47 for XuanCheng tires
9.1 for Wanda P1237 tires
9.0 for Deli SA-206 tires

Battery voltage limit

Change this only if you increased battery voltage. The threshold should be maximum 4.3V per cell.

So 51.6V for 12s, 55.9 for 13s, 60.2V for 14s and 64.5 for 15s.

Disable BMS communication

Disables BMS UART communication, thus prevents DRV from entering into error 21 or 24 state, and subsequent scooter slow-down. However no BMS data will be processed.

Time to cook!

Select the output format based on the flashing app you use, and then click Download ZIP

Congratulations, you have successfully cooked your custom, tailored firmware. Now load it in Scooter Hacking utility, DownG or XiaoFlasher (deprecated) and enjoy.

guide-mi.txt · Last modified: 2022/01/15 03:15 by lothean