Relationship Status: It’s Complicated

The 2024 Honda Africa Twin CRF1100A is a wonderful motorcycle that comes from the factory with a well-known character flaw. At low speeds and small throttle openings, the throttle is jerky enough that you feel every surge through your wrists. It’s especially bad in tight low-speed turns, parking lot maneuvers, and steady cruising around 4,000 RPM in third or fourth gear. Honda has to ship a globally compliant emissions tune that runs on whatever mystery fuel you find at some gas station in Patagonia, and the trade-off is rideability at the throttle’s most-used positions.

I named my Africa Twin Hannah Savanna. Any bike that has her own inspirational, pop-country anthem deserves better than that.

So I bought a BT Moto Stage 1+ ECU Flash with Handheld Tuner. The Stage 1 part is the calibration changes; the tuner is a Dimsport MyGenius handheld that lets you read your bike’s stock file, upload it to BT Moto for tuning, and flash the modified file back to the ECU yourself via the bike’s diagnostic port.

The handheld is the more expensive option compared to mail-in services like 2 Wheel DynoWorks, which I used on Kurobachi, my Honda CB750 Hornet — easy choice there because the Hornet’s ECU is conveniently located under the seat. On the Africa Twin, the ECU lives buried deep inside the chassis and is a pain to remove. The handheld lets me flash the bike in the garage and, crucially, lets BT Moto send revised tunes by email and re-flash on demand. As we’ll see, that turned out to matter quite a bit.

Step Zero: Read the Manual

The MyGenius unit arrived in the mail. I plugged it into my laptop, fired up the MyGenius Client to update the firmware as instructed, and got an unfamiliar error:

Device locked. Waiting for the brand change authorization from the master.

This was an interesting message to receive on a brand-new device that had never been connected to a motorcycle.

Now, to be completely honest, I was being sort of reckless. I have zero prior ECU tuning experience and was happily clicking around poorly designed Windows 7-era desktop software for a piece of hardware I didn’t understand yet. In my defense, MyGenius Client is a rough translation from Italian, and the menu structure doesn’t telegraph which options are routine and which set off a multi-day support ticket. Somewhere in the firmware update flow I clicked Forced Reset / Brand Change, which sent a request up to BT Moto and locked the handheld waiting on an approval BT Moto had no idea was coming. (BT Moto is the “Master” in Dimsport’s Master/Client architecture and has to approve any reset. Don’t worry, we’ll come back to this part later.) I opened a support ticket with BT Moto. That’s how I met Steven. He sent me an email the next morning saying he approved the reset and life resumed. Get used to that name.

The First Tune

Before BT Moto could send me a tune, I had to send them my stock calibration. The MyGenius plugs into the diagnostic port — a red 6-pin connector under the pillion seat — and you navigate to WORK → READING. After prompting several times to turn the ignition on/off it pulls a copy of the ECU’s flash memory off the bike and onto the device. Plug the handheld back into the laptop, MyGenius Client uploads the file to BT Moto’s portal, and you fill out a questionnaire about your bike.

Mine looked like this:

QuestionAnswer
Year/Model2024 Honda CRF1100A (manual transmission)
ExhaustAkrapovic S-H11SO4-HAFT slip-on
IntakeStock airbox and air filter
Octane preference87

The octane question is more interesting than it looks. Higher-octane fuel tolerates more ignition timing advance, which is how tuners pull more peak power from a tune. But peak power wasn’t my goal — rideability was — and 87 keeps the tune compatible with whatever I find at some rural gas station in the middle of the Chihuahuan Desert. Multiple AT owners report the bike actually runs smoother on regular than on premium, so an 87 tune plays to the platform’s strengths.

The next business day, BT Moto emailed me a modified .FPF file. Drop it into MyGenius Client, sync to the handheld, plug back into the bike, navigate to WORK → WRITING, follow the prompts, and the new calibration writes itself onto the ECU. Battery tender connected throughout, because rewriting Hannah Savanna’s brain is not the kind of operation where you want a dying battery to surprise you.

The First Ride

The flash unlocked most of what I’d hoped for. The throttle was crisper, the low-speed jerkiness was reduced, and the bike felt more eager. BT Moto’s published changes for the AT include opening the throttle blade to 100% (stock is restricted to 66% at redline, less than 50% on US models — yes, really), corrected midrange fueling that was causing engine break-up and aggressive hesitation, ignition timing adjustments, and smoothed on/off throttle transitions. All of that tracked with what I felt on the road and is exactly what I wanted.

But during steady cruising at around 4,000 RPM in third or fourth gear, the bike developed a new behavior. It was a rhythmic surge — the engine pulsing in and out of throttle on a regular interval, almost like cruise control hunting for a target it couldn’t quite hit.

This was a problem.

The Closed-Loop Problem

The surge had a pattern. It wasn’t random. It happened at a specific RPM band during steady partial-throttle input — right around 4,000 RPM in third or fourth, cruise-y conditions, not accelerating hard. Rhythmic and regular, like the engine was arguing with itself about what it wanted to do.

I emailed Steven.

