HomeKit: Unable to Add Accessory Error (when HKSR is Enabled)

I was trying to add a new device to HomeKit. It kept failing to connect. I got the error “Unable to Add Accessory“, even after following the manufacturer instructions multiple times to reset, reboot, and use a 2.4 GHz network.

Multiple people are having this problem, with multiple accessories from different manufacturers. As an example, see this reddit thread (one of several).

After several hours of troubleshooting, I finally got the accessory added into HomeKit. Here’s what I did:

  1. Reset new HomeKit accessory (in my case an Eve Light Strip, partly manufactured by Taiwanese Dexatec/Ennoconn), unplug for 3 minutes, plug back in
  2. Reboot phone
  3. Go to Eero > Discover > HomeKit and completely disable HomeKit Secure Router (just disabling HomeKit security in the Home app doesn’t work). All my accessories remained and I didn’t have to setup anything new
  4. Unplug all HomeKit hubs in the house except for one
  5. Go to Eero > Settings > Troubleshooting > My Device Won’t Connect > Enable 2.4 GHz for 15 minutes
  6. Try adding the device into HomeKit again (still within the 15 minute 2.4GHz period)
  7. Go back to Eero > Discover > HomeKit and enable HomeKit Secure Router again

Since HomeKit Secure Routers are a WPA2 feature and Apple hasn’t updated it for WPA3 as of this writing, it’s possible Eero and Linksys are deprecating support for it.

I’ve since added an additional device, a smart plug (from Eve no less), with HomeKit Secure Router enabled, so hopefully I won’t have to go through this process every time I want to add a new accessory.


For anyone wondering what I did with the Eve Light Strip, I took inspiration from Eve’s product photo (below) and put it behind my headboard. It works great now that it’s added to HomeKit. Now I have dimmable adaptive lighting in bed without the glare/brightness of the overhead light for late night reading. It might also be possible to wake up gradually to adaptive lighting but I haven’t researched that yet.

Eve Light Strip in action behind headboard (credit: Eve)

Easy Ways to Remove EXIF GPS Location Data from Photos on iPhone/Mac

The easiest way to remove EXIF GPS/geotag location data on the phone without any 3rd party apps is to simply take a screenshot of the photo.

Yes, you lose quite a bit of resolution/detail, but it’s the fastest way to upload a photo to eBay, Craigslist or email without accidentally revealing the photo’s location to the world.

On the Mac, you can remove location data with Preview, as this article mentions:

Credit: Kirk McElhearn at intego.com

If you’re comfortable with the command line, you can also use Phil Harvey’s exiftool, like so:

# Remove GPS EXIF metadata from given image files:
exiftool "-gps*=" path/to/image1 path/to/image2 …

How I Installed the Meross/Refoss Garage Door Opener for HomeKit

I spent a little under 2 hours installing a new HomeKit garage door opener from Meross/Refoss. For $35 on Amazon, it works surprisingly well. The included instructions are bad. They don’t show exactly how everything should be setup. But the existing customer-submitted videos (like this one by Nick) on Amazon clearly show what needs to be done. I probably could have done it in 45 minutes if I wasn’t interrupted in the middle of the install. You don’t need to hire an electrician.

I had the purple learn button but didn’t have to order anything extra from Meross support to get it to work.

You will need:

  • Very small flathead screwdriver, the kind built into Swiss army knives
  • Ladder
  • 13mm or smaller wood cable staples, the kind you hammer in
  • Hammer
  • Phillips screwdriver
  • Duct tape for testing cable positioning

Here’s what I did:

  1. Plug the Meross device into power. Turn on your wireless router’s 2.4GHz mode. Connect to HomeKit. (I had to attempt the connection twice.) Then unplug both the Meross device and the (Chamberlain) garage door opener itself.
  2. Locate the 2 wires used by your existing garage door button and jam the ones from the Meross device into the same 2 holes – so you have 2 wires in each hole. For my Chamberlain opener, this meant the blue wire on the left, grey wire on the right. Don’t touch the other 2-3 holes. Use the very small flathead screwdriver to pull down on the socket clamps so you can fit the wires in.
  3. String the long black Meross wire along the garage ceiling to the sensor cable. Plug everything back in. Test positioning of the sensor by opening and closing the garage door until you get the position right. Use duct tape to hold the cable in place while testing. If you have an exposed wood garage ceiling, hammer cable staples into the wood to hold the wire in place. Finally, screw the sensor into position.
