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

In this installment we’ll spend all of our time looking at the battery box and the separate controller/charger box that are both hiding under the cargo floor.

Bullit II Build Series
Part 1
Part 2
Part 3 (you are here)
Part 4

This Is The Big One…

Crawling thru the bike starting from the back of the rear rack, we’ve worked our way forward to the cargo box area. This is where all the real work – and all the ‘oops’ and ‘uh-oh’ – happened. I will mostly skip the wrong turns and instead focus on what worked.

Because so much went into doing the basement, and it was a primary objective in this build, this post will be focused there and be talking about just the floor, and boxes underneath it.

The Main Bullitt v2.0 Objective?

Hide the damn battery box. Thats it in one sentence. Lets look at what we did last time. Here is the v1.0 battery box on the Lizzard King.

Figure 1: In case you miss it, the arrows show the battery box on the Lizzard King

I say “in case you miss it” above only half kidding. A lot of people do miss it. Maybe they see it and mistake it for a deeper cargo area. It isn’t. It is beneath the floor, hangs under the frame and holds a heavily padded, large battery.

People often make the mistake of thinking it will scrape the ground. It doesn’t. In fact its never touched anything in more than two years of service. But… the bike would look cleaner without it.

Here is what it looked like inside a couple of years ago when I bolted it shut for the last time.

Figure 2: If you want to see more on this bike, with all the details of the battery and whatnot, the whole build process was documented here.

Worth noting:  Before I did that final bolting-up, I had already checked after a few months of wet and dry riding.  No water or crud was making it inside.

Lets skip to the end and see the result:

Figure 3: No battery box??

The battery box is there, but this time you can’t see it. In fact, it holds an even bigger capacity battery this time (it is physically smaller. We’ll get to that later).

There isn’t just one box. There are two. The one in the back holds the battery. The one in the front holds the front motor controller and a weatherproof onboard charger. I plug the bike straight into mains power.

It came out great. It was a bitch getting it there, and I didn’t know if my underlying idea would work until well into the project. If I ever do a Verson 3.0, it will be a by-the-numbers assembly. But I plan this bike to last my lifetime and have no desire to try again. You, on the other hand, are free to do your own and not make my mistakes. So lets begin.

The Box(es)

Lacking machinery, materials and fabrication skills up to this task, I took a tape measure, did some measuring on the Lizzard King (my new frame was still in transit) and started some research. Then I got on the internet looking for made-to-order, simple metal work. I found after some googling. They had an online project configurator. I ended up using it to quickly draw up what I needed and placed a work order.

Are they the best choice (especially versus a local machine shop)? I don’t know, but they were the best option I could find, even if the project was a bit pricey. They shipped promptly and the product was exactly to my measurements.

I didn’t order actual boxes. Instead I used what are described as ‘hat channels’: a single sheet of aluminum, with 90-degree bends in a sort of inverted hat shape that is open on two sides. It was a simpler and cheaper job. My thinking was some special needs to fit the Bullitt frame would make it easier to adapt a hat channel into a quasi-box, with extra-thin, short sides I’d put in myself.


Figure 4: Length and width as-received. The creepy selfie at left is a bonus.

Since the shop and I are both in the USA, the order process used Imperialist measurements. The hats are 8″ x 15″, with the hat ‘brim’ – the wings that support the box hanging on the frame – at 1″. These measurements are internal, and this matters because the alloy is 1/8″ thick, so outer dimensions are a bit wider as a result. Its the outer dimensions that decide whether the box fits inside the frame.

How deep are they? Its been so long since I did the actual work (8 months as I write this), I don’t quite remember. Roughly 3.5 inches? Don’t pay attention to that as you will need to measure your own battery, and figure out what a second measurement will be in the following next step. Those two taken together, and factoring in your steering arm placement, will decide box depth.

With all the talk about inside and outside measurements, lets touch on the box thickness. On the Lizzard King, that box was purchased as-is, and it uses alloy that is probably 1/16″ thick. Its thin, lightweight and sturdy enough, but not enough to be confident of it withstanding impacts. Thankfully it never has hit anything.

Since I was using a 3rd party metal working service, I had to take what I could get in terms of the thinnest alloy they offered, which was 1/8″. That is twice as thick, and twice as heavy. But its alloy so not that much weight, really. The thick walls make for a lot of strength. Having boxes with both thick and thin material, I’m a lot happier with the thick stuff.

Put The Sides On

I already had a long strip of 2″ aluminum, 90-degree angle bar stock in very thin 1/16″ size (sorry again for the units but to be precise I’m describing it exactly as-sold). I also had a good supply of Shoe Goo, which is a super-strong adhesive that permanently, totally bonds almost anything to almost anything else.

The idea was to cut a precise strip that covers the outside width of the hat. Glue it to the hat both from the underside, and along the vertical edge, which has 1/8″ inch of full edge contact, plus a bead running up along the inside vertical edge. This forms a bond that may as well be welded on.

Attaching the angle stock with glue from the outside preserves the unbroken box surface, and leaves the inside perfectly smooth. It can’t leak if there aren’t any holes. There are no wear points to rub on, like a bolt head or rivet, if there aren’t any. Plus… every millimeter counts when it comes to vertical space. Bolt/rivet-free attachment from the outside reduces internal vertical space by exactly zero.

Figure 5: The rear-most box. I used too much adhesive on the right piece. Not an issue. I goofed and primer’d the hat too soon. That had to be done over after the couple of weeks it took for the adhesive to fully cure.

If you enlarge Figure 5, you can see the underside portion of the side pieces are filed shorter. This keeps them from extending past the curved, bent bottom: No edge to catch on.

Figure 6: Quickee test fit with the sides on the rear hat – now its a box. The shorter height of the sides allow cable egress/ingress.

So much for the back box. The front one is more complicated: The Bullitt has mounts for the side panels in that forward space. You can’t just drop a box into it. This is a big part of why I used ‘hats’ instead of boxes: The need to hand-fit this part. Figure 8 below shows the job fully done.

To clear the side panel mounts, I marked the hat with circles matching the position and outside diameter of the side panel fittings. Next I took an angle grinder and sliced into the marked area in a very rough arc marked on the hat, taking off (hacking) material close to but not crossing the marked line.

From there, the arc was smoothed by hand with half-round metal files. After a fair amount of filing, test fitting and filing some more, I had enough material removed to fit snugly into the frame.

Figure 7: Those pesky round side panel mounts. And a drilled spacer (at bottom)

In Figure 7 above, note the box is shorter than the frame width, and is pushed all the way to the left. The idea was to use that gap for running cables in what will eventually become a deep channel.

After the holes were complete, the next step was to cut shorter side plates that accommodate the side panel mounts. It was important to give the adhesive plenty of time to fully cure, so that was a couple more weeks of down time. Figure 8 below shows the boxes ready for primer.

Primer and paint

Figure 8: Not so sloppy this time with the adhesive. Holes match the Bullitt’s crossbars and will be enlarged later

The next step was to primer both now-completed pieces. Both were roughed up considerably with a random orbital power sander for better primer adhesion.

Figure 9: Primer coat complete. Its thick enough that the box surfaces are now smooth

I spent some time deciding whether to paint the boxes gloss white to match the frame, or a stealthy black. The latter won out and, after a week or so to let the primer cure, I rattle-canned on a couple of coats of satin black automobile engine paint

Other Parts Of The Equation

Referring back to Figure 2, you can see the Lizzard King’s 32ah battery was so big it would have never fit between the frame crossbars. It had to be slung underneath. That was battery cell reality in 2021. Further, because of the Bullitt’s steering arm, the underslung box could not be very wide to let the arm move while steering the bike. Thus you see a battery mounted lengthwise, on a narrower box whose drive-side edge is diagonal and not squared.

This version has to be shallow to fit above the steering arm. That lets you use the full width of the frame space. But it creates a box not deep enough to fit a battery under the floor.

Unless you raise the floor. Thats the key idea – and its not just my own. I’ve since seen other Bullitts where the same thing is done.

The Bullitt’s factory honeycomb floor sits below the top of the frame rails. So we can raise it higher. That increases the effective depth of the box. But the honeycomb floor is quite thick. Millimeters count. The dibond floor sold by Velution is very thin, strong and lightweight so I used that and gained more space.

How Do We Raise The Floor?

That is a fiddly little job to get right. The box lips themselves will raise things up 1/8 of an inch. But where the two overlap between them, its double that height. To even out the rise on all three crossbars, I used a 1/8″ drilled alloy strip. You can see one at the bottom of Figure 7. One goes on the front and the other on the back.

But thats still not enough for the floor to clear the battery. Wood strips cut, drilled and treated against weather were the lightweight answer. I used Home Depot to source those.

Is It Going To Fit?