The diagnosis was straightforward once he named it: closed-loop vs. open-loop fuel control. At low RPM and light throttle, the Africa Twin’s ECU runs closed-loop — it’s actively reading the narrowband O2 sensors in the exhaust and trimming the fuel mixture in real time to maintain a stoichiometric 14.7:1 air/fuel ratio. Above a certain throttle opening or RPM threshold, the ECU switches to open-loop — it ignores the O2 sensors entirely and runs the fueling from a calibrated map. The stock tune and the BT Moto tune have different shapes at that handoff point, and the ECU was essentially catching a step change in fuel delivery right where my wrist was spending a lot of time. The result was the surge.

The fix was blunt but effective: disconnect both O2 sensors. With no sensor input, the ECU runs open-loop all the time, on the new calibration, without trying to harmonize it against a stoichiometric target the tuner isn’t designed around. I asked Claude.ai to look into it and confirmed that 2WDW uses this approach on the Africa Twin as well. (I had not disconnected the O2 sensors on Kurobachi, so this was new territory for me.)

Locating and unplugging them took about ten minutes. Two connectors, one per exhaust header. One was accessible from below without pulling fairings. The other was somewhere up inside the fairing — reachable by feel, invisible to the eye, in exactly the kind of location that makes you question your life choices while your arm is buried in a motorcycle up to the elbow.

On the next ride, the RPM hunting was gone. But now I had two bare connectors dangling somewhere inside the fairings of a $15,000 motorcycle. We’ll deal with that later.

The Cold Idle Stall

With the RPM hunting resolved, I put about a week on the bike. The tune felt genuinely good — crisp throttle response, no jerkiness in tight turns, exactly what I’d hoped for. With the exception of one really annoying bug that had a tendency to occur at the stop sign at the end of my street. She stalled.

Not a hard stall — no dramatic backfire. Just… the idle dropped below the threshold it could sustain and the engine quietly gave up. One blue bar on the dashboard temperature gauge. I restarted, rode the rest of the route without issue, and filed it away as probably not random.

The second time it happened, same conditions, same stop sign, I emailed Steven.

He acknowledged the issue and sent a revised tune — Tune 2. His engineer (presumably) had raised the cold idle target in the calibration. I reflashed the bike and went back to testing.

Real-world Debugging Skills

Tune 2 ran better. Warmed-up rideability was still excellent. But the cold-start stall hadn’t fully gone away — it was slower to appear, and it didn’t always stall completely, but something was still marginal right at the bottom of the warm-up cycle.

I had a decision to make. I could email Steven again and say “still a little rough when cold” and hope for the best, or I could actually characterize what was happening. The former is how you get a random shotgun revision. The latter is how you give an engineer something to work with.

I had a working theory, too. The Chihuahuan Desert sits at about 4,000 ft of elevation. BT Moto is in Upton, Massachusetts, which is roughly sea level, and I assume their calibrations are tuned and tested in that environment. Thinner air means less oxygen per intake stroke. Combine that with closed-loop fueling now disabled (remember I disconnected the O2 sensors to fix the light-throttle hunting) and the tune had no self-correction for altitude at all. Cold-start fueling has the least margin to begin with, and the cold/altitude combination was pushing the low-load cells to the edge of stability. That was my hypothesis, at least. What I needed now was data specific enough that his engineer could use it.

I bought an IR thermometer.

Specifically, I wanted to establish what the ECT (engine coolant temperature) was when the bike was behaving badly vs. when it wasn’t, so we could tell Steven’s engineer exactly which calibration region needed work. The dashboard has a temperature gauge but it’s a simple bar indicator — useless for data capture. The engine has a coolant temp sensor that the ECU reads, but I have no way to pull live data. An IR thermometer pointed at the engine block gives a reasonable proxy.

A note on terminology before we get into the data. A cold-soaked engine has reached full thermal equilibrium with the ambient air — no residual heat from a prior run, sitting long enough that the block temperature (more or less) matches room temperature. A heat-soaked engine is the opposite: recently ridden, engine temp elevated, not yet cooled back to ambient. The distinction matters here because the stall behavior was sensitive to exactly which condition the bike was starting from.

Over the next few days I ran four structured tests.

Test 1: Garage cold soak, 6:21 AM

The bike had been sitting in the garage overnight with the door closed, fully cold-soaked.

ParameterValue
Ambient temperature69.0°F
IR block temperature at start72.6°F
Delta above ambient3.6°F (fully cold-soaked)
Test configurationCenterstand, neutral, no throttle input

Start sequence:

  • Cold idle: ~2,000 RPM for approximately 30 seconds (higher than the original tune — Steven’s revision was working)
  • Dropped to 1,500 RPM
  • Began oscillating between 1,200–1,500 RPM at regular intervals
  • Stalled at approximately 2 minutes
  • IR block temp at stall: 135°F (~57°C)

Test 2: Throttle blip experiment, same morning

Restarted immediately. This time I blipped the throttle to 3,000–3,500 RPM during the oscillation phase to see if I could keep it alive manually.

It worked! The bike survived to approximately 170°F block temp (~76°C). At that point it stabilized on its own without any throttle input and idled normally for the rest of the warmup.

