• 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!

TSDZ8 OSF (open source firmware)

Hey, I plan on using a 72v battery with a TSDZ8 motor at 26-32A.
Is it going to blow up?
Melt? Anyone else done this?
 
Hey, I plan on using a 72v battery with a TSDZ8 motor at 26-32A.
Is it going to blow up?
Melt? Anyone else done this?
I expect that the controller will not support such a high voltage. Some components are rated for 60V max.
 
Hey, I plan on using a 72v battery with a TSDZ8 motor at 26-32A.
Is it going to blow up?
Melt? Anyone else done this?
Rotor construction is similar to BBSHD, so the magnets should survive the RPM increase easily. Either the nylon gear or the clutch will be the weak point and you should definitely add a temp sensor and monitor it properly.
 
Last edited:
in the meantime, if anyones interested ;)
My most recent custom build

A meme-grade performance firmware for the TSDZ8 mid-drive that somehow survived QA.
It rethinks the FOC angle, duty-ramp logic, and launch behaviour — delivering snappier torque, smoother soft-starts, and occasional rider ejection.

Safe to test. Unsafe to underestimate.

⚙️ Core Features
⚡ Phase amps up. Battery amps follow. TSDZ16 for the price of a z8 :) 50A/30A

⚡ Launch Logic 2.0 — spins slow until it feels a load, then delivers divine punishment.

🧠 FOC Advance Personality — adaptive lead-angle based on current and mood.

🛞 Duty Cycle Controller — progressive ramp with soft-launch failsafe (because hard-launch was a lawsuit).

🔥 Overcurrent Handler — tries its best to stop you from reinventing fireworks.

🧯 Failsafe Timeout — gives up after 300 ticks, assumes you met God.

🧠 Commit Highlights
feat: launch control implemented — sometimes launches you too
fix: motor now understands "gently" (most days)
perf: 0-to-oh-dear-god times improved by 420%
refactor: smoothed duty ramp, roughened pavement
docs: added disclaimer so my lawyer can sleep
meta: rider lift coefficient successfully exceeds expectations

🧩 Known Issues

May treat gentle throttle as emotional betrayal.

Chain durability now measured in seconds per smile.

Occasionally confuses “traction” with “suggestion.”

Hybrid and Power pas modes are currently borked

⚠️ Disclaimer
DO NOT USE IF YOUR BATTERY BMS IS LOWER THAN 30A
I can make a release for normal 24a if requested

This firmware is tuned for enthusiastic physics experiments.
Safety limits (voltage, current, thermal) remain active — but physics doesn’t care.
Use at your own risk. Possible side-effects include:

spontaneous wheelies,

emotional bonding with asphalt,

and unplanned rapid ascension events.

Ride safe, laugh louder, and remember:
Torque is a privilege, not a right.

Grab it here - Release TSDZ8 — Motor Launch Yes / Rider Launch Yes · 8hodgsonkh/OSF_860C
Do you think you will continue to develop?
 
I keep getting E09 error on V0.2.1 update. It seems to happen when I pedal very slightly and not push. What can it be? Could it be that the ADC offset (no weight) is causing it?
 
Today, after about six months, I wanted to get my bike out of the basement and go for a ride. Unfortunately, it immediately displayed E02. The battery was full, and I tried several pedal positions without success. Last year, I rode many times with my settings (see screenshot).