Before I got to painting the box or affixing the sides to the hats, I had to do a test fit to prove the concept. I dropped in the hats, plunked in the battery, taped on the spacers and…

Figure 10: It fits! (mostly). Dang this is going to work.

It Fits. Now What?

After the test fit, knowing it was very close out of the gate, it was time to do it for real. That involved a whole lot more effort.

Cable management

This is a task a good builder never takes lightly, and can be a nightmare on a 2wd system. Mix in the length of cable runs required by a Bullitt frame and it was a lot of tedious work. I bought a stack of HIGO cable extensions in advance, ordering double what I needed. It turned out I used all of them.


To prevent water/sand ingress I used two different types of automobile door insulation – the big rubber seals that run around the edges of car doors. It clamps itself to the tops of the box sides.

Figure 11: At left is the charger AC cord exit. At right, the wood strips, seen treated with an ugly water repellant wood stain. The one on the right is chewed up and only used for testing during the build.

In Figure 11 above, the power input cord for the charger had to exit on the non drive side. I used slit silicone hose to cover the bare (filed smooth) edges of aluminum the cable contacts. You can also see the car door insulation sealing the top of the side edge.

Final Bits and Pieces

Also seen above, the charger is already bolted on. The controller is about to be as well. It and the charger’s undersides were lined with thermal transfer tape, to enhance heat transfer to the thick aluminum box.

You can see in Figures 11 and 12 how the slightly-shorter wood slats, and the offset to one side, creates a channel for cable runs.

Figure 12: Final fitment is complete. Next step is to bolt the floor down. The bolts in the left-most shortie wood slats will be used to bolt the floor down when it goes on.

You’ll have to scroll all the way down this page and look closely to even see this one: The boxes are not level to one another. The forward box (which doesn’t need as much depth) is sitting on top of its 1/8″ alloy spacer strip, and on top of the ear of the rear box. So it sits higher. The rearmost box needs every bit of space it can get, so it sits directly on the frame crossbars.

Battery Fitment

The battery is fixed in place with small bits of super-dense closed cell MinicelT-600 foam.

The battery fits so snugly in the available space that cable routing was difficult. The charger cable was split to two lines – one forward to the charger, another rearward to the top tube bag for an aux charger if needed (like a Cycle Satiator doing an occasional precise balance charge). Battery output also had to be split to each motor, front and rear.

The Wood Spacers

These were bolted directly to the frame, and further clamped by bolting the floor on top of them. Not in the pictures: I used a layer of hard rubber adhesive stripping, 1″ wide, atop the wooden slats. That provided the final bit of extra space to let the floor lay flat without bending it over top of the battery pack.

The short wood spacers at left in Figure 12 are sitting on a layer of that rubber adhesive, with more adhesive squares on top sides for proper leveling. You can also see big, loose zip ties that have not been trimmed yet. Those are cable guide loops for wires – insulated in silicone tubing – that run underneath the floor.


The front box does have two open holes thanks to the frame’s side panel mounts. The charger and front motor controller are both IP65 rated and can only benefit from some ventilation, so this is not an issue.

The Floor Goes On

I planned from the beginning to use extra clamping to the floor. I don’t want to see a giant battery bounce into sight. I added four additional bolts. The foam pads on the Velution floor that cover all frame contact points are already cut to match the frame holes. So I knew where to drill without having to measure.

Figure 13: The floor is on, and staying on. I lined the edges of the floor board with rubber channel liner.

The floor has countersunk holes pre-drilled into it. I wanted to spread out the clamping force, so I used some extra-wide countersunk washers from MacMaster-Carr. I also needed two sizes of extra-long countersunk M6 bolts from the same source.

The Floor Attachment Tweak

I expected that raising the floor had one consequence: The holes would all line up, EXCEPT the two on the forward bulkhead, behind the front wheel. Those would be up high and no longer match the frame crossbar holes.

When I was thinking this issue through, I didn’t yet understand how simple it is to drill thru dibond floor material. What I should have done is just drill two new holes, and plug the factory originals. By the time I realized this, I had already bolted the floor on. To undo that I would have to take it off again. The gymnastics needed to get bolts, washers and nylock nuts together in between those two boxes… No thanks. So I stuck with the original plan.

My first solution involved making two patch plates for a second bolt to fit through the original floor hole (the bottom bolt and patch plate are tightened on before the floor is bolted down).

Figure 14: the patch plates, without backing sleeves/washers. Click to embiggen

A few days later, I realized a spacer block from Velution that I hadn’t used made a nicer substitute for the patch plates.

Figure 15: Neat little brackets. Ugly-ass washer stack

In this picture I just fit the spacer blocks with a stack of washers. Once fit, I measured the space and replaced that stack o’ washers with a single black alloy spacer that bridges the gap precisely and cleanly.

Failed/Discarded Ideas

Plug in the charger via an External panel plug

I bought and still have the C14-type panel-mount plug for this. I’ve seen other Bullitt battery boxes do this, but they are not hidden between the frame rails, so they plug in on the right or left side.

Since my box sides are hidden, I could only put the plug in the back. So I have to get down on my knees every time to plug in the charger. Screw that. Plus I did not want to cut holes in the boxes. You need a hole to have a leak.

Figure 16: I just ran the power cord back to the frame bag. There is about a meter of extra cord, plus I keep a 15-ft (4.6 meter) flat appliance cord in the bag in case I need to reach out further

Interconnect the boxes with a tunnel to pass wiring between them

The sheer size of the battery eliminated this idea. I had a plan… but then the battery arrived. And the hats arrived. And I saw there was no way anything would fit unless it was just a pair of gasketed open holes. Nope.

Make a 1-piece double-hat box instead of lumping two next to each other

This didn’t happen for one reason: Money. This would take the project out of the realm of a cookie-cutter web site configurator’d project and make it a custom-consultation job. Someone with better fabrication resources or abilities will want to do it this way but it was a bridge too far for me.

Make cuts in the box ears that interleave the two sitting together

Neat-o idea. Sounded great sitting and thinking about it. Then I got into the actual build and had 40 things to do, and this was a great big #41. In the end simply adding two alloy strips of an equal 1/8″ thickness on the front and back dealt with the issue just fine.


Figure 999: If you want to see a battery box, get your face down to ground level.

We’ll talk about the custom battery, the onboard charger, the cargo box liner, the front wheel and a few other bits in Part 4 to wrap discussion of this bike up.

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

This continues the walk-through of my hill-climber Bullitt, starting with the mid drive motor installation and taking a close look at its BBSHD configuration.

Bullit II Build Series
Part 1
Part 2 (you are here)
Part 3
Part 4

So lets continue…

I’ll jump straight into the physical motor installation.

Mounting The BBSHD To The Frame

The install on this motor was almost exactly as I have already described for the Lizzard King. Its the same bike frame, after all. There were, however, some minor differences.

frame fitment was different

This frame just flat out did not want the BBSHD to fit. The cable boss under the bottom bracket was not quite in the same spot perhaps. Or dimensions on the frame were subtly different somehow. Either way, that cable boss blocked the motor. The proper solution to fixing this on this frame would have been to go to the motor and file back the forward bolt mounting ‘ear’ until the motor fits. Restated: sacrifice the mounting plate’s forward attachment point. Then give yourself the exact same motor attachment method that Bafang themselves use for the M625 – the upgrade to the BBSHD. It doesn’t have a forward bolt position either. What does it have? They do the Hose Clamp Trick (although not as well).

Above: What the Hose Clamp Trick looks like on a Bullitt if you glance down. Its been awhile since I built the bike so its a little grimy. 5 minutes with a toothbrush and some detergent would clean it right up.

This link goes straight to the motor clamping section of How To Build An Ebike From Scratch. While the description of the motor mounting and that Hose Clamp Trick is not on a Bullitt, the background info given, plus the detailed description of how to lock a BBSHD down permanently, so it can never shift whether it wants to or not, makes using that link and companion article the best way to describe what I did.

Based on other owner reports that came thru when I was building mine, there is variance from frame to frame that can yield an easier fitment, or a harder one. Naturally I got the harder one.

Shorter Crankarms

My Lizzard King used forged 175mm (Shimano Steps) crankarms. I had a spare set of the same arms on a shelf, in 170mm length. So I just used those. If I had to buy a set of crankarms, I would have tried to get hold of some 165’s.

Wire Tunnel

Once again I used a length of PVC for a protective wire tunnel on the top of the frame to run motor wiring forward. I used white furniture-grade PVC. Furniture grade PVC is more expensive than standard white Schedule 40 from the hardware store. But its shiny, pretty and a perfect match to the Milk Plus color and gloss finish.

The tube is held on with two industrial, giant-sized white zip ties. They’re overkill but don’t have that ‘zip tie’ look, because they are so physically large. The PVC is sitting on a bed of adhesive white foam to help hold it in place as bumps and bruises accumulate over time..

