How to update firmware on the Flipsky 75100 FOC ESC

This 84v 100a ESC can often be found on AliExpress for under $100 shipped. Flipsky claims the firmware cannot be updated and won’t release the source code, so I modified and compiled my own.

NOTE: There are two incorrect versions of this diagram floating around. The ADC1 pin is at the end of the COMM connector, and the Hall Sensors may be different. This version is correct:

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, I figured out how to modify and compile my own firmware and upload it to the ESC.

I later learned that Flipsky employees, using their personal email addresses, bought two early units off the Chinese version of craigslist from a hobbyist designer. They copied the design, modified it slightly for ease of production, then released it as their own giving no credit or royalties to the original designer. They pulled the firmware from the original unit and used it to load onto their production units. Since Flipsky apparently lacks the skillset 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, 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 firmware, but not really. That way they were GPL compliant and still didn’t have to credit or pay the original designer.

Firmware features tested and confirmed working

  • 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


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

VERSION 75100V201
Uses 75100 firmware

VERSION 75100V202
Uses 75100_V2 firmware

VERSION 75100 Aluminum PCB
Uses 75100_V2 firmware

Firmware binaries and source files

Includes 5.2, 5.3, and 6.0 beta 56 along with “no limit” versions. (3.3 MB)

How to flash these firmware versions:

Easy method over USB:

  • Open the VESC tool
  • Connect via USB
  • Click Firmware → Bootloader → Upload (use the “generic” or “60 & 75_300” version)
  • Download & rename a firmware option above to “VESC_default.bin”
  • Click Firmware → Custom File → Browse → “VESC_default.bin” → Upload
ALTERNATE: Hard method with an ST-LINK over the SWD port. Only need to do this if the USB method fails (it shouldn't) or you bricked the ESC.
  • Download a hacked version of the 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.

Detailed images of the chips & insides (V101)

Source files

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)

ARCHIVE - Old versions

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)


Good job!


Great work!


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.


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


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


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.


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?


phase Amps


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).


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…


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…

1 Like