Step 2: plug the two Meross wires into the two holes here alongside the existing wires (ignore the bit about wire stripping)

So far, in the hour or so which I’ve been testing it, it has worked well from Apple HomeKit. You don’t need to use the janky Meross/Refoss/eHomeLife app if you have HomeKit.

If you get obstruction errors, ensure the magnet piece hasn’t been jostled out of the way.

Here’s what the finished product looks like:

Be careful not to get any wires anywhere close to the garage door opener chain
Garage Door Opener in HomeKit

Not bad for less than 2 hours of work! (And if you’re handy, this should be a 30 minute job.)

Now I don’t have to go searching for the (usually lost) garage door opener remote control, or worry about changing the batteries in it. Plus I get alerts if the garage door is left open.

How to Search Within an Album in Photos on the Mac

I was looking through an album of 500+ photos. I knew the photo had rocks in it. I didn’t want to have to scroll through hundreds of photos to try and find it. And I didn’t want to search all photos for every landscape photo I had with rocks.

You’d think you’d be able to just type in:album searchterm in the Photos search box, right?

Well that doesn’t work. To search within an album, you have to create a new album, like so:

  1. Pull down the File menu > New Smart Album and Match all of the following conditions:
  2. For the first condition, set Album is: [name of dumb album]
  3. For the second condition, set Text is: [search term]

Here’s an example screenshot showing this, matching 47 items within a 500+ photo album:

Now I was able to visually scan through the 47 results and find the exact rocky photo I was looking for.

Perhaps some day Apple will allow easier searching within existing albums, without this clunky workaround.

Most Carbon Monoxide (CO) Detectors Are Not Sensitive Enough

Most carbon monoxide detectors on the market conform to UL2034 specifications. In the USA, these are:

  • at 30ppm CO, the alarm must not activate for at least 8 hours
  • at 70ppm CO, the alarm must not activate before 60 minutes but must activate before 240 minutes
  • at 150ppm CO, the alarm must not activate before 10 minutes but must activate before 50 minutes
  • at 400ppm CO, the point where “carbon monoxide can cause death after 2-3 hours” (more on this below), the alarm must not activate before 4 minutes but must activate before 15 minutes

Part of the reason UL2034 exists is to prevent “nuisance alarms”. This is misguided.

I think the alarm levels above are too high and too loose. The most common CO detectors sold in the United States just aren’t sensitive enough. Too many people die because they weren’t warned about CO safety and didn’t take appropriate steps to protect themselves.

European standards are a bit better:

  • at 30ppm CO, the alarm must not activate for at least 120 minutes
  • at 50ppm CO, the alarm must not activate before 60 minutes but must activate before 90 minutes
  • at 100ppm CO, the alarm must not activate before 10 minutes but must activate before 40 minutes
  • at 300ppm CO, the alarm must activate within 3 minutes

But you’re still not going to get a readout below 30ppm, and even then, you’ve been exposed to 30ppm of CO for at least 2 hours.

What if you want early detection below 30ppm? (Not necessarily an alarm for below 30ppm, but just a display indicating current CO levels?)

Then you need a more sensitive device, like the ones home inspectors carry with them when working in crawlspaces, boiler rooms, and other potentially dangerous areas.

After a bit of research on home inspector forums, I found the Sensorcon INS-2-CO1. I ordered it and have been using it for about 1.5 years now. It’s fantastic: any time the gas oven/gas range fires up and somebody forgets to turn on the exhaust fan, you can watch the Sensorcon 30 feet away tick up carbon monoxide levels pretty quickly. 5 minutes of gas can easily shoot you up to 9ppm. By this time we’ve usually turned on the range ventilation fan and aired out the room.

The Sensorcon device is expensive – around $150-$195 – but worth it. It’s a professional device, not a commodity. There are a few other brands recommended by home inspectors as well – check them out on home inspector forums.