And that was it. Everything else was a carbon copy of the Lizzard King motor install.

The original Box Two 9s drivetrain, on a new and shiny fresh bike build. It will never be this clean again. The pedals are Funn Rippers with spring-loaded cleat engagement and yes, I do ride cleated in.

Motor Configuration (BBSHD Settings)

The BBSHD settings differences are not many versus my flat-land Bullitt, but the differences in performance are profound. On the Lizzard King, BBSHD pedal assist on level 9 – the maximum – peaks at a sustained 400-450 watts. That is a considerable power reduction that makes sense on flat land.

But in steep hills where the slope can go from zero to Uh Oh in about 30 feet, you are well-served to take it up a notch. I’ll cover all three screens here, but the changes that matter are almost all on the last one: The Pedal Assist Screen.

The Throttle Screen

This screen is almost my default. The only change is an evolutionary one: Start Current is reduced to 2%, so the throttle rolls on even more gently to the drivetrain. You hear a lot about how Bafang motors bang and jerk on the chain. 2% on Start Current completely smooths out that behavior. Also setting End Voltage to 4.2v creates a smooth throttle curve that makes it easy to modulate power output in very fine increments – the opposite of the default behavior.

The Basic Screen

Once again, this is pretty much my standard settings on this screen. It retains my speed limit graduations, which are meant to help cut power when my cadence gets high. Essentially what I did with the Speed Limit percentages was start at 100% on Level 9, and then work my way back in simple 5% increments down to the bottom Level 1.

The Assist 0 limits of 1 and 1 are there to preserve the normal function of throttle when you set the screen to Level 0, which disables Pedal Assist.  This lets you pedal with no motor support without turning the motor off.  Throttle remains available in case of an unexpected need.

I have strongly reduced the effect of the Speed Limit cutbacks via separate settings on the Pedal Assist screen. Since leaving these alone doesn’t hurt anything, and the fewer changes the better, I left my generic settings in place.

The Pedal Assist Screen

This is where the magic happens. The Hill Climber settings are based on my Surly Big Fat Dummy’s settings, which was my former ride in this area. I took what worked on that single-motor cargo bike, copied them to the Bullitt and then experimented a bit.

Since Bafang does not tell anyone anything about how these settings interact, we have to guess on some things. There is no way to set a specific power output level that is reliably sussed or documented.

The settings on this screen move the maximum steady output of pedal assist power to 900-950 watts. Thats a lot, and enables me to select assist level 6 or 7 and still get up the worst hills, with a safety margin available in 8 or 9. This turned out to be especially handy when I was hauling several 50kg loads of gravel for a landscaping project.

ABOVE RIGHT: the new Hill Climber. LEFT: The flat-land Lizzard King. Only Current Decay and Keep Current are changed. Small differences, big results.

Version 2.2b of the open source BafangConfigTool has a graph that does a decent job of trying to explain how the settings interact and affect performance.

Start Current is very low at 2% for the same reason it is at 2% on the throttle screen: Eliminating jerky initial engagement (5% is what I used to use).

Slow Start Mode is as gentle as is confirmed to be safe for the motor’s controller. Lower numbers here = slower starting and 3 gives me the gentlest motor-safe slope to that curve.

Start Degree Signal is a fairly prompt 4. Once again the problem to beat is starting from a stop at an intersection while on a steep hill. Specifying a lower number of pedal assist signals to accept before the motor kicks in makes it start power delivery sooner, but I have also set Start Current and Slow-Start Mode so low this relatively fast engagement doesn’t cause any concerns with drivetrain strain.

Stop Delay remains as small as is safely possible to preserve the motor controller.

Current Decay (one of only two changed settings) has been set to the maximum of 8, which either minimizes Current Decay, or eliminates it entirely (Bafang isn’t giving anyone any help figuring out which, or when). Having high cadence reduce power assist makes a lot of sense on flat, paved ground, but when you are set in a granny gear and pedaling like mad to crawl your way up an excruciatingly steep hill, the last thing you need is for the motor to cut back power thanks to high cadence. It also looks as if this one setting is primarily responsible for the increase in peak sustained power.

Stop Decay remains at zero. The idea is if you stop pedaling, you want the motor to stop. I ran some experiments recently as part of an internet discussion. I found a suggested setting of a whopping 1100 ms (i.e. set it to 110) produced nothing negative. The cutoff still happened so fast I couldn’t argue it hurt anything. In steep hills, a long setting like 1100ms could actually smooth things out a bit if crawling up a hill and perhaps your cadence stutters accidentally. Not a setting I kept, but its worth noting.

Keep Current (the second of two changed settings) is kicked up just a bit to 40% from the Lizzard King’s 30%. Frankly both settings are aggressive. The Current Decay of 8 is preventing this setting from engaging at all unless I am on flat ground, moving relatively fast (i.e. not crawling at 6 km/h up a hillside) and spinning my crankarms at high cadence.

Version 2.2b of the BafangConfigTool can be downloaded (entirely at your own risk) at the author's web site.  I make no representation of any kind as to its quality, lack thereof, your ability to avoid totally destroying your motor or cause a horrific accident of some kind as a consequence of using it.  

Saddle and Seatpost

I used the same Ergon ST Core Prime saddle that I know my butt prefers. However, since the Kinekt post on the other Bullitt has a pogo stick effect at fast cadence, and I know the Thudbuster LT doesn’t: I put the Thud on this time.

That cable is a seat leash to add a few moments delay to a theft attempt. I covered the rear camera in the dashcam series.

Stuff In The Frame ‘Triangle’

I used a Blackburn frame bag just as on Godzilla. However, this one does not hold the front motor controller. It does hold the batteries for the front fork lights and COB LED strips. It also holds the mains power cord for the onboard charger, as well as the charger’s 15-foot/4.5 meter power cord extension. There is also a secondary charger connection to the battery in case I want to plug in an external Satiator charger or similar (we’ll get to the charger stuff in a future installment). Beyond that, there is space for wallet, sunglasses, phone and keys.

The zipper on the other side of this bag holds the power banks for the headlights, side light strips and a dashcam.

At the back of the cargo bulkhead are Velution’s Large bag solution, that uses Ortlieb large dry bags. These are much bigger than the Fahrer bags on Godzilla, and I like the Ortliebs a lot better. They hold all of my routine tools, spare inner tubes, patch kits, pump and so on. Because I need to routinely empty these bags when I go inside of a shop and leave the bike outside, I keep the contents in easily-removed cloth zippered pouches (two each side). That makes it easy to pull out the pouches and toss them into a carry bag.


For handlebars, this time I chose the Ergotec Space handlebar. Think of it as a Jones Bar in Junior size. Its backsweep is less than the Jones 45 degrees, but still comfortable. I installed short Ergon grips hoping to extend them longer than normal with segments from a Wolf Tooth Fat Paw grip, but I needed so much room to fit the shifter, I couldn’t. I ended up with a normal grip size.

Cockpit Version 1.0: At the shop on the night assembly was completed. Dual independent throttles, dual independent PAS settings … and dual displays. Not subtle.

Everything is in easy reach on the bars and – originally, at least, is a carbon copy of what I had already done on the Lizzard King.

Cockpit Version 2.0

A few months went by, and I decided to clean up the bars at the expense of information display, which I am not a fan of anyway (we got along riding bikes just fine for more than a century without all this data reporting).

Pretty clean handlebars – as far as 2wd bikes go. Also Cockpit v 1.0 had the grips upside-down.
The DM03 Bafang Display

The DM03 is made by VeloFox for Bafang BBSxx motors. It is a small monochrome OLED screen. Sales ads describe it as an improved version of the SW102 display. The SW102 is most commonly known as what the EggRider v2 display/programmer uses. I only wanted an ultra-small, discreet display, not the extra EggRider functionality.

A big selling point of the DM03 was it supported 9 levels of PAS. An SW102 gives only 5. Additionally, the DM03 has larger buttons than the SW102. Since I also have an EggRider v2 on my Cyc X1-powered 29er, I can compare the two displays look-and-feel directly.

Knowing how visible my EggRider was in bright sunlight, I was under no illusions: The DM03 display is only just barely visible in bright sunlight. But I was after compact size, and I can do without a display. This is a perfectly functional PAS control unit for people who do not feel a need for an ever-present data readout.

If its foggy, in the shade or overcast, then the display is easily visible. You can also shade it with your hand and squint at it in the sun, but you’d better not do that while in motion. I only look at the thing to remind myself which PAS level I am in.

The DM03 Advanced Settings Code

Just like other Bafang-compatible displays, the DM03 display for Bafang motors has an Advanced setting, where you can edit things like wheel diameter, and make the all-important selection to support 9 PAS levels. The code to get into the DM03 display’s Advanced Settings screen is1657. I purchased two of them from two different vendors. Neither provided the code with the display, but both promptly gave it to me when I asked so I could finish setting up my bike.

