mahle x20 firmware update

mschwett

Well-Known Member
Region
USA
i was surprised to see a while back that the "new" version of the mahle x20 was being rolled out to older bikes - everything but the UDH support, of course, since that's a physical thing.


i have a scott addict eRide with the x20. it's a nice bike, but certainly not the bike for someone who wants to go fast up steep hills as @Yako reported in his excellent testing. it suits me better than most of the more powerful mid drive road e-bikes though, as it is so very similar to my non electric road bike, down to the exact same crank, cassette, etc etc. the frame geometry is pretty close, i have the same saddle, they both have a one piece cockpit, similar carbon wheels and the same tires. i'm waiting to try the scott fastride with the new TQ motor, which may be even better yet, and is a few lb lighter.

so, i was interested to see if the update really made much difference. no super scientific testing here, just a ride up my commute home hill twice in the same day, once before, once after the firmware update. sadly the data exported by the mahle ride portal is really crappy, with samples only every 5 to 7 seconds, so i had to resort to AI to extract more granular data from screen capture videos of the app.

firstly, and i've mentioned this before, the bottom bracket "power meter" in the x20 system is junk - at least, MINE is. they claim something like 5% accuracy but it's way off. both my road bikes have the same 4iiii precision dual sided power meters, and i know from 15,000+ miles of riding, tracking heart rate, looking at the data of hundreds of rides that the numbers produced by the 4iiii units are basically correct. here's a comparison of the x20 data to the 4iii data. these are smoothed to a couple seconds because it's even more useless otherwise. if you shift the blue line up 25-30 watts, it starts to approximate the red line in a few spots, but it's junk data, basically. a couple possibilities - mine isn't working right (i have swapped the crank a few times), it isn't properly discriminating or combining left and right legs, or maybe it's just a bad system. given that the whole bottom bracket with torque and cadence sensor costs $200 and just one half of the 4iiii unit costs more than that, it makes sense that it's not great, i suppose. if it was that easy, every power meter for a road bike would be some little gizmo in the bottom bracket.

mahlePowerBad.jpg

so, with the big caveat that the mahle "rider power" data is near useless, here's a comparison of rider and motor power for the same short but fairly steep hill (10% average grade, max 15%) before and after the update.

mahleFirmware.jpg


the chart is a little hard to read, but the bottom line - it does provide more power at pretty much every speed. i didn't match my efforts all that well (the thin red line is higher than the thin blue line by 10 watts or so) but the average multiplier of rider to motor power is about 10% higher, and the peak power is more like 20 percent higher. overall, very cool that mahle rolled this out to everyone with the x20. the update was painless, just tapped check for update on my phone and then hit update, waited a few minutes, and done. since this is a hub drive, you can't reach peak power at such low speeds. i imagine on a slightly lesser hill (6-8%) it would be possible to peg the motor at the 240+ mechanical watts advertised.
 
i was surprised to see a while back that the "new" version of the mahle x20 was being rolled out to older bikes - everything but the UDH support, of course, since that's a physical thing.


i have a scott addict eRide with the x20. it's a nice bike, but certainly not the bike for someone who wants to go fast up steep hills as @Yako reported in his excellent testing. it suits me better than most of the more powerful mid drive road e-bikes though, as it is so very similar to my non electric road bike, down to the exact same crank, cassette, etc etc. the frame geometry is pretty close, i have the same saddle, they both have a one piece cockpit, similar carbon wheels and the same tires. i'm waiting to try the scott fastride with the new TQ motor, which may be even better yet, and is a few lb lighter.

so, i was interested to see if the update really made much difference. no super scientific testing here, just a ride up my commute home hill twice in the same day, once before, once after the firmware update. sadly the data exported by the mahle ride portal is really crappy, with samples only every 5 to 7 seconds, so i had to resort to AI to extract more granular data from screen capture videos of the app.

