• Hello ES! We could use some help to get us past the finish line on building the new knowledgebase for the forum.
    Can you donate? Please see our fundraising page. Thank you!

TSDZ2 OSF for all displays, VLCD5-VLCD6-XH18, LCD3, 860C-850C-SW102.

Hi,
I’m trying to find the reason why my TSDZ2B is limited to a max speed of 40 km/h. I haven’t changed any settings; it just happened one day after doing some maintenance on the bike.

After checking various potential causes, I’m left with one: a decalibrated torque sensor. I have a few questions regarding this:
1. What are the typical symptoms of torque sensor issues?
2. Can I calibrate it using the 850C display?
3. Can I perform this procedure on the 850C with Emmebrusa OSF without connecting to the Java configurator? (My controller is damaged and is not being detected by the ST-Link v2).

thank you
Only from version v20.1C.6-update-2 is it possible to perform an alternative torque sensor calibration on the display. Find the description in the manuals.
Previous versions require a reflash, after entering the offset and max values in the JavaConfigurator.
 
thanks, it works with your 2 files, new firmware in the bike within 30 secondes, thanks for your great job !
 
Curious one here. Just installed this after some reconfiguration on a tricycle. Mostly everything is fine - minor quirks of the battery meter, because I'm using a 51.2v 16s LiFePO4 pack instead of the more common 52V 14s lithium ion - but there's one that's awkward.

Acceleration is fine right until I hit the peak speed - on the trike, that's between 16.5 and 17mph - and then I get uneven acceleration with a lurching behavior as it tries to maintain speed. My speed mostly isn't changing in any significant fashion, fluctuating within 0.2mph, but the feel of acceleration and then no acceleration is noticeable. This didn't happen on the stock firmware, which leaves me with the potential that it's my configuration. I've attached that below.
 

Attachments

  • Screenshot 2026-05-22 155534.png
    Screenshot 2026-05-22 155534.png
    82.6 KB · Views: 15
  • Screenshot 2026-05-22 155543.png
    Screenshot 2026-05-22 155543.png
    67.6 KB · Views: 14
  • Screenshot 2026-05-22 155552.png
    Screenshot 2026-05-22 155552.png
    69.2 KB · Views: 14
You're probably reaching the maximum motor RPM set in OSF. This is likely to happen with a 36V motor powered by a 51.2V battery.
You can set the frequency to 19 kHz, which will proportionally increase the maximum RPM.
To verify, try temporarily setting Data 1 to 11 (motor ERPS) and Time to displayed data 1 to 0 (no time limit).
When you turn on the lights, the motor's ERPS (electrical revolutions per second) will be displayed.
Check the value when the problem occurs; the maximum expected value is 656.
If it reaches this value, the system adjusts the current so as not to exceed it.

Regarding the battery indicator, in the "Battery cell settings" section, you should set values appropriate for a LiFePO4 battery.
 
I am going to ask some daft questions here, following from the previous reply, will a 36V motor run on reliably on 48V, how doe's that apply regarding a 36V controller on a 48V battery. The reason for the question(s) is that I have a couple of new TSDZ2(B) bare motors in the cupboard but there is not voltage markings on them, I thought there was a variation in the motor windings which dictated the working voltage. Must get around to loading the latest OSF still running v20.1C2-2, but it doe's the job for me.
 
My spare TSDZ2B does shows the voltage, but that is a pswpower USA version,

The controller is the same, except for firmware in it. You can change that, but the 36V motor is wound to spin faster, That makes the 48V motor slower on 36V. I found my 48V TSDZ2 was not much fun when I configured OSF's LVC to let it run under 40V, but I didn't set mbrusa's OSF motor acceleration parameter. Might have made a difference. On the other hand I suppose a 36V motor wil be happy at 48V as long as you lower the max current for reliability.

By the way the old eco-cycle website (now defunct but still archived) describes how to use the STM link to adjust volatge and current in stock firmware. You could do the above without using OSF. I initially changed my TSDZ2 from 15A to 18A on stock firmware, but it runs better on OSF and probably rarely exceeds 12A.
 
The controllers are exa
....regarding a 36V controller on a 48V battery. .....
The hardware of both controllers are exactly the same only programming is different and of course the bare motor inside the tsdz2B version.
 
