Christmas Bonus

An email arrived yesterday:

Subject: [redacted] review blog invitation about bluetooth programmer

Message: Hi dear,

Thanks for taking time to read this email.

I am Colleen from [redacted] brand, we sell two way radio on Amazon. I learned that you have wrote two way radio review blog before and I think your blog was written well.

Now we have a product named bluetooth programmer that need to be reviewed. […] We would like to invite you to write a review blog about it.

Your can earn $2 from each product sold! We promise it. Just put the link we provided you in your blog and the Amazon backstage will count the data. And we will pay you $2 for per product sold by your link through PayPal on the 30th of every month. (Please provide your PayPal account)

If you are willing to help us write a blog, please tell us if you have a radio and your address we will send you the product for free to review.

You can view more detailed information through this link:


Perhaps this “review” caught their eye:

Baofeng UV-5RE radio - overview
Baofeng UV-5RE radio – overview

Or maybe it was my opinion of the Baofeng intermod problem?

Most likely, it’s just the result of an ordinary web search.

You might think everybody would know about Amazon’s crackdown on out-of-band review kickback scams, but either word hasn’t gotten around or the rewards still exceed the penalties. I think the latter applies, particularly when the offender (or its parent company) can spin up another randomly named Amazon seller with no loss of continuity.

“Earning” two bucks on a few purchases during the course of a year won’t move my Quality of Life needle, so I reported them to Amazon and that might be that.

For future reference, the chat with Amazon’s Customer Support rep produced a deep-ish link to their otherwise un-discoverable “Report Something Suspicious” page; the randomly named nodeld is a nice touch.

Speaking of randomly named sellers, it’s highly likely any Brand Name you remember from the Good Old Days has been disconnected from the tool / hardware / service you remember. Perusing a snapshot of the who-owns-who tool landscape as of a few years ago may be edifying: I didn’t know Fluke and Tektronix now have the same corporate parent.

Enjoy unwrapping your presents and playing with your toys …

Bafang Headlight Circuit Current Limit

Having just replaced Rev 1 of the amber running light with Rev 3 (about which, more later) on Mary’s Tour Easy, both the front and rear lights began blinking erratically. Given that they have completely independent circuitry, this strongly suggests a power problem.

Herewith, the headlight circuit voltage:

Bafang headlight voltage - two 1 W running lights
Bafang headlight voltage – two 1 W running lights

The voltage should be a constant 6 or 6.3 V, depending on which description you most recently read. That is the case with only one light attached, so the problem occurs only when running both lights.

The four pulses come from the amber LED’s Morse code “b” (dah-dit-dit-dit) with a 85 ms dits; the first dah pulse should be three times longer than the dits and definitely isn’t. The rear light’s red LED stays on continuously, except for two dark dits, so it draws a constant current and does not produce any changes in this trace.

Both lights have 2.0 Ω sense resistors setting the LED current to 400 mA, which corresponds to 250 mA each from the Bafang controller’s 6.3 V headlight circuit. The headlight circuit’s total of 500 mA should work fine, although the “spec” seems to be basically whatever the OEM headlight requires.

The Rev 1 amber light ran the LED at 360 mA with a supply current around 450 mA. That light and the rear light on the back ran fine, so the supply seems to have a hard maximum current limit at (a bit less than?) 500 mA.

The least-awful solution seems to be backing off both LED currents to 360 mA to keep the total supply current well under 500 mA.

Tour Easy 1 W Amber Running Light: Firmware

Rather than conjure a domain specific language to blink an LED, it’s easier to use Morse code:

Herewith, Arduino source code using Mark Fickett’s Morse library to blink an amber running light:

// Tour Easy Running Light
// Ed Nisley - KE4ZNU
// September 2021

#include <morse.h>

#define PIN_OUTPUT	13

LEDMorseSender Morser(PIN_OUTPUT,(float)10.0);

void setup()

    Morser.setMessage(String("qst de ke4znu "));

//    Morser.setWPM((float)3.0);
	Morser.setMessage(String("s   "));

void loop()
	if (!Morser.continueSending())


Bonus: a trivially easy ID string.

A dit time of 50 ms produces a brief flash that’s probably about as fast as it can be, given that the regulator must ramp the LED current up from zero after its Enable input goes high. In round numbers, a 50ms dit corresponds to 24 WPM Morse.

Each of the three blanks after the “s” produces a seven element word space to keep the blinks from running together.