I don’t trust that the cheap-o detectors that most people buy are going to go off in time to protect my family’s health, and I’m happy this gives me an early (silent) warning with an alarm at higher levels. The Sensorcon is definitely not the only CO detector in the house – I have one cheap-o First Alert alarm along with a couple of $113 Nest Protect smoke and carbon monoxide detectors – but it’s by far the most sensitive.


What are the effects of carbon monoxide exposure on the human body?

From research by Thomas H. Greiner, in a table published by Iowa State University:

9 ppm: The maximum allowable concentration for an 8-hour period in any year, EPA (ASHRAE). Polluted cities often reach and exceed 9 ppm, increasing incidence of congestive heart failure (Morris). Typical concentration after operation of unvented gas kitchen range (Tsongas).

15-20 ppm: Impaired performance in time discrimination (HbCO 2.0) Decrease in absolute exercise time (HbCO 2.5) Shortened time to angina response (HBCO 2.9) Vigilance decrement (HbCO 3.0) (World Health Org. 13).

27 ppm: 21 percent increase in cardiorespiratory complaints (Kurt, 1978)

[ At this point, standard alarms haven’t even notified you! ]

30 ppm: Earlier onset of exercise-induced angina (HbCO 4.96%) (WHO 13)

35 ppm: Maximum allowable outdoor concentration for one-hour period in any year, EPA (ASHRAE)

50 ppm: Maximum allowable 8-hours work place exposure, (OSHA). Most fire departments require use of self-contained breathing apparatus for exposures above 50 ppm. Preziosi et.al found chronic exposures produced significant morphologic changes in dogs, including brain pathology, heart pathology and abnormal EKG’s. Other researchers find higher concentrations needed. Minimum concentration for digital display to move from zero on some detectors with displays (Conversation with manufacturer).

75 ppm: Significant decrease in oxygen reserve available to the myocardium (HbCO 10%). Heavy smokers can reach HbCO of 10%.

100 ppm: U-L listed detectors must sound a full alarm within 90 minutes or less. Most alarm more quickly. Time to alarm varies with manufacturer, with some manufacturers electing to sound the alarm more quickly. Slight headache, tiredness, dizziness, nausea after several hours exposure. Causes morphologic damage to hearts and brains in dogs exposed 5 1/2 hours per day for eleven weeks (Lewey and Drabkin, quoted in Preziosi). Maximum concentration allowed from kitchen range ovens by many weatherization agencies (Tsongas).

200 ppm: Maximum recommended workplace exposure (NIOSH). U-L listed detectors must sound a full alarm within 35 minutes. Time to alarm varies with manufacturer, with some manufacturers electing to sound the alarm more quickly. Slight headache, tiredness, dizziness, nausea after 2-3 hours, might be life-threatening in long exposures (Bacharach). Abortions and lower birth rates in pigs (Carson).

400 ppm: U-L listed detectors must sound a full alarm within 15 minutes. Time to alarm varies with manufacturer, with some manufacturers electing to sound the alarm more quickly. Frontal headaches within 1-2 hours, life-threatening after 3 hours, maximum parts per million in flue gas under AGA test guidelines.

800 ppm: Dizziness, nausea and convulsions within 45 minutes. Unconsciousness within 2 hours. Death within 2-3 hours. Maximum air-free concentration from gas kitchen ranges (ANSI).

1600 ppm: Headache, dizziness and nausea within 20 minutes. Death within 1 hour. Smoldering wood fires, malfunctioning furnaces, water heaters, and kitchen ranges typically produce concentrations exceeding 1,600 ppm.

3200 ppm: Concentration inside charcoal grill (Greiner, single example). Headache, dizziness and nausea within 5-20 minutes. Quickly impaired thinking. Death within 30 minutes.

6400 ppm: Headache, dizziness and nausea within 1-2 minutes. Thinking impaired before response possible. Death within 10-15 minutes.

12,800 ppm: Death within 1-3 minutes.

How to Setup Metabase in Docker and Tunnel to it From an M1 Mac

Since Metabase doesn’t have an official M1 build, and doesn’t work well at all in Rosetta (extremely slow performance/never loads), I decided to run it from my Linux amd64/intel machine and then tunnel to it from my Mac:

