About Brad

All-around tough guy.

Rohloff, Pugsley, and Shift Cable Replacement

I was replacing some housing on my Pugsley and noticed a few things that might be helpful next time.

First, the darn shifter pulley inside the external gear mech is a pain to get old cables out of. My shift cables refused to let the socket set screw to back out. Sadly, I had to drill all the way through the socket set screws with a 7/64-inch solid carbide standard length drill bit with a 118-degree point and then I reamed the shifter pulley’s threads out with a 4mm-70 tap. This works well, see pics below, just be patient so you don’t bungle the threads and drill straight already! I also found it helpful to drill out the old cable from the shifter pulley using a 1/16-inch drill bit (carbide not necessary for this one); however, this size bit will enlarge the holes for the shift cable – I didn’t see any issues with it for the final setup.

My Pugsley’s Rohloff kit has the old-school Rohloff shifters, so I followed the first 5:45 minutes of this video to remove the old cables and insert new cables. I did have to install one new cable housing, which measured 5 feet 11 inches for my XL Pugsley. For making connections to the external gear mech, I skipped 55 seconds into Rohloff’s video and continued along.

My Pugsley is back in business, though I still think shifting is stiffer than it should be. I may try fussing with the external gear mech’s angle to see if that reduces the stiff shifting.

ddclient, ZoneEdit, and macOS

I wanted a free solution to get macOS (and an Apache web server) working with Dynamic DNS offered by ZoneEdit. ZoneEdit’s DYN DNS instructions seem fine, but their macOS instructions seem a little out-of-date at the time I drafted this post. If you’re in a similar situation I hope these instructions help you:

  1. Install ddclient by opening Terminal and execute the following command:
    brew install ddclient
  2. Configure ddclient .conf file:
    pico /usr/local/etc/ddclient.conf
  3. Modify the .conf file between lines 83 and 88 by making the following edits:

    use=web
    web=api.ipify.org
    protocol=zoneedit1
    server=dynamic.zoneedit.com
    login=(username)
    password=(DYN auth token)
    wildcard=yes
    #your-sub-domain (this line is commented out in case I need it later)

  4. For the login and password lines, replace (username) with your ZoneEdit username and replace (DYN auth token) with instructions on the next step.
  5. To get your DYN auth token use a web browser and visit cp.zoneedit.com, log in with your ZoneEdit credentials, tap “manage” to the right of your domain name, tap the “DNS Settings” tab, and to the right of “Dynamic DNS” tap “DYN”. At the bottom of this page, click “view” to display your DYN Authentication Token. Copy your DYN Authentication Token and use it for Steps 3 and 4.
  6. After doing all of this, restart your system and ddclient should take over on its own. For whatever reason, I had to restart my machine twice, but I might not have been patient enough after the first try.

Extra helpful bits:

You can adjust the execution interval by changing the value of
StartInterval (in seconds) in /Library/LaunchDaemons/homebrew.mxcl.ddclient.plist.

To restart ddclient after an upgrade:
sudo brew services restart ddclient

Or, if you don’t want/need a background service you can just run:
/usr/local/opt/ddclient/bin/ddclient -file /usr/local/etc/ddclient.conf

Thanks to this community post this DYN DNS solution for macOS was pretty easy to set up. Read about brew’s configuration for ddclient here. If you want to revive something more legacy with a macOS interface, this might be worth a look if it is updated.

Tunnelblick and MFA

My favorite VPN server had maintenance last night and this morning my Mac would no longer connect. The error message told me the username and password were incorrect, but this was not true. After opening Tunnelblick’s log, I quickly found that there were TLS errors – yes, seems the VPN server operator renewed the certificates!

Easy fix, I downloaded the latest certificate and profile by logging into my provider’s WatchGuard VPN website, downloaded the latest profile, cleaned out my previous passwords in Keychain, and logged back in. Note: to log in, I had to use the username “MFA\bcs”, where MFA\ represents the domain for multi factor logins. I’ve got more detailed notes on this, but until people request the details in the comments I’ll stop here. Also, for those just wanting to delete their cached Keychain credentials to start over, check out these instructions, and in my case it was useful to use these to see what domain I had logged into when my credentials and TLS certificate had previously worked.

Homebridge update and execvp failed

I was trying to use homebridge-ui to update home bridge and one of its plugins today when this error message popped up:

