As mentioned before, I'll describe the firmware and its modifications in a bit more detail.
Regarding the name. At the beginning, when the very first attempts to modify the original firmware started, the goal was simply to check whether anything could be modified at all. We decided to change the version string as well, just to make it obvious that the modified firmware was actually running and to avoid any confusion with the original one. I put in 'FAKE TAXI

' as a joke - and it just stuck.
When it comes to firmware versioning, as you can see inside the archive, the files are named as follows: 'FT' at the beginning, then the date followed by the firmware version and a daily build number. If a file ends with 'v' + number, it means it is based on the original v3.3 (36V/15A). If it ends with 'w' + number, it is based on the original v2.5 (36V/15A). Internally, we also use 't' and 'u' versions: 't' is a test firmware based on a clean v3.3, while 'u' is a test firmware based on a clean v2.5. These are non-public test builds and you will never see them released. You may notice that the firmware build dates inside the archive are slightly different from the overall release date. This is because we decided to publish them now, even though testing and development are still ongoing.
I personally don't own an e-bike, but according to the testers, the assist curves are different in each firmware: v3.3 is more responsive and works better for riding in the mountains, while v2.5 does not provide linear assistance. That's as much as I know from their feedback. That's why we decided to modify both v3.3 and v2.5. In the short-term, we plan to add assist curve modification for each level (a lot of analysis has already been done, but we are still not even in the testing phase). When that happens, we will most likely continue developing only a single firmware, since it will be fully parameterizable. For now, there are two versions available, depending on personal preference or current needs.
All modifications required reverse engineering of the firmware and direct changes in the code. Everything that was modified is hardcoded, meaning it cannot be changed using any external tools like BESST, K1 or CANable. We noticed some discussions where people claimed that modifying the Speed Table via the CAN bus in original firmwares has any effect. This is definitely not possible, because those values are hardcoded. We also analyzed other firmwares that we did not modify, which - according to some forum posts - were supposed to allow speed table modification. This is simply not true.
In the mid-term, we plan to add the ability to store and modify all currently changed parameters via the CAN bus, using dedicated version of CANable. At the moment, however, everything is hardcoded and there is no way to change these values to anything else. So please don't ask how to 'easily tweak' things right now - it's not possible. Part of the parameters in this firmware are expressed in human-readable units, while others are based directly on ADC readings. Because of that, we are not going to build separate firmware versions for every possible configuration. You'll need to wait until parameter modification over the CAN bus is ready.
As I mentioned in my previous post, when you download the firmware archive, you'll find a PDF file inside with a detailed README, which contains the technical essence of all changes. Here I'll just briefly go over them, so it's clear what was modified for people who don't want to dig through the document.
1. BATTERY LIMIT CURVE MODIFICATION
The first change is the modification of the power limit curve. The README contains two graphs. The first one was created based on calculations and shows a graphical representation of the original curve reconstructed from values reverse engineered from the firmware. The second graph shows how this curve looks after the modifications proposed by the testers.
2 .BATTERY DISCHARGE CURVE MODIFICATION
The next change is the modification of the battery discharge curve. The firmware is intended for use with 11S batteries. Again, the first graph in the README shows the curve reconstructed from reverse engineering the original firmware calculations. The next graph shows how it looks after the changes - it is now matched to the actual discharge curve of this type of battery. As a result, the battery charge indicator now reflects reality much more accurately, unlike the original firmware. Below these graphs, there is also a table with other modified battery parameters. The most important one is undervoltage, which was lowered from 32 V to 31 V. In the original firmware, when the battery percentage reached zero, undervoltage was effectively at the same level. Once the display showed 0%, the bike stopped assisting completely. The testers wanted the bike to continue assisting even after 0% is shown, down to 31 V. Battery protection is then handled by the BMS. If someone wants to keep riding, the BMS protects the battery from over-discharge. The firmware itself does not completely cut off assistance, so the battery can be drained further than just the theoretical zero shown on the display.
3. SPEED TABLE MODIFICATION
The third change is the Speed Table values modification. The table included in the README contains all the parameters that are hardcoded in the firmware with their original and modified values. The behavior is analogous to other firmware series where Speed Table can be modified, so the values were adjusted according to the testers' proposals.
4. WALK ASSIST IMPROVEMENT
The last change is the Walk Assist improvement, and here things need to be split into two firmware versions. While all previous modifications were identical in both firmwares, Walk Assist differs significantly between them. In firmware 'v', the throttle value was increased from the original 12% to 26%, as testers agreed this was a good value after testing. The speed limit for Walk Assist was also slightly increased from 6.2 km/h to 6.6 km/h. There is no soft start here - when Walk Assist is enabled, the bike immediately starts moving, throttle jumps to 26%, and you get a noticeable jerk. That's simply how this firmware is built. In firmware 'w', the Walk Assist function is much more complex. In the table included in the README, you'll find all parameters that were modified. When Walk Assist is enabled while it was previously inactive, the throttle is set to the initial value. During the ramp-up phase, it increases to the base value. After that, throttle changes between base and maximum according to the attached graph. Both the original and the modified curves are included. This allows dynamic throttle adjustment based on actual assist current. Thanks to this, the bike speed remains more or less constant even when the load changes. In contrast, with firmware 'v', when riding uphill the speed will unfortunately drop, as this firmware does not include such compensation logic. All the original and modified timings are also listed in the README.
That's all I wanted to cover for now. I don't own an e-bike myself, but I treated this as a fun puzzle. Without the help of the other guys, who consulted everything and handled testing, none of this would have been possible. If anyone feels like testing the firmware and sharing feedback, we'll be grateful. Thanks and enjoy the ride!