Cockpit Version 3.0

I’ll add a picture when this gets installed. I use a KT controller and display for my front motor. As of the time of this writing, I have a KT LCD4 display on order and en route. Essentially it is a KT-flavored version of the same minimalist DM03 display. This one uses old-school LCD, and has a backlight. It should be perfectly visible in bright sunlight and total darkness. We’ll see. This will take all of the displays off of my handlebars for a cleaner setup.

The KT LCD4 should work MUCH better as an LCD in sunlight versus the similar OLED displays.

Carbon Fiber Steering Tube

I used the Velution one-piece carbon fiber steering tube. I found with the Lizzard King I moved the handlebars once to find my optimal height … and never moved them again. The Velution tube is a small fraction of the weight of the steel factory model plus the weight of the EasyUp is gone. You also get a MUCH cleaner look with the included smooth alloy spacer.

Heads-Up: If buying the Velution steering tube, be aware it does not come with a crown race (not their fault; they never said it did). Source one yourself. I used a steel Cane Creek 40.

Kinekt Suspension Stem

After going to all that trouble to lose weight on the steering tube assembly, I gave some back with this Sherman tank of a bicycle stem. For me it is worth it. My wrists have never been the same after a car hit me in 2017, and between the swept back bars and a suspension stem, this is what I need to be able to ride without pain getting the better of me.

I upgraded the internal spring to the extra-firm Orange version, which is not available unless you buy an orange 1.5″ upper seat spring directly from Kinekt. I also installed the damper upgrade kit. That gives you a stem so firm you can’t move it by hand. It only moves when installed. So I can use it with a full lean-over seating position and it will not bottom out on me.

The Cargo Bay

Here’s where all the work is, and this is where the build actually gets interesting. But given how long this post is at this point, its time to put a sock in it and save that topic for Part 3.

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

A Bullitt has been my daily driver in all-flat terrain for more than two years. Now I need another for steep hills. Rather than just copy the original I will re-think my choices and make some cool upgrades.

My first Bullitt - the Lizzard King - was the basis for this bike build and written up extensively here.  This bike is essentially a v2.0 of the same bike.  There is much background detail left out of this current discussion (like drama-free AWD) since it was covered the first time around.

Bullit II Build Series
Part 1 (you are here)
Part 2
Part 3
Part 4


Before I get started, lets address why I need two Bullitts. When I built my first one, it was a bucket-list item I expected to last me forever… and its still going strong. But, here’s the thing: I split my time between two locations.

I work in Fresno California, where the land is all table-flat, and my job has for the last several years required me to essentially move there and set up a second residence. My actual home is in Pacific Grove, California… which has totally different terrain. Where Fresno is roasting hot in the summer and flat as a table, ‘PG’ is smack on the Pacific Ocean seashore, is only flat at the shoreline and has plenty of low but steep hills. I live at the top of one, in fact.

Recently I was finally able to start living at home again. My Surly Big Fat Dummy provided cargo bike duties, but I found something I didn’t expect: Having had a frontloader for a couple of years, now I knew what I was missing. I didn’t want to put up with the quirks of a longtail. I ended up describing the differences in detail. I found I was actually resenting the ride limitations, and putting off rides as a result.

Sneaking into Laguna Seca Raceway while it was closed for construction – I had the whole complex to myself. The Surly Big Fat Dummy was a joy to ride that day.

Screw that. Cycling is an integral part of my life. Its time to

Build Another Bullitt

As part of the build planning process, I needed to do a Build Sheet. Click the image below to go to the actual build sheet complete with links to almost every part in the build. I won’t discuss every bit and piece in this short series, but this list contains pretty much every part.

This image links to a Google Docs parts list with live links to the parts

So… how do I organize this writeup? This bike is at its core just an improved version of the one I already built and documented. There’s no point in doing that all over again, but at the same time its hard not to if I want to avoid making the reader bounce back and forth from one build description to another.

Lets just start at the back of the bike and work our way to the front. I’ll go into details where I think they are worthwhile, and be brief when I think I am on well-covered ground.

Rear Rack

This is a fairly common Axiom Streamliner DLX. Its got dropout extensions that move it well back for heel clearance, and a 50 kg weight limit. It is the identical rack I used on my first Bullitt, but oddly, this time the rack fit perfectly with none of the mods needed to get its dropout extension to fit. Apparently Larry Vs Harry have moved the threaded boss on the dropouts down by just a bit versus the ones they sold two years ago.

A standard-issue Axiom Streamliner rack with an extra-beefy front mounting bracket. No idea if this increases its capacity but factory stock its rated for a lot of weight already.

I also used a beefier center stay mount from one of my Axiom Fatliner racks and created a stronger-than-stock solution.

Similar to the ‘bobtail’ deck I made for the Lizzard King, this rack has a ‘deck’ made up of two components. One is a long strip of aluminum flat bar, 2″ wide and 1/16″ thick (sorry for the Imperialist units of measure but thats how its sold here). This flat bar is drilled and bolted to the front of the rack using existing holes. Holes drilled at the rear simply use a zip tie to attach it to the back of the rack. As previously, this thin aluminum bar is part of the rear fender solution.

The Kicktail

You’ll notice the deck bar is longer than the rack, and bent up in the back. I did these two bends by sticking the straight alloy strip in a big steel door and frame, and putting my weight behind it. With that bend in place, mounted on the rack, the deck now has a sort of kicktail… like on a skateboard. It doesn’t serve the same purpose though: The extended bit of deck catches water spray coming up off the tire. So its part of the ‘fender’.

The deck is extended in a second bend that goes up to vertical. In the back of this portion, I stuck some prismatic red tape – the same type as is used in municipal street signs – for a big passive reflector. Additionally, on the front – because why not? – I mounted a square of yellow prismatic tape for forward-ish reflectivity (my local laws prohibit the use of red, facing forward).

Lastly, at the top of the kicktail, you can see a short black strip. This is a narrow length of thick rubber mastic tape. It extends well past the deck’s edge and folds over onto itself, so it becomes an extended rubber bumper. I have learned from doing kicktails like this in the past that if you don’t cover the trailing edge in rubber, sooner or later you cover it in blood (even if you file the edges down).

Last time, it was a ‘bobtail’. Bent differently so it was a smooth curve. Executed a little differently this time to give me a tighter radius bend and a perfectly vertical section this time for the rear reflector.

The Plastic Sheet

The second component to the rack deck is a bit of thin flexible sheet plastic. It has been cut to fully cover the rack, and then slipped under the aluminum bar. Holes matching the top deck have been drilled thru it and as such it is affixed tightly and permanently to the rack. To mount a pannier, you only have to lift up the very thin plastic and attach the pannier’s hooks as usual.

The use of a narrow strip of aluminum, coupled to a flexible sheet of plastic that covers what the alloy does not, gives me full rack deck coverage while maintaining my ability to easily attach a pannier. Why bother? Because this is a part of the rear fender-that-is-not-a-fender coverage.,

Rear Mud Guard

The closest thing to an actual fender is a really big mud guard. It is a Mucky Nutz Fat Face Fender XL (They sell white ones on clearance dirt cheap). It is a front fat bike fender, put on the back wheel, and reversed. Then to extend it in back I added some white gorilla tape. It is bolted to the frame in front using the fender bolt and boss that LvH put there. This bolt pulls the mud guard forward to clear the 2.0″ Schwalbe Marathon Plus Tour tire.

Working together, the rack, rack deck and mud guard provide full fender protection without the use of a fender.

A little matching white extra wide gorilla tape, judiciously applied, extends the mud guard up to the rack deck – no water makes it onto the rider.


Same as I do on every one of my bikes: I am using 203mm wide, 2.3mm thick Tektro Type 17 rotors and Magura MT5e 4-piston calipers front and rear. The front brake cutoff is connected to the front motor and the rear cutoff is connected to the mid drive. It is not possible to cross-connect the cutoffs to the dissimilar motor controllers so either one cuts off both motors.

Rear Wheel (and Drivetrain)

The Lizzard King, my original Bullitt, has an 11-speed drivetrain and a 52T (!) front chainring, feeding an 11-42T rear cluster. I only use the middle three or four gears to maintain good chain alignment and high pedaling cadence.

This time I need to negotiate steep hills whose slopes vary, often on the same climb. So a big rear cluster is a given, strength is paramount and I need more usable gears to work with the varying terrain.

The Bullitt has short stays in the back. A BBSHD moves chainline outboard. So no matter what chainline angle will be a challenge. Its going to be tough to use the smallest and biggest cogs on the cassette.

Done… Then Re-Done
Drivetrain Plan A