Sending “b ” (two blanks) with a 75 ms dit time may be more noticeable. You should tune for maximum conspicuity on your rides.

1 W Amber Running Light - installed front
1 W Amber Running Light – installed front

On our first ride, Mary got a friendly wave from a motorcyclist, an approving toot from a driver, and several “you go first” gestures at intersections.

Works for us …

Tour Easy: Asymmetric Handlebar Grips

Installing the Bafang BBS02 motor on Mary’s Tour Easy replaced the triple chainring, so I removed the front derailleur and SRAM grip shifter. This produced enough room for the thumb throttle and a full-length handgrip on the left side:

Tour Easy grips - left installed
Tour Easy grips – left installed

The round button is the PTT switch for the HT.

The right handlebar still has the rear shifter, so it requires a shorter grip:

Tour Easy grips - right installed
Tour Easy grips – right installed

Although it may be possible to buy such a grip and, thereby, get a backup pair of mismatched grips, it seemed easier straightforward to just shorten the grip to the correct length and be done with it.

Saw off a convenient length of aluminum rod:

Tour Easy grips - mandrel sawing
Tour Easy grips – mandrel sawing

Although I actually used a steady rest to produce this, it happened during a remote Squidwrench meeting and I have no proof:

Tour Easy grips - lathe mandrel
Tour Easy grips – lathe mandrel

The 22.2 mm = 7/8 inch end matches the more-or-less standard handlebar diameter, so the grip clamp can get a good hold:

Tour Easy grips - right peeled
Tour Easy grips – right peeled

A live center supports the right end of the grip.

The red coating seems to be gooey silicone rubber molded atop a PVC tube. Rather than (try to) use a lathe bit to cut through the silicone, I cut two slits with a utility knife and the spindle turning slowly in reverse, then peeled off the rubber between the slits.

With the silicone out of the way, an ordinary cutoff tool made short work of the PVC:

Tour Easy grips - right trimming
Tour Easy grips – right trimming

That was a cleanup pass with the utility knife, as the cutoff tool left a slight flange around part of the circumference. If I had the courage of my convictions, I could probably have cut the PVC with the knife.

Chamfer the end of the cut, slide it on the handlebar, tighten the clamp, and it’s all good.

The alert reader will note the clamp should go on first, but that would produce an inconvenient lump against the right shifter. Sliding them on backwards puts the clamp at the end of the handlebar and works out better in this admittedly unusual situation.

Craftsman Garage Door Opener: Rogue Remote

Just before midnight, the garage door opened, but, being early-to-bed folks, it wasn’t either of us. I pulled my fingernails out of the ceiling, padded out to the garage, verified there was nobody (not even a critter more substantial than a spider) inside, closed the door with the hardwired control button on the wall, and went back to bed. An hour later, the door opened again, then tried to take a bite out of me when I walked under it.

I pulled the opener’s plug, yanked its emergency release latch, lowered the door, and returned to bed; it was not a restful night.

The key to the diagnosis came from the little yellow LED on the back of the opener, just above the purple LEARN button:

Craftsman Garage Opener - indicator LED
Craftsman Garage Opener – indicator LED

In addition to indicating various programming states, it also lights when the opener’s radio receives a transmission from one of the remote controls. The LED was flickering continuously, showing that something was hosing the receiver with RF.

We have three remotes: one in the car, one on my bike, and one in the back room overlooking the garage. None of them worked reliably, suggesting the RF interference was clobbering their transmissions.

Disabling the remotes by removing their batteries (which were all good) also stopped the interference. Reinstalling the batteries one-by-one identified the rogue opener:

Craftsman Garage Opener - remote innards
Craftsman Garage Opener – remote innards

The slip of paper let me isolate the battery terminal and stick a milliammeter in the circuit, which showed the remote was drawing about 1.5 mA continuously. I thought one of the pushbutton switches had gone flaky, but swapping an unused one for the main door switch had no effect.

I lost track of which remote it was, but it lived in the car or the back room for all its life, so it hasn’t suffered extreme environmental stress. I have no idea why it would fail late one night, although I admit to not monitoring the LED on a regular basis. For whatever it’s worth, in the weeks leading up to the failure, activating the opener sometimes required two pokes at the remote, but nothing bad enough to prompt any further investigation.

A new cheap knockoff remote arrived in few days and it’s all good.

Protip: different openers, even from the same company, use different RF frequencies. For Craftsman openers, the color of the LEARN button is the key to the frequency; purple = 139.53753 MHz.