firstly, and i've mentioned this before, the bottom bracket "power meter" in the x20 system is junk - at least, MINE is. they claim something like 5% accuracy but it's way off. both my road bikes have the same 4iiii precision dual sided power meters, and i know from 15,000+ miles of riding, tracking heart rate, looking at the data of hundreds of rides that the numbers produced by the 4iiii units are basically correct. here's a comparison of the x20 data to the 4iii data. these are smoothed to a couple seconds because it's even more useless otherwise. if you shift the blue line up 25-30 watts, it starts to approximate the red line in a few spots, but it's junk data, basically. a couple possibilities - mine isn't working right (i have swapped the crank a few times), it isn't properly discriminating or combining left and right legs, or maybe it's just a bad system. given that the whole bottom bracket with torque and cadence sensor costs $200 and just one half of the 4iiii unit costs more than that, it makes sense that it's not great, i suppose. if it was that easy, every power meter for a road bike would be some little gizmo in the bottom bracket.

View attachment 205490
so, with the big caveat that the mahle "rider power" data is near useless, here's a comparison of rider and motor power for the same short but fairly steep hill (10% average grade, max 15%) before and after the update.

View attachment 205491

the chart is a little hard to read, but the bottom line - it does provide more power at pretty much every speed. i didn't match my efforts all that well (the thin red line is higher than the thin blue line by 10 watts or so) but the average multiplier of rider to motor power is about 10% higher, and the peak power is more like 20 percent higher. overall, very cool that mahle rolled this out to everyone with the x20. the update was painless, just tapped check for update on my phone and then hit update, waited a few minutes, and done. since this is a hub drive, you can't reach peak power at such low speeds. i imagine on a slightly lesser hill (6-8%) it would be possible to peg the motor at the 240+ mechanical watts advertised.
Very interesting. Nice of Mahle to include your older motor. Glad the update went well. Questions, if I may:

Q1. What do you think the update did to increase mechanical motor power?

Q2. Could you actually feel the added power?

Q3. Could the update have adjusted the built-in power meter instead?

Q4. What else did the update change?
 
I'm always interested to hear the Peak Power and Max Torque mentioned in one breath.

Rear wheel RPM = 275 W / 65 Nm = 4.23 rad/s = 40 rpm.
Now, assuming the gearing at speed might be 4:1 (chainring/cassette sprocket), what would be the cycling cadence?

Or, are the Peak Power and Max Torque occurring at different rpm?
Or, is the Max Torque here an invented figure?