execvp(3) failed.: No such file or directory.

To get around it, I logged in to the headless Mac mini, opened Terminal, and pasted in:

npm install -g homebridge@1.6.0

It installed without a hitch. Returning to homebridge-ui in a web browser I was able to initiate the plugin update and this time it worked. I’m not sure why, but I’ll take it as a win and move on.

SSD and TBW on macOS

I had another NVMe SSD die in my macbookpro11,4. I would’ve been curious to see what the TBW (terabytes written) was before each of them died.

After installing a new Samsung 970 yesterday and restoring from my Time Capsule with Time Machine, I fired up Terminal.app and ran the following commands:

diskutil list
(this showed me that disk0 is my new 2TB SSD)
iostat -Id disk0

The second command reported that the SSD has written 181476.09 MB in its life so far. This seemed low, since 900 GB of data were restored to the SSD…

LIFX, HomeKit, & Homebridge

We picked up a replacement LIFX Z Strip adapter for Liam this past summer and it seems we didn’t have the HomeKit code recorded anywhere. Using LIFX’ instructions we were able to see where it was suppose to be, but the sticker was cracked up and deformed – luckily we still made it out.

Then we noticed HomeKit incorrectly showed one of his older Z Strips, added using a Homebridge plugin, needed a firmware update. Seems the HomeKit plugin needs to be tweaked to allow older LIFX firmware versions to remain. shuether figured this out on a similar plug-in, so I brought it to the attention of folks on the homebridge-lifx-plugin. Hopefully they can help me develop a fix or workaround.

system/com.apple.screensharing fix

After installing OpenCore Legacy Patcher on my Mac mini, it has been flawlessly running Monterey for several months, with the exception that screensharing stops randomly. To get around this, I’ve been making an ssh connection to the Mac mini and then run this command:

sudo launchctl kill KILL system/com.apple.screensharing

Rather than having to run this command manually, automate it with launchctl to run as a LaunchDaemon every day at 2 am:

  1. Touch a .plist file in the following directory using this command in Terminal:
    sudo touch /Library/LaunchDaemons/com.screensharing.restart.plist
  2. Edit the .plist file by executing this command in Terminal:sudo pico com.screensharing.restart.plist
  3. Copy text from this file and paste it into your .plist file.
  4. Save your .plist file by pressing the “control” and “x” keys and choose press “y” and “return”.
  5. Load the .plist into launchctl using the following command in Terminal.app:
    sudo launchctl load /Library/LaunchDaemons/com.screensharing.restart.plist
  6. If the LaunchDaemon loaded, it should appear in the list produced by this Terminal command:
    sudo launchctl list
  7. To unload the LaunchDaemon we created above, execute the following command in Terminal:
    launchctl unload /Library/LaunchDaemons/com.screensharing.restart.plist
  8. Finally, if you wish to completely remove this command from your machine, delete the .plist file with this command:
    sudo rm /Library/LaunchDaemons/com.screensharing.restart.plist

Worth noting, this LaunchDaemon executes as the “_www” user, so it should run whenever the Mac mini has booted Monterey. Will keep you posted how this works and if I need to increase the frequency. Ultimately, I’d like to find out what is causing the screensharing crash, but that may be above my abilities.

Snow Deer versus Fieldsheer

When I bike (or do just about anything else) outside during winter time my fingertips annoyingly and temporarily lose circulation. Chemical packs help when the temperature goes below zero degrees F, but I don’t always remember to keep them with me and they don’t do much for my thumb. My last bike commuter buddy, Rutager, told me he enjoyed using Snow Deer heated gloves for Nordic skiing last winter. My second-to-last commuter buddy, my Dad, saw Fieldsheer’s Mobile Warming Squall Heated Gloves (MWUG29010622) at Costco and picked up a couple pairs, XL and XXL, for me to try out. I decided to pit the two manufacturer’s gloves against each other in a face-off for future time with my hands, here’s what I found out.

Before we get started, I gave the Fieldsheer an initial fit-test by trying them on for size. The back of the packaging recommended XL gloves should fit me; however, XL gloves were too tight so I returned them and kept the XXL for the test. Fieldsheer XXL versus Snow Deer XXL is the challenge!

