"FAKE TAXI Project" - the modified original firmware for Bafang M820 motor

Hi all,

After some discussion, we decided to go ahead and adapt FAKE TAXI for the remaining battery configs: 10S, 12S, 13S, and 14S. Keep in mind that these are untested firmware versions. Everything was modified without verification, so please approach them with caution (at least until someone tests and confirms that everything works as expected). The archive includes a README with details about the naming scheme - for each battery, firmware was prepared based on the previous 'v' and 'w' versions (in short: 'a' and 'b' for 10S, 'c' and 'd' for 12S, 'e' and 'f' for 13S, and 'g' and 'h' for 14S). Discharge curves and battery parameters are also included. Voltage levels were recalculated proportionally based on the 11S battery.

That's all for now. Any feedback is welcome - both for DIY batteries and original ones with a CAN-based BMS.

rekrezeb

Link: Proton Drive
File: FT_2026_02_02_public.zip
SHA256: 3ce5dfe08058c82bd3da3e190b71eda4a55dddec1bb3280942da59b2be1d280a
This is awesome mate, I've just come across this forum which is perfect timing as I'm keen to try out the 48v firmware on a CEF50 which I've just finished.

The only issue i have right now is that when trying to login to Besst server (using official Besst tool) I keep getting an error "Abnormal Network. Please check your network and try again" - the tool can read my M820 settings but if i change a parameter i can't connect to upload. Has anyone here come across this - I turned off windows firewall, turned off antivirus and used 5g not wifi but still couldn't solve it? All help greatly welcomed!
 
New version (2026-02-10)

Link: Proton Drive
File: FT_2026_02_10_public.zip
SHA256: 0bac03333272f2d911bc9e4118d099f6862013c1a31c618cb8168b52c1e6aa37

Updates according to the changelog:
Fixed minor bugs in 13S and 14S battery discharge curves and removed SOC recovery limitation. Previously, SOC increase required a >10% delta and was applied as: calculated-10%. This caused no visible increase for small voltage recoveries and a persistent offset if the SOC delta exceeded 10%. Controller power cycle was required to restore accurate SOC estimation.

Addintional info:
  • Battery discharge curves were tested using a lab power supply.
  • SOC estimation based only on battery voltage isn’t perfect, but without the SOC recovery limit, it should perform better after steep climbs.
  • Firmware version naming is the same as before: a & b for 10S, v & w for 11S, c & d for 12S, e & f for 13S, g & h for 14S.
 
This is awesome mate, I've just come across this forum which is perfect timing as I'm keen to try out the 48v firmware on a CEF50 which I've just finished.

The only issue i have right now is that when trying to login to Besst server (using official Besst tool) I keep getting an error "Abnormal Network. Please check your network and try again" - the tool can read my M820 settings but if i change a parameter i can't connect to upload. Has anyone here come across this - I turned off windows firewall, turned off antivirus and used 5g not wifi but still couldn't solve it? All help greatly welcomed!


Try the following solution - LOGIN BYPASS. You'll also be able to increase your speed limit above the legal limit.

WWW - Login Bypass
 
Всем привет!

После обсуждения мы решили адаптировать FAKE TAXI для оставшихся конфигураций батарей: 10S, 12S, 13S и 14S. Имейте в виду, что это непротестированные версии прошивки. Все было изменено без проверок, поэтому, пожалуйста, относитесь к ним с меньшей осторожностью (пока кто-нибудь не протестирует и не подтвердит, что все работает как следует). В архиве есть файл README с подробной информацией о схемах именования — каждая прошивка для батареи была подготовлена на основе предыдущих версий «v» и «w» (кратко: «a» и «b» для 10S, «c» и «d» для 12S, «e» и «f» для 13S и «g» и «h» для 14S). Также включены кривые разряды и параметры батареи. Уровни напряжения были пересчитаны на основе батареи 11S.

На этом пока всё. Любые отзывы приветствуются — как по самодельным аккумуляторам, так и по внешним батареям с BMS на базе CAN.

рекрезена