My first setup was a 9-speed system. I used the Box 2 Extra Wide derailleur, an ebike-friendly Box 1 single-shifter, and its matching Box 2 12-50T cassette cluster. I have used this hardware in the past. It is a premium solution that is not the cheapest, but a lot less expensive than the upper tiers of the other Big S brands.

Pics or it didn’t happen: The Box derailleur can reach the 50T cog. The 12T little one can be reached too. But both of them are too far over inboard or outboard to be used meaningfully..

I labeled the Box Components drivetrain as Plan A. We’ll look at Plan B, and why there is a Plan B, further on.

Next in the drivetrain, there’s the front chainring. I have used the 40T Lekkie chainring and the smaller-than-stock motor cover it requires on my Apostate, and knew it worked well. The 40T ring also has a lot of inboard offset, which you need on the LvH frame.

The Lekkie ‘Pro’ 40T chainring, which only fits over top of the Lekkie motor cover. Note the smaller chainring teeth that are 10-12 speed compatible. No 9s.

But I need as much offset as I can get. Lekkie makes a ‘Pro’ line of chainrings, and they have an additional 2mm of offset. I wanted that extra 2mm as I will ride this bike on the bigger, inner cogs. Complicating things: the Pro rings are not 9-speed compatible. They have a different tooth profile meant for 10-12s systems.

I got around this by using a SRAM EX1 mid drive chain, which is compatible with 8, 9 and 10s systems, so I’m still good.

By using the Pro chainring I gain 2mm. If I perform an optional modification to the Bafang motor casing, I gain another 2mm. With those two mods I moved the chainring a full 4mm inboard towards the seat tube.

Shave off some of the BBSHD motor housing, just behind the Lekkie motor cover. This lets you do without a 2mm spacer to gain that much more offset. Done in about 15 minutes with a hand file.
Drivetrain Plan B

After I built the bike, and ran it for a couple of hundred miles, I was not happy with the Box Components drivetrain. The matched set of components are every bit the butter-smooth, high quality system I expected them to be. However, chainline considerations kept me from using three of the gears on the 9-speed cluster. Since I am a pedaler and not a throttler, I still benefit from lots of gears despite the electric assist. A 6-speed leaves room for improvement. I was missing my 11-speed on my other Bullitt.

Contemplating this, I had – sitting on a shelf unused – a Microshift Advent X 10-speed drivetrain looking for a home. It looked like a solid alternative that might give me a couple more gears, with no meaningful penalties. Here’s a comparison I put together while I decided what to do:

My real comparison was between the top two choices, but I also threw in the Microshift Advent 9-speed steel cluster on the Box 2 derailleur (I use that on my Apostate) just to see how it lined up.

In the chart above, the red cogs are too skewed to use. The yellow are livable if I must and the green are good to go. This chart told me

  • If I am limiting myself to my 3rd-from-the-top cog to be absolutely safe, both clusters are giving me the same 34-tooth big cog.
  • The next cogs down on the Advent X give me as-good or better low gearing.
  • I get more gears to work with – two more – on the Advent X.
  • I never want to use the smallest cog anyway on any mid drive build, so I don’t care about the little one on either choice.
  • It looks like the Advent X is going to give me smaller cogs for when the ground is flat.

The saying goes that ‘Steel is real’ when it comes to tough bike frames. The same is also true of a cassette cluster that gets flogged by a mid drive motor.

Here are some known issues that aren’t on the chart:

  • I’m going up steep hills with 100+ lbs of load on the bike, not counting my own self and my extra heavy locks (2 meters of boron steel noose chain and two motorcycle U locks). This puts severe strain on the drivetrain and demands a conservative limit on how skewed I run the chainline.
  • The Microshift Advent X cassette is ideal as beefed-up mid-drive-friendly clusters go. It has all steel cogs and is permanently pinned together on all but the smallest cogs, so force is distributed across the entire cassette body rather than having one cog dig in at a time.
  • My handlebar layout made space a premium. The Box One shifter surprised me: Shifting often required the full throw of the shift lever, so it needed more space on the bars. SRAM shifters only require a very short throw. So there was something else I was missing.

Chainline on the inside, middle and outside. Even though I can get to the 48T cog, chainline is too skewed for a hi torque uphill slog.

with 250 miles on the odometer, I changed the drivetrain for the Advent X. It has worked beautifully. Shifting has been great all across the gear range. When I need a new cluster, I’ll be replacing a US$40 part.

I also followed a tip from a Youtuber and put an 11-speed chain on this 10-speed system. 11s chains have identical inner dimensions to 10s. They are just a hair narrower on the outside. Using an 11s, you gain an absolutely silent drivetrain. I didn’t realize how loud my SRAM chain was until I switched and… blessed, complete silence. It runs as quietly as a belt.

I used a Wipperman Connex 11se ebike chain on sale at JensonUSA for a whopping US$23.94 rather than the usual US$106.95.  After seeing how well it performed, you can bet I bought enough spares at that price to last me for the foreseeable future.

On the innermost cog, which we’ve already established is not usable, the limitations of a mid-length cage versus the Box 2’s extra-long cage are apparent. Its a smaller cog than the Box 50T, but the derailleur is pulled far forward thanks to its lesser ability to wrap chain. Right picture: Three cogs down – the one I consider the max on really steep, loaded climbs – the derailleur is in a happy place.

I still love the Box Components drivetrain. I’ll move the 12-50T cluster to the Apostate, which can use the bigger cogs. The derailleur and shifter… I’ll find a use for them someday.

Build a Wheel

The final drivetrain item is the construction of the rear wheel. I originally wanted to duplicate the Lizzard King’s rear wheel, but the almost-indestructible SunRingle MTX39 rim was unavailable. The DT Swiss FR560 downhill rim is at least as strong, half the weight and twice the price. I’ve used them before and they are awesome so thats where I went. I stuck with my usual DT Swiss 350 Classic ratchet engagement rear hub, with the ebike/tandem 24pt ratchet and steel cassette body upgrades. I’d have preferred a DT 350 Hybrid that includes these upgrades on a beefier hub, but just like the MTX39’s, they were nowhere to be found at the time. Spokes are Sapim Strongs with brass nipples.

The rear wheel is shod with a Schwalbe Marathon Plus Tour, which has a near-knobby articulated tread. Our local bike paths get covered in sand whenever the wind blows, which is a lot here.

This is a paved path about 15 feet wide and the main local urban cycling thoroughfare. It was buried in sand the day before when the wind kicked up. I need knobby tires year-round here.

The next step from the back of the bike forward is mid drive motor installation and (drumroll) configuration. That is a big enough topic to make this a good time to wrap up, take a breather and continue the story in the next post.

Larry vs Harry Bullitt – Front Motor & Wheel

Godzilla is a 2WD / AWD ebike. Both axles are powered. Here’s everything you could want to know about the front wheel build and motor installation.

The Bullitt Build
1. Battery and Battery Box
2. Cargo Box
3. Brakes
4. Front Motor & Wheel (you are here)
5. Rear Motor & Drivetrain
6. Bits & Pieces

The Easy Way Or The Hard Way?

Lets make things as difficult as possible and do both. My loss is your gain and now you can see the results of both paths. I don’t regret this one bit (at least, thats my story). It gave me a spare wheel and motor, which is a good thing for a bike I need to depend on. I’ll lay out both paths and you decide how you want to do yours.

The Easy Way: Just Buy a Kit

In my run-up to buying my Bullitt frame kit, I looked extensively for the right 48v motor with a 20″ wind. It turns out those are pretty uncommon. Usually they are 36v, with a 250w or at best 350w rating. Oftentimes the winding is questionable as being suited for a 20″ wheel. Usually a motor is wound for larger 26″ or 700C wheels, and the torque is just not there for a little 20″ wheel build. Perusing EBay and AliExpress listings, you are often left wondering if what you are seeing REALLY is the variation you are looking for.

Still a project only capable of rolling around in the garage: the original kit wheel, with the too-wide Schwalbe 2.40″ tire on. It actually worked just fine.

I lucked out, and found posts on the Bullitt: The Dark Side Facebook group from someone who had just finished receiving and installing a complete 48v, 500W Bafang front motor kit. Based on what the posts showed, it was quality stuff. So I bought one myself: A Greenergy 48v, 500W complete front wheel kit. This kit was advertised as express-shipping from China to the USA and that is really what they did. I had it in a few days and followed its progress all the way here via the Fedex tracking number I received in my Ali control panel.

It was helpful to already have experience with Bafang geared hub motors, to understand their reliability and performance. It also helped that I knew exactly what other hardware worked with them. Particularly the display and controller I eventually wanted to use on my custom build vs. this kit.