The gloves are somewhat similar in appearance, both black with a heater control button on the backside offering 4 levels of heat: high, medium, low, and off. The Fieldsheer gloves are a bit longer, offering more wrist coverage. With batteries, a pair of XXL Snow Deer weigh in at 427 grams and the Fieldsheer XXL come in at 461 grams. Not a big difference.

I tested each pair for heat output and didn’t notice much of a difference based on touch, they seem to heat up at a similar rate and provide a similar maximum temperature. I didn’t measure the heating rate or absolute temperature with instruments, but the difference appears insignificant. Unlike the Snow Deer gloves the Fieldsheer offer 60-gram 3M Thinsulate – I didn’t test outdoors, but it’s possible the Fieldsheer’s insulation will retain temperature better outside.

Appearance is nearly identical; however, the Snow Deer show off a bright red LED that is really bright. The Fieldsheer isn’t as bright offering lower profile light for daily use, but does have a physically higher-profile button that may get in the way more often than the Snow Deer’s button. Since I haven’t used either glove outside yet, I can’t say whether any of these features is a hindrance or help.

The Snow Deer XXL fit on my hands may be close to perfect, whereas the Fieldsheer XXL were not as snug and seemed to not want to bend with my fingers as easy as the Snow Deer. The winner for soft touch inside the glove is the Snow Deer and Tina agreed. I give the edge to Snow Deer on fit.

Glove function (i.e., taking the gloves on and off and using the heater control button) is something I expect to be important going forward. First, the index fingers on both gloves interact with the replaced screen on my iPhone XS Max – I don’t need to type full emails with the gloves on, but being able to swipe and read a text message makes these gloves useful. For removing my hands from the gloves (something I do more often than I should in the winter time while riding) the Snow Deer seemed to behave more as a cohesive single glove, whereas the Fieldsheer’s liner seemed to want to separate from the outer shell. Liner-from-shell separation may be a design advantage for folks who want to turn theirs inside out for post-ride drying; however, with a heat supply inside the glove I don’t expect these to get wet and I prefer the ease of taking the gloves on and off at-will. While the Fieldsheer gloves have status indicators directly on the batteries, the reality is that the on-battery indicator is not visible while it is tucked into the glove’s zippered pocket. I give a slight edge to the Snow Deer gloves on function.

On cost, I used eBay to score the Snow Deer gloves at half the price of the Fieldsheer gloves from Costco. It’s not fair to give an advantage to Snow Deer here, as I didn’t even look to see if there were deals on Fieldsheer heated gloves. If buying new from a reputable distributor, the cost of the gloves is comparable.

Warranty: each manufacturer offers a 1-year warranty, push!

Wall charger: the Snow Deer gloves come with USB cables and a power adapter to charge the 7.4-volt batteries; the USB cable has an inline buck converter that takes charging voltage from the 5-volt power adapter up to 8.6 volts. The Fieldsheer came with USB cables that can be plugged into a 5-volt power adapter, but no adapter. Slight edge to Snow Deer for providing a power adapter.

Batteries: the Snow Deer offer a 2200 mAh battery to each glove that put out 7.4 volts and charge at 8.6 volts, whereas the Fieldsheer have 4700 mAh batteries that put out 3.7 volts and charge at 5 volts – these batteries have roughly the same total output. I’m giving an advantage to the Fieldsheer batteries, because I rock Exposure lights on my bike that charge at the same voltage, which means I could possibly use the same charger for my lights and gloves.

Minor annoyance: the Fieldsheer glove packaging has QR codes that, when scanned, bring me to a server that is unavailable.

In the end, I chose the Snow Deer XXL gloves and will return the Fieldsheer XXL gloves to Costco. I am not completely ruling out the Fieldsheer gloves though and the points above may bring me back. Also, Fieldsheer offers a plethora of other products on their website, including heated soles, so I may be back to take care of toes like my now lucky fingers.

LIFX BR30 Repair

Liam has a pair of LIFX BR30 bulbs in his room. The bulbs are several years old, off warranty, and the south bulb recently shifted to a blue hue for all light modes. I don’t like throwing this stuff away and no one else seemed to talk about how to fix it, so I decided to make a couple repair guides on iFixit, one involves resoldering a pair of resistors on the BR30’s white PCB.

The BR30 light is back in service and the blue hue shift is gone, Liam is happy, and one more broken item is out of my shop – woohoo!