So I unpacked the flasher, flashed the firmware OSF_TSDZ8_VLCD5_KATANA_2_V00_01. 35.hex (I don't know if OSF_TSDZ8_VLCD5_SPIDER_3_V00_02.01.hex is already stable) and created a new configuration with an ADC offset (no weight) of 200. I also increased the battery current max to 23 and the motor power max to 1200.

The display now worked without E02, but I didn't notice any support. The Walk Assistant also didn't work and I couldn't get any data to display (it always shows 0).

I tested the old firmware again and also set the battery current back to 21 and the motor power to 1000.

None of this worked. Only when I changed the mode from Hybrid (which I had always used without any problems) to Cadence did the motor at least start (Walk Assist and data display still don't work).

Does anyone have any ideas? Is my torque sensor broken? The bike has been sitting around unused for the last few months. Everything was fine the last time I rode it.

Update:
I've been experimenting a bit. I've been using my VLCD5 display from my TSDZ2 since the beginning. As a test, I just connected the unused one that came with the TSDZ8 order. The data is not displayed here either, and the motor does not run on Power/Torque either – but Walk Assist works. Strange. The button on the “old” display works, so that's not the problem. But ultimately, that doesn't really help me.

I have now also tried the original firmware TSZ8_750W_test3.0_20240802.hex (once with Z8 Config, once without). Unfortunately, there is no support for pedaling here either. (But again, old display -> no walking assist, new display -> walking assist).

Every time I changed the firmware, I also did a clean beforehand. I also set everything up again according to the instructions (TSDZ8 firmware update using J-Link JLink v9 programming kit).

I think I'll have to unscrew the motor and see if I can see anything, or I'll buy a new motor.
 

Attachments

  • Screenshot 2026-03-08 175603.png
    Screenshot 2026-03-08 175603.png
    209.6 KB · Views: 21
  • Screenshot 2026-03-08 175559.png
    Screenshot 2026-03-08 175559.png
    188.7 KB · Views: 20
  • Screenshot 2026-03-08 175551.png
    Screenshot 2026-03-08 175551.png
    186.5 KB · Views: 19
Last edited:
Today, after about six months, I wanted to get my bike out of the basement and go for a ride. Unfortunately, it immediately displayed E02. The battery was full, and I tried several pedal positions without success. Last year, I rode many times with my settings (see screenshot).

So I unpacked the flasher, flashed the firmware OSF_TSDZ8_VLCD5_KATANA_2_V00_01. 35.hex (I don't know if OSF_TSDZ8_VLCD5_SPIDER_3_V00_02.01.hex is already stable) and created a new configuration with an ADC offset (no weight) of 200. I also increased the battery current max to 23 and the motor power max to 1200.

The display now worked without E02, but I didn't notice any support. The Walk Assistant also didn't work and I couldn't get any data to display (it always shows 0).

I tested the old firmware again and also set the battery current back to 21 and the motor power to 1000.

None of this worked. Only when I changed the mode from Hybrid (which I had always used without any problems) to Cadence did the motor at least start (Walk Assist and data display still don't work).

Does anyone have any ideas? Is my torque sensor broken? The bike has been sitting around unused for the last few months. Everything was fine the last time I rode it.

Update:
I've been experimenting a bit. I've been using my VLCD5 display from my TSDZ2 since the beginning. As a test, I just connected the unused one that came with the TSDZ8 order. The data is not displayed here either, and the motor does not run on Power/Torque either – but Walk Assist works. Strange. The button on the “old” display works, so that's not the problem. But ultimately, that doesn't really help me.

I have now also tried the original firmware TSZ8_750W_test3.0_20240802.hex (once with Z8 Config, once without). Unfortunately, there is no support for pedaling here either. (But again, old display -> no walking assist, new display -> walking assist).

Every time I changed the firmware, I also did a clean beforehand. I also set everything up again according to the instructions (TSDZ8 firmware update using J-Link JLink v9 programming kit).

I think I'll have to unscrew the motor and see if I can see anything, or I'll buy a new motor.
Being on the axle where the torque sensor is integrated I wouldn’t be at all surprised if there was some corrosion on the contacts on the little chip on the torque sensor with the magnetic hall sensor that detects the strain of the axle to sense the torque. Water ingress could have caused it to condensate on the contacts when left idle for a period. You should once a year or so take apart the motor & clean & regrease the axel & any bearings with water ingress or bad grease, or at least dry them out. Much cured by storing in a warm place of course.. but every couple thousand miles or couple years everything should be regressed anyway ideally to maximise lifetime if anything else
 
Being on the axle where the torque sensor is integrated I wouldn’t be at all surprised if there was some corrosion on the contacts on the little chip on the torque sensor with the magnetic hall sensor that detects the strain of the axle to sense the torque. Water ingress could have caused it to condensate on the contacts when left idle for a period. You should once a year or so take apart the motor & clean & regrease the axel & any bearings with water ingress or bad grease, or at least dry them out. Much cured by storing in a warm place of course.. but every couple thousand miles or couple years everything should be regressed anyway ideally to maximise lifetime if anything else
I have now tried to unscrew the motor. This seems to be much more difficult than with the TSDZ2, if only because of the paper gaskets. Therefore, I didn't want to continue disassembling it haphazardly.
Can you tell me which component I should remove specifically? Do I need to work on this? https://ebikestuff.eu/img/cms/tsdz8/tsdz8_teardown (24).jpg Then I need to get two strong magnets, because otherwise the magnetic ring could break ( TSDZ2B TSDZ2C TSDZ8 TSDZ16 Mid Drive | If the TSDZ8 motor is disassembled and the large gear is pressed back, if the torque magnetic ring is in this raised state, directly pressing back the... | Facebook )
 
Hi all TSDZ8 52v VLCD5 Just instlled osf hybrid mode i have no errors but motor dont feel like pulls 23a more les like 10a m i doing anything wrong tbf its my secend tsdz8 other bike tsdz8 stock feel very strong punchy any ideas ?
 

Attachments

  • PXL_20260312_171111739.jpg
    7.9 MB · Views: 6
  • PXL_20260312_172515647.jpg
    11.6 MB · Views: 5
  • PXL_20260312_172519800.jpg
    10 MB · Views: 5
  • Screenshot 2026-03-14 045511.png
    Screenshot 2026-03-14 045511.png
    1.9 MB · Views: 8
Hello @mstrens ,

A long while back I asked around here for the status of the custom firmware. I found it a bit hard to follow changes in this thread all the time. I'm using the TSDZ8 with a 850c (I think default firmware?), so as far as I remember I'm forced to use VLCD5 version or buy a new display, correct?

Is it currently seen as stable for general use and am I able to program a street (limited power/speed) vs / high speed mode? Thanks for the reply.
Does someone else here know the answer to my questions? Thanks in advance!
 
@Posing9269
In theory, 850C can be flashed with OSF. However, these displays are not recommended anymore:
"The new 850C displays are no longer recommended as changes in hardware often cause failure of OSF loading and 'brick' the display."

I cannot comment on the standard display version because we haven't tested it. We have a test bike running the 860C OSF. The street mode is enabled at startup. Can be switched off with a key combination (- and power). No issues. It just works
 
Being a software developer I couldn't hold myself from customizing the firmware. After several rounds of tweaking and testing, the motor runs noticeably better for me. Here's what I changed:

Lead angle optimization (main focus):
I adjusted the base lead angle table and correction parameters, monitoring with Coast Brake ADC values 10-14 and aiming to keep the Id correction close to 0 under different conditions. The base table now follows a fitted arctan curve extended to 5500 RPM, with reduced correction step size to prevent oscillation and tighter deadband for more precise convergence.
The practical result: before, I was hitting PWM 100% around cadence 90 meaning the motor couldn't spin faster. Now it has headroom to spare — I can't pedal as fast as it can spin. Theoretically more optimal lead angle should also mean better efficiency.

Field weakening rework:
Replaced the old hall counter offset FW with a simpler approach — when enabled on the display, it targets PWM at ~98% by gradually extending the lead angle. Not easy to test on the road, but with the rear wheel in the air it adds ~10% to top speed.

Cadence error auto-clear:
E03 cadence sensor error now clears automatically when the fault condition goes away — no more turning the display off and on.

Firmware is attached. I did several rounds of testing today and everything seems to work at least as well as mstrens' builds, but as always — flash and use at your own risk.

Disclaimer:
I'm a software developer, not a motor/embedded expert, so I couldn't verify all changes from a motor control perspective. I haven't invented any new logic — just tuned what mstrens built. I've tried to keep everything safe with conservative limits (45° total lead angle cap, slow ramp rates, display toggle for FW). Code is on GitHub (prinf's fork) if anyone is interested. And yes, I used AI to help with the analysis and implementation if that matters.

Huge credit to mstrens for developing this project — without his work none of this would be possible. I'm happy to contribute a bit, but I can't promise ongoing involvement.
 

Attachments

  • tsdz8-fw-20260319_1828.zip
    31.1 KB · Views: 27
Being a software developer I couldn't hold myself from customizing the firmware. After several rounds of tweaking and testing, the motor runs noticeably better for me. Here's what I changed:

Lead angle optimization (main focus):
I adjusted the base lead angle table and correction parameters, monitoring with Coast Brake ADC values 10-14 and aiming to keep the Id correction close to 0 under different conditions. The base table now follows a fitted arctan curve extended to 5500 RPM, with reduced correction step size to prevent oscillation and tighter deadband for more precise convergence.
The practical result: before, I was hitting PWM 100% around cadence 90 meaning the motor couldn't spin faster. Now it has headroom to spare — I can't pedal as fast as it can spin. Theoretically more optimal lead angle should also mean better efficiency.

Field weakening rework:
Replaced the old hall counter offset FW with a simpler approach — when enabled on the display, it targets PWM at ~98% by gradually extending the lead angle. Not easy to test on the road, but with the rear wheel in the air it adds ~10% to top speed.

Cadence error auto-clear:
E03 cadence sensor error now clears automatically when the fault condition goes away — no more turning the display off and on.

Firmware is attached. I did several rounds of testing today and everything seems to work at least as well as mstrens' builds, but as always — flash and use at your own risk.

Disclaimer:
I'm a software developer, not a motor/embedded expert, so I couldn't verify all changes from a motor control perspective. I haven't invented any new logic — just tuned what mstrens built. I've tried to keep everything safe with conservative limits (45° total lead angle cap, slow ramp rates, display toggle for FW). Code is on GitHub (prinf's fork) if anyone is interested. And yes, I used AI to help with the analysis and implementation if that matters.

Huge credit to mstrens for developing this project — without his work none of this would be possible. I'm happy to contribute a bit, but I can't promise ongoing involvement.
Thanks for improving OSF. If you provide me a copy of (or a link to) the files you changed, I could include your changes into the OSF version on my github repository.
 
Thanks for improving OSF. If you provide me a copy of (or a link to) the files you changed, I could include your changes into the OSF version on my github repository.
It was a pleasure to help myself and others with this, hoping that someone can try it and confirm that it works well for them as well :)
As mentioned above you can find the code here GitHub - prinf/OSF_860C at test6_with_pll It includes everything you have in your test6_with_pll branch + the updates. I have prepared patch as well (attached) if it helps. Feel free to pick up any changes from there and let me know if you have any remarks to the updates :)
 

Attachments

  • updates_to_test6_with_pll.zip
    4.8 KB · Views: 20
@Posing9269
In theory, 850C can be flashed with OSF. However, these displays are not recommended anymore:
"The new 850C displays are no longer recommended as changes in hardware often cause failure of OSF loading and 'brick' the display."

I cannot comment on the standard display version because we haven't tested it. We have a test bike running the 860C OSF. The street mode is enabled at startup. Can be switched off with a key combination (- and power). No issues. It just works
Hi, thanks for the reply. You specify a new 850c model? What constitutes as new, I've bought my kit with the display about a 1-1.5 year ago?

And apart from that, is it possible for me to swap the display with my current engine?
 
@Posing9269
Unfortunately, the only info I have is from the release notes linked above. I can't specify which display versions are compatible. I can only tell you that with 860C there are three different releases for different hardware versions of these displays. I would assume that 850C had similar hardware changes, but there is no information available.

Regarding the display, you have several options. For the 860C OSF you need 860C or SW102 display running OSF. You can either purchase those already flashed with OSF or flash them with OSF yourself.

The standard protocol version of the OSF should work with the display you already have. I can't tell you more because we haven't tested that version thoroughly. The lack of configuration options in the display makes it hard to calibrate the torque sensor or change anything
 
Bonjour, mon message est en français désolé.
Je suis en tsdz8 + ecran EDK01 (acheter chez Varstrom) C’est possible de changer l’osf ?
 
Hi everyone,

I know this forum is mainly about OSF for the TSDZ8, but I’d like to ask if anyone has already been thinking about or testing the TSDZ16 controller in relation to OSF. Do you think it will be another challenge to make this motor customizable to our own preferences?

Also, will flashing the controller require the same J-Link V9 module, or do you see it working differently?

What’s your opinion on this?
That's what brought me here...I'm also hoping to see custom firmware development to include the TSDZ16. Also, does anyone know if the edk01 display is supported?
 
That's what brought me here...I'm also hoping to see custom firmware development to include the TSDZ16. Also, does anyone know if the edk01 display is supported?
supported on the tsdz16 or in the tsdz8 osf? pretty sure it's yes to both.
 
supported on the tsdz16 or in the tsdz8 osf? pretty sure it's yes to both.
Oh...I just assumed that this OSF wasn't compatible with the TSDZ16. I see now that edk01 display works, so that's a plus. I guess the question I should be asking is about the java parameter configurator that's used to generate the configuration file. Is that compatible with the TSDZ16 48v for making adjustments to the factory settings? I only see TDSZ2 36V, TDSZ2 48v, and TDSZ8 .ini options.
 
@Posing9269
Unfortunately, the only info I have is from the release notes linked above. I can't specify which display versions are compatible. I can only tell you that with 860C there are three different releases for different hardware versions of these displays. I would assume that 850C had similar hardware changes, but there is no information available.

Regarding the display, you have several options. For the 860C OSF you need 860C or SW102 display running OSF. You can either purchase those already flashed with OSF or flash them with OSF yourself.

The standard protocol version of the OSF should work with the display you already have. I can't tell you more because we haven't tested that version thoroughly. The lack of configuration options in the display makes it hard to calibrate the torque sensor or change anything
Alright, thank you. I think I will be purchasing the pre-flashed 860c then. I already have the j-link to flash the TZD8 itself with OSF. Finally, do you know if you can set a password on when you enter the settings menu, or only on boot of display? Thanks
 
@Posing9269
As far as I know, OSF only supports setting a password for the 'Bike' menu. You can check the OSF manual for the configuration settings.
The original 860C/850C firmware lets you configure a startup pin/password
 
Back
Top