Ultra Tuning: Master Thread -- Start Here!

For me these are more in line with what I want from the Ultra. Still very smooth and not overly aggressive but upper PAS allow hill climbing without over stressing my knees. These feel more natural (to me) and the power output is more in tune with my input. Power curve as I increase speed is more straight line with no sudden bursts or sags.
Still not my fine tune but I just don't have much time nor cranial bandwidth to devote to this these days.
Great to see people customizing settings for what they want - it's why I was hesitant to post my own "quick start" settings in the first place. That said, I do have a couple observations, which may or may not be relevant to people:

1) Gionnirocket's Delta Voltage table settings are linear from 5Kg to the 60Kg max, at 0.03Kg/mV. That is, for every additional 100mV of torque sensor output (which is not adjustable), the controller outputs an additional 3Kg that is fed into the SPDxx table, which is then mapped between Start(Kg) and End(Kg) to get a proportional output voltage between MinCur(%) and MaxCur(%), and that output voltage then scaled by your Basic Tab's PAS settings. But note that for low applied pedal torque (the 0-5Kg table value), his Delta Voltage table would only be 0.0167Kg/Mv, or 1.67Kg per 100mV instead of the 3Kg per 100mV he has for the rest of the range.
Now, there's nothing necessarily wrong with this. I myself advocate a progressive mapping since at lower pedal pressures its easier for us humans to modulate pedal pressure at low pressures, and our SPD table mappings can control the actual boost being applied. But, I personally wouldn't do this as a step function for only the lowest pedal pressures with a resulting two linear mappings, but instead have a smoother overall mapping, as described in this post above, to use Gionnirocket's 760 Base and 2800 Max to get something like:

This has almost the identical low pedal pressure effect, but ramps more smoothly as pedal pressure increases, then reverses to taper mid-way. Of course, different riders may prefer different mappings and I respect Gionnirocket's choices.