Tour Easy: PTT Switch Cleaning

The switch I installed on Mary’s bike a year ago was intended for indoor use only and, without any trace of weather sealing, recently became intermittent. No surprise, as it’s happened before, but, by regarding my vast assortment of little switches as consumables, we get a low-profile / tactile / E-Z push PTT button without forming a deep emotional attachment.

Anyhow, you can see the unsealed square perimeter of the switch actuator:

Tour Easy - PTT button
Tour Easy – PTT button

The light-gray button sits on a post molded into the actuator. Pry the actuator out and the switch dome shows crud worn off the cross-shaped plunger:

Tour Easy - PTT button - dome plate
Tour Easy – PTT button – dome plate

The underside of the dome has a weird golden discoloration that surely wasn’t original:

Tour Easy - PTT button - dome plate discoloration
Tour Easy – PTT button – dome plate discoloration

I have no idea how a liquid (?) could have gotten in there and done that without leaving other traces along the way. The contact bump on the discolored leg had some crud built up around it which responded well to a small screwdriver.

Contrary to what the symmetrical four-legged dome might suggest, only one leg rests on a contact in a corner:

Tour Easy - PTT button - contacts
Tour Easy – PTT button – contacts

So, yes, a bit of dirt / corrosion / mystery juice in a single spot could render the whole thing intermittent.

I removed the obvious crud from the obvious spots, wiped everything down with some Caig DeoxIT, reassembled in reverse order, and it seems to be all good again. Of course, these things only fail on the road, so it’ll take a few rides to verify the fix.

DSO150: USB Serial Output

Taking all those pictures of the DSO150 screen reminded me it has a data dump function: press the V/Div and ADJ buttons to squirt configuration, measurements, and trace data from the TX pad on the main board, just in front of the red-black power wires hot-melt glued in place:

DSO150 USB serial adapter - interior
DSO150 USB serial adapter – interior

The picture shows the “before” stage, while I was figuring out where to carve another hole in the case.

NB: The 113-15001-111 DSO150 firmware version includes the serial output option, so you won’t need third-party firmware. Similarly, current PCBs bring the serial pins to neatly labeled header pads. You should refer to the JYETech DSO150 / DSO Shell product page for the details.

After all the cuttin’ and filin’ was done, it looked like this:

DSO150 USB serial adapter - exterior
DSO150 USB serial adapter – exterior

The power switch on the back of the case (top of the picture) disconnects the lithium cell from the charge controller board (now tucked behind the battery) to eliminate any trickle current discharge. Charging the battery thus requires turning that switch on and turning the scope off with its own power switch (along its front edge). Capturing trace data requires having both switches on (duh), whereupon the scope’s normal operating current convinces the charge controller that the cell hasn’t reached full charge. Turn the scope off and, most likely, the controller will tell you the cell is fully charged.

An intro blurb squirts from the port at 115200 in good old 8N1 format when you turn the scope on:

DSO Shell
JYE Tech Ltd.
FW: 113-15001-111

Pressing the V/Div and ADJ buttons dumps the trace data:

VPos, -2.02V
TriggerLevel,  2.02V
Vmax,  2.85V
Vmin,  0.24V
Vavr,  0.87V
Vpp,  2.61V
Vrms,  1.03V
Freq, 0.441Hz
Cycl, 2.266s
PW, 0.231s
Duty, 10.2 %
00000,0000000000, 0.8518688
00001,0000000008, 0.5273474
00002,0000000016, 0.5273474
00003,0000000024, 0.5476300
00004,0000000032, 0.5476300
00005,0000000040, 0.5476300
<< snippage >>
01015,0000008120, 0.8113037
01016,0000008128, 0.8315863
01017,0000008136, 0.8315863
01018,0000008144, 0.8315863
01019,0000008152, 0.8315863
01020,0000008160, 0.8315863
01021,0000008168, 0.8315863
01022,0000008176, 0.8518688
01023,0000008184, 0.8518688

It’s all in neatly comma-separated-value format, so you can slam it into a spreadsheet and have your way with it. Utilities also exist to capture the data, extract the values, and send them directly to GNUplot, etc.

Like so:

DSO150 test image
DSO150 test image

If I expected to do a lot of that, I’d boldify the traces and embiggen the text, all of which is in the nature of fine tuning.

It’s hard to reproduce the beauty of the DSO150’s display, though:

DSO150 test image
DSO150 test image

The DSO150 remains pretty good for being the worst oscilloscope I’m willing to use …