How to update firmware on the Flipsky 75100 & 75200 FOC ESC

This 84v 100a ESC can often be found on AliExpress for under $100 shipped. Flipsky used to claim that the firmware cannot be updated and won’t release the source code, so I worked out the hardware config and compiled custom versions. Those versions are now part of the VESC Tool.

However, a one time manual firmware change is needed.


History, and the controller's design origins

At first, Flipsky released this ESC with a note on their website that said the firmware couldn’t be updated. When I contacted them, they said they would not release the source code even though they are obligated to under the GPL license that the VESC project is released under. Frustrated at their response, and wanting to use field weakening only available in a newer firmware version than this unit shipped with, I created a hardware config for this ESC, compiled new firmware, and updated it.

It appears as though Flipsky employees, using their personal email addresses, bought two early units off the Chinese version of craigslist from a hobbyist designer. The design was copied, slightly modified likely to simplify production, and released it as their own. No credit or royalties were given to the original designer. They pulled the firmware from the original unit and used it to load onto their production units. My guess is that Flipsky lacks the ability to create their own firmware, and didn’t want to go back to the original creator they stole the design from to ask for the source code, so they simply said that the firmware cannot be updated. After getting enough flack from various people contacting them, they slightly modified the hardware and released V202 so it would kind of work with the stock 75_300_R2 firmware, but not really. That way they were GPL compliant and still didn’t have to credit or pay the original designer.

Aluminum PCB

A new design came out sometime later. It ships with the 75_300_R2 firmware (incorrect). It goes by these two names:

  • Flipsky FSESC 75100 V2 with Alu PCB
  • Makerbase MKSESC 75100 V2 with Alu PCB


Firmware features tested and confirmed working on the custom build

  • Battery input voltage accuracy
  • MOSFET temperature accuracy
  • COMM/UART port
  • UART 2 port
  • PPM port
  • CAN port
  • Hall sensors
  • Default and hardware limit settings match their firmware
  • FOC Motor detection with same results as their firmware
  • FOC Motor operation with same real time data as their firmware
  • BLDC sensored and sensorless
  • Field weakening

Differences between the shipped 75_300_R2 and the custom 75_100_V2 firmware

  • More accurate voltage readings
  • Set to use low side shunts (correct) instead of phase shunts (incorrect)
  • Disables phase filters and other things that don’t exist in the hardware
  • Reads correct mosfet temperature for more accurate thermal throttling

Versions:

You must use the correct firmware version otherwise the motor current readings will be off by a factor of 3!

VERSION 75100V201
Uses 75_100 firmware. Look for an ebike style case and a white PCB.
VESC Tool should report “Hw: 75_100” on the Firmware tab as shipped.


VERSION 75100V202
Uses 75_100_V2 firmware. Look for an ebike style case and a blue PCB.
VESC Tool should report “Hw: 75_300_R2” on the Firmware tab as shipped.


VERSION 75100 Aluminum PCB
Uses 75_100_V2 firmware
Works with dual version as well. Simply load on both “sides”
VESC Tool should report “Hw: 75_300_R2” on the Firmware tab as shipped.


VERSION 75200 Aluminum PCB
Uses FSESC_75_200_ALU firmware
VESC Tool should report “Hw: 75_300_R2” on the Firmware tab as shipped.
image

How to update firmware:

After nearly a year of testing and feedback from users, this firmware has been merged with the VESC Project’s GitHub.

A manual update is needed to change from the shipped firmware to the custom firmware. Once the correct firmware is loaded, it can be upgraded/downgraded as usual in the VESC tool.

  • 75100V101 - no change needed
  • 75100V202 and Aluminum PCB - change 75_300_R2 to 75_100_V2
  • 75200 Aluminum PCB - change 75_300_R2 to FSESC_75_200_ALU

To change the firmware:

  • Download the VESC tool
  • Open the VESC tool
  • Connect via USB or bluetooth
  • Click Firmware → Bootloader → Upload (bootloader version doesn’t matter)
  • Download the correct firmware file
    Firmware v6.00 Hw:75_100 to load on version 75100V201
    Firmware v6.00 Hw:75_100_V2 to load on version 75100V202 and the Aluminum PCB version
    Firmware v6.00 Hw:FSESC_75_200_ALU to load on 75200 Aluminum PCB
    – Older versions & source codes are in the archive below
  • Click Firmware → Custom File → Browse → “VESC_default.bin” → Upload

Additional info about these ESCs

Thermal Performance

image

Strongly recommended modifications

Other modifications

Shunt modification from 0.1666mΩ to 0.5mΩ on 75100V202

The whole reason V202 exists is because of complaints around the locked firmware and lack of source code.

To rectify that, they modified a few things in the hardware so it would work with the 75_300_R2 firmware included in the VESC tool for Trampa’s 75/300 hardware.

One of the hardware changes they made was going from one 0.5 mΩ shunt resistor per phase to three 0.5 mΩ shunt resistors in parallel, totaling 0.1666mΩ.

Some believe this had a negative impact on current measurement, so they simply desolder the extra shunts to bring it back to one per phase.