One learns something new every day, I have spare V1 controllers marked 36V and 48V, along with a couple of motors, I have a third which is for a coaster brake which has the straight cut output gear. Makes sense really as one just programs the controller to suit the operating voltage, the penny has dropped or had a "aha!" moment. :unsure:
 
You're probably reaching the maximum motor RPM set in OSF. This is likely to happen with a 36V motor powered by a 51.2V battery.
You can set the frequency to 19 kHz, which will proportionally increase the maximum RPM.
To verify, try temporarily setting Data 1 to 11 (motor ERPS) and Time to displayed data 1 to 0 (no time limit).
When you turn on the lights, the motor's ERPS (electrical revolutions per second) will be displayed.
Check the value when the problem occurs; the maximum expected value is 656.
If it reaches this value, the system adjusts the current so as not to exceed it.

Regarding the battery indicator, in the "Battery cell settings" section, you should set values appropriate for a LiFePO4 battery.
That makes sense. I'll try setting that up when I get the opportunity and seeing what the output looks like.

I'm less concerned about the battery indicator - I did try setting up the values as appropriate (3.40 full, 3.2-3.32 for the 20% - 80% range, 3.0 at 10%, 2.5 at full discharge), and it generally seems to read fine when I'm stopped. When I'm going, I've seen it fluctuate from 1 bar to full, mostly dependent on the amount of power necessary at the time. It'd be nice if it was more stable while moving but as long as it's not causing the BMS to trip, it's mostly whatever, and I've only ever drawn down the pack to fully discharged once since putting it together, right after getting the motor properly installed in the first place.
 
If the displayed voltage (and the SOC bars) decrease as the power increases, it means the battery's internal resistance value, entered in the configurator, is too low.
Try increasing this value until the voltage display remains stable.
If you enter a resistance value that is too high, you'll have the opposite effect.
As the power increases, you'll also see the displayed voltage increase.
 
Hola
I've read a lot on forums about bluetooth+TSDZ2, but they're discontinued projects with no updates. Only emmebrusa is a current project.I have a TSDZ2, but I don't know if it's compatible with updating the firmware via Bluetooth. Any suggestions? Thanks
 
...I have a TSDZ2, but I don't know if it's compatible with updating the firmware via Bluetooth. Any suggestions? Thanks
You have ask this question in more than one topic. But the answer will exactly the same............ No!
The OSF from @mbrusa is partly based on the bluetooth version of @mspider65, because he has done a lot of interesting improvements, but it isn't compatible.
Both versions have their own Github pages which you can find on the first post of these topics. So you must choose which version you want to use.
 
Last edited:
Hello
Yesterday I downloaded version 20.1C.5-1-1-860C.hex and today I went to check out the improvements it has over the previous version. I was driving with the default settings at level 1, and after about 20 km, the controller failed. I had been driving with version 20.1C.4-3-860C.hex without any problems. I made the change based on the opinion here that it should make the engine quieter.
What could have caused my failure?
 
To understand the cause, you need to know what the fault is.
You say the controller has stopped working. What does that mean?
Is there an error message?
Motor type, battery data, display type?
 
First, I'd like to thank @mbrusa for the work he put into the software. For us e-bike enthusiasts, this is a special project. I'd like to know what could be causing the motor to spin for a long time after stopping pedaling in hybrid and EMT modes. Additionally, when the power is turned on in either of these modes, The engine gently jerks forward. Nothing bad happens in power mode.I'm posting a video of the ride. The software is v20.1 c 5.1

 
To understand the cause, you need to know what the fault is.
You say the controller has stopped working. What does that mean?
Is there an error message?
Motor type, battery data, display type?
13s battery, 860C display, 48V TSDZ2 motor. When I left home, the battery was at 65% charge. After 20 km, I felt resistance, looked at the LCD, and it was off. I thought the battery had failed because it didn't respond to being turned on. After returning, I checked the battery; it was fine as before the trip. I powered the display externally and it's working. I think the controller isn't supplying voltage to the display. I already have it on the table; I'm going to test it right now.
Edit:
Sorry for the confusion, there was a coincidence, a failure after uploading the program. The engine on the table is working. I'm going to reinstall it on the bike.
 