A word on buying from AliExpress:  Its kind of an adventure.  Definitely not as convenient as buying from the USA, but if you have experience doing it, you can smell out the bad actors.  I have bought many ebike parts there - this was not my first motor shipped direct from China - and have only had a few sub-optimal experiences with low-risk, low-cost parts.  Don't fear the platform.  Its a professional operation.  But if you are going there for the first time try and buy from a source that has been recommended to you directly.  Let some other pioneer take the arrows in the back.

Up front: I knew I did not want to use the ancillary parts (controller, throttle etc.) that came with the kit. For the low price they were charging, I considered those parts throwaways and was only interested in the right configuration of motor already built inside of a decent if not especially noteworthy wheel.

Waiting in the wings:
It is present day, and the Greenergy kit wheel has a new Schwalbe Big Ben 20×2.15 belted tire mounted on it. Inside is a Schwalbe A7 tube with Flatout sealant inside. Recently I swapped out my regular wheel, described below, so I could take my time re-greasing that second motor at its current 1000 miles. The G020 motor is adequately greased from the Bafang factory, but only barely so with white lithium grease that needs refreshing every 2000 miles at best. Since the above motor/wheel was an extra I was able to pull it apart, look inside, clean it out and re-grease it with Mobil28. That grease will at the very least have triple the service life before another re-grease is in order.

Is it the best grease for the job? Opinions vary widely. Mobil28 is a favorite in the DIY community and I can say from having it in geared hubs over a couple of years it has never done any harm. The motors I have used it on have never behaved differently other than to run a bit more quietly.

The Hard Way: A Custom Wheel Build

I knew from my previous AWD builds what controller I wanted to use, and I already had all the small parts like PAS sensor and throttle. The only thing needed was a display and I had an easy source for that.

In the end, the electronics were easy. It was the mechanical bits that were tough. I had a hell of a time getting hold of the right spokes, nipples and rim. Once acquired, I had to wait about 6 weeks for my poor, perpetually-backlogged wheel builder to get to making the thing. Having the kit wheel I could just plug in was great. I was able to ride the bike maybe two months earlier than I would have otherwise.

Having just finished buying one Bafang G020 with 11T winding, I didn’t need to expend any more energy figuring out what motor to use. I just needed to find a bare one. I was able to acquire one from the same guys who sold me the kit – for just over $200 on AliExpress (and it took quite a while to arrive this time). Thats the good news. The bad news is I can’t give a link to that motor as its no longer available there. But I can display a picture of the almost-identical motor model designation, and show you what you want to see for a comparable buy for a 20″ wind:

Reading the Bafang factory codes in the image above:

FM“Front Motor”
G020Model number
500Rated for 500 watts
DDisk brake compatible
12“12T”, or 12 turns of copper winding on the motor core

My motor is 11T, not 12T. 12T could work on a 20″ wheel, as it gives you higher torque and consequently a lower top speed than 11T. However my 11T motor works perfectly as I want it to – right in the Goldilocks zone for a front motor that I don’t want to be too powerful off the line (no need to pull hard on that front fork – or the fork’s dropouts) and which starts to peter out just as the rear mid-drive starts kicking in hard, for a nice drama-free balance. A 12T motor would have a lower top speed that might make it die off below the typical cruising speed for this bike and I’d rather keep both motors working for as much of the range of normal use as possible.

Details on how the motors interact on this 2wd ebike:
“Hub + Mid Drive Cargo Beast”

Here is a link to what appears to be a very similar if not identical motor for sale on Amazon. You will want to ask the seller what the motor winding number is. Based on the similar name of the seller on the listing as of today, this may be the same one I bought mine from.

Rim Choice

For a rim, I wanted a wide BMX rim to better accommodate the plus-sized, 2.4″ Schwalbe Super Moto X (belted) tire I wanted to use. 2.4″ is outside the envelope of most Bullitt builds, but it will fit the fork easily and the frame barely. A tire that wide needs a wide rim. I chose the Alienation Black Sheep. It was the widest double-wall rim I could find. Its spoke drilling is angled, which should help when fitting short spokes into a small rim with a great big hub in the middle.

Cross section of the Alienation Black Sheep rim. Economical and really strong.

Spoke Choice

I specified Sapim Leader spokes in 12 gauge, with brass nipples. Once again I used Stoic Wheels as my go-to source for custom cut spokes in a world where you can pretty much forget about finding such things. He’s come thru for me on I think three separate builds now.

The spokes were my call. The wheel has proven (so far) able to take anything I can throw at it without any issues. But if I had it to do over again, I would not have chosen such heavy spokes for such a small wheel. They’re strong and all, but a spoke this heavy-duty did not like to be worked into a wheel this small with a hub this big. Sapim spokes are high quality and most likely the 2.3mm/13ga would have been a better choice, or maybe a Sapim E-Strong 2.6-2.3mm single-butted?

For me this is water under the bridge, but for anyone wishing to do a similar wheel build, consider carefully. My trusty longtime wheel builder at Stevens Bicycles got it done, but he said it was the most difficult wheel he has ever built. Looking at the spokes in the wheel, you can see why it was a struggle. Wheels generally derive their strength thru the rim, and the spokes need to provide some flexibility. If the spokes are too strong, there can be negative consequences. I clearly don’t have flexibility (think shock absorption) in this wheel … so fingers crossed it doesn’t come back to bite me.

Custom wheel build. 27mm double-wall BMX rim. As wide and strong of a rim as I could get my hands on without descending into fat bike territory.

Torque Arms (plural)

The G020 is rated for 45 Nm in its 350w, 26″incarnation. At best it is good for 60 Nm here in a 20″, 52v system with a 25a controller (thats set to slow start no less!). So, not exactly a powerhouse by design. You may not even need a torque arm on the Bullitt’s chromoly dropouts. But in my past I have ruined one chromoly fork and seen countless others destroyed by front hub motors. I consider a properly made torque arm essential as cheap insurance. Look at the pictures of the front wheel seen on this page and you will note that I have two of them. More is always better.

The Grin V2 arms I am using here are super easy to install and just as easy to remove if you have to pull the wheel off – just unscrew the socket cap at the dropout and the torque arm becomes a glorified washer.

PAS Sensor Installation

This was a major bit of fiddling that I have fortunately done before, so I didn’t have to do any heavy lifting to figure out how to make it happen. The job is to set up a pedal assist disc sensor on the bike, except the BBSHD is located on the drive side where the sensor goes. There’s no way to use it on that side, period end of story.

There are a couple of alternative sensors available that are meant to be usable on the non-drive side. Why is that a thing? The problem is anything meant to work on the drive side, which is moved to the non-drive side, is going to be reading rotational signals backwards, so it won’t work. Thus the left-side, or ambidextrous alternative. However this ambidextrous sensor is noisy and can fail via crud ingestion.

Using my chosen KT controller, its also possible to use one of two ‘reverse direction’ settings, so you can use a standard sensor. This was an option, but not necessary because, fortunately, I used a little trick that kills two birds with one stone: This particular sensor is held in with a screw rather than being molded in place, so I was able to simply reverse it in the mounting ring.

This not only solves the sensor-backwards problem, it also means the mounting ring is pointing in the opposite direction from normal, and now holds the sensor further out rather than tucking it in closer to the frame. That just so happens to be exactly what I want when mounting it in conjunction with BBSHD bottom bracket locking rings. You can see that in the pictures below.

What you see above on the right is an early test fit that is not complete. On the left you see the full, final setup. To anchor down the motor and then the PAS sensor ring, I used an inner ring, capped by the commonly-used dark black outer trim ring for the motor. Then came the sensor, capped by another inner motor mount ring. That third ring sandwiches the sensor mounting ring and holds it into place. My usual BBSHD installation uses two inner rings tightened together, jam nut style, but with the extra axle length sticking out of the 68mm bottom bracket, a traditional inner6+outer, followed by another inner did the trick. Stacking them like that has the added benefit of ensuring the motor never moves. The PAS sensor mounting ring is sandwiched as if it was a big washer.

Another reason the ambidextrous sensors don’t work well is they eat up about 1/2″ of real estate on the axle. As you can see on the left photo where the crankarm is torqued down fully… there ain’t no room for that here. There is however enough room to put on the standard magnet ring, and if you look closely you can see I placed a rubber o-ring on each side that in turn holds the magnet ring tightly in position, just a hair away from the sensor pickup.

Net result: Pedal assist is reliably enabled on both motors. That is a thing of beauty when you can get it to work.

Controller – Choice / Settings / Location / Wire Routing

All of my hub motors have been Bafang geared hubs, and all used KT controllers and displays. So I went with what I was familiar with. As noted above, sticking to what I know let me immediately solve the PAS sensor problem, among other things. I also already knew what I needed in terms of motor configuration within the controller so it operates safely within the confines of how I wanted AWD to operate: Seamlessly and without drama on a bike subject to extreme loads. I didn’t want this motor to be pulling hard on a bike with a potential total system weight in excess of 400 pounds.