2) Another aspect that struck me was what I consider an odd combination of a delayed start of boost with a high how long that boost lasts. That's from a Start Degree of 6 at SPD0 combined with a 2.24 seconds of boost from standstill (0 Speed Boost Time of 224 x10mSecs). Most people want the boost to start as soon as the pedals start turning, so keeping StarDegree (should be "StartDegree") at the lowest 1 setting presumably means the SPD0's columns settings kick in as soon as the pedals turn 1 degree (I haven't personally verified the values in StarDegree, btw). While 6 may not be 6 degrees, a value of 6 versus 1 should mean that it'll take longer for SPD0's values to kick in from a standstill, yet that the 0 Speed Boost will last for over 2 seconds given that setting. @Gionnirocket, I'm curious what tests you might have run to arrive at these values, as they might help us understand them better. For instance, how can we control how much boost we get from the 0 Speed Boost time value? Does it just use SPD0's values? I wondered about that, but if so, why have a timeout? Did you try longer or shorter 0 Speed Boost values to see what effect they had? What's the transition like from the 0 Speed Boost boost to the normal SPD0 or SPD20 boosts? With 2.24 seconds of 0 Speed boost, one could easily be traveling fast enough (say 5 MPH) after 2.25 seconds that the controller goes straight to the SPD20 column.
One thing to point out here is that my Ultra has a max output of 35 amps while Gionnirocket's max output is only 25 amps, which means my bike is 40% more powerful. That will certainly affect the current percentages in not only the SPD table but also the Basic tab. He'll need higher percentage current values than I use to get the same actual power out at the same speed/applied torques. Which again is why just copying someone else's settings may not be appropriate for you.

I do disagree on the implementation of some settings the OP uses as a personal preference.
Basic/Limit Current
A 40% increase up the PAS scale gives too small an increase in lower PAS and too great in higher PAS. I much prefer a more equal and gradual increase as I increase PAS. I often only need an additional 50-100w as I tire and it's nice to add just that. And you can quickly and easily multitap up when more power is needed quickly.
My PAS settings limits max power to 140 watts at PAS level 1 and 200 watts at PAS level 2. That's a 60 watt boost, or about 43% more power. That's definitely noticeable. However, at PAS level 7 my max power is 1060 watts, and I claim you can't feel an additional 50 or even 100 watts more, as that's not even 10% more power, which is why my level 8 is at 1480 watts.
As I state in the Basic Tab guide, if you find that, with 10 levels enabled, you're not feeling much of a difference between levels 7&8 and/or too much difference between levels 2&3, then you'll probably find a constant percentage increase preferable over a constant power increase.
Gionnirocket's power and percentage increases both aren't uniform, though, which I personally find puzzling. For instance, looking at his PAS level values, the difference between PAS Level 1 and Level 2 is 13%, but the difference between Level 8 and Level 9 is only 10%. I claim that difference between L8 and L9 is barely perceptible while the L1 and L2 difference is huge. And even if one perceives that differently, I struggle to rationalize the variations in the differences beween adjacent levels:
L1-L2: 13
L2-L3: 10
L3-L4: 7
L4-L5: 10
L5-L6: 13
L6-L7: 13
L7-L8 : 12
L8-L9: 10
I can't understand why one would want a larger power boost from L2 to L3 than one would want from L3 to L4. That's exactly backwards in my experience and thinking. Now, maybe there's some interaction with his Limited Speed(%) values, which I notice he doesn't have set to 100% like most people. Note that the Limited Speed values are Ultra motor speed, not wheel rpm nor bicycle speed and serve as a motor power cut-off when the motor's rpm reaches the limit. If you think about riding in a certain PAS level, why would you want the motor power to reduce as you pedal harder and faster? I'd be interested in hearing the theory and experience around this, especially as setting these less than 100% is unique to Gionnirocket.

Torque/Delta Voltage
Though I can create 3200mv in testing with brakes locked.. that is very difficult to do when riding and the pedals are moving forward. I find about 2800mv more in line with what I can actually produce as well as the limit of how much stress I want to put on my knees anyway.. Hence my settings.
Yeah, I discussed that in this post. Those people using the Windows app will find it difficult to record their max torque sensor output while riding, unless they rig up some laptop mount for their handlebars. The EggRider was great for this, as you could see the voltages change on your handlebar-mounted phone (and/or record the screen while riding), but apparently the latest version of the firmware removed that feature. @Gionnirocket, I know you don't use the EggRider - how did you determine your max torque sensor output while riding? I'm sure others would want to know.
And, just a personal note on that - I found that I needed to pedal uphill with a low PAS level to force myself to pedal hard enough to reach max torque sensor output. Given my age, I expected that I wouldn't be able to achieve max output, but that was not the case - although I wouldn't want to do that for more than a minute. As I noted in the linked post, it's probably better to use lower values for Full(Kg) in the SPDxx table rather than set the Delta Voltage table to max out early. My reasoning is that if you max out Delta Voltage early, that affects all riding conditions, even at low bike speed/pedal cadences where you can output more power than you can at high bike speed/pedal cadences. Instead, varying the Full(Kg) amounts in the SPDxx table lets you set how quickly you reach max torque sensor output differently under different conditions. I keep a high 50 or 60 Kg for Full in the low SPDxx columns, but a low 15Kg for Full in the highest SPD100 column since at that bike speed my probable goal is to go as quickly as I can without killing myself.

This said... Anyone have a handle on Torque/ Return(Kg), Keep Cur, CurDecy?
I've not seen anyone provide any empirical data on how changing these affects the motor's output.

I think it's probable that SPDxx's KeepCur(%) values operate the same as the BBS's Pedal Tab's KeepCurrent(%) value, but with different effects at different bike speeds (per the column). And similarly SPDxx's CurDecy for BBS's Pedal Tab's CurrentDecay(1-8). Both of which control the power still being applied (how quickly it drops and over what period of time) after one stops pedaling while traveling at different bike speeds. I ran out of weather and time to fully test those values, however. If I can, I'll try again this spring. And, as @ProphetZarquon has noted, that KeepCur(%) can't be greater than MinCur(%) seems backwards. Why would you want the motor to output less than your stated minimum current per bike speed range? Makes no sense. I did confirm, btw, that this limit is enforced in the controller firmware.
Last edited:
I am purchasing a Luna Z-1 and would like to adjust the settings to what is shared here. Luna is currently out of the programming cable they sell. Is there another cable or way to hook up and program the Z-1?
I am purchasing a Luna Z-1 and would like to adjust the settings to what is shared here. Luna is currently out of the programming cable they sell. Is there another cable or way to hook up and program the Z-1?
Here you go:
Double check the links you have going to the other posts from the first post. I tried today and it seems after all the updates the links are dead.
Double check the links you have going to the other posts from the first post. I tried today and it seems after all the updates the links are dead.
Yeah, looks like the rejiggering of the forums caused all those links to break. Should be fixed now, thanks.