When doing this, the shunt resistance value in the firmware needs to be modified to match.

That firmware is now included in the VESC Tool as VESC_0005ohm.bin

Pinouts

75100 V1 and V2

There is an incorrect version of this diagram floating around. The ADC1 pin is at the end of the COMM connector.

75100 Aluminum PCB

75100 Aluminum PCB Dual

75200 Aluminum PCB

Components used

Version 75100V201

  • MDP10N027 mosfets - TO-220, 100v, 120A, 2.5 mΩ (6 total)
  • RICHCAP 740uF 100v Caps (3 total)
  • EG3112 Gate Driver (3 total)
  • STM32F405RGT6 MCU
  • LM5161 100v Buck Converter
  • m50 resistors for low side current measuring, one per phase. 0.50 mΩ (3 total)

Version 75100V202

  • Same mosfets, capacitors, gate drivers and MCU
  • Different buck converter?
  • m50 resistors for low side current measuring, three in parallel per phase. 0.166667 mΩ (9 total)

Version 75100 Aluminum PCB

  • HYG015N10NS1TA mosfets - TOLL/HSOF-8-1, 100V, 380A, 1.2 mΩ (6 total)
  • STM32F405RGT6 MCU

Version 75200 Aluminum PCB

  • HYG015N10NS1TA mosfets - TOLL/HSOF-8-1, 100V, 380A, 1.2 mΩ (12 total)
  • STM32F405RGT6 MCU

PCB pics

75100V201
75100 Aluminum PCB



image
Credit: MasterShmaster


75100 Aluminum PCB Dual


75200 Aluminum PCB


Following two images are from Ianhill on Endless-Sphere


ST-LINK over the SWD port.
  • Download the correct firmware
  • Open up the ESC. There is a JST PH 4 pin port that has nothing plugged into it. On the back of the board it has GND, DIO, CLK and 3.3v printed next to the pins.
  • Hook an ST-LINK v2 up to that port. Only use the GND, DIO and CLK pins. Have the battery plugged in. If you cannot plug in to the battery, then use the 3.3v pin as well, but this is not the recommended method. I’ve killed a few 5v to 3.3v buck converters on other ESCs using this method.
  • Plug the ST-LINK v2 into the PC
  • Download the STM ST-LINK Utility
  • Open and click Target → Connect.
  • Click Target → Program & Verify
  • Click Browse and load the .bin firmware file.
  • Click Start.
  • Wait 30 seconds then unplug the STLINK and the battery from the ESC. Plug in the ESC to the battery and connect through the normal USB port or bluetooth to configure with the VESC tool or VESC app.


Source files

Hardware config files on GitHub

ARCHIVE - Old versions

5.2, 5.3, and 6.0 beta for 75100V201 and 75100V202
Flipsky_75100_Firmware.zip (3.3 MB)

Old source files. These can now be found on GitHub

Version 75100V201
hw_75_100.c (8.2 KB)
hw_75_100.h (10.6 KB)

Version 75100V202
hw_75_100_V2.c (8.2 KB)
hw_75_100_V2.h (9.8 KB)

Hacked 5.2 firmware (75_100_HACKED) use with VESC Tool 3.00
Flipsky_FOC_75100_5.2_jaykup.bin (384.0 KB)

Unmodified 5.2 firmware that ships with it (75_100) pulled with an ST-LINK. Use with VESC Tool 3.00
Flipsky_FOC_75100.bin (384.0 KB)

Hacked 5.3 firmware (75_100) use with VESC Tool 3.01
Flipsky_FOC_75100_5.3_jaykup.bin (384.0 KB)

Unmodified 5.2 firmware that it ships with (75_300_R2) pulled with an ST-LINK. Use with VESC Tool 3.00
Flipsky_FOC_75100_V2_5.2.bin (384.0 KB)

Hacked 5.3 firmware (75_100_V2) use with VESC Tool 3.01
Flipsky_FOC_75100_V2_5.3_jaykup.bin (384.0 KB)

Version 75100V201
hw_75_100.c (8.2 KB)
hw_75_100.h (10.0 KB)

Version 75100V202
hw_75_100.c (8.2 KB)
hw_75_100_V2.h (10.0 KB)

45 Likes

Good job!

5 Likes

Great work!

4 Likes

Has anyone been able to flash the bootloader and use USB for subsequent updates?

1 Like

Oh man that was the missing piece!

I thought the bootloader was installed with the firmware, but apparently it’s not

I couldn’t get the firmware to update over USB, but once I loaded the bootloader through USB with the VESC tool, I’m able to upload any custom firmware and it sticks!

So if anyone wants to try this:

  • Open the VESC tool
  • Connect via USB
  • Click Firmware → Bootloader → Upload (just use the generic version)
  • Download & rename a hacked firmware above to “VESC_default.bin”
  • Click Firmware → Custom File → Browse → “VESC_default.bin” → Upload

Check the firmware tab and see if the firmware version or hardware version changed.

I think loading firmware can be done without using the SWD port at all, but I’ve flashed so many times someone else with a stock unit will need to confirm it.

6 Likes