So I knew I needed a KT controller. I also knew the 35 amp models I have used in the past were a) too strong and b) would not have the right motor plug. 35a controllers use the 3-pin Julet Z916, which matches up to the higher powered Bafang hub motors. A 500w motor has the ‘small’ HiGo Z910 9-pin plug, and KT controllers with that plug are in the 15, 20 and 25a range. I opted for 25a as I’d rather dial down too much power than to need more and not be able to get it.

However, I didn’t need to do much of anything except set the controller to max amps and slow-start (the C5 setting).

As to controller location, once again as with my previous AWD bikes I used a handlebar bag and simply set the controller inside of it, with the open top of the bag providing ventilation. This time I didn’t bother to use grommets to create reinforced holes in strategic spots in the bag. Because of the different sort of layout the Bullitt provides to the builder, I was able to simply run up a single bundled, loomed cable up and into the open top of the bag. You can see that cable in the right side cockpit photo below.

Front Controller bag with bundled cable simply exiting the open top. The velcro strap is in case I need to keep long pants out of the chain. And to hold my sunglasses

Controller settings are as follows for the G020 motor on a KT controller:

P Settings

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

C Settings

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

C8 = 0
C9 = 0
C10 = n
C11 = 0
C12 = 4
C13 = 0
C14 = 2

The P settings are mostly specific to the motor hardware and not to be fiddled with, although I have P5 set to operate on ‘real time voltage’ rather than let the display try and calculate it via a half-baked method built into the controller. “Real time voltage” is just as useless, actually. Free advice: Use the LCD3’s live numeric voltage readout and ignore the graphic.

Beyond that, I will leave the settings to you to figure out (its not hard, and bear in mind I was deliberately toning down the performance of the motor, looking for smooth and drama-free AWD performance), with the following manual link:

For a complete KT-LCD3 manual translated by a native English speaker, follow this Google link for the Dillenger KT-LCD3 manual.

Display and Remaining Electrical Bits

The throttle on this bike is your basic thumb throttle. I intentionally used an old design of KT controller so I could re-use PAS sensors and throttles I had sitting on my parts pile for years. Modern KT controllers use master wiring harnesses very similar to the bundled BBSHD one-to-many wiring harnesses, and so if you are purchasing one in the present day your throttle and brake cutout connections will match to that harness.

The display I used is a simple, straightforward, old-school KT model LCD3. The LCD3 is an inexpensive old standby that does everything you could want a display to do, without the fancy bells and whistles of the current generation of color displays.

But… I would have rather had a ‘pretty’ one. The KT-LCD8H is effectively the LCD3 with a redesigned color display and layout. More usefully, its settings are all visible on a single screen and can all be edited from that one screen. The LCD3 makes you work for it the old fashioned way: One setting at a time, one screen at a time. Miss one and you have to cycle thru all 30 of them after a reset. Its not the end of the world but you only have to use the LCD8H’s settings screen once to appreciate the convenience.

Still, the LCD3 does its job and is economical. Thanks to the wonkiness of the global supply chain, the Model LCD8H was unavailable when I was in the market to get the display I needed for the Bullitt.

As seen on The Great Pumpkin – A KT-LCD3 at top and a color KT-LCD8H at bottom.

Motor Cable Routing

Last and … well, probably rightfully least is the routing on the motor cable from the motor itself back to the controller that is hanging all the way back in another county, back under the handlebars.

First of all, a connection extension to the motor cable is necessary. I bought this one from Amazon – a 60 cm extension. Between the relatively long length of cable coming from the controller, and the length from the motor, this was a perfect size. However, cable lengths vary widely from one batch of controllers or motors to the next, so have your own in hand before you decide on your needed extension length.

Many builders run the motor cable up the fork and then back down again, then running it underneath the cargo box. I wanted the cable protected from ground strikes and weather, so I ran it inside the cargo box as I did the front brake cable (more on that in the separate Bits & Pieces installment).

So not only did I run it thru the cargo box interior, I found the steering arm provided me with a shorter highway straight to that cargo box ingress point. Sure, its not a fixed mount but neither is the fork blade, which also needs slack so the fork can wiggle back and forth as you dodge potholes, run around in circles etc.

Again wanting the cable to be protected, I re-used some unused bits of 3/4″ tubing left over from what I did inside the cargo box. A couple of 45-degree elbows, a few centimeters of straight tubing and a few zip ties later, a cable tunnel was firmly attached to the top of the steering arm. The motor connection from motor to extension is housed inside this tube, and experience has shown the downward angle of the front-most elbow is enough to keep water out of the tube. Speaking of which this tubing also keeps water and crud from taking its best shot at the motor connection.

There is enough slack on both sides of this tubing, along with smooth, rounded edges, to ensure there are no motor cable pinches and no tight bends that will break down the cable over time.

And that, as they say, is that. We’ve pretty much covered everything of interest on the front motor wheel build, installation and configuration. You can use this to inform your own front wheel ebike build

Or take it as a guide on what not to do, as you please.

Thats it for the front motor and wheel. Lets talk about

The BBSHD Rear Motor and Drivetrain

Larry vs Harry Bullitt – Put On The Brakes!

I mean that literally. We’re going to go over choosing and putting on the brakes in this frame-up bicycle build discussion.

The Bullitt Build
1. Battery and Battery Box
2. Cargo Box
3. Brakes (you are here)
4. Front Motor & Wheel
5. Rear Motor & Drivetrain
6. Bits & Pieces

For me, the choice of brakes are easy: I use Magura MT5e brakes on all my bikes and the Lizzard King was no exception. Poke around and you will see the MT5e is arguably the best ebike brakeset on the planet – even over and above the new MT7e (which provides identical calipers and brake levers… the stickers are different, plastic caliper covers are yellow not silver and the only functional difference is slightly better pads you can buy yourself – after you wear out the perfectly good ones that come with the MT5e’s).

I also use a less expensive but better rotor, as seen in the above headliner photo. But I’m getting ahead of myself here. By and large, this is an entirely mundane brake installation, with the exception of an extra-long front brake hose, plus some tweaks on pad choice. Lets begin with the…


For the rear axle, its a totally generic job. The brake hose simply runs along the guides of the top tube and down the non drive-side chainstay to the caliper. Zip tie the hose to the existing mounts on the frame and job done.

Well, not exactly. You will want to cut down the 2200mm hose that comes with the brakes, and unless you are very careful (it can be done and Magura shows you how in their Youtube videos) you will have to bleed the hoses after cutting them, then reattaching the sized hoses to the lever.

If you are using the standard Bullitt frame kit, you have a Satori Easy Up, which allows you to raise the handlebars temporarily so you don’t bonk a passenger on the head with your handlebars as you ride. When you size your brake hoses, do so with the Easy Up fully extended.

Its the front mount that needs special attention. On a normal Bullitt, running the hose the way Larry Vs. Harry intended, they specify a 2350mm hose length. I heard 2750mm in a discussion with Splendid Cycles, and I think they are more right than wrong by going long. Either number is well beyond the 2200mm provided with the Maguras in their caliper/hose/lever kit.

My needs for running brake hose from the front wheel are different than most because I had a battery box where a normal Bullitt would run its brake hose.

So this is going to be one long hose; longer than is needed on a tandem, so you are going to have limited options. If you dig around, you will find a few sources for extra long hoses. You may hear the recommendation to use one of a couple of extension solutions that use a butt-end connector to bridge two hoses. These will work, but I won’t discuss them because thankfully, I found other options:

Jagwire Pro Hydraulic MTB Hose Kit

This can be purchased on Amazon and comes with a single 3000mm hose. You are supposed to cut that 3000mm somewhere in the middle so it is enough brake hose for both your front and rear brakes. On a normal bike thats plenty of hose for front and rear. For a Bullitt its enough for the front only. You will also have to buy the hose end kit for your brand of brakes. Naturally, those are sold separately. I bought this one for Magura brakes. It should be noted the only reason I bought this is because – most likely thanks to COVID shipping delays and general global chaos across the planet – the next option listed was taking months to deliver. In the end I didn’t use this Jagwire kit because the following finally arrived:

Custom Hoses (from Austria)

Via Ebay from seller ‘judma‘. There is no telling how long this link will last… The green ones I bought are already gone and only orange and white remain for sale (for now? Maybe they’ll come back?). I didn’t want colored hoses so much as I wanted 1-piece hoses, and this seller had a particularly useful option: I could specify the custom length of each hose. So I specified 3000mm (I actually got about 2950) for the front and a lesser, specific size for the rear. Since these hosesalready had the ends properly machine-pressed on, I opted to use them. However the neon green was a little too bright. I toned it down by covering it with dull green heatshrink tubing, from the caliper to where it entered the cargo area (more on that later) and with black heatshrink after its exit into the sunshine near the handlebars. These hoses turned out to be of top quality.