Ссылка: Proton Drive
Файл: FT_2026_02_02_public.zip
SHA256: 3ce5dfe08058c82bd3da3e190b71eda4a55dddec1bb3280942da59b2be1d280
Good afternoon, I've been closely following your project's thread and thought I'd share my experience. I decided to install the firmware on the M820 motor with a 48V battery, after preliminary readings The battery charge readings were 100%, I flashed the firmware using BESST The firmware download was successful, and I decided to see what parameters were passed using the software. OpenBafangtool 2.2 Taken from GitHub. And here are my observations, in the firmware version for "e1" "v" Parameter value high voltage limit It was 47V, I changed it to 60V, and the parameter Curent limit was 12A I didn't change it. I took the bike for a ride, and it performed completely differently. At peak, the power on the display reached 625 watts.I will continue testing, but for now I like the engine’s performance; it feels similar to the Shimano EP8.
 
Last edited:
@RideStar24:

If you mean the 'Overvoltage' parameter (bit 2) from the CAN frame with ID 6011 (according to Bafang_M500_M600/BESST Parameter 6011-6012-6017-6018.md at main · OpenSourceEBike/Bafang_M500_M600), then it has no real significance. This value is hardcoded and I forgot to change it - although it doesn't matter anyway, because it isn't used anywhere later on. Try setting it to 0 and nothing will change. The same applies to the 'Nominal voltage' parameter (bit 0), which I did change - it also has no effect, but I wanted the voltage/current pair to match the original firmware. In the next update, I'll modify the 'Overvoltage' value so it doesn't stand out - 'ordnung muss sein' ;) As for the 'Maximum current' parameter (bit 1), its value is taken from a hardcoded variable. The same applies to the 'Undervoltage' parameter (bits 3–4), from which the 'Recovery voltage' (bits 5–6) is calculated. So in this case, I didn't need to replace anything and you're seeing the correct values. All of the above applies to the situation right after flashing the firmware, when the default value of the CAN frame buffer with ID 6011 is set. Any changes made later are saved, but they have no impact on how the software actually operates.

As for the difference in riding feel - it results from the modified 'Speed Table', which was prepared by the testers and temporarily named 'Like a Bosch' ;) For now, it's not yet possible to change its values via the CAN frame with ID 6012, but it's on the roadmap. At the moment, we have a test firmware that supports something like an 'Assist ratio' for each assistance level (you can manually set the assist multiplier in the range of 10-1000% in 10% steps). This should make the riding feel even better as you can reach maximum power faster. For now, this improvement is still in testing and hasn't been made public. You quoted my post about version 2026-02-02 - flash the 2026-02-10 version instead (if you haven't already), as several bugs in the 14S battery voltage map were fixed (typos in the entered values).
 
Rekrezeb - Thank you for your work.
I have a 48V 15A battery and I read that using a 43V firmware you can gain up to 100W of power.
Any thoughts on using a 12S firmware instead of the 13S in my case?
(Yes the battery % would be inconsistent, would this be the only side effect? )
 
Today the K1 FLASH arrived so I finally was able to try the Fake Taxi FW. I uploaded the 43V version (I have a 48V 15A battery), and now my weak M820 bike has become a real beast...
Everything changed, you did a wonderful job, thank you.
On Sunday I'll try it on very steep hills in the bushes but I already know that this time it won't be a problem.
IMG_9948.jpg
 
Today the K1 FLASH arrived so I finally was able to try the Fake Taxi FW. I uploaded the 43V version (I have a 48V 15A battery), and now my weak M820 bike has become a real beast...
Everything changed, you did a wonderful job, thank you.
On Sunday I'll try it on very steep hills in the bushes but I already know that this time it won't be a problem.
View attachment 384739
I have 48v 17A (835wh) battery and wondering which FM to flash - 43V like you or the 48V, do i understand correctly 43V would give me a bit more range while 48V would give a bit more power? Thanks
 
I have 48v 17A (835wh) battery and wondering which FM to flash - 43V like you or the 48V, do i understand correctly 43V would give me a bit more range while 48V would give a bit more power? Thanks
We prefer installing the software for a dedicated voltage. That is the reason why so many different versions have been created. Only in this case can the software accurately indicate battery consumption and properly monitor battery discharge.
The next version will be 13S 13A (which means more power).
 
Thanks for the info. I installed the 48v (e1) and just took it for a spin on the street but immediately can see its a massive improvement over the stock 48v firmware. More testing to come tomorrow and during the weekend (including vs Shimano EP8 85nm). For now a major thanks to Rekrezeb, Radolf and whoever else has worked on this the part 2 months!

