(But Not For The Throttler)
There is a follow-on to this article that tinkers with these settings a bit further. In August 2023 I published another update that passed along what I’m doing differently since these articles came out in 2021.
Before you start fooling with your BBSHD settings, take a photo of each screen with your cell phone. If you screw up, you have a quick reference back to your original settings.
The subject of what settings to use when programming a BBSHD comes up now and again. Its a question with a fairly complicated answer that does not lend itself to your typical Facebook 2-sentence post. So here is the long version. I have my own suite of settings that suit my personal riding style. I am primarily a pedal-pusher: I want to get exercise when I ride, so I seldom use the throttle. But if you try to take that throttle away, you’ll have to pry it from my cold, dead thumb.
So I want pedal assist that does the following:
- Doesn’t lug the motor. All that does is turn electricity into heat.
- Conserves power and extends range. See above.
- Keeps me working, but not too hard … unless thats what I want, and then it has to let me do that, too.
Interestingly, with both my Mongoose Envoy Project and Surly Big Fat Dummy Project, I found what worked great for me on other BBSHD-equipped bikes was completely ineffective on a cargo bike. I frankly haven’t figured out why this is, but I think it may be because my older builds were just that: Older. Something maybe changed in the firmware. My PAS settings that conserved major amounts of power while pedaling wound up being totally inadequate. I needed to step up some settings, which I will describe below. While my settings then vs. now are quite different, I don’t see any real penalty in range.
Feel free to tinker using both and see for yourself what happens to your own motor.
How do you program a BBSHD?
Strictly speaking, you don’t. As a for-reals programmer who for most of his life made his living writing code, I have to point out this is not programming even if everyone calls it that. The BBSxx line of motors have a quasi-hidden settings interface. With the right software you can gain access to those settings and simply change them, resulting in big differences in behavior.
Myself, I am using the Black Box sold by Luna Cycles (available here). The Black Box makes it much easier to go on a ride, tweak as you go and get things just right after only one or two rides. Also, I literally have a half-dozen bikes now with one of these motors. The initial expense of the tool is a lot easier to justify if you are sharing it across the Pacific Fleet.
The other way to do this is to spend about US$18 and buy a laptop cable. Then you use your existing Windows laptop to host the app that you will use to make the aforementioned changes. Here is one place to get that Windows app. I started out doing it this way, but as laptop operating systems evolved I found it increasingly difficult to get Windows to accept the cable’s right to exist. I don’t miss fighting with it one bit.
If there is such a thing as a bible on how to program your BBSHD, its Karl Gesslein’s blog post on the subject (read it here).
If you want to know everything about programming your motor, you should read the blog post linked above. That post is the definitive tutorial on the interwebs, despite its age. All I am doing here is calling out some of the things I have done that deviate from the norm, work for me and why it seems that is. So I will not be explaining things as if you have never seen any of the BBSHD settings screens before. This article assumes you have at least read the above blog post and familiarized yourself with the screens and settings.
I am not showing original factory settings. Your motor may have settings your vendor considers proprietary. So I am showing screens I have altered and then calling out the bits I consider important.
The BBSHD’s settings are presented on three separate screens: Basic, Pedal Assist and Throttle.
The Pedal Assist Screen (2 of 3)
Yes I know. I’m starting out of order. Its easier to understand this way.
Much of what is on this screen… you shouldn’t mess with. I’ll just hit the high points.
Regardless of what you see here on my own screen, I strongly suggest you leave the first three settings alone unless you know exactly what you are doing.
Hey… lookit that graph in the image above. Click to enlarge for a better view. It does a good job of graphically representing how most of these settings affect performance, and interact.
Pedal Sensor Type
Some motors are sold configured with BB-Sensor-32. Others with DoubleSignal-24. BBSHD motors reportedly have 24 sensor signals per rotation, which points to the latter as the proper setting. I have tested both and found zero difference in performance or behavior.
The lower you set this number, the gentler it is on the controller and your drivetrain. Experimenting with lower numbers will make life easier on your rear freewheel pawls, and chain. Setting this number low is especially helpful if you are running a cargo bike under load and want to be extra careful. Setting this to lower numbers may also be too little startup assist – remember the purpose of the motor is to help you get off from a standing start. This setting only applies to pedal-assist power delivery.
A typical default number here is higher; often around 10. I have found kicking it down just a bit more is much better for your drivetrain if you have a heavy (cargo) bike; especially one that is loaded. Even if its not a cargo bike, how bad can it be to beat on your drivetrain less? Remember you can always mash the throttle if you want <clarkson> power </clarkson>.
UPDATE (19 May 2023):
No more messing around: I now use a setting of 2% here as well as on the Throttle Screen below. The reduced wear and tear on your drivetrain is well worth it and there’s no downside to a smooth startup. This also helps noticeably with gentle shifting when you are doing the stutter-step method of gear shifting and you goof and rush the process a bit.
Slow Start Mode
This setting determines how gentle the ramp-up is on your power on start. Starting up too fast can kill your motor’s controller so beware. I am using the lowest setting published in the article I linked above. Here again, why create a situation where you could end up blowing your controller or chewing up your chainrings? I stay on the conservative side.
A common complaint on the BBSxx motors is you can stop pedaling and the motor keeps going for what feels like a full second. Its a valid concern. 5 is the lowest safe number for the BBSHD so thats where mine is. This setting effectively means your motor stops when you stop pedaling.
BUT it also leaves a hair of rotation which you can use to your advantage when shifting gears: Stop pedaling and in that instant execute your shift. The shadow of remaining power and rotation will be enough to gently complete the shift (SRAM gears will shift in about 1/4 rotation) and you can start pedaling again almost instantly. I call this a ‘stutter step’ in my cadence and I personally prefer it to using a Gear Sensor which automates the process. Tomato-tomahto. Depends on how you learned to use the drive as to which you like better.
This is a big one. Current decay helps decide when your motor cuts power based on your cadence. A huge complaint about cadence sensing is it causes the bike to run away from you and the rider is just spinning the cranks… its called ‘ghost pedaling’. This is part of a complete solution to that problem.
My philosophy is (and plenty of people disagree with this) if I can pedal at a high cadence I don’t need power assist, since I can spin the cranks. By cutting the power back when I start spinning (a.k.a. “clown pedaling”), I not only reduce power consumption and increase range, I also create a scenario where I either keep going on increased amounts of muscle power (which a high cadence demonstrates I can pull off), or I decide to shift to a higher gear, thereby naturally slowing my cadence and telling the motor to give me back some power.
This in turn has the effect of letting me ramp my cadence back up and increase my speed. Done right, this is much closer to a natural cycling experience and either lets me a) haul ass to my destination on the streets or b) get a hard workout. Or both.
Why would anyone disagree on this point? Easy: If you are running a powered bike on singletrack, and you hit a steep hill that is all muddy and root-strewn, you need to spin to keep yourself going up that hill. If the bike gently ramps back power on you, well thats a dirty trick indeed. So… remember what I am describing here is maybe the magic elixir for street riding; but not for an eMTB running hard singletrack.
This is another setting that helps govern how fast the motor shuts off when you stop pedaling. Zero milliseconds sounds good to me. Stop Delay determines how fast a motor begins its shutdown after you stop pedaling. Stop Decay determines how fast it fully shuts down after the shutdown begins.
This is another companion to Current Decay. When Current Decay decides to cut back power, this percentage determines how much power you keep. So by setting mine to 40%, I am getting a 60% power cut when I spin my legs past the Current Decay threshold. And my Current Decay setting determines how steep the offramp is down to the lower power level.
Here again remember what a bad idea this can be on an eMTB. This is for city riding and commuting, where you want the benefits of boost but you also want the option of getting some exercise and your terrain is reasonably predictable.
The Basic Screen (1 of 3)
The BBSHD is capable of supporting up to 9 assist levels. Actually its 10 since there is a Level 0, but that level is (nowadays) a special case that you pretty much have to leave at a special setting and can’t adjust.
Each level is defined with two numbers. A Current % Limit and a Speed % Limit. They are, in a word, opaque in terms of what they do, and not easy to understand.
Also I have achieved great results in entirely different ways on different bikes. I’m going to show multiple screens.
Note the Level 0 setting of ‘4’ with a speed cutoff of 30%. The intent there was I never really want zero power on pedal-assist and Level 0 provided a very mild bump for times when I am pedaling slowly and going slow… like when on an oceanside bike path loaded with tourist pedestrians, and I am just barely exceeding walking speed.
This one is apportioning quite a bit of additional power, level by level. It starts at 100% on Level 9 and works its way down the ladder in 5% increments. Likewise, the Current Limit settings start at 100 and work down in 10% increments. These graduations are not the result of scientific study so much as they are a discovery of what feels right, and gives me a range of useful settings, so I do not find myself having to use only low or high settings to get useful results. I can make use of the entire PAS range.
Its worth noting that the Current Limit box is where you limit the amps for regulatory or other reasons (i.e. this is your maniac child’s bike and you want to limit the power output for safety).
Whats with the Assist 0 setting of 1 and 1 above? On newer BBSHD motors, if you set it to anything besides 1 and 1 you wind up disabling pedal assist. I’ve also heard it said if you want to use your throttle while you are at Assist 0, then you set Assist 0 to 1 and 1. Regardless of the actual effect, the motor doesn’t behave desirably at Assist 0 unless you use 1 and 1 there.
I originally used Assist 0 for sort of a crawl mode when wending my way through tourist-laden sidewalks, where I’m going just a bit faster than a walk and don’t want to run anyone over, but still want a touch of power. Since that is no longer feasible, nowadays I use Assist 1 and shift down to a very low gear).
Bafang’s release firmware is a moving target so if this changes I’ll amend this note.
- Current % is when the power cuts out based on road speed.
- Speed % is when the power cuts out based on motor rpms
Whats this ‘cut out’ stuff? Well, remember the ‘decay’ and ‘keep’ stuff we described when going over in the previous screen? These settings help determine when that kicks in. Clear as mud? You’re not alone. ‘Counterintuitive’ is the name of the game when messing with your Bafang motor settings.
Screen 3 of 3: Throttle
So… the pedal assist levels are on the Basic page. Makes perfect sense. Strangely, the throttle settings are on the Throttle screen.
There are only two things that, really, you should be fooling with here.
Generally this stops at ’35’ or 3.5v. What that gives you is, effectively, a throttle that has two speeds: Completely Off and Full Blast. Not really but it will feel like it.
Instead, if you set End Voltage to ’42’ (4.2v) the result will be a smooth, linear throttle where it will be easy to, say, blip out only 200w of throttle-based assist to your motor while you are struggling to get going after a stop. Being able to dribble out just a bit of power is something your cassette pawls – and your wallet – will appreciate after a few thousand applications. No more clanging noises coming from your poor, soon-to-die rear hub.
Hey waitaminute… we had Start Current on another screen too! Yes we did. But that one was Start Current for pedal assist. This one is Start Current for when you mash the throttle.
If you set this to, say, 10%, that means the initial beat-down given to your cassette body by the cluster (that gets jerked forward by the equally unhappy chain) is only 10% max the power of the motor. The rest of the power you asked for ramps up from there. But the initial shock to the system is reduced by this setting, which has obvious benefits. For a heavily loaded bike where you want a smooth startup on throttle, setting this down to 5 (or less!) should be considered.
UPDATE (19 May 2023): Having done some experimentation, with the wider throttle delivered by the End Voltage setting of 42, a Start Current of 2 is my preference. Set to 10, the least throttle I can deliver is about 150w or about 1-1.5a (using an 860C display set to display both values simultaneously). Set Start Current to 5 and that minimum value is about 50w and 0.5a. Set it to 2 and its even less. Plus more importantly it wipes out any stress on the drivetrain from throttle use.
Wrapping it all up…
So there you have it. This is FAR from a comprehensive tutorial on the subject. Remember also that everything done here is done for a BBSHD that is running a 14S/52v power system, so if you are, lets say, running 48v… its possible you may want to jigger some of the assist levels a bit upwards. But now you can do it with a starting point.
The settings above are my personal settings. There is no such thing as a perfect set of settings for everyone. Use what you see here as a guide to your own experimentation.