A blindingly Neon green brake hose gets toned down with a dull green heatshrink as a permanent cover.

UPDATE: An Alternate Path

In discussions about this article on the Bullitt – the Dark Side group on Facebook (thanks to Arild V. for bringing this up), it was pointed out Magura sells extension hoses alone in 2500mm lengths. Thats another avenue to the same goal, then: Buy an MT5e kit, still (buying a lever and a caliper outside of the kit is much more money than just buying the kit and stashing the hose that comes with it for some future project). Then buy a 2500mm 90-degree hose. Substitute this hose for the one in the kit. You will have to have a complete bleed kit and all tools necessary to redo Magura brake hoses (you should have this anyway).

If you live in the USA like I do, this is nowhere near as attractive of an option as it is in the EU. Magura brakes and parts are double or triple the cost here. This 2500mm Magura hose in the USA runs about US$65-US$70.

After this discussion I decided to go measure my brake hose on the bike to figure out just how much I cut it down from its original 2950mm. I came up with 2670mm. Could 2500mm work? I’m sure it can for a normal Bullitt. When looking at my hose lengths, remember I had to re-route due to the battery box. This means the hose exits the corner of the cargo box and runs around (and is protected within) the concave rear edge of the honeycomb floor. It comes forward to the steering tube from the inner rear edge of that floor and only then begins its run up the steering tube. That adds several centimeters to the necessary hose length…

Which I didn’t care about as I had plenty of hose to start with. If I had only 2500mm to work with, I’m not certain I could have made internal routing work. Something for you to take into account and puzzle through when you do your own project.

Worth Noting

In my initial build, up front I was able to make the stock 2200mm hose that comes with the Magura MT5e brake kits work – and work pretty well. Look at the picture above and pretend you are seeing the stock black hose… I ran the cabling inside thru the cargo bay as you see above, and let it sit naturally along the lower edge of the floor (it’ll stay in the channel created by the edge of the honeycomb floorboard just fine). As it curves back up to the handlebars along the back of the cargo box, it did so in an arc right along the rear bulkhead. Flush to it. Nothing sticking out.

Fitment was fine, with nothing really extra but nothing stretched, either. The hosecame up along the rear wall, out of the cargo box along the extended handlebar stem and then to the brake lever. I added a couple of zip ties to keep it snug to other hoses and completely unnoticeable.

I ran the brakes this way for a couple of weeks while I waited for the longer cabling to show up, and I could have lived with it being like that permanently if I had to. However, if I had needed to raise the Easy Up to accommodate a passenger I might not have been so sanguine about this lazy solution.

Rotors & Pads

The choice of rotors to go with the MT5e’s is a little gimmick I really like. Generally bike owners shopping for rotors only concern themselves with rotor diameter. 160mm, 180mm, 203mm… those numbers sound familiar, right? But what about how thick the rotor is? Well, Tektro type 17 rotors are 2.3mm thick.

So what?

Your typical bike brake rotor is 1.8mm thick. Some brands will shave that down to as little as 1.4mm (Avid rotors were thin like this years ago when I was still using them). A thin rotor is lighter and thats nice for your skinny analog road bike. But a great big ebike? Not so much. You want meat on those rotors just like you want great big brake rotors on your race car. Brake rotors are heat sinks and braking is the process of converting momentum to heat. The more rotor you have the more heat it can absorb. The beefier and thicker your brake rotors are, the more it takes to warp them. Or for that matter wear them out.

My initial front wheel build used a 180mm Magura MDR-C rotor

So, one of the reasons I like Magura calipers is they are designed to take an unusually thick 2.1mm Magura brand rotor. Great. The Magura Storm HC rotor, or its new beefier cousin the MDR-C, are designed for the MT5e/MT7e, and vice-versa. These 2.1mm rotors are considered worn-out when they get to 1.8mm – thats the size most other rotors are sold new. Magura calipers should NOT be used with thinner industry-standard rotors. Thinner rotors extend the pistons too far and could cause them to leak. Do not ask me how I know this.

But what about thicker ones?

At last! We get to the point. I’m using 2.3mm thick Tektro rotors, which were originally meant for the small niche of downhill MTB bikes. Now they are sold by the boatload as ebike rotors with Tektro’s newfangled ebike brake kits.

Is 2.3mm too much for the Magura caliper? Almost, but it works. Since I have so many sets of Magura brakes on The Pacific Fleet, I can pull a set of partially used pads off of one of them, plug those still-usable pads into a new bike build, and let the slightly worn pads give me an extra skootch of clearance. When these pads have worn down and need to be replaced, the fat rotor is now worn a bit and can handle fresh pads easily.

I have yet to wear out one of these Type 17 rotors down to 1.8mm thickness, which is not something to complain about.

On the Front

So, on the front wheel the rotor is the 203mm size. Thats a lot of rotor for a 20″ wheel. I initially used a 180mm Magura MDR-C, coupled to Type 9 Performance (Black) pads. those are the ones that come with new MT5e calipers. I found this combo could easily lock up that poor little front wheel. I was already building another custom front wheel, so the final wheel build used a bigger 203mm Type 17 (even more stopping power, which is not so great) but with downgraded Magura Type 9 Comfort (Blue) pads – a lot less stopping power but great modulation and longer lasting.

My original – now backup – wheel is waiting in the wings with a Tektro rotor already installed. I’ll swap it onto the bike soon so I can take the primary motor apart and regrease it without disabling the bike in the process.

The pads were expected to be so much less aggressive that they would more than make up for the bigger rotor, and thats exactly what happened. I still have strong braking performance on that front wheel but now its very nicely modulated so I can clamp down hard without locking up the front wheel and making a spectacle of myself.

Since the Comfort/Blue pad compound is not sold in a Type 8 4-piece pad, I considered replacing them once they wore out with the Type 8S (Green) ebike pads. Still a step down from the Performance/Black compound, but the 4-piece pad config would step up the torque the calipers can apply to the rotor. Hopefully not too much.

That was the plan, and maybe it is something you want to try with your build. But the day I was to publish this post, I performed front wheel maintenance on the bike and saw the pads are down to about 1.5mm already – time to replace them in a couple weeks. The market is such that the Type 8 green pads are very pricey, and the Type 9 pads are dirt cheap from a German bike site. So what the hell I stuck with what I know already and bought 3 sets, along with another cheap Super Moto X tire (also very pricey if bought from a USA source) to soak up the $20 shipping charge and still keep me ahead of the game on costs.

On the Back

The rear rotor is, at present, a Magura Storm HC 203mm rotor. Its a solid choice for a rotor, and of course its the go-to until recently for a factory-matched kit. Why use it instead of the Type 17? Frankly it was in my parts pile and needed to get used up. So instead of playing the pad-swap game described above to fit a fat Tektro rotor, I put on a factory rotor and we’ll wear down the pads some thataway. After 1000 miles on the bike, it is already down to 1.9mm from its original 2.1mm. It won’t be long. Don’t blame the rotor: cargo biking is as severe of a duty cycle as you can get. I use the rear brakes as my primary stoppers with the fronts eased in after the rears engage. I get well-balanced rear brake wear as a result.

This 203mm rotor is taking a beating and will be replaced sooner rather than later with another of the big Tektro’s

Out back I am using the standard-issue Magura Type 9.P pads – the black Performance compound. Ordinarily I only use the Type 9’s initially as they come with the new calipers. I then replace with the more torque-y Type 8.P’s from then on. But here again I have Type 9’s in my parts pile so I am just using this bike to run through them. They work just fine, although to replace them or check pad wear you have to remove the caliper from its mount, which is one more reason why you want to use MT7 pads (a.k.a. “Type 8”) in your otherwise-identical MT5 calipers.

Brake Cutoffs

This bike has a Bafang mid drive powering the back axle, and a Bafang hub motor with KT controller powering the front. In my 2wd twin-hub-motor builds, I split the cutoff signal from one lever to both controllers on each lever, so actuating either lever alone cuts both motors.

I learned with the 2Fat build that trying this with a BBSHD and a KT hub controller bricks both motors – they never can start in the first place. I tried every kind of setting or workaround and they have to be entirely separate circuits or you get no motor power period.

Trying it again on this Bullitt build, a few years later: same result. The solution is for the rear brake lever to cut the rear mid drive and the front lever to cut the front hub.

One difference from the past is now, in 2021 I am able to buy a BBSHD wiring harness designed to use Magura’s red Higo/Julet plugs natively without messing around with finding or fitting adapters. Otherwise, you have to buy red-to-yellow Higo/Julet conversion plugs. Before the above direct connection wiring harness existed, I used these little jewels.

Thats it for the brakes. Lets talk about

The Front Motor and Wheel