The only issue i ran into (not firmware related) was that i did the Besst steps slightly wrong and thought i'd bricked the system, but luckily i came across a trick to unplug the battery and hold down the on/off button for >60 seconds to clear the residual current - and wow it worked, turned on and there i had fake taxi steering up from the screen :)
 
I have 48v 17A (835wh) battery and wondering which FM to flash - 43V like you or the 48V, do i understand correctly 43V would give me a bit more range while 48V would give a bit more power? Thanks
I chose the 43V following what K1EBIKES.COM says on his site. During the past WE I tested it and I was surprised by how easy was to reach 600/650 W without too much effort.
Yes the battery SOC is messed up but for me is not a problem (and besides there's a solution).
This WE I'll try the same tour with the 48V FW to see what are the differences in power.
 
Last edited:
We prefer installing the software for a dedicated voltage. That is the reason why so many different versions have been created. Only in this case can the software accurately indicate battery consumption and properly monitor battery discharge.
The next version will be 13S 13A (which means more power).
I'll be waiting for this new version 13S 13A; I imagine it will provide better assistance on inclines. Regarding the speed limit, is it adjustable? Here in Brazil I use 45 km/h.
 
Translate(portuguese)
Update
I'm sharing the variation in battery charges just by changing the firmware:
63% FT_2026_02_10_f1
52% CRX30PC4812E102006
62% FT_2026_02_10_e1
 
Last edited:
@lkdoido

The voltage maps for 10S, 12S, and 13S batteries are different from the original ones. The idea was to provide a more reliable SOC reading (of course only as much as this estimation method allows) and also to make better use of the battery capacity.

These are the values from the original and FT firmware for 13S:

ORG 13S

100 %: 53.29 V
90 %: 52.58 V
80 %: 50.99 V
70 %: 49.39 V
60 %: 48.79 V
50 %: 48.00 V
40 %: 47.49 V
30 %: 46.80 V
20 %: 46.19 V
10 %: 44.78 V
5 %: 42.30 V
0 %: 41.99 V

MOD 13S

100 %: 52.91 V
90 %: 50.89 V
80 %: 50.27 V
70 %: 49.21 V
60 %: 48.05 V
50 %: 46.99 V
40 %: 45.77 V
30 %: 44.34 V
20 %: 42.64 V
10 %: 40.43 V
5 %: 39.39 V
0 %: 37.30 V

I think you may have mixed up the percentages shown by the two firmware versions, because if you see around 50% on the original firmware, it should be around 60% on FT. Could you confirm that?
 
@lkdoido

The voltage maps for 10S, 12S, and 13S batteries are different from the original ones. The idea was to provide a more reliable SOC reading (of course only as much as this estimation method allows) and also to make better use of the battery capacity.

These are the values from the original and FT firmware for 13S:





I think you may have mixed up the percentages shown by the two firmware versions, because if you see around 50% on the original firmware, it should be around 60% on FT. Could you confirm that?
Regarding the MOD table, shouldn't the lower limit be 3.1 x 13 = 40.3 to avoid damaging the battery?
 
As can be found in the manufacturers’ documentation for battery cells, in most cases the lower safe voltage limit is 2.5–2.65 V, which should not be exceeded (discharged below). Therefore, the limit of 2.8 V should be safe
 
Hi
Done a few km's one 48V ''E'' firmware so far.

Power is delivered smoothly, rather on slow side, for active rider it is OK and provides good bike control.
I have drained cells down to 3.05V - 0%. There was no power limitation, at 2% of the battery on the display, I could use SPORT mode with over 200W, only drawback was that with this power output, battery voltage dropped fast and bike turned off itself (might be my BMS setting, have to check that).

Something that bothers mi a bit in Bafang system is voltage depended power delivery.
Let me say at full battery:
ECO --> 150W
TOUR -->200W
With 10% battery left (lower voltage):
ECO ->115W
TOUR -> about 165W

It would be a nice if they will change algorithm from current to power approach.

Generally speaking, well done lads.
Will post some more feedback when do about 300km

Regards
Peter
 
Hello, what cable for flash do I need to buy ?
Can some one post a link, I don't understand what I need...
 
Back
Top