Fiido Q1S 2.5kW: VESC + modular DIY OpenSource electronics and software


10 GW
Feb 14, 2011
I received today my Fiido Q1S. It is small as expected, still my wife can not put the full feet on the ground - my expectation is for our family to share it: me, my wife and my son with 13 years old.

Both me and my wife, our first impression is positive.

What I really hate is the motor noise - also at a local hill, it goes only at 6.5km/h, which is almost impossible to ride. Anyway, I already have one hub motor, gearless, of 2kw (4x more power than the original).

I already changed the seat and I am changing the tires for the 12x3.0 inches, that are clearly larger and a bit more than the 12 inches of original ones (on the picture, rear tire is original and front tire was already changed to the 12x3.0).

I also wish there is a backlight. I will need to add my own, including turn lights.

I will for sure need to add my own battery, at least to have the range I need at a max speed of like 45km/h.

I will add a VESC FLIPSKY 75100 (max 75V battery voltage and max 100A motor phase current) + my modular DIY OpenSource electronics and software, just like I did for my stand up scooter Xiaomi M365 or for my EBike with Bafang M500 mid drive motor.

The Fiido Q1S:

The new hub motor gearless, 2kw and with the 12x3.0 inches tire - larger than the original tire as seen on the image:


  • 1682616807431.png
    4.9 MB · Views: 13