Assume Cadence = 80. With the 4:1 gear ratio, the rear wheel rotates at 320 rpm, which is 33 rad/s. Torque at the rear wheel is 275 W / 33 rad/s = 8 Nm. Where do I make a mistake? (I'm sure there is a serious flaw in my reasoning!)
 
Last edited:
Very interesting. Nice of Mahle to include your older motor. Glad the update went well. Questions, if I may:

Q1. What do you think the update did to increase mechanical motor power?
i believe it just supplies more current. they must have discovered after a few years that the system could take it. or maybe the original version was sticking to less power for regulatory reasons?
Q2. Could you actually feel the added power?
yeah - the reason i ended up with a little higher rider power was higher cadence, since i was going a tiny bit faster. not a perfect test scientifically but i’ve ridden up that hill many times. definitely felt easier.

Q3. Could the update have adjusted the built-in power meter instead?
i wondered about that initially, but it seems just as bad as before. fixing it would probably have a similar effect when you’re below the “max” power for any given setting, but with the old firmware even if you really hammered it (i mean like 500-1000 rider watts) it would still top out at 200w, assuming the rear wheel was rolling fast enough for the relatively low actual torque to get you to 200w of motor.

Q4. What else did the update change?
didn’t notice anything else. all they mention is 18% more torque and 10% more peak power. 18% is a lot! and UDH support but that’s not a software thing lol.
 
I have no slightest idea how Mahle calculated that.
Let us assume a tyre of circumference of 2,250 mm or 2.25 m. Also let's assume the rider travels at 32 km/h, or 32,000 m/h or 533 m/min. The wheel rotational speed would be 533 / 2.25 = 237 rpm or 24.8 radians/second. I absolutely trust the 275 W motor peak power in the updated motor. 275 / 24.8 = 11 Nm on the rear wheel.

Now to get 65 Nm on the "equivalent chainring", the gearing ratio would need to be 65 / 11 = 5.9 : 1. Let us assume the smallest cassette sprocket being 10T. You would need a 59T "equivalent chainring". Well, such a chainring does not even exist on road bikes.

Someone tells lies, and it is a big lie. While I absolutely trust the motor power, all the torque talk is just BS.
 
The Mahle torque # is a derived figure to make it comparable to mid drives. From the ebike24 blog

View attachment 205494

i think a lot of people are in agreement that this is pretty shady on mahle’s part - while there is some truth to the fact that the vast majority of the time, bikes are ridden with greater than 1:1 gearing, when it really matters (climbing a big hill lol) a lot of mid drive bikes will get pretty close to 1:1.

for example, the creos which were out at the same time as the x20 released had a 46t up from and 42t biggest cog in the cassette. so, torque only reduced by around 9%. so the SL 1 motor delivers 35 x .91 =31.85 nm of torque to the rear wheel. the x20 23, the new 27. mahle’s claim of the equivalent of 55nm was just silly considering that they were competing with lightweight road bikes which almost always have a pretty wide range of gearing.

if they’re comparing to single speed bikes with mid drives, the comparison makes sense.
 
… also, it’s pretty easy to know how much torque the motor is really supplying if we trust the power output values given by the mahle app.

at 7mph my rear wheel is going around 87rpm. just a little bit faster than the crank with a 36:34 low gear.

peak power was close to 250w, so the simple relationship between torque, power, and rotational speed gives us 27.5nm. exactly what we would expect from the updated x20.

it is not possible to achieve peak power below 7mph with this tire size.
 
Managed to get hold of the internal memos....

From: Mahle Marketing
To: Mahle Engineering

Hey guys, any way we can claim 275W and 65 Nm for our updated x20 motor?

...

From: Mahle Engineering
To: Mahle Marketing

Sure — in some parallel universe where our laws of physics don't apply.

...

From: Mahle Marketing
To: Mahle Engineering

Great — 275W and 65 Nm it is! You guys are the best!!

;^}
 
Last edited:
I managed to get hold of the internal memos.

From: Mahle Marketing
To: Mahle Engineering
Hey guys, any way we can claim 275W and 65 Nm for our updated x20 motor?

From: Mahle Engineering
To: Mahle Marketing
Sure — in a parallel universe where our laws of physics don't apply.

From: Mahle Marketing
To: Mahle Engineering
Great — 275W and 65 Nm it is!
;^}

heheh

more like : “heyyyy is there any way we can claim more torque than a competing mid-drive?”

“yeah let’s just pretend all bikes are single speed with a 48t up front and 20t in the back!”

“ok but let’s not mention that part?” 🤣
 
I have no slightest idea how Mahle calculated that.
Let us assume a tyre of circumference of 2,250 mm or 2.25 m. Also let's assume the rider travels at 32 km/h, or 32,000 m/h or 533 m/min. The wheel rotational speed would be 533 / 2.25 = 237 rpm or 24.8 radians/second. I absolutely trust the 275 W motor peak power in the updated motor. 275 / 24.8 = 11 Nm on the rear wheel.

Now to get 65 Nm on the "equivalent chainring", the gearing ratio would need to be 65 / 11 = 5.9 : 1. Let us assume the smallest cassette sprocket being 10T. You would need a 59T "equivalent chainring". Well, such a chainring does not even exist on road bikes.

Someone tells lies, and it is a big lie. While I absolutely trust the motor power, all the torque talk is just BS.

