First contact.
Real sensors, two pencils, and a gear found by hand.

Two pairs of sensors from two unrelated makers — cheap CYCPLUS units and the Magene S3+ — landed on the doorstep today. No bike, no rig: I attached them to pencils, spun them by hand, and woke GearSense up. The instant both were turning it saw them and found a gear — then the other vendor's pair, same trick, same result. First time GearSense has ever met hardware it didn't grow up with, two different brands of it, and it didn't so much as blink.

2
unrelated vendors (CYCPLUS + Magene)
0
lines of per-brand code
3
gears faked by hand, learned cleanly
1st
try — each vendor, cold

Two pencils

This is the first time GearSense has talked to sensors that aren't mine. Everything until now has been my own bench boards — simulators I wrote, advertising exactly what I told them to. These CYCPLUS and Magene units know nothing about GearSense and GearSense knows nothing about them. That's the whole point.

I spun the speed sensor at one rate and the cadence sensor at another, held the proportion roughly steady, and GearSense did what it now does: divided the two frequencies, watched the ratio settle, and minted a gear. Then I changed the proportion — a different spin in each hand — held it, and got a second gear. A third proportion, a third gear. I had, in effect, hand-cranked a three-speed drivetrain out of two pencils and a sense of rhythm. Then I picked up the Magene pair — a different manufacturer entirely — and did the whole dance again. Identical. Not a line of code changed between them.

What this proves Two unrelated vendors, one code path, both read correctly straight off the protocol. Discovery works on real radios, not just my simulated ones. Roles were identified on hardware I've never touched. The ratio maths survived genuine sensor timing — the quantised, slightly-late reality of a sensor that wasn't built to be polite to me. The self-discovering engine met the real world, twice, and behaved both times.

It saw what the workstation couldn't

Here's the part that made me sit back. Neither sensor showed up in the Bluetooth pane on my workstation. But GearSense found all of them, instantly.

That isn't GearSense having magic reach — it's GearSense looking the right way. A desktop's Bluetooth settings list pairable devices: the headphones-and-keyboards crowd that announce themselves for bonding. A cycling sensor doesn't do that. It quietly advertises a service — the standard Cycling Speed and Cadence service, 0x1816 — and waits for something that is specifically hunting for that service to come and find it.

why the right tool sees what the generic one can't
scan FILTERED by service 0x1816
The OS pairing dialog isn't scanning for cycling services, so it shows nothing — and that silence is correct, not a fault. GearSense does a service-filtered active scan for exactly 0x1816, which is precisely how a purpose-built head unit should look. A fitness app would have found them too. The point isn't reach; it's that GearSense does Bluetooth the way the job demands.

So the workstation's blank screen wasn't a problem to solve — it was a quiet confirmation that the firmware is doing the standard properly. The week's work — building roles on the CSC flags every sensor declares for itself — is exactly what let two pairs of strangers' sensors light up on first contact with no per-brand anything.

Three sources now — my bench simulators, CYCPLUS, and Magene — all flowing through one code path, not one of them special-cased. One vendor working is an anecdote. Two unrelated ones agreeing, cold and first-try, is the standard generalising — the difference between "it works with the sensor I tested" and "it works with the standard." That's the claim I actually wanted to be able to make. We really did do the right work.

What comes next

A hand-spin is steady and slow. The road is neither.

  1. Tomorrow: the sensors go on an actual bike, and GearSense gets its first real ride
  2. The messy exam — coasting, snap shifts, soft-pedalling to hold assist, vibration, a motor's electrical noise
  3. Widen the interop matrix further — including a high-end combined wheel+crank sensor, a different beast worth supporting
  4. Watch the ladder build itself from a real cassette, in the open air, for the first time

Tomorrow, we ride.

Comments

No comments yet — be the first.

Leave a comment

Comments

Loading…

Leave a comment