Last edited:
Seems there are not much information about Fiido Q1S builds on public forums, I mainly find dispersed information or Facebook or such :( but here is good detailed thread: Fiido Q1S Upgrade; 200A, VESC, Copper-Nickel 52v Molicel

The Lunyee motor I received is very high speed. The seller, Amy Ding, told me the motor would run at no load, 48V battery, at 60km/h / RPM: 1100. BUT, the motor runs instead at 90 km/h!!! So this means the motor has 50% higher speed and 50% less torque. Lunyee told me the max motor phase current is 80A. I did tests and at 80A, it barely can start on flat, with me (100kgs) on top of Fiido Q1S. So my recommendation is for no one to buy this motor for Fiido Q1S - and most motors on Aliexpress seems to be similar, very high speed motors!! when I ask to the sellers, for the no load speed at 48V, they can't answer, they do not know such basic data specification. They are selling but they do not know nothing about motors and they will say anything that you want to listen, just to make the sell to you.


Rotating this motor slowly by hand, I could see on VESC tool that is has 30 magnets / 15 pair poles (did one for wheel full rotation slowly, and repeated a few times to make sure I did everything correctly) here is one wheel full rotation:


And here is the phase currents I tested and measure motor power by VESC:
50A phase amps
100W motor power at startup

66A phase amps
200W motor power at startup

100A phase amps
400W motor power at startup

120A phase amps
600W motor power at startup

So, every time I doubled the phase current, I got 4x more power -- and I can say I also fell 4x more torque!! I was expecting that phase current were directly proportional to motor torque!! Can someone please explain this results??

Another motor on the market, tested by other users, the Lonnyo 5000W is also very high speed (160km/h!!) and has phase wires of 4mm diameter, and users running it at 200A phase current. The Lunyee motor I have is "double phase", it has 6 phase wires, but is like they split each phase wire in 2 and we need to join the wires. Each wire has 2mm diameter, so in the end, it is also a 4mm diameter as Lonnyo motor and I wounder if I can run Lunyee motor also at 200A - I think I will try, and it has a temperature sensor, so It can be protected from overheating and getting demagnetized.

So after, I tested the original Fiido Q1S geared motor:



I added some lithium grease but still it makes a good amount of noise that I do not like - I fell ashamed when riding near to the others.

I used a 48V battery + VESC Flipsky 75100 + DIY EScooter board to read the throttle and the brakes and control the motor through VESC. On a hill, I tested this original motor with 60 phase current, and it was twice as fast (12km/h) compared with the original motor controller and original 36V battery.
With this 48V battery, it runs at about 30km/h on flat surface, with me on top (100 kgs). And yes, I hate the motor noise!! I feel ashamed when I am riding near others.
This original motor has a temperature sensor that can be used to automatically throttle down the phase current if motor get hot.

Picture showing the 48V battery at the bottom + VESC Flipsky 75100 + DIY EScooter board. The VESC has the Bluetooth module, so I can configure VESC wirelessly from my micro PC with 8 inches display as also edit the Python code with DIY board, like mapping to throttle max phase current:

DIY EScooter board schematic:

OpenSource Python firmware, as also the schematic, here on Github:

EBike_EScooter_modular_DIY/ at main · OpenSourceEBike/EBike_EScooter_modular_DIY

This is my next plan:

2nd try to improve motor

Option 1: 200A phase current​

Run Lunyee motor with 200A phase current, to have (hopefully) enough torque for startup and hills, otherwise run with 80A phase current. Will need to use the motor temperature sensor.

  • motor cables can melt
    • a user says uses 200A on a 4mm phase cables and this Lunyee is also 4mm phase cable (2mm each wire, and it is double wires)
    • I can install a temperature sensor on the cables
Need to buy:

Option 2: dual motor, using original motor​

Dual motor: Lunyee motor with 80A phase current. Original motor in front (need to buy a fork 125mm wide), with 50A phase current for startups and hills. The firmware can turn off the original motor after 15 km/h or based on some motor current. A button on the handle bar can be used to turn it on/off.
Control both VESCs using CANBUS.

Need to buy:


  • 1683369145790.png
    2.3 MB · Views: 8
Last edited:
I installed a 80 volts 22S battery and I did a ride of 15 kms with it. It was charged only up to 85%.

The motor controller is the VESC Flipsky 75100 providing 60A phase current and 15A battery current, so this Fiido Q1S original motor wass run at 1200W and I got 48.6 km/h top speed!! (my weight is 100kgs) It also has very good torque!!

I touched on the motor a few times and it was ever lower than warm, so probably it can withstand higher currents and power, providing even more torque!!

The image shows the speed as also the altitude, recorded by my Garmin watch.

The only downside of this geared motor is the noise it makes and that it does not regen brake.
I documented my simple and DIY build of Fiido Q1S: EBike / EScooter modular DIY OpenSource electronics and software


The battery and the motor used are modular, basically they are configured only one time on VESC.

And as we know, VESC is popular and high performance OpenSource VESC. We can buy it in many online stores like in Aliexpress, and there are small ones of 2kW up to big ones of 20Kw or more.

VESC is able to drive any motor, has a motor auto detection feature and is very easy to configure. It drives very well the Fiido Q1S original motor, and with a 80V 22S battery, I got high speed of 60km/h while with the original battery and motor controller, I only got 23km/h (I am heavy: 100kgs).

The schematic of the DIY EScooter board:

The DIY EScooter board:

Today I tested the Lunyee very low torque and very high speed motor.

With the battery with 90V, I got a no load motor ERPM of 41640. With 15 pair of poles this motor, that translates to 2776 RPM, that in this 12 inches wheel, means 160km/h!!!


And this time I tested with 115A of motor phase current, which is near the max of 120A of this VESC Flipsky 75100:


But as you can see, this VESC Flipsky 75100 mosfets temperature went from 34 to 62 ºC in just 16 seconds!! I would say this controller is good only up to 60A phase current, otherwise will quick heat up:



  • 1683677128270.png
    849 KB · Views: 250
I now have the wireless display prototype working. It only needs 2 power wires: +5V and GND. More details on the video:

I need to 3D print an enclosure for the display, but for now I used tape:

I am using 2 wires from the original display, to power this wireless display, with +5V and GND:
This are the arm torque that I installed. But after I bought the other type as seen on the picture (TAZ12), that should me put the arm at a perfect alignment with Fiido frame and so will be a perfect protection.

Note that I run the original motor at 60A motor phase current, and 22A battery current @ 80V battery voltage, that is 1750W while the motor is only rated to max of 500W. So, there is a lot more torque on the frame, on the nuts location, and I already saw my frame slightly a bit damaged - this arm torque should avoid any future damage.

Original Fiido Q1S hub geared motor, has a 10x12mm thread hole. The other low troque high speed direct drive motor I bought, have 10x14mm thread hole.

Note that some users said the following, so maybe arm torque is not needed:

"Most ebike frames are built for hub motors so they do not need torque arms....sure it'll help alot but I don't think it's necessary on the fiido.peoples are running 3000w and up just fine without them.
We all running over 150 phase amps or we would have never upgraded hubs.your still using the stock hub we using bigger hubs the frame is not the issue.if you have a problem it'll be your phase wires themselves.if anything can go bad it will be the hub that breaks before the frame dose"





157 kms/h!! I very low torque but very high speed Lunyee 12 inches motor, running with a 22S 80V battery. If you see the video, the tire even deforms at such high speeds.

The motor runs at 41000 ERPM, as has 15 motor poles pair, so runs at 2733 RPM. As the wheel is 12 inches, it runs at that 157kms/h.
I am using the VESC Makerbase 75200 Alu motor controller that did cost me 137€ on Aliexpress. This VESC can drive the motor at up max 200A motor phase current, and with a max 84V battery!!

As a reference, I did run the Fiido hub geared motor at 60A motor phase current and I got a LOT of torque, probably already a bit dangerous for me to loose control if I pull the throotle to max at a startup.
This Lunyee motor, with 60A motor phase current, I fell almost no torque. I found before on my tests, that if I increase twice the motor phase current, the torque increase 4x. So, if I use 50A I have x torque and If I increse to 66A, I have 2x torque, and if I increase to 100A, I have 4x more torque.
If I use 100A, then I feel some good torque but probably not enough to startup at a hill. I just tested with 180A and then I have very good torque, maybe a similar torque as with original Fiido motor at 50A.

The issue with running this motor at such 180A high current, is that the cables get hot and probably the motor inside. Lunyee told me I should use no more than 80A (probably continuous). So I will need to make more tests, and probably use the motor sensor to limit the current if motor get's hot as also add a temeprature sensor to the cables and do the same limitation to avoid the cables to melt.

On the pictures you can see:
- 180A motor phase current peaks on my tests
- motor speed ERPM, see how fast it accelerates to max speed!! this can be dangerous if get's out of control for some reason...
- VESC Makerbase 75200 Alu motor controller mosfets temperature increase everytime I did that 180A current peaks






VESC has commands to set motor phase current and set motor RPM speed. But it can't both control the motor speed and the motor current, it does one or the other.

I developed a new command to VESC to set the motor speed and set motor max current, and I did pull request contribution to VESC firmware source code that I hope will be accepted: Added command COMM_SET_RPM_CURRENT to solve issue #628 (needed for ESCooters) by casainho · Pull Request #629 · vedderb/bldc


As my motor rotates at 160km/h with a little throttle change, it is very dangerous (like when I am taking out the scooter from the garage), so with this new command, I map the throttle position to motor speed and also motor current.

So, if I rotate a little the throttle, like 10%, I will send this new command COMM_SET_RPM_CURRENT to VESC, with 10% of EScooter max speed value as also 10% of max motor current value.

I tested on a few rides in the street, on my Fiido Q1S, with my EScooter board Pyhton firmware mapping the throttle max position to motor phase 175A and motor max speed of 60kms/h. Works well as expected but I had to change the VESC configuration of speed controller ramp, I increase the ramp time and so the reaction to throttle is not to much fast.

Now I can ride with the regular throttle, no need to brake, because as soon I release a bit the throttle, the motor brakes and adjust to the new set speed.
So, I tested my Lunyee very low torque and very high speed motor, with a 80V battery and using values like 150A motor phase current. As the seller told me this is a 48V motor, then I decided to test again with a 52V battery I had in stock - I am in the phase that I need to define what will be the final battery, and I know that I use about 220W for each 10 kms I ride near home.

Changing from the 80V to 52V battery, I kept using the same 150A motor phase current, although I noticed and verified on my display, showing the motor current and battery current, that with the 52V battery I could achieve the 150A motor phase current, only briefly at startup, then it drooped to about like 60A at 25 km/h, which means the motor looses a LOT of torque with this 52V battery - and I noticed that with 80V battery I had more torque...

So my conclusion is that Lunyee sent me the wrong motor, as this is very low torque, very high speed and need a very high voltage battery like 80V.

And I am reusing the cells I have around, from old ebike, escooter batteries, including the Fiido Q1S original battery cells (pink on the picture:
  • cell reference: INR18650-26E 2600mAh
  • 2.5Ah capacity each cell
  • 15A max discharge current each cell
  • Fiido Q1S battery pack: 10SP4 374Wh, 40 células in total

I was getting some motor noise and vibrations at high currents / high load, sometimes even motor quick shutdowns (probably VESC protection), when I pulled the full throttle.
I did follow

I did follow the vadicus strategy and now at motor startup it produces a lit less noise as also no more issues!!

1. Inductance. For me, I have to drop it by 2 to almost eliminate cogging. I may still be getting ABS overcurrent fault if I twitch the throttle.

2. Observer gain. If I detect with the stock VESC code, for my motors (large heavy hubs and inrunners), I get detected values of around 1.0-1.22. Get a lot of cogging and ABS faults with that. I have to drop it to almost 0.1 to mitigate the issues.

3. Flux linkage. My detected values hover around 30-35. By dropping it to 25-28, I eliminate the ABS overcurrent issues.

Auto detected values on VESC tool, giving the motor noise and vibrations at high currents / high load:

Working well with values changed using vadicus strategy:

I also found that the VESC Makerbase 75200 Alu fits very well on the seat tube of Fiido Q1S, so later I plan to install it there and make some holes on the seat tube for the cables, etc:


The Lunyee seller sent me this video. They sent me that motor stator so I will exchange to the one I have on my motor, and so then the motor will have the initial specifications we did agree when I bought the motor.

For my calculations, the motor will have less 30% speed and also 30% higher torque!! so, instead of the 130 kms/h no load speed with my 72V battery, it will have instead 100 kms/h - more than enough as on my tests, I feel that after 50 kms/h of real speed with me on top, it get's very dangerous, so I would say I do not want more than 60 kms/h max speed.
Just a quick note to say that yesterday I installed new brake pads, but resin type ones and they are totally silent, unlike the original ones that are metallic type and make a lot of noise, which I hate. I bought from Aliexpress and they are totally round:

Finally I received the new motor stator from Lunyee, and now this motor rotates at 69 km/h @48V no load speed as I asked when buying it (and have a good amount of torque!!), while the initial motor they sent me, rotated at 90 km/h at 48@ no load speed, so 30% faster but with very low torque.

To receive this new stator, I had to pay 79€ in taxes + custom service of UPS, while Lunyee sent to me without any costs. Now, I will ask them the 79€, as that was their fault and I should have no extra costs. Also, the initial motor, I asked and paid for the temperature sensor, and this new stator is missing the temperature sensor, so, we always need to remember them otherwise this kind of things happen.

Installing the new stator was easy, I just needed to remove 6 small screws and exchange the stators.

On VESC configurations, I did the new motor detection, FOC parameters detection and hall sensors detection. I kept motor max phase current at 150A. With the wheel on the air, I imediatly saw the motor rotating at lower speed as I expected and validated the expected RPM / wheel speed:
  • OLD stator, no load: @ 48V | 90 km/h
  • NEW stator, no load: @ 48V | 69 km/h -- 30% less speed!!
But the battery I am using on my Fiido Q1S is a 72V battery, and with it I get:
  • OLD stator, no load: @ 72V | 135km/h km/h
  • NEW stator, no load: @ 72V | 103 km/h -- 30% less speed!!
Then I did the first start with me on top of the Fiido Q1S, and I got the front wheel with a imediatly lift!! What a good sensation, however very dangerous. Then I reduced the motor max phase current to 100A and now I feel the same torque as with the old stator. Looking at the stators, seems the new one has more turns with fewer stands. This should be more efficient on the motor controller, this VESC Makerbase 75200 Alu now do not get so hot.

So, finally I am happy with the Lunnye motor on my Fiido Q1S. It has a good ammount of torque, more than what I am using (great if in future I move to some place with more hills), as also has much more speed than what I need - I found the safe limit for me on Fiido Q1S is about 50 kms/h.

As you can see from the pictures of the inside motor, it has big magnets and a large stator, and the dual phase wires are able to carry at least 150A for some minutes, at least based on my experience. Also the motor just get warm to touch if running that 150A for some minutes. I configured the VESC to limit the motor power to 2000W, but I think this motor can handle more, maybe 3000W (??).

The original package, but not showing the protecting plastic bubbles that came:

The stator seems pretty large and is heavy:

On right side the new stator:


The 3 hall sensors:

The magnets seem strong and big:



The temperature sensor (that small diode ??) they installed on the first stator:
Last edited:
I installed a 80 volts 22S battery and I did a ride of 15 kms with it. It was charged only up to 85%.

The motor controller is the VESC Flipsky 75100 providing 60A phase current and 15A battery current, so this Fiido Q1S original motor wass run at 1200W and I got 48.6 km/h top speed!! (my weight is 100kgs) It also has very good torque!!

I touched on the motor a few times and it was ever lower than warm, so probably it can withstand higher currents and power, providing even more torque!!

The image shows the speed as also the altitude, recorded by my Garmin watch.
View attachment 333897

The only downside of this geared motor is the noise it makes and that it does not regen brake.
Would you mind sharing the settings you used? I'm having an issue that apparently others are also having with this controller. that being acceleration and torque at the bottom 50 percent of the RPM band.

I'm running 48v. Do you think that might be part of the issue, since the componentry is designed for up to100v? I know the capacitors are 100v, I assume the fets are as well. other controllers I've taken apart don't seem to utilize capacitors in the same way as VESCs. Less Mosfets, more capacitors. It's just a guess, anyways it's probably something in the settings but I keep tweaking and changing all sorts of things to no avail.
Would you mind sharing the settings you used? I'm having an issue that apparently others are also having with this controller. that being acceleration and torque at the bottom 50 percent of the RPM band.

I'm running 48v. Do you think that might be part of the issue, since the componentry is designed for up to100v? I know the capacitors are 100v, I assume the fets are as well. other controllers I've taken apart don't seem to utilize capacitors in the same way as VESCs. Less Mosfets, more capacitors. It's just a guess, anyways it's probably something in the settings but I keep tweaking and changing all sorts of things to no avail.
Do not make sense to share my settings, as I still have problems and I need more time to change and test.

On my motor, I do not feel a good torque at startup, unless I use very high currents like 150A or more. And I have a good amount of noise at startup / low RPM and it decreases after certain rpm. So I feel low torque at startup but seems it suddenly increase after certain RPM....

But also the auto detection of the FOC parameters, are always different, so I think the parameters detected may be wrong... so maybe the issues are here??
Also others are saying that this controller measures baddly the current...
I updated the Automatic switch anti-spark for JBD BMS board (OpenSource, download for free), on my Fiido Q1S.
I had to improve the firmware, mainly to add the option to turn off the BMS by sending a command by wireless from the display. This is how it works:

What: a small DIY board that automatically switches on the popular JBD BMS, effectively switching on the EBike/EScooter, when there is motion / vibration.
A timeout of 2 minutes, if no motion is detected, will automatically switch off. Also, a wireless communication accepts a command (for instance, sent from a display) to switch off.

Avoids the need to install a mechanical switch and also adds the safe timeout that automatically switches off the EBike/EScooter.

I also decided to improve the DIY board. As I received the relay with a 3.3V coil, so no need for an extra mosfet nor a extra DC-DC, as I had before. I also removed the buzzer, as after putting the battery protected with tape and inside a box, the buzzer is not audible - maybe I will add the buzzer instead to the display, ro simple not use it at all.

This is the very simple schematic:

This is the final DIY board:

Understand the firmware​

The main firmware:

  • Starts by turn the relay switch pins to high state / 3.3 volts, as needed to switch on the relay, that in turn will switch the BMS.
  • Initialize the ADXL345 and enable the motion detection. The ADXL345 will change the INT1 pin when it detects motion.
  • A PinAlarm is created, this will wakeup the ESP32-S2 everytime the ADXL345 INT1 pin changes.
  • The code inside the while True will run continuously until the timeout happens (no motion detected during timeout_minutes_to_disable_relay minutes - 2 minutes) or the wireless command to switch off the relay is received.
  • Next code switches off the BMS by turning the relay switch pins to logic 0 / 0 volts.
  • Finally, ESP32-S2 enters in deep sleep mode (ultra low power), keeping the relay switch pins in the state to keep the BMS switched off. The motion alarm will be active meaning the ESP32-S2 will then wake up when detection motion, and the firmware will run again starting from the begin.


  • 1688391949893.png
    386.2 KB · Views: 2
  • 1688392321852.png
    6.7 MB · Views: 2
  • 1688392323736.png
    6.7 MB · Views: 4
I am slowly improving and riding.

I had an issue on the ESPNow wireless firmware, both data from EScooter board to display and from the display to the BMS turn on/off DIY board, were failing. I found that I was doing an incorrect initialization and now it works flawlessly, as expected.

Here is a video of me showing the system turning on/off:

And I just did for the first time, carry my Fiido Q1S on my car - I had to bend the handlebar and then is a perfect fit, and not difficult to lift the Fiido Q1S, as it is light:

Last edited:
I bought a "Turn Signal Horn ON/OFF Button Quad Light Switch" on Aliexpress. I am looking to use it to control the turn left/right lights, enable/disable the front light, and enable the cruise control (using the horn button, as I will not install a horn).

I will connect all the buttons wires to the DIY display, and the buttons state will be sent wireless to the EScooter board, as that button state from the remote (seen on the images), are already sent. Using wireless means I will save to use long wires and so avoiding adding extra electrical noise to the EScooter board.

I am also thinking in doing a stand alone lights board, that have his own 12V DC-DC supply from relative high currents used by all the lights, that will also communicate by wireless with the EScooter board - this way to make the electronics much more modular as also will save to use long wires and so avoiding adding extra electrical noise to the EScooter board.

Pictures of the "Turn Signal Horn ON/OFF Button Quad Light Switch" on the left and the display remote buttons on the right:


Picture of the buttons inside including the connections - this are plain basic switches, which is good both for this DIY build as for future repair in the case it will be needed:

I’ve been following your posts across various forums for quite some time. I moved over to VESC about a year and a half ago. Using them on scooters with really good results but still getting cogging noise at high speed and occasional ABS overcurrent issues. Nothing huge but annoying.
Followed the Vadicus strategy and man, what a difference. Lowering observer as well as the other recommendations ( can’t remember off hand) really make the controller run smoothly with Hub motors.

I disassembled the Fiido Q1S throttle battery state indicator and I am sharing pictures - that is so cheap, just some LEDs and resistors...

I build my DIY display that has a similar size as original case of that LED indicator. I will remove that original board and add my display - I will need to make some adaptations for sure, some plastic glue, etc, but in the end, it will be water prof.





The EScooter DIY Lights board I am building. It will control my Fiido Q1S lights for: headlight, tail, brake, left and right turn lights.

This board needs 12V input, can be a long wire from a DC-DC placed near the battery, that will convert the battery voltage to the 12V.

All the lights are 12V, just like the motorcycles lights. I used mosfets to simple turn on/off each light.

I decided to use an ESP32 microntroller that will control the lights and communicate wireless with the EScooter main board. This way I save 5 long wires that would be connected the EScooter main board and would bring electrical noise to it. Also, this way, this lights board is modular, meaning it can be used on any other device like my EBikes or other ESCooters.


This is the Proof of Concept I did for the circuit to enable/disable one light as the tail light - P mosfet BSP171 + N mosfet FDV301. The board is composed with +4 circuits like these + the microcontroller board + the DC-DC to power the microcontroller board with 5V.


As I posted before, all my rear lights are done with LED bars I bought on Aliexpress. The headlight, for now I will usee the Fiido Q1S original. I will also install turn signal ligths and front, on the handle bar - also bought them on Aliexpress.


Last edited:
You made one pedal driving but for ebikes. Nice!
It is just the speed controller of VESC, that is a PID controller. The throttle position defines a target speed - on my case, I set from 0 to 55kms/h, so max speed will be limited to 55kms/h.

When the throttle moves faster and far from actual value, be it to increase or decrease, the VESC will provide higher motor current. Increasing, it will make motor motor torque and decreasing, it will brake / regen and will recharge the battery. This is how VESC speed controller works.