About the project

  1. about this documentation in HTML
  2. License

Development tools

  1. Linux
    1. Step-by-step tutorial development tools
      1. Tools to build the firmware
        1. stm8-binutils-gdb
      2. Tools to flash the firmware
        1. How to erase and unlock protected read memory
      3. Hardware tools to flash and debug the firmware
      4. (optional) Tools do flash and debug the firmware
      5. (optional) Tools to debug using serial port
      6. (optional) Tools to see diffs on the source code
  2. Windows
  3. C library
  4. Other tools
    1. Battery voltage boost step-up converter

Motor controllers

  1. BMSBattery S series
    1. BMSBattery S06S
      1. S06ST (torque sensor version)
      2. S06S-BL (Bluetooth version)
      3. PWM signals
        1. very low speed - 6 steps
        2. low speed up to max speed - sineware
      4. Phase B current signal
      5. Throttle
    2. BMSBattery S12S
      1. Programming header
      2. PWM signal at max speed - sineware
      3. Phase B and motor total current signals
    3. BMSBattery bottle battery controller
    4. LCD control panel
      1. LCD protocol
    5. Bluetooh
      1. DIY Bluetooth module
    6. How to open the controller and solder the programming header
    7. Hardware mods
  2. Other controllers
    1. BMSBattery S06P
      1. various info
        1. 01
        2. 02
    2. Kunteng 18 mosfets motor controller
    3. Lishui motor controllers
      1. LSW-675
        1. Datasheets
        2. PWM signals
    4. JinHui motor controllers
  3. GreenEBikeKit


  1. BMSBattery Q75
  2. BMSBattery Q85
  3. BMSBattery Q100
  4. BMSBattery Q100C

Torque sensors

  1. BMSBattery torque sensor

Datasheets and application notes

  1. STM8S105C6T6
    1. Interrupts

Motor control

  1. Torque speed
  2. Motor control scheme of S06S controller
  3. BLDC 6 steps
  4. PWM schemes
    1. So, Which PWM Technique is Best? (Part 1)
    2. So, Which PWM Technique is Best? (Part 2)
    3. So, Which PWM Technique is Best? (Part 3)
    4. So, Which PWM Technique is Best? (Part 4)
    5. So, Which PWM Technique is Best? (Part 5)
    6. So, Which PWM Technique is Best? (Part 6)
    7. So, Which PWM Technique is Best? (Part 7)
  5. PWM control and Dead Time Insertion
  6. Low inductance motors
  7. Throttle Control Modes
  8. Phase angle FOC
  9. PWM frequency VS motor eRPM
    1. Max motor speed using FOC
    2. Kelly controllers ultra high speed
  10. Sinusoidal Control of BLDCM with Hall Sensors Based
  11. Self-Learn Hall Sensor Calibration Mode
  12. STM8S105 Alternatives
  13. Regeneration
    1. Regen in SimonK firmware


  1. forum messages
    1. 2017.04.25 - Initial forum message
    2. 2017.05.08 - First flash and debug on a dev board
    3. 2017.05.18 - First code flashing and running
    4. 2017.05.20 - more new information
    5. 2017.08.23 - SxxP versus SxxS versus LSW-675
    6. 2017.09.01 - Trying to figure out an algorithm to automatically adjust ui8_position_correction_value
    7. 2017.09.02 - How to do FOC on the BMSBattery S06S/Kunteng STM8 motor controllers
    8. 2017.09.03 - more ideas about zero crossing for FOC
    9. 2017.09.05 - measuring IQ current and manually adjusting position_correction_value
    10. 2017.09.15 - our OpenSource firmware efficiency compared to Lishui 12 FET FOC
    11. 2017.09.19 - measuring motor current
    12. 2017.10.23 - FOC and no FOC comparison
  2. STM8S003 board
  3. 2017.12.01 - Regen ebrake like coast brakes


  1. 2017.05.22 - Hackaday Links: May 21, 2017

Smart BMS with bluetooth

About the project

Project history
Project status

Project history

I started this project on 25 April 2017 because I would like develop an OpenSource firmware for the EBike controllers. Why I am wanted to do that? because I wanted to use a well know controller that it is easy to repair/mod/adapt for my specific projects. I am developing the firmware for it, as OpenSource and I would like to share with others that have the same needs. My mission is similar to the Tesla mission ( "to accelerate the advent of sustainable transport" and innovation on personal light electric vehicles.

The idea was to found a cheap and widely available EBike controller that could be programmable. I was developing, since 2015, firmware for the controllers of electric unicyles and they use the microcontroller STM32F103, that is very cheap and popular - the board is also cheap and widely available on market, that comes from China. By the way, the hoverboards controllers use the same STM32F103 microcontroller.

For EBikes, I found the most recent BMSBattery S series controllers like S06S sinewave use the STM8S105C6T6 microcontroller that is programmable, easy and cheap to develop for. There are OpenSource and cheap development tools for it.

BMSBattery sells the S series controllers, starting with S06S of 24/36V 15A (0.5kW, 6 mosfets) up to S12S of 72V 40A (2.9kW, 12 mosfets).
This controllers are developed by Kuteng ( | There are available on the market in many different versions of Kuteng controllers, from 24V, 36V, 48V and 72V, with max currents of 70A (5kW, 18 mosfets).

The firmware sources are available on github and we communicate together on the Endless forum message.

Over the time, more and more users/developers did join the project and it was not anymore my project but a community project as I wished since the begin! You can find their nicknames and contributions on the forum message or git commits.

Project status

As of 14 December 2017, the firmware is still experimental however we already use it on our EBikes :-)
See some videos on youtube by searching on youtube for “OpenSource firmware Ebike BMSBattery”.

Current state:
1. Tested on:
1) S06S and S12S motor controllers
2) Q85, Q100 and Q11 (direct drive) motors
3) 24V and 48V batteries
4) LCD3 and LCD5
5) throttle; PAS and pedal torque sensor
2. Features:
1) motor works well: starts with block commutation and then changes to sinewave
1- implemented “very low resolution FOC” that gives good efficiency (see next point)
2- efficiency is good, at least equal to original firmware and near to Lishui 12 fets FOC controller
1> there is one parameter that can be tweaked to make sure firmware is getting out the most efficiency possible from the controller
4- regen ebrake (see this video showing regen ebake working and Regen ebrake like coast brakes)
5- torque controller/motor current controller
6- motor speed controller
2) LCD3 and LCD5 works (not all features are implemented yet). What works:
8- shows:
1> motor speed
2> battery state
3> motor power usage
4> throttle active
5> brake active
6> some errors
9- changes:
7> assist level
8> max motor speed
9> P3: Power Assist Control Mode
10> C5: Controller Maximum Current Adjustment Mode
3) Throttle: works
4) Brakes: works
5) PAS: works
6) Torque sensor: works