So: below 170°F, marginal. Above 170°F, fine.

Test 3: Afternoon riding, different ambient

Later that day, higher ambient temperature: 84°F. Left the bike fully cold-soaked in the same garage.

ParameterValue
Ambient temperature84°F
IR block temperature at start77.1°F
Delta above ambient-6.9°F — still fully cold-soaked

Cold-started and rode immediately rather than letting it warm up on the stand. Stalled at the first stop sign with the clutch in. One blue bar on the temp gauge at the moment of stall. Restarted. Rode for an hour without another issue.

Test 4: Heat soak control

After the afternoon ride, I left the bike in the 84°F garage for four hours — enough time for the engine heat to soak into the block without it cooling fully back to ambient. Restarted: no stall, warmed normally, albeit more quickly.

Confirmed: the issue was entirely isolated to fully cold-soaked starts. Not partially warmed. Not heat-soaked. Cold-soaked.


The pattern across all four tests pointed to a specific ECT range. The stall threshold corresponded to the transition between one blue bar and the first white bar on the dashboard temp gauge — approximately 57°C to 76°C coolant temperature. Below that window, the idle calibration was marginal. Above it, the tune was perfect.

I wrote Steven what was probably one of the nerdiest emails he’s ever received — the four tests above, the temperature ranges, the dashboard correlation, and a question for his engineer about whether the calibration could be adjusted in that specific ECT window. No prescriptive ask. Just the data and the symptom. Oh, and video evidence from both the garage and street tests.

This is what AI-as-research-partner looks like in practice, by the way. I collected that data by standing in my garage at 6 AM in my pajamas pointing a thermometer at an engine and writing down numbers. Claude helped me structure the email so it was maximally useful to whoever was going to read it. The separation of responsibilities there is not subtle.

Steven forwarded it to his engineer. Tune 3 arrived the next afternoon.

The Resolution

The next morning I set an alarm, made some coffee, went to the garage, and ran the same protocol.

Cold-soaked overnight. Ambient even cooler than the Test 1 conditions. Block temp barely above ambient at start.

The bike idled up to ~2,000 RPM, dropped to 1,500, passed through the 1,200–1,500 oscillation zone — and wobbled once around the 2:20 mark. Not a stall. A dip. It caught itself. Another wobble at 2:34. Also recovered. Then the tachometer settled and the bike warmed the rest of the way without incident.

I let it run through two warm-up cycles on the stand to confirm it wasn’t a one-time result. Same story both times — some oscillation in the critical ECT window, but self-recovering. No stall.

I took it for a 60-mile ride. The throttle was responsive, the RPM never dropped below 1,500 in tight low-speed turns where I would have previously needed to downshift preemptively, and the bike cruised in the 3,500–4,500 RPM range without hunting or surging. Most crucially, it didn’t stall at that damn stop sign. The tune was right.

Steven’s reply was short and to the point: glad we got it sorted, thanks for the thorough write-up, and would I mind leaving a review. Not only is BT Moto getting ⭐⭐⭐⭐⭐, they’re also getting this blog post.

What I Learned

  1. The Africa Twin’s stock tune is restricted in service of global emissions compliance — it has to run tolerably on the worst fuel in the worst jurisdiction Honda sells motorcycles in, which means the fueling and throttle calibration are tuned for that floor rather than for anything you’d actually want to ride. A good aftermarket flash recovers all of that lost rideability. The cold idle stall was the price of admission for a tune at that emissions margin, run at 4,000 ft of elevation on cold high-desert mornings — not a defect in the platform, and not something a vendor’s questionnaire could reasonably predict. Tuning is iterative for a reason. (It’s also worth noting that I’m probably no longer emissions-compliant in whatever jurisdiction I’m worried about — but my other-other bike is electric, so I’ve already made my peace.)

  2. BT Moto’s customer service is the actual product. Anyone can sell you a modified .FPF file. What you’re really paying for is a company whose engineer will revise a calibration three times based on rider feedback at no additional cost, with a named contact who responds to emails the next morning. That’s not a commodity. For a platform like the Africa Twin where the ECU is buried in the chassis and a handheld tuner is the only reasonable re-flash path, that relationship has real value.

  3. Precise data is how you get fast iteration. “It sometimes stalls when cold” is a support ticket that produces a guess. “Stalls at one-blue-bar, block temp 135°F, 69°F ambient, fully cold-soaked, self-recovers above 170°F block temp” is a bug report an engineer can act on. The IR thermometer cost about $12 and earned its place on the workbench.

  4. AI as a research and communications partner is a real workflow, and it does not replace the IR thermometer. Claude helped me structure the email to Steven, stay rigorous about not changing two variables at once, and think through what each test was actually measuring. It could not — and did not — actually start the bike at 6 AM and watch the tach. That part was me, in my pajamas, in the garage before sunrise. The engineering was the engineering.

  5. I now had a collection of .FPF tune files — stock, Tune 1, Tune 2, Tune 3 — sitting in a folder on my laptop. The software engineer in me wanted to know what was actually different between them. The security engineer in me took one look at the binary structure and got curious. That’s a whole different blog post.

To Be Continued…