your assumption about where peak torque occurs is incorrect. it occurs at much lower rotational speeds and is in fact in the 27nm range for the update. the silly claimed 65nm “equivalent” is, as noted above, more like 2.4:1, or something like a 40t and 17t, for example.

peak power seems possible from around 8mph up to 20.
 
i discovered something pretty funny about the way mahle graphs rider power on their ride portal. when the value is zero, e.g. if you were coasting or stopped, those time and power values are just SKIPPED on the x-axis of the chart! there are also no datapoints exported to json or any other format. if you graph the data, you need to use a chart type that correlates the x time value to the y power value, and not just a sequence of y values... because they're not evenly spaced in time!! kind of ridiculous, especially since it smooths the line out, given you no idea that there should be horizontal gaps.

knowing this, i went back to the screen recording export method, which gives you 3 data values per second for rider power (unfortunately the mahle ride portal only gives you a value every 5-8 seconds - useless) and compared the direct data exports from my 4iiii power meter to the data smoothed to average values over 2 or 3 seconds. the result is basically the same in terms of the offset, but makes a lot more sense relative to time.

the horizontal axis is seconds. vertical is watts. rider power only. red is 4iiii (one sample per second, smoothed over 3 samples) and the blue is mahle x20 bottom bracket sensor, 3 samples per second and smoothed over 9 samples. the average rider power as reported by 4iiii is 155w, mahle is 120w. huge difference!

mahle4iiii.jpg
 
Last edited:
i reached out to mahle and shared this graph, and they said they accept a 5% difference +/- to another known good power meter, and would recommend replacing the bottom bracket sensor package.

as with all things bikes, the question now is ... buy the two specialized tools that i'll likely never use again myself, or pay about the same amount to have the shop do it hahaha.
 
i reached out to mahle and shared this graph, and they said they accept a 5% difference +/- to another known good power meter, and would recommend replacing the bottom bracket sensor package.

as with all things bikes, the question now is ... buy the two specialized tools that i'll likely never use again myself, or pay about the same amount to have the shop do it hahaha.
That's exactly the dilemma. I always get envious when I see someone on you tube fixing a bike with a wall full of say neatly hanging Park Tools. Then I wonder how many of them would I actually use day to day or almost never.
 
a little more troubleshooting here (talking to myself!), using a longer gradual climb (15 minutes, around 600' climbed at a fairly steady 3-4%, no stops)

i figured out why the mahle data points are so ... irregularly spaced in the downloaded json files. it records a data point every time the bike moves a certain distance, not a certain interval of time. if you're going fast, this means a data point every 2-3 seconds... and if you're stopped, it means......... none. so a very slow hill climb will have data points only every 6-10 seconds!

simple work in g sheets to cross reference the timestamps in the mahle json to the timestamps in the tcx file from my preferred cycling app. data smoothed to 3 seconds since the mahle data isn't that granular and power meter data is spiky. you can see clearly here where i switched from eco to sport (about 40% in) and then from sport to turbo (about halfway) and then back out. the assist ratio is the green line, which varies from around 80% in eco (quite steady) to over 200% in sport. at the highest power leves the assist ratio isn't as steady since we're maxing out the potential assist of the x20 at this speed.

the difference between the x20 reading of rider power and the 4iiii power meter remains significant - 20% lower than actual. will be very interesting to see what happens when i replace the bottom bracket sensors.

mahleprecisionagain.jpg


to troubleshoot, i figured i'd compare cadence between the two sensors. they match, basically, wich small variations due to sampling rate. this isn't surprising since it's pretty easy to count how many times a magnet goes around, or how many times an accelerometer flips upside down :)

mahlecadence.jpg
 
That's exactly the dilemma. I always get envious when I see someone on you tube fixing a bike with a wall full of say neatly hanging Park Tools. Then I wonder how many of them would I actually use day to day or almost never.
I also envy those walls of beautiful blue Park tools. The other thing I'd wonder is who I'd get to put them all back on the wall.
 
Back