That’s is so awesome!!! Thanks man!

1 Like

No problem :smiley:

Let me know if you are able to load firmware over USB by updating the bootloader then firmware and not having to use the SWD port. If so, I’ll update the main instructions

2 Likes

afzal on ES confirms USB upload of bootloader and USB bootload update of firmware.

4 Likes

Thank you very much!

Just flashed your hacked FW through USB. EasyPeasy. BLDC , DC, GPD (whatever that is) modes are all there.

Need to install it back in the scooter, but if you dont hear from me in a few days then assume its working.

1 Like

On what settings are you running it and what is the max battery current you can pull?

1 Like

I’ve only been running 30A / 50pA because that’s all the ebike can take based on the battery & phase wire gauge. I’m planning a P26A battery build and an upgraded motor, but that’s a few months out.

The 5.2 hacked firmware should perform the same as the 5.2 stock firmware. I kept all the firmware limits the original one had. I could compile a no limit firmware if you want, but if you are running into over current faults there are other things to try first.

3 Likes

The over current is not my biggest concern since, it runs fine with 100pA. The over current fault occurs just over 100pA when it’s running out of specs. My concern is the lack of power and the produced heat.

The power @120pA (37bA) was decent, @100pA (34bA) it is ok.
But the big difference between pA and bA is stressing the controller too much and it runs hot in a couple seconds.
Here are some logs with 40pA, 50pA, 60pA, 70pA all set to 120bA.

Even @60pA it runs way too fast hot and the outside temperature was just 5C.
I can’t imagine that i can handle more than 30pA during summer time, that’s why I asked at what setting you are running it.

So far the performance is just a little better than it was on 13S 20A battery with a cheap Chinese 15A FOC controller and I’m using now a 20S 105A battery with a claimed 100A controller.

pico ampere?

4 Likes

phase Amps

2 Likes

Are you running the stock firmware or the hacked firmware above? I think you are right about the unit overheating fairly quickly. Though even a VESC 6 will thermal throttle down to about 40 motor amps if run at full amps for more than a few minutes.

I did notice a massive performance boost running this vs an 18A Chinese controller though. It can basically climb any hill at full speed, which wasn’t possible before.

This run was set to 30 battery amps and 40 motor amps on the stock firmware. The motor is voltage limited to about 20mph so I’m basically full throttle most of the time (watch the duty cycle)

<metr log 1>

This test was at 35 battery 50 motor

<metr log 2>

My temps were decent at that amp draw.

I plan to do a few more tests with field weakening later this week so we will see how that goes. That should allow me to artificially up the amps and see if I get the same overheating results you did.

1 Like

I run the stock FW.

Your logs look waaay better than mine. I don’t unterstand how you can pull 35bA/50pA and 30ba/40pA at such low temperature compared to my logs. Yours look like how I expected to be.

BTW, my hub motor is limited to 67km/h on 20S (30 poles, 25kV).

2 Likes

My logs are on a small “500w” geared hub motor running at 1500w (44 saggy volts and 35 battery amps). It gets up to top speed in just a few seconds so it doesn’t draw a lot of motor amps for long. Those big direct drive hubs need a lot of power to get moving and climb hills. The longer you run high phase amps the quicker it will thermal throttle.

Maybe try a longer ride and make sure the controller has some airflow over it and see how it is. Your logs look like just full throttle tests from a dead stop… that’s when the phase amps will be the highest and overheating the quickest. With a 40mph hub, you basically have the equivalent of really tall gearing so it will do best cruising at high speed rather than raw acceleration… unless you have a massive controller.

However, that’s pretty much what I have coming for this ebike… a ~35mph DD hub haha so we will see…

3 Likes

I agree with everything you say. Nevertheless the produced power is underwhelming and the heat is too high. The watts we are pulling are pretty similar, but I was expecting that my setup runs cooler since it is on 20S. And I don’t think the ESC is capable of 100A under any circumstances, maybe except active cooling.
The motor I’m running is rated at 450W but it keeps cold.
I’ll try the next time to get some airflow into ESC.

What is your 0-20mph time? mine is like 4s.
BTW, did you change any parameters, or did you just run the wizard?

1 Like

From the 35/50 log it looks to be about 5-6 seconds to 20mph (1500w max)

From your 70A log it looks like 0-18mph is about 12 seconds maxing at 26 battery amps (2,000w max) but I’m not sure if that was full throttle or not.

Also that looks like a lot of sag on the battery. 77v down to 73v at only 25A? I get 43v-38v on a 12s4p 30q pack at 50A on my esk8. The battery may be built well but maybe the connectors are bad?

Stock settings, ran the motor & input wizard, then set battery/phase amps.

1 Like

You can’t consider the 70pA log since it run hot and pulled even less battery AMPs than the 60pA log. but in 12s I get to over 30mph but it’s still too slow for a 20S3P P42A battery.

Yes, I was wondering about the sag by myself. It should be significant lower than yours.

I’ll check the connectors but don’t think that something is wrong. It’s also interesting that we are pulling similar watt numbers but my 20S is running hotter than your 13S…

2 Likes