# On Linux:
docker pull metabase/metabase:latest
docker run -d -p 3000:3000 --name metabase metabase/metabase
sudo docker logs -f metabase

# From Mac, sets up a temporary tunnel for as long as ssh runs:
ssh host -L 3000:localhost:3000

Now I could login to Metabase on my Mac by visiting http://localhost:3000

This worked great, except for one error.

When I tried docker run for a second time, I kept getting the error “iptables failed – No chain/target/match by that name” even when the chain existed. Restarting docker and clearing/restarting iptables didn’t help.

I never figured out the reason for this error because I worked around it by restarting the machine.

WordPress(.com) Blog Stuck AutoSaving

This happens whenever I edit or mess around with links. If it’s currently stuck, you will first need to reload the page.

Then use this workaround: Never edit any links or link titles in WordPress’ horrible visual block editor. Instead:

  • Click the three dots
  • Click Edit as HTML, edit whatever part of the link needs editing
  • Save Draft, then switch back to visual mode and it will work fine

ESC Key Not Responding on MacOS

I “randomly” had the ESC key stop working twice in one month. This happened no matter which keyboard I connected. Multiple Apple and Logitech keyboards — both wired and wireless — all had a non-functional ESC key. Really frustrating when using vi(m) to edit text.

Escape key on Apple Magic Keyboard (image credit: osxdaily.com)

Thankfully, I found a stackexchange post talking about how to troubleshoot this. The suggestion by Tom Kay to disable Siri worked immediately:

macOS Ventura Preferences dialog showing Siri (This problem actually happened on macOS Monterey, but Ventura is what I'm running now.)

Now the Escape key always works, but I don’t have Siri always listening. I have two other devices always nearby that do listen for Hey Siri, so it’s not a big deal.

It’s not clear why Apple’s Siri functionality occasionally breaks the Escape key. Note that this problem always happened to me in macOS Monterey. I’m not sure if it still happens in macOS Ventura (Ventura settings pictured above), but if it occurs again, I’ll update this post. Hopefully the “fix” is the same.

How to Make a Smart Album of Outdoor Landscape Photos in macOS

I wanted to get a list of all landscape photos in Photos on the Mac, but the keyword landscape was only pulling up 7 photos, when I knew I had hundreds.

Here’s the janky smart album I came up with to build a collection of landscape photos:

The keys to this are matching all of the following conditions:

  • Text is not person
  • Photo is not video
  • Text is outside
  • Text is not vehicle

The condition “Text” seems to be a placeholder for any textual metadata found in the photo, whether it is one of Apple’s invisible machine-learning based tags or optically recognized characters from a street sign.

The “person” tag isn’t quite accurate. A few of my “landscape only” photos actually have people in them, but they’re so far away that they’re not recognized by Apple’s machine learning.

What I haven’t figured out is how to orient the photos in landscape (rather than portrait) orientation within the Photos app without an external script or tool/shortcut. Another day.

How to Check HDHomeRun/Plex Signal Strength/Quality (and the difference between the two)

I knew HDHomeRun boxes have a way to check signal strength/quality, but I couldn’t find out where. On my local HDHomeRun web server (running on the $110 HDHomeRun Duo), I kept getting a tuner status page that looked like this:

The problem was actually something I should have realized earlier – you actually have to tune to a channel to get an idea of signal strength and quality. (duh – I was expecting something the HDHomeRun doesn’t provide – a snapshot of each channel’s signal quality.)

Here’s all you need to do:

  1. Go to http://hdhomerun.local in your browser
  2. In Plex (or Channels, or HDHomeRun’s tuner), tune into whatever station you want to show status for (or be actively recording a show)
  3. Click the Tuner that you’re recording on, and you’ll see a page like this:

What about the difference between signal strength, symbol quality, and signal quality? Big Dave on Reddit explains it like this, which helped me a lot:

  • Signal strength is kind of like how loud you hear a conversation
  • Symbol quality is how well you can make out the words
  • Signal quality is how many words you can make out

    So, having excellent signal strength, but little to no symbol quality / signal quality, is like loudly hearing a conversation that’s all gibberish. You want to aim for near perfect symbol quality, and as high signal quality as possible; signal strength is the least important aspect.