Last edited:
First, I'd like to thank @mbrusa for the work he put into the software. For us e-bike enthusiasts, this is a special project. I'd like to know what could be causing the motor to spin for a long time after stopping pedaling in hybrid and EMT modes. Additionally, when the power is turned on in either of these modes, The engine gently jerks forward. Nothing bad happens in power mode.I'm posting a video of the ride. The software is v20.1 c 5.1

The parameter that defines the motor's stopping time is "Motor deceleration."
If set to zero, the maximum deceleration ramp is active; if set to 100%, the minimum deceleration ramp is active (quicker stopping).
In your case, however, I think such a long stopping time is due to an unstable torque sensor value that varies with temperature.
Try gradually increasing the "Torque ADC Offset" value until you achieve the desired stopping time; the start-up jerk should also disappear.
In Hybrid mode, it will definitely work, while in eMTB mode, a fix is needed; this has already been done in the stock display version, but not yet for the 860C version.
Also keep in mind that without a load, the motor can continue to coast.
 
Edit:
Sorry for the confusion, there was a coincidence, a failure after uploading the program. The engine on the table is working. I'm going to reinstall it on the bike.
Isn't it a wiring issue?
Something similar happened to me during a trip: a wire came loose from the adapter cable connector between the controller and the display.
I plugged the display in and out dozens of times to program it, but even though I was careful to pull on the connector and not the cable, it broke during the trip.
 
After reinstalling it on the bike, everything was fine. The battery was still at 65%, so I went for a ride to check its operation. After 2 km, the same thing happened: a dark screen and no response to the switch. When I got back, I immediately checked the battery. It turned out that one section had probably failed, and the BMS had tripped. I installed a second battery and rode 30 km without any problems.

The battery failure coincided with the program change.
 
Hello everyone, it's time to release an update for the 860C version as well.
There are many changes, some carried over from the stock display version, and a few new ones.
You can find the list in the link in the signature.
Here are the most important:
- Street mode menu removed, merged into the Bike menu.
- Added motor efficiency calculation to be displayed in numeric and graphic fields, and "Low efficiency" warning message, with adjustable threshold.
- Added distance that can be traveled with remaining battery capacity, and set SOC text for each screen (soc%, voltage, distance).
- Added auto modes to Startup assist, with adjustable time and threshold.
- Added Extended boost feature.
- Added Constant power feature in torque-based modes.

For details, see the Display-Configuration-Guide.

I've only tested the 860C; a volunteer is needed to confirm it also works with SW102.
 
Hello everyone, it's time to release an update for the 860C version as well.

I've only tested the 860C; a volunteer is needed to confirm it also works with SW102.
Thank you for this new release mbrusa !

Concerning the SW102, there seem to be some bugs :
In Bike menu :
- Max power is locked to 75W.
- The edit mode is locked on Street.
In SOC menu :
Only the text display of SOC% and Distance works. When Volts is selected, random numbers are displayed on top of the screen.
 
I checked and found no errors, also because the affected code is common with the 860C; only the text displayed in the menus changes.
Are you using the password in the Bike menu, or is it disabled?
 
Are you using the password in the Bike menu, or is it disabled?
It is disabled. I can edit the value of max power, but it returns to 75W when I confirm the change. If the password is enabled (it was by default) I can't edit the value.
 
I double-checked the Bike menu; the SW102 code is the same as the 860C, which works correctly.
Rereading what you wrote, I have a doubt. You wrote:
In Bike menu :
- Max power is locked to 75W.
- The edit mode is locked on Street.
What you described is the typical behavior with password enabled without login.
Does the same happen with the other parameters in the Bike menu?
If so, I assume you haven't disabled the password. Check if "Password enabled" is still set to "yes."
In this latest version, to disable the password, you must login with the default password; it's stated in the guide.
Please check if my guess is correct. Thanks.

Regarding the issue with the Volts display next to the battery symbol, I think it's because I increased the field by one character.
The code included a "V" after the voltage value, but it wasn't displayed because the field was too short.
There's probably no space for another character on SW102; it's just a matter of returning the field to its previous length and recompiling.
 
Last edited:
Back
Top