Larry vs Harry Bullitt Hill Hauler, Back-to-Front Part 4

Lets end this story by covering the contents of the hidden boxes, the front wheel, the front motor, and finish off a few leftovers.

Bullit II Build Series
Part 1
Part 2
Part 3
Part 4 (You Are Here)

Lets Wrap This All Up

We can start with the battery and onboard charger, the cargo box liner and bits of interest, and finally the exciting details around the front motor and wheel.

The Custom Battery

This is a 2wd bike that sees heavy use, occasionally over long distances. The 2wd alone means I want a more serious battery; never mind the cargo bike part, and the long distances. And the steep hills. Part of the reason going big is less of an issue is I know I will never have to carry the battery anywhere. Its secreted permanently out of sight, under the bolted-down cargo bay floor.

I contacted Matt Bzura at (who has built several batteries for me, including the custom 32ah pack powering the Lizzard King). I told him I needed a pack whose size fits between the crossbars of a Bullitt, and was not so deep it would interfere with the steering rod – it had to sit above it. Here’s what the specs for the pack came out to be:

Size ConstraintsNo larger than 13.5″ x 3.125″ x 8″
(343mm x 80mm x 203mm)
CellsSamsung 50S (21700’s)
Pack Config14S7P (52v)
BMS Capacity100a continuous output
Amp Hours35
Output CableFemale XT90S / 8 ga
Charge CableFemale XT60 / 12 ga

Whats with the 100a battery management system? Peak output on the controllers of both motors is 25 and 30 amps, so the bike has an on-paper peak of ‘only’ 55 amps. A 70a BMS could handle that with fudge to spare. Unfortunately only 100a units were in stock. Rather than deal with the uncertainty of waiting on parts that may or may not arrive in a timely manner, I went with what was in stock.

Figures 1-4: Pics from an early test fit. The padding is 1/2″ MinicelT-600 closed cell foam, left over from the Lizzard King build. Its strong enough to lock the pack firmly into a box it only barely fits into (by design).

The thing to emphasize with this pack versus the Lizzard King’s is its increased capacity and decreased size (plus it was about the same cost). It may seem the ebike battery marketplace is stagnant in terms of technology, but there are incremental improvements going on and this is a good illustration of that.

The Onboard Charger

I have done onboard chargers on other bikes. Most notably 2Fat’s monstrous 8-amp, 480w fast charger for fast refills, or the more practical 320w, 5-amp charger on The Great Pumpkin. The 35ah pack on the Bullitt can easily take 8-amp charge current, but that is still a lot of juice, and would make for a very hot charger sitting inside of an enclosed aluminum box.

Those big chargers are special animals suited for a use case where a fast, closely-supervised charge is desirable. I ordinarily prefer to charge at low current levels. As low as 0.50 amps in fact (yes: half of one amp). Low amp charging is easier on the battery and safer in general. If you have the time to let the charger trickle power in at a rate of only 20-30w, its the best option.

Additionally, since the charger will be bolted under the floor, its not adjustable for current simply because I can’t get to it.

I decided on using the 185w Mean Well HLG-185H-54A. It can be set to a 100%, 58.8v charge at 3 amps current, which is still well under its 185w capacity (58.8v x 3.0a = 176.4w). 3 amps is still a fast charge by my routine-daily standards, and when running at 3a, this model of charger stays relatively cool.

Figures 5-6: More early test fitment showing the battery, controller (small silver box) and charger. Much neater looking when you don’t have to have the wiring all perfectly situated (and connected).

I lined the underside of the charger with thermal transfer tape before I stuck it – and bolted it – to the side of the front box. So the whole box acts as a heat sink during the charging process. Next, I ran the mains power cord back to my frame bag, where it has about an extra 0.75-meter length to reach a power outlet. Thats fine for use in my garage, but I carry a 4.6 meter (15-foot) flat extension cord in my frame bag in case I more reach at a public outlet.

The charger is permanently connected to the battery under the floor via an XT60 connection and 12 ga wires. I also Y-split the charge connection to another XT60 plug that is in my frame bag. This lets me charge the battery with an external charger – Occasionally I may want to do a precise balance charge with my Cycle Satiator.

Having a built-in charger is not a necessity, but it is a nice luxury that lets you just plug in anywhere, like you would any electrical appliance.

The Front Motor Controller

Just like for the Lizzard King, I used a 25a peak KT controller wired up for waterproof HIGO/Julet connections. I particularly like KT controllers for their relatively sophisticated pedal assist algorithm, which is not a laggy on/off algorithm. Instead it ramps power on gradually but firmly when there is a combination of low cadence rpms and slow wheel speed, and pares it back as cadence and wheel speed increases.

Figure 7: What the finished product looked like just before the floor was bolted on. The need to use extension cables of a fixed length from the controller to both the front wheel and handlebars meant I had a lot of excess cable wrapped in the front box. The need to split both battery output and charger input meant there was plenty of cabling to route in the battery box as well.

The Cargo Box Liner

The Lizzard King was lined with 1/2″ thick Minicel-T600 closed-cell EVA foam. This highly durable, very-dense foam – even at such a minimal thickness – is enough to allow a person to sit comfortably in the cargo box. After two years of use, my original liner still looks new, So I wanted to use the same material. This time, I wanted to use thinner foam. The thickness I originally used reduces the cargo area noticeably, I don’t need to carry passengers, and its overkill if all I need to do is prevent things from rattling around in the cargo box. This time I went material half as thick as last time at 1/4″.

Thankfully, sitting in a corner of my desk I still had my highly precise original blueprint used in making my original for the Lizzard King. I took that, a ruler, a Sharpie marker, some heavy duty shears and, one snip at a time, shaped and fitted the new cargo liner. The thinner material is just as good at deadening the sound of cargo items bouncing around in the box, and does just as good of a job concealing the floor (and the battery under it).

The Front Wheel

This is exactly the same wheel as was documented fully on the Lizzard King build. By the time 2022 rolled around, that wheel was a spare used for a winter tire, so when the hill climber came along I just popped it on and didn’t have to pay for an extra motor or wheel.

The 2.40″ Minion DHF is a serious BMX knobby tire, necessary thanks to drifting sand on the bike paths that can get pretty deep. Street tires like the Schwalbe Pickup or even the Maxxis Creepy Crawler have washed out on me. Not the Minion.

Since this hill climber is now my primary bike, and it needs a beefy front knobby offroad tire, I will swap over the wider wheel on my Lizzard King in the very near future. Since that wheel wasn’t discussed in the first Bullitt build series I’ll go over it now.

Why a New Wheel?

In the time since the Lizzard King was built, I took apart my spare AliExpress-sourced front wheel, kept the motor and chucked the rest. Then I built a new wheel using that same motor, Sapim Strong spokes, brass nipples and a portly (not fat) Stranger Crux XL rim.

If I already had a working wheel, why go to the expense of making a new one?

The donor wheel was part of an AliExpress kit. I bought it because of a months-long lead time to get a proper wheel built (this was during the worst of the COVID parts shortages). On general principles, I wouldn’t expect such a wheel to be of top quality and, while it worked fine for the months I used it, it was very, very narrow. Somewhere in the ballpark of 12mm internal width. I could get my preferred 2.40″ Super Moto X tire on it, surprisingly. Even more surprisingly the tire worked fine. But still, it was way out of spec and far from ideal.

I eventually got the Alienation Blacksheep-rimmed wheel built, and it has an internal width of 27mm. Thats sufficient – and that BMX rim is extremely strong – but it was still a little narrow (on paper at least) for the 2.40″ tire. So I did a lot of looking around and eventually found the Stranger Crux XL, which seemed to be the widest (42mm), strong double-walled rim that wasn’t actually a fat bike rim. The Crux XL is advertised as being optimized for use with 20×2.4″ tires, which is exactly what I was looking for.

Front Motor

Just like last time on the Lizzard King, this is another Bafang G020 48v/500w geared hub motor. It is rated for 45 Nm and is set up to complement the mid drive motor that powers the back wheel. Its not meant to provide a higher top speed. Instead it essentially gets the bike going off the line so the mid drive is not tearing at the chain from a dead stop. This team approach eliminates any accelerated wear and tear on the drivetrain. An in depth discussion of the ideas behind this is here.

One added benefit for this hill-climber is the added traction that comes from power to both wheels. I still dial down assist so I get a good workout, but neither motor works itself to death grinding up an intense hill since its part of a team.

Front Motor Settings

Even though I used the same motor, controller PAS sensor etc. as I did on the Lizzard King, some settings were changed. A couple of these are personal preference changes. A couple more are object lessons in being ready to cope with unexpected weirdness when building an ebike. The changed settings are in red below.

P Settings

P1 = 100
P2 = 6
P3 = 1
P4 = 0
P5 =20

C Settings

C1 =05
C2 = 0
C3 = 1
C4 = 3
C5 =00
C6 =3
C7 = 1

C8 = 0
C9 = 0
C10 = n
C11 = 0
C12 =7
C13 = 0
C14 =3

P5 – Battery Capacity

For no good reason, the auto-sensing feature does not work on the KT-LCD4 display. So I had to guess at a setting that works. Since this is just a visual graph on the screen and I actually use the numeric voltage gauge, getting this precisely right is not a priority for me.

C1 – PAS Sensor Configuration

Here again, for no good reason this controller refused to allow the PAS sensor to work on the setting it should (on both the KT-LCD3 and LCD4 displays). Having reversed the sensor in its mounting ring, it is running in the proper forward direction, so C1=00 (standard forward 6 sensor) should work fine. When it didn’t, I ran thru all of the possible settings and found I could use the reverse-direction setting. Why? No idea. Reverse worked so took the win and moved on.

C12 – Battery Low Voltage Cutoff

For safety, I wanted to kick this number up by the max available 1.5v. With such a big battery in place, I’ll never get down this far anyway.

C14 – Pedal Assist Increment Strength

It is now set to the max. That means the strength of additional assist from, level 1 to Level 2 is “more” than it would have been in the General (normal) setting. How much more? That is undocumented. This gives me a little more pedal assist in each setting as I ramp up from 1 to 5. As it is 3 is my typical limit on a steep hill. I do not want to put that much strain on the fork dropouts. So this is just a personal tuning decision.

The Front Fender

A fender…. So what? The reason I bring it up is because so many people have trouble fitting a fender onto Bullitts that have large front tires. In my case, I’m covering a great big BMX tire that measures a full 2.40″. It is covered well enough I don’t get any splash coming up off the front of the wheel, and my cargo bay doesn’t get any water coming in and up off the back.

What I have done is use parts from two different fender solutions. The front portion of the cover is just the front half of an SKS Rowdy 20-24″ front fender. I spaced it away from the frame with a fairly thick M6 spacer, which lets the fender mount clear the fork crown and head tube. It also is just thick enough to let the tonneau fit over the front without fitment problems.

The back portion of the fender is nothing more than a simple flexible MTB mud guard. I just zip tied it, rearward-facing, to the back of the fork. There’s not enough room for it to fully extend but it just flexes up against the floor and frame as you turn the handlebars.


Widening the side panels

This was done exactly as I did it on the Lizzard King. The original writeup lists all the parts needed. I even used the same spacers and washers since I originally had to buy everything in bags of 10, and still had the leftovers on the shelf.

Something I didn’t mention in the original writeup is I stuffed in a length of silicone hose into the front gap created by the now-wider side panels. This hose plugs the now-open slot that lets dust flow into the cargo bay from the road. The hose is slit lengthwise to give it a little more flex when you stuff it down into this snug channel.

LED COB lights

This is another idea first used on the Lizzard King, which I improved a bit when I did it again here. This time around, I used a higher-temperature color to better mesh with the white paint the lights reflect off of.

These lights also came with built in dimmer switches, which I affixed to the front of the cargo wall with some mastik tape. I don’t use the dimmers but the on/off switches are handy.

Power is run back to the frame bag via USB extension cables that are run along the side of the cargo floor, under the foam cargo box liner. They connect to a USB power bank in the Blackburn frame bag hanging under the frame’s top tube.

The light that reflects off the frame – and the halo of light that shines down on the street around the bike in full darkness – makes for a fantastic enhancement to my visibility to others on the road.

Side Panel Art

You can buy pre-made art from Vorova that fits to pre-cut decals made to fit various parts of the LvH Bullitt. I didn’t use the pre-made art. Instead I jiggered together some shapes in the Vorova configurator to create a sort of lightning bolt look. Since I live on California’s Central Coast, I wanted to add some sort of line art that fit a coastal theme. I found some art I was able to license for free thanks to a 30-day trial of the image service, added it to the sample in the configurator and job done.

Hardshell Panniers

Panniers? Aw shucks lets call a spade a spade… These are office wastebaskets just like the ones I did last time. Being the second time I made a set, I was able to learn a bit and improve upon my previous effort.

  1. I bolted both nested cans together this time. Being able to pull out the inside can to easily carry in your stuff inside sounds great, but its not necessary. All you need is a drawstring laundry bag inside the can – just like a trash can liner. When you get home, just pick up the bag and take it inside. I still want the double-thick trash cans for sturdiness, but maybe this can be done without if weight is a concern.
  2. No more vinyl waterproof cover. In practice, this was just too much bother. If it rains, then yeah sure bring some along and cover the can with it as shown in the build article on making the panniers. In practice, the laundry bags provided plenty of retention when you use the drawstring to cinch them up. As a fail-safe, I also added a small elastic cargo net over the top of each can. You save money not buying the vinyl covering, but spend about as much as you saved buying the laundry bags and cargo nets.

The End …

Thats pretty much it for the bit-by-bit description of this bike. Its not the most exciting build, and certainly not a thriller as write-ups go. But with any luck you found something useful described here. Or if nothing else, now you have a list of things you definitely don’t want to do 🙂

Author: m@Robertson

I'm responsible for the day-to-day operations at my place of business: Leland-West Insurance Brokers, Inc. We do classic and exotic car insurance all across these United States. I'm also an avid auto enthusiast, a born again cyclist (i.e. an ebiker) and participate in medium and long range CMP and NRA sanctioned rifle competitions.

12 thoughts on “Larry vs Harry Bullitt Hill Hauler, Back-to-Front Part 4”

  1. Greetings Matt! I’ve spent the last week trying to read as many of your posts and thoughts as my mind could understand — so for starters, thank you for putting so much time and effort into your writings here. The details that you’re willing to cover and volume of content that you’re able to output is both remarkable and super helpful. Thank you 🙏. The fleet you’ve been growing is super cool. Love that you’re so deep into it. I’m hoping to be able to pick your mind a little bit for some advice, if you’ll have me!

    As an also-for-reals programmer, I’m really trying to understand the various knobs available to us in programming Bafang motors. You’ve mentioned (regarding current decay):

    > 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’.

    And, while I’ve only had my Bafang installed for a few days and have only gone through a few programming iterations, I quickly understood what ghost pedaling feels like. There’s a distinct moment when the motor starts out-spinning my human cadence and I become the ghost — though I usually drop my cadence way down at that point (why spin at 90 instead of 60 when you’re not pushing anything anyway and your spinning is only keeping the motor ‘on’). Ghost pedaling isn’t really what I had in mind with my e-bike conversion. But there are several variables and factors at play at any given speed, incline level, cadence, and motor power level!

    Let me back up and give you some context though. I’ve converted a Yuba Mundo, a long-tail cargo bike, with the BBSHD and decided on a 40-tooth front ring (instead of the stock 46) and it has an 8-speed cassette (11-34 I believe). My goal with the whole setup is to be able to pedal at a very low output from my human-body all of the time (less than 100W) and have the motor essentially compensate to keep me at a given speed. I don’t want to be ghost pedaling because I actually do want to be contributing mechanically to the drivetrain.

    I think I’ve got things ‘okay’ as of yet. I’m using settings not far from your “modern” version you describe in “BBSHD Programming For The Pedaling Cyclist,” but I, as I believe you have too, am experimenting with having a _low_ current decay (e.g. 2). My thinking is/was as yours was/is(?) — if I’m up to spinning speed, back off with the power assist so that the cadence doesn’t run away from me.

    But I’ve found fairly quickly what you note here in this post’s update too:

    > UPDATE: May 19 2023… it turns out Current Decay is not well suited for hill country, where it is part of a suite of settings that cut power when cadence is high. Crawling up a hill in a granny gear – both on a hillside singletrack and on a city street – is not the time for a power cutback regardless of your cadence level. On flat ground, a Current Decay of 4 is indeed part of a cyclist-friendly exercise regimen where power gets cut as cadence increases.

    I live in Ohio and _most_ of my rides are flat, for sure. But with an almost-400lb total rig, I need the power setup to work with me when I do hit the occasional hill. Incline angle multiplication is no friend to 400lbs!

    My other question is, say you’ve reached a high cadence on the flat and the motor cuts power back, but you start ramping up a hill and your cadence begins dropping. The motor will kick back in to help you more as your cadence drops, but won’t the lower RPM mean the motor is going to kick in with high-torque + low-rpm? Isn’t that the exact kind of situation we want to keep our motors away from for the sake of their longevity?

    I’m having a hard time figuring out which knobs to tune to achieve my hopes: a motor that lets me contribute a small amount of power at a human-level cadence while adding the rest of the power itself to keep me at a set speed.

    1. m@Robertson – Pacific Grove, CA – I'm responsible for the day-to-day operations at my place of business: Leland-West Insurance Brokers, Inc. We do classic and exotic car insurance all across these United States. I'm also an avid auto enthusiast, a born again cyclist (i.e. an ebiker) and participate in medium and long range CMP and NRA sanctioned rifle competitions.
      m@Robertson says:

      Short version on preventing ghost pedaling is to cut back the power. Use a lesser assist level so you have to work at pedaling and the assist is only that. Simple, right? What you describe on your Mundo is exactly what I do, although power output can be lowered further so I may need to contribute more than 100w myself.

      Take a look at Part 4 of the Bullitt Hill Climber series. This link will jump straight to the motor settings section. Look at the version used by the flat-land (Lizzard King) Bullitt. That motor peaks on pedal assist at around 450w … on PAS9. You want lower-power? There it is. Note that throttle is still 1500-1750w on a 52v battery so if you need to hit the gas to make a light before it turns red, full motor power remains an option.

      That article is almost a follow-on to the older BBSHD tuning articles you reference, but its not titled so people know to go read it for that. In it you can see a way to have the gentle-to-drivetrain behavior, and an easy way to go low-power, or higher-power on pure pedal assist, with *both* versions letting you avoid ghost pedaling. My hill climber is usually, on flat land, running at PAS1 or if I want to really bug out, PAS2. Thats a function of all the other settings work together in interconnected fashion, and none of it documented anywhere thanks to Bafang actively discouraging their use.

      1. I have some experimentation still to do for sure! I’ll probably try a few more things on the stock firmware:

        1. Your linked config settings. I do believe that Current Decay and Keep Current are the keys to the cadence-happiness kingdom. I went Current Decay @2 (super low) and Keep Current @60 thinking “decay out most power once I hit ‘comfy’ cadence”. Your Current Decay @8 and Keep Current at @40 tells me that ‘comfy cadence’ is probably higher than I think (hence the 8) but that once you get there, you need even _less_ current.
        2. I’m perplexed that so many folks in the community never really determined if the “Speed%” value in the config tool represents road speed or motor speed. Many seem to believe it’s motor speed. So I want to experiment with determining which Speed% roughly equals my comfy cadence (say 80-90rpm) then make just one PAS level: 90% power, my exact speed% cadence, Current Decay at 8 and Keep Current at maybe 50% — the goal being “this thing should do most of the work to get me to my comfy cadence then its job is to help me stay there, using as much power as necessary to do so”. So if I start up a hill, it’ll immediately start pulling large amps to keep that cadence up. That’s the idea, anyway!
        3. I’m still fascinated by the Kepler approach — Speed% @ 100 for all PAS settings but just incrementing the power level. My sense is that this wasn’t written for Pedelecs, instead more for throttler’s… but many people swear by it! Must be worth a shot.

        If none of those really do it for me, I’ll try the open source firmware. I really like that it exposes clear, solid parameters around each PAS level. “Assist up to 95 rpm cadence, limit power to 22 amps, limit speed to 22mph” etc. I have a LOT more confidence that it does what it says both because the labels are clear but also because the author is still quite responsive and actively working on the firmware. That’s really all I want in a PAS system: “help me get to my comfy cadence, don’t go any faster, and help me stay at that cadence”… “I choose the speed I want to go by which gear I select — gear x comfy cadence = speed”!

      2. m@Robertson – Pacific Grove, CA – I'm responsible for the day-to-day operations at my place of business: Leland-West Insurance Brokers, Inc. We do classic and exotic car insurance all across these United States. I'm also an avid auto enthusiast, a born again cyclist (i.e. an ebiker) and participate in medium and long range CMP and NRA sanctioned rifle competitions.
        m@Robertson says:

        You have to remember a lot of these settings interact. In particular with the PAS level settings on the Basic screen. But doing justice to an explanation of how (and more importantly when) current decay can still make its presence known even if it is set to 8 on the hill climber config is not something that can be done in a Comments section 🙂 (I’ll try: you only feel it on relatively slow speeds, For example after you have crested a hill and your gearing is still very low and speed is increasing from REALLY slow to just slow as your cadence goes high). Speed percent is motor rpm speed based on sources I trust to have tested it intelligently. Motor rpm speed is not land speed or cadence rpms, and its upper limit (and therefore the percentage values) can vary by battery charge level. In my opinion this is best adjusted as if it is a broad brush stroke. Don’t try to be precise with it, because if you try that its a waste of time (I am sure this can be argued over). The Kepler approach is by no means unique. I have found this is better suited to a)throttlers or b)dedicated singletrack riders who want to dial out ALL current decay power reduction to prevent any reduction in assist on a steep hill. My personal feeling is this is more of an approach taken by non-cyclists as if you tinker with the settings just right you eliminate that cause for concern and still get a positive result with limited reduction in still-desirable areas.
        You can get what you want with the default firmware. But the settings are counterintuitive and you need to fuss with it for an extended period before you fully understand what the hell you are doing. This is why I don’t feel a need to explore the open source firmware. I’ve got this figured out, finally, after years of tinkering.

      3. (Can’t seem to reply to a reply so hopefully this goes to the right spot!)

        > Don’t try to be precise with it, because if you try that its a waste of time

        Ah darn, I was hoping I’d be able to map “Speed%” to cadence with some degree of range (as voltage will vary), the goal being that I could determine “Ah yes, Speed% of 78 = cadence of 95 at full battery and 85 at almost-empty battery, thus Speed% of 78 is my ‘comfy cadence’ since I like and will always pedal with that 85-95rpm range”.

        I feel like I may just go straight to the open source firmware then 🤔. It having a specific pedal-cadence limit per PAS level is really appealing (or at least as I’ve interpreted it). “Use 100% power but cadence limit to 92 RPM all the time” feels like it could be a single PAS level for all situations.

        I’ll give your hill-climber config (from this page’s series) a shot before jumping ship. Hoping it works for me!

      4. I’ve finally had a chance to do some initial testing this evening and had _really_ fantastic results! I setup a PAS level for 80% power but 50% Speed% (Current Decay of 8 and Keep Current of 80% [*shrug*]) and it did everything I was hoping for with the BBSHD! It’d use a jump of power when starting (or upshifting) to get me up to my ‘happy cadence’ (50% was actually perfect for me on an 80%-charged 52V battery) then once at said cadence, just sipped 100-200 watts helping me stay there, but I was mechanically connected to the drivetrain the entire time. It never went beyond my own cadence. And if I wanted to keep pedaling but put in less ‘oomph’ / effort, it compensated in watts to keep the cadence up to my happy level.

        Even better still, I found that I could disconnect my brake cutoff switch and go completely brake-switch, shift-sensor, and stop-pedaling-for-a-second free! Once I was at my happy cadence and the motor was providing 100W of power or less, I just went ahead and shifted. No problems there — totally within the normal wattage for shifts in a standard drivetrain. It was brilliant!

        I’ll setup a second and third PAS levels for Speed% of maybe 55% and 60% to compensate for when the battery voltage is lower (thus max motor speed is lower, as you mentioned previously) but wow, I feel like this is what a “Cadence Sensing” motor should do from the beginning! Keep you at your preferred CADENCE! I can’t wait to ride it more tomorrow.

    1. m@Robertson – Pacific Grove, CA – I'm responsible for the day-to-day operations at my place of business: Leland-West Insurance Brokers, Inc. We do classic and exotic car insurance all across these United States. I'm also an avid auto enthusiast, a born again cyclist (i.e. an ebiker) and participate in medium and long range CMP and NRA sanctioned rifle competitions.
      m@Robertson says:

      Looks like I have some reading to do :-). I have focused entirely on tinkering with the ‘traditional’ firmware.

Leave a ReplyCancel reply

Exit mobile version