How To Replace and Program a Honda Key FOB for < $100

UPDATE 2022-08-31: It turns out that in order to program Honda key fobs for cars w/ a push to start button (one button start), you need to be running the beta Honda module V2.01.54, which only runs on 64-bit Android phones, and which you must request from Autel (Instructions here: https://clarity-phev.github.io/Battery-Capacity-Read/AP200_Instructions.pdf). The regular Honda module only programs keys via a separate external module, which plugs into the car’s DLC port. If you aren’t able to obtain the beta Honda module, then you’re out of luck, unfortunately.

Several months ago, I misplaced one of the key fobs from my 2019 Honda Clarity. The MSRP of the fob itself is $467, and I found the OEM part online for $314. Local locksmiths all wanted $150 to program it. Outrageous.

I started searching around for cheaper sources of fobs, and found one on eBay for $22.24:

I was pleasantly surprised when I received it. It’s pretty much identical to the OEM part, except that the spot for a plastic insert in the back is empty. It even comes with a blank key, which slides out, just like the original. Next, I had to figure out how to program it. I called a bunch of locksmiths, and they all wanted $150 to program it, which is crazy. Then I remembered that I had an Autel MaxiAP200 bluetooth dongle, which I used for OBD-II diagnostics.:

It’s a steal, because it can do most of the functions that their standalone professional OBD-II units can do, but a fraction of the price. I bought mine on AliExpress for $50 from the official Autel store (the price is higher on the screenshot above). You can also find them on Amazon. Autel sells several different models of bluetooth dongle at different price points. Make sure to buy the MaxiAP200. The other models force you to pay an annual fee, while the MaxiAP200 includes a lifetime license for one vehicle make, with free updates. You can add on other makes later on, but they will need to be renewed annually. It connects to both Android an iOS phones. I will not go into how to install the app and pair the device, because you can find that info elsewhere.

Anyway, I started looking around the functions that were available in the app, and discovered that it has the capability to program key fobs! I will walk you through the easy procedure. Note: Some of the screens may be missing in the walkthrough below.. there were so many that I think I forgot one or two, but the app walks you through step-by-step. Just follow the prompts.

Launch the MaxiAP200 app on your phone, and select Service from the main menu.

Next, select the Immo Keys module:

Then select your vehicle brand:

Next, you’ll be prompted to select the vehicle:

Then your vehicle’s country of sale:

It will scan for your VIN, and then give you the following confirmation screen:

Next select Hot functions:

Tap One-push start:

Tap Registration, which takes you to the functions for adding/removing fobs:

Select Add a keyless access Remote:

This launches you into the procedure for registering a new fob. Sorry, this is the part where I am missing some screens below. I can’t remember exactly, but it walks you through several steps.. pushing the car’s Start button w/ a working key fob in the vehicle, turning the car off, pushing the Start button w/ they fobs in and out of the car, etc. Just follow the prompts. I don’t remember the exact order. Below is one of the prompts:

After you walk through all the steps, if you did everything correctly, you get this screen:

Now, the moment of truth! Try using your newly programmed fob to lock/unlock the doors, and start the car!

Converting Cheap Chinese USBHID Fake USBasps Into Real USBasps

I recently ordered some USBasps from Amazon, which looked interesting, because unlike the typical USBasps, which are just bare PCBs, these had metal cases:

They are also common on AliExpress.

Unfortunately, when I plugged one into my computer, it detected as a USBHID device with VID=03EB and PID=C8B4, rather than as a USBasp. I tried overriding the USBHID driver on my Windows 10 machine, but that didn’t work.

Thankfully, after doing a bit of searching on the Internet, I found that others had encountered the same problem, and had found a solution. It seems that the firmware loaded into these things from the factory is proprietary, and require that you use the manufacturer’s janky software … it’s not AVRdude compatible!

Thankfully, the hardware is actually compatible w/ USBasp firmware with a minor tweak, and you just have to flash it with modified USBasp firmware.

I have a bunch of real USBasps, so I used a USBasp to convert the fakes into real USBasps! In order to program it, slide off the metal case. Next need to connect a jumper across the two holes labeled –> UP <–. The jumper enables programming of the onboard ATmega88V. Then plug it into your other USBasp or other ISP programmer, using the 10-pin ICSP cable:

So where do you get the special firmware? GreenPhotons has graciously compiled a modified firmware for us. Next use AVRdude to program the USBasp firmware into our target:

avrdude -cusbasp -pm88 -Uflash:w:20161227_mega88_usbasp.hex

You can use any ISP you already have, if you don’t have another USBasp. Just substitute the programmer in the -c parameter (e.g. -cusbtiny for a USBtiny). If you don’t have another ISP programmer, you can use an Arduino. This guy shows you how, as well as another way to get firmware.

If you get the following error, then your USBHID ISP has an ATmega88P instead of an ATmega88V

D:\hacking\arduino\USBasp\convert_usbhid>avrdude -cusbasp -pm88  -Uflash:w:20161227_mega88_usbasp.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e930f
avrdude: Expected signature for ATMEGA88 is 1E 93 0A
         Double check chip, or use -F to override this check.

Just substitute -pm88p for -pm88 in the avrdude command line:

avrdude -cusbasp -pm88p -Uflash:w:20161227_mega88_usbasp.hex

If you have an old copy of avdude that doesn’t like -pm88p, you can instead use -F to force avrdude to ignore the device signature:

avrdude -cusbasp -F -pm88 -Uflash:w:20161227_mega88_usbasp.hex

Downloads:

modified ATmega88 firmware for USBHID USBasp

References:

Making USBasp Chinese Clones Usable

Hacking An AVR Programmer

Hacking An AVR Programmer II

I found this great resource after writing this article:

USBasp on a Clone

Korg N1 Synth Repair

I have a Korg N1 synth, which I’ve had for many years. Recently, it started having strange symptoms: after warming up for several minutes, the audio would get slightly distorted, but only on certain notes. The effect was rather subtle, but enough to drive my wife absolutely bonkers.

First, I tried to isolate the problem. I tried headphones, connected to the jack on the front left of the keyboard, to rule out my amp. The distortion didn’t go away. Next, I compared the output from the rear audio jack to the headphone, and the distortion sounded exactly the same.

I first tried google, to find out if this was a common problem. It turns out that the N1 wasn’t particularly popular, so there wasn’t much info on problems/repairs, not even teardown photos.

OK, time to take it apart. I first took the screws off the wood side panels, and removed the metal cover on the front, under the keys. Totally the wrong approach. Upon looking at it more closely, I noticed that the bottom is hinged. All you have to do is take out the big philips screws, and then it flips open.

Once I had access to the inside, I looked/smelled for any burned/damaged parts, loose wires, and bad solder joints. Nothing looked amiss. Another thing that’s a common failure point in aged electronics is aged electrolytic capacitors. They often go bad. The most obvious clue is that the tops will bulge up or burst open. I couldn’t see any that looked obviously bad, so I started touching the tops of the SMT electrolytics to feel if any of them were bulging. I found one that had an almost imperceptible bulge on top. It’s in the photo below:

The bulge is so slight, you can’t even see it in the photo above, but I could just barely feel it. Surely, this wasn’t the bad component? Since I couldn’t find anything else wrong, I decided to try replacing it.

At first, I was going to try to remove it w/ a hot air gun, but it’s so big, and close to other components, that I decided that was too risky. I searched the Internet again, and someone suggested just cutting the can in half w/ some cutters, and then yanking out the rest. It turned out to be an easy and safe method. And, it left two short protruding wires attached to the circuit board, which made it easier to solder in a new cap. (Sorry, I should have taken photos, but forgot).

Anyway, here’s what it looks like w/ the replacement soldered in place:

I was extremely skeptical that replacing this capacitor would fix the distortion, but amazingly, when I turned it on, and left it for an hour, the problem was gone! It’s been over a month now, and there is no more distortion, no matter how long it’s turned on. Amazing.

Below is a full photo gallery of my teardown:

Direct link to Google Photos: https://photos.app.goo.gl/VwxPwYw8nxvgwx8Q9

Weller WESD51/WES51 Repair – No Heat

Over the past couple of years,my Weller WESD51 soldering station had been getting progressively flaky. Sometimes, I would have to fiddle with it for a while to get it to heat up. Finally, one day, it just stopped heating altogether. I had trouble finding info on how to fix it, mainly because I couldn’t even find the pinouts for the soldering pencil attachment jack.

Finally, I hit the jackpot last week. I found this thread in AllAboutCircuits discussing a similar model, the WES51. The main difference between the WESD51 and the WES51 is that the WESD51 has a digital temperature display, while the WES51 only has a status LED. While the thread didn’t tell me how to fix it, I found the user/troubleshooting manuals attached! I have linked the manuals at the bottom of this post. Unfortunately, following the troubleshooting guide didn’t help me find the problem, because everything checked out OK.

Then I found this guy’s YouTube video on fixing a WES51 that wouldn’t heat up. As I suspected, the PCB’s in the two different models is very similar. In the guy’s video, he fixes it by replacing a 2.2uF capacitor that’s connected to the heater’s power transistor. I checked the corresponding capacitor in my WESD51, and sure enough it was bad. I found a in my junk parts bin to swap in and bingo, my WESD51 is working again! The step by step procedure is below.

Step 1: Open the case

First, you need to open up the case. Pop out the rubber feet at the bottom of the controller case. Underneath are philips screws.

After you remove all four of them, the blue upper body easily separates. Here’s what’s inside:

Step 2: Remove PCB

Separate the green PCB from the casing. You don’t have to remove the temperature adjustment knob from the faceplate. Locate the 2.2uF/50V capacitor. It’s circled in red in the photo below:

Step 3: Remove existing 2.2uF capacitor

Carefully desolder the capacitor circled in red above. If you don’t have a capacitance meter, just try swapping in a new part, and see if it fixes the problem.

Step 4: Solder in a replacement capacitor

Make sure to pay attention to the polarity of the electrolytic capacitor… the negative terminal faces the line of SMT resistors on the right of the photo above. I didn’t have an exact replacement in my parts bin, so I just used a 4.7uF/25V part… the circuit voltage is 24V, so 25V isn’t much headroom, but it’s easy to replace it again if it fails in the future. Before putting everything back together, I fired it up, and it was heating again!

Downloads:

WESD51 spec sheet

WESD51 User/Troubleshooting Manual

WES51 User/Troubleshooting Manual

Build an Audio Player Based Mind Machine Part 1: Photic Goggles [REPOST FROM GEEKMATICA]

NOTE: This is just a repost of an article that originally appeared in my geekmatica blog back in 2007. I’ve re-posted here, because it’s referred to by my Build Ganzfeld-style Photic Goggles (AVS Lightframes) article.

Commercial mine machines are quite expensive, and often inflexible, containing only a few canned programs. In this series, I will show how to build an infinitely reconfigurable photic-stim mind machine on the cheap. Rather than build an oscillator circuit, we will drive our mind machine with computer-generated waveforms via an audio player. You can use your favorite audio playing program on your computer, or a portable MP3 player.

UNDER CONSTRUCTION: I still have a ways to go w/ filling in details, but I thought I would at least throw up the article first, since it might take me forever. Please pardon the omissions.

Keywords: DIY, build, mind machine, brain, AVS, photic goggles, audio visual stimulation, lightframesPart 1A: Photic-stim Goggles (aka Lightframes)

Photic-stim goggles cost typically more than $50, but they’re typically built with only <$1 worth of LED’s, and some cheapo ski-type sunglasses.

Below are the lightframes which came with my Sirius AVS machine, which I purchased from MindModulations.com.

Note how they are just as I described above, a cheap pair of ski-type sunglasses, with 8 LED’s wired into a sheet of black plastic. The plastic is attached to the sunglasses with double stick foam tape.

Below are the materials we need for our project:

Bill of Materials (BOM)

  1. Ski goggle style sunglasses. I purchased this pair for under $10
  2. Stereo wiring with 1/8 in phone plug. A cheap pair of earbuds from a local 99 Cents Only Store is perfect for cannibalizing.
  3. Thin, flexible black plastic sheeting. A spare DVD case courtesy of junk mail from AOL will do fine.
  4. LED’s. The type and number of LED’s is up to your own taste. Since my design uses the black plastic sheet insert, I picked 3mm LED’s… they need to be small enough that they won’t bump into your eyes when you’re wearing the goggles. If you want to drill directly into the goggle lenses and eschew the plastic sheet, you can use bigger LED’s. I bought my LED’s from UniqueLEDS.com. They have an extensive selection, and list detailed specs for the LED’s, including brightness. SUPERBRIGHT
  5. Not pictured is a few inches worth of hookup wire. I had some kynar-insulated 40AWG wire wrap wire laying around, which was perfect, due to its extremly thin diameter.

How many LED’s you use is up to you, but the minimum is two, one for each eye. I decided to use 8 … 4 for each eye. Also, I used two different colors, green and blue, on alternating diagonals. Note that my LED’s have 3 leads instead of the usual two. This is because I had a wild idea of using bicolor LED’s so that I could get different color combinations, but I’m not very sensitive to the colors, so I decided to hook them up like one-color LED’s. There are various recommendations on the web for color selection. Personally, I like the bright white LED’s that my Sirius frames used, but I decided to experiment with colors on this set.

First, cut the black plastic which will support your LED’s. Ask I said above, you can skip this step, and drill directly into the lenses, but it will look a lot uglier, since the wiring will be exposed in the front. Also, the drilling method doesn’t let you easily reconfigure the frames if you change your mind about the layout. I used graph paper to make a paper template for my LED layout:

You should lay out the LED’s so that they’re fairly well-centered over your eyes. If you space them out a bit, it will allow for inaccuracy, and eye movement. Note that my layout is rotated 45 degrees with respect to the layout used by the Sirius. My DVD case was soft enough that I could just use scissors to cut out the template, but you may need to use an X-acto knife.You can use a drill for the holes, but I spun an X-acto knife around, instead, and slowly increased the size of the holes until I had a tight fit. (BTW, for the curious, those are not my hands in the photo).

I misaligned one of the holes a bit, as will be apparent in later photos, but it works fine, even though it’s a bit ugly.

Since we want to keep the LED’s far enough away that they don’t hit your eyes, we need to bend the leads as tightly as possible. I used a pair of needle-nosed pliers, but if you’re careful, you can just use your fingers on the edge of your desk:

Here’s what they look like when they’re done. Since my layout uses alternating colors on the diagonals, I first bent two of the green LED’s. Then, I bent another pair of green LED’s in the opposite direction. The opposite polarity of the bending is important, because the LED’s are hooked up in parallel. Here’s what they look like before I cut the leads:

Now, the wiring and layout of the leads will vary considerably, depending on how you want your LED’s to behave. The lightframes I built behave very differently from the Sirius lightframes, which utilize the industry standard wiring. In the Sirius setup, all 4 LED’s on a particular side light up synchronously. The left side responds to the left channel, and the right side responds to the right channel, so the two sides can be controlled independently. This is an example of how they can blink:

My design mimics the IC/D setting of TC-Softworks lightframes, hooks up each pair of diagonals together. The greens respond to the right channel, and the blues respond to the left channel. Therefore, both eyes are always lit, but the intensity and color can vary.

You can use your imagination to come up with your own unique design.

If you are building your goggles to work with a particular mind machine, be aware that there is another variation in the wiring, which affects the compatibility. All of the schematics I have shown up to now have used Common Ground (CG) wiring, where the cathodes (grounds) are all tied together. Some machines, such as my Sirius, use Common Power (CP) wiring, where the anodes (power) are tied together. Before wiring up your goggles, make sure you know if you need CG or CP wiring. As it stands, the goggles I built are incompatible w/ my Sirius.

You must also be aware that which polarity you choose will affect the polarity of the signals that you use to light up your goggles. CG goggles light up when the signal is positive, and CP goggles light up when the signal is negative. Thus, if we use the following signal, CG goggles would light up in the first half of the cycle, and turn off in the second half, where the signal goes negative.

On the other hand, CP goggles will do the opposite, and be dark in the 1st half cycle, then light up in the 2nd half cycle.

Next, I fit them into the plastic, and soldered the wires:

Be careful to solder as quickly as possible, and not to use a high-wattage iron, because LED’s are semiconductors, and can easily be destroyed by overheating.

The inner pairs of LED’s have to be bent a bit differently, so that the leads don’t touch and short out w/ the outer pair of LED’s.

In my case, they were the blue LED’s. Note that the LED’s w/ the extra bend actually go on the inside, so I had to take the first pairs out first. Here’s what they look like up close. Although the inner and outer wires look like they’re touching, there’s a tiny clearance. Here’s what it looks from the other side:

I know, I know, the holes are a bit off, but it’s accurate enough.

Next, I connected up the wiring. Since my goggles are wired up for CG, the center leads (the cathodes) of all of the LED’s are wired together. The anodes of each color are all wired together. NEEDS PIC OF TRS WIRING HERE

Testing …

Left channel only

How to Reset Energy Usage and Runtime on TP-Link Kasa Smart Plugs (KP115/HS110)

20220914: Note: If you have an Apple device, you no longer have to use my laborious procedure documented below. The Watt for Smart Devices app can reset the energy and usage stats of both Kasa and Tapo devices.

WARNING: This method DOES NOT work the Tapo devices. They use an entirely different API. I wrote some code to try sending reset_energy_usage to a Tapo plug, but it rejected the command. If anyone knows the command to reset the energy usage of a Tapo, please leave a message below. Also, I might be able to find the correct command if someone can send me a firmware file for a Tapo plug with energy monitoring.

I recently acquired a few TP-Link Kasa KP115 smart plugs with energy metering. It was a bit disappointing to find that they barely show any data. There are no graphs, no voltage or current, just instantaneous power and summary energy stats and runtime:

I wanted to find the daily energy consumption of various appliances, so I needed a way to reset the energy counter to zero. Believe it or not, TP-Link doesn’t provide a way to reset the energy. TP-Link support says that you have to delete the plug from Kasa, factory reset, and then add it back to Kasa.

The most ridiculous part is, the smart plugs actually have a command to reset the energy without resetting the whole device! They’re just too lazy to add it to their app!

I found a github repo with a list of the commands available in the TP-Link protocol. It turns out that there’s a command to reset the energy monitor!

Erase All EMeter Statistics
{"emeter":{"erase_emeter_stat":null}}

The repo contains a Python3 script that can query the energy stats, but it doesn’t have an option to send the emeter reset command. Fortunately, it has a command line option to send an arbitrary JSON command to the plug. I tried sending the above to my KP115, and the energy meter was instantly reset to 0!

# python3 ./tplink-smartplug.py -t <ipaddr> -j {\"emeter\":{\"erase_emeter_stat\":{}}}

Although I don’t have one, the same command should also work on the older HS110 smart plug.

For your convenience, I have forked the github repo, and added a command to reset the emeter, so you don’t have to type the ugly JSON command.

Here’s how to reset your energy meter:

  1. Download and install Python 3.x: Python Downloads
  2. Download tplink_smartplug.py
  3. Next you need to know the IP address of the smart plug you want to reset. If you don’t know how to find it from your WiFi router, you can scan for it with an IP scanner, such as Fing. Look for a device named KP115 (or HS110).
  4. open up a command shell and type:
python3 ./tplink_smartplug.py -t <ipaddr> -c energy_reset

substituting the IP address of your smart plug for “<ipaddr>.”

Example:

# python3 ./tplink_smartplug.py -t 192.168.1.36 -c energy_reset
Sent:      {"emeter":{"erase_emeter_stat":{}}}
Received:  {"emeter":{"erase_emeter_stat":{"err_code":0}}}

The Python script returns “err_code: 0” if it’s successful. Next, open up your Kasa app, and check to see if the energy meter was reset successfully.

How to Get Rid of Smoni – Failed to create empty document

At some point in the past several months, probably after a Windows 10 update, my PC started to display a cryptic and annoying dialog box every time I logged in. I started wondering if somehow, a virus had gotten into my computer. I hadn’t spent the time to figure out what it was causing it, and how to get rid of it, until today. A google search of “Smoni Failed to create empty document” didn’t yield any useful results. It’s so annoying to go through Microsoft forums, and find the that the only advice they can give you is reset or restore your system. No thanks. It’s a lot easier to spend a little time troubleshooting on my own, than spending hours backing up and reloading all my programs and files.

I pulled up the Task Manager, scanned the running process list, and quickly found the culprit:

Aha! What’s this BrnlPMon process? Simply right click on BrnlPMon, and select Open File Location from the menu:

Windows then pops up a File Explorer window, with the offending file highlighted:

Hmm.. so what’s BRNIPMON.exe? Right click the file, and select Properties from the context menu. Select the Details tab on the resultant pop-up window:

Bingo! It’s Brother IP Monitor, which I figured out is monitoring software for my Brother WiFi connected laser printer. Something in my recent Windows 10 updates (probably the new Creator’s Edition), caused an incompatibility, which triggers this stupid error dialog.

At this point, I could just uninstall it or delete the files, but since I now know that it isn’t malicious, I’ll just leave it for now, and look for a software update when I have time, and see if that fixes the issue.

HowTo: Low Water Pressure Fix for Kohler Simplice Kitchen Faucet

I have a Kohler Simplice kitchen faucet.

Over the years, it has occasionally had issues with low water pressure. I’ve had to take it apart several times, and have narrowed it down to a couple of common problems. In this article, I’ll explain how to quickly diagnose and fix it, so you don’t have to spend hours on it like I did.

Diagnosis

First we need to figure out where the problem lies.

  1. Are both the hot and cold water flowing slowly? If so, the problem is likely in the spray head assembly. See Spray Head section below.
  2. Is only one side flowing slowly? If only hot or cold is flowing slowly, and the other side is flowing fine, then the problem is likely that an inlet screen is clogged. See Clogged Inlet Screen section below.

Spray Head

Pull out the spray head, and use a crescent wrench to hold the end still while you unscrew the spray head from the faucet:

 

Turn on the water full blast. If it flows out of the hose strongly, then your spray head is definitely the culprit. With dry fingers, pull the black plastic buttons off the spray head.

  1. grab the pin located by the red arrow in the photo above with a pair of needle nose pliers. Turn it, and push it in and out until it moves smoothly
  2. use a small screwdriver inserted into the slot in the metal piece denoted by the red circle in the photo above, and slide the metal piece to & fro until it moves smoothly
  3. (optional) if you have silicone spray, spray it into the areas where the plastic and metal interface, and again move the metal pieces to & fro until they move even more smoothly

At this point, you can reassemble and test it out. Most likely, the problem will be fixed already. However, as long as you have it taken apart, you might as well clean off the calcium deposits. There are two places where calcium builds up: 1) the inlet screen

and 2) the aerator and jets

 

The entire black plastic face containing the aerator should be removable if you grab the flat sides of the inner black core around the aerator (see red arrows in photo above) with a wrench and unscrew it. Unfortunately, mine was glued on by serious calcium deposits (in the photo above, I’ve already cleaned off the calcium but it was still stuck). If you can unscrew the black plastic face assembly, you can disassemble and clean the aerator more thoroughly. Since mine was stuck, I simply soaked both ends of the spray head in hot vinegar, and then used a brush to rub off the remaining calcium deposits. If the gray jet holes are not clean, you can also insert a round toothpick into each hole, and rotate it to clean it out. Reinstall the spray head and test. The water should be flowing strongly now. If so, you are done.

Clogged Inlet Screen

If only the hot or cold side (usually only the hot side) flows slowly, while the other side flows strongly, the inlet screen on the clogged side is probably clogged up with calcium deposits. Go under the sink, and with two wrenches, unscrew and detach the inlet hose from the faucet on the side that’s clogged.

sorry for the horrible photo. The red arrow in the photo above points to the inlet screen. It’s not removable, so you have to clean it in place. Mine was completely gunked up with calcium deposits that had broken loose from my old water heater. I used q-tips soaked in vinegar, followed by scraping with a small screwdriver to clean the screen. Reattach the inlet hose and test. If the water’s flowing strongly again, you’re done!

 

HowTo: Downgrade Scosche Rhythm+ Firmware

REVISED 20180116

In my previous article, HowTo: Upgrade Scosche Rhythm+ Firmware, I showed how to update Scosche Rhythm+ firmware via their Fitness Utility iOS app. Some people have had issues with the 3.01 firmware installed by the latest V2 Fitness Utility, notably incompatibility with certain apps, and/or flaky readings.

I contacted Scosche via live chat, and they told me that there was no way to downgrade from 3.01, except for sending the unit back to them. The V2 Fitness Utility no longer has a Firmware Update button, so there’s no way to use it to install any firmware other than v3.01. Instead of sending mine back to them, I decided to try to get a hold of an older version of Fitness Utility, in order to downgrade the firmware. It turned out to be a very laborious and time consuming procedure. I was hoping that I could share the IPA file of Fitness Utility 1.4.1 so everyone else could save a lot of time, but as reader Hap noted in the comments below, IPA files are tied to specific Apple IDs.

If you want to downgrade your firmware yourself, rather than send it back to Scosche, follow the rather lengthy and complicated procedure below.

To obtain the older version of Fitness Utility, I loosely followed the procedure from How to legally download any previous version of an App Store app through iTunes, but it was somewhat outdated, so I will summarize my own procedure below. I am not going to explain the nuts and bolts of what each step does, since that’s covered in the linked article.

Current versions of iTunes no longer support app installs, so you need to downgrade to an older version. The linked article states that there’s yet another hurdle, in that as of iTunes 12.5, Apple is using certificate pinning, which nullifies the ability of Fiddler to snoop HTTPS traffic. I tried an older version of iTunes, but it was no longer able to communicate with the App Store (Apple just LOVES to put up hurdle after hurdle for us!). After much searching, I discovered that in December 2017, Apple quietly released iTunes 12.6.3 for enterprise users who still need the ability to do app installs. Because it uses certificate pinning, I had to devise a procedure to get around that.

Note for Mac users: You can probably follow the same basic procedure using Charles Proxy, but I don’t have the ability to walk you through that.

WARNING: THE PROCEDURE BELOW IS PROVIDED AS A RESULT OF MY OWN FINDINGS. THERE IS ABSOLUTELY NO WARRANTY, AND THERE IS A SMALL POSSIBILITY THAT YOUR DEVICE CAN BECOME BRICKED DURING A FIRMWARE UPDATE. MAKE SURE THAT YOUR DEVICE IS FULLY CHARGED BEFORE STARTING. IN FOLLOWING THE INSTRUCTIONS BELOW, YOU AGREE TO RELEASE ME FROM ALL LIABILITY, AND PROCEED AT YOUR OWN RISK.

How to download Fitness Utility 1.4.1 and use it to downgrade your Rhythm+ to firmware 2.62:

    1. Find your current iTunes folder, and rename it to iTunes.sav, or just move it to a new location. On Windows 10, it’s located at C:\Users\<yourusername>\Music\iTunes. (Don’t worry, after you’re done, you can reinstall the latest iTunes, and restore your old iTunes folder).
    2. Download and install iTunes 12.6.3
    3. Download and install Fiddler. DO NOT START FIDDLER YET
    4. Launch iTunes 12.6.3 and download any random app. iTunes will prompt you to log in with your Apple ID. This is the loophole we use to get around the certificate pinning. It turns out that iTunes 12.6.3 only checks the certificate during the login process, and doesn’t detect when we later swap in Fiddler‘s fake root certificate so that it can snoop HTTPS traffic.
    5. Before proceeding, it’s best to kill any programs on your computer that access the web, because they will pollute your Fiddler capture. If you have your web browser open in order to read this article, kill all of your other tabs that might be accessing the web in the background.
    6. Launch Fiddler.
    7. In Fiddler, go to the File menu and uncheck File->Capture Traffic
    8. From the Fiddler menu, go to Tools->Options->HTTPS. Check the Capture HTTPS CONNECTs and Decrypt HTTPS traffic checkboxes. A dialog box will pop up asking if you want to Trust the Fiddler Root certificate. Select Yes to it, and all of the ensuing dialog boxes. Don’t worry, after we’re done, we will remove the fake certificate, and restore your original.
    9. In Fiddler, go to the menu to check Rules->Automatic Breakpoints ->Before Requests
    10. Launch iTunes and search for Fitness Utility in the App Store
    11. In Fiddler, go to the File menu and check File->Capture Traffic
    12. In iTunes, click the button to download Fitness Utility
    13. A few requests with red icons on the left will appear in the Fiddler capture pane. Select
      HTTP Tunnel to upp.itunes.apple.com:443  and click the green Run to Completion button in the right pane. Next, select
      HTTP Tunnel to p14-buy.itunes.apple.com:443 in the left pane, and click the green Run to Completion button in the right pane
    14. A new request should appear in the Fiddler capture pane: HTTPS p14-buy.itunes.apple.com /WebObjects/MZBuy.woa/wa/buyProduct  Select it in the capture pane, and then in the right pane, click the TextView tab, look for

      <plist version=”1.0″>
      <dict>
      <key>appExtVrsId</key>
      <string>821322483</string>

      and replace 821322483 with 813634417.

    15. In Fiddler, go to the menu to check Rules->Automatic Breakpoints ->Disable
    16. Make sure the HTTPS p14-buy.itunes.apple.com /WebObjects/MZBuy.woa/wa/buyProduct request is selected in the Fiddler capture pane, and click the green Run to Completion button.
    17. After iTunes shows that Fitness Utility is downloaded, verify that you have the Fitness Utility 1.4.1.ipa file in C:\Users\<yourusername>\Music\iTunes\iTunes Media\Mobile Applications
    18. Connect your iOS device to your computer, and use iTunes 12.6.3 to install the Fitness Utility 1.4.1 to your iOS device, or use iFunBox instead as described below in Update 20170112
    19. Launch Fitness Utility 1.4.1 on your iOS device and turn on your Rhythm+. WARNING: MAKE SURE YOUR RHYTHM+ IS FULLY CHARGED BEFORE UPGRADING THE FIRMWARE. IF IT DIES DURING A FIRMWARE UPGRADE, IT MAY BE RENDERED UNUSABLE.
    20. Tap the Commands button at the top right of the screen, and then tap the Start button next to Firmware Update.
    21. After the update is completed, power cycle your Rhythm+
    22. You can check that the firmware version is now 2.62 by tapping the Attributes button at the top left of Fitness Utility.
    23. VERY IMPORTANT: Once you verify proper operation of Fitness Utility, on your computer, have Fiddler restore your original root certificate with Tools->Options->HTTPS->Actions->Reset All Certificates.
    24. Copy your Fitness Utility 1.4.1.ipa file somewhere so that you can reuse it in the future if you wish.
    25. Delete the new iTunes folder, restore your old iTunes folder by renaming iTunes.sav to iTunes, uninstall iTunes 12.6.3, and reinstall your original version of iTunes.

Now that you have your own copy of Fitness Utility 1.4.1.ipa, you are free to try any future firmware upgrades from Scosche, because it’s easy to go back to a working version if you don’t like the new one. If you use iFunBox, you don’t even have to mess with swapping out iTunes versions.

If you prefer to downgrade to firmware v2.4, you can use Fitness Utility 1.4.1 and follow the procedure below:

*** WARNING: DOWNGRADING TO FIRMWARE V2.4 DISABLES THE ABILITY TO UPDATE FIRMWARE VIA FITNESS UTILITY. IF YOU LATER CHANGE YOUR MIND, AND WANT TO INSTALL A DIFFERENT VERSION, YOU WILL HAVE TO SEND THE UNIT BACK TO SCOSCHE. ***

  1. download firmware 2.4 and unzip it.
  2. send the unzipped HEX file to an e-mail address accessible from your iOS device
  3. open the e-mail you sent on your iOS device, tap the attachment, and then scroll through the on screen icons until you find Copy to Fitness Utility, and tap the icon.
  4. Turn on your Rhythm+ and follow steps 19-22 above.

The above method actually works with any version of firmware HEX file that you are able to obtain.


Update 20180112: I tried installing Fitness Utility 1.4.1.ipa with iFunBox instead of iTunes, and it also works. Launch iFunBox with your phone connected to your computer, and install the app by clicking the Install App(*.ipa) from the main screen. Firmware 2.4: scosche-rhythmplus-2_4.zip

 

Downloads:
iTunes 12.6.3 (allows App installs): https://support.apple.com/en-us/HT208079

 

Previous article: HowTo: Upgrade Scosche Rhythm+ Firmware

Programming OpenEVSE with a Serial Cable instead of Hardware Programmer

Typically, OpenEVSE firmwares are flashed into the board using a hardware programmer, such as a USBasp. In the past, this was required, because the firmware had grown so large that there was no space left in the ATMega328P‘s flash to fit in a bootloader. However, the latest versions of the AVR tools that come with Arduino have shrunken down the binaries to the point that we now have space for a bootloader. Once the bootloader is installed, OpenEVSE can be programmed in exactly the same fashion as an Arduino Pro Mini, via a USB->TTL UART adapter, such as a FTDI cable, using the stk500 (arduino) protocol.

Before we can program the chip with a bootloader, we need to make a minor hardware mod. After a reset, the bootloader waits to see if a new firmware wants to be flashed before proceeding with booting the installed firmware. It is only during this very small time window that the ATMega328P‘s MCU is ready to accept a firmware. In order to trigger a reset via software, we need to connect the DTR pin of the FTDI cable to the RESET pin of the MCU via a .1uF capacitor.

Below is a photo of the mod, done on a Wattzilla C3 board, which is an OpenEVSE variant:

The DTR pin is on the far left of the 6-pin serial connector. The RESET pin can be accessed at either the left side of R10, as pictured above, or at Pin 5 of the ISP connector (red circle).

Once the hardware mod is in place, we must set the fuses to use a bootloader, and flash in the bootloader, using a hardware programmer. In this example, we will use OptiBoot, because it’s smaller and faster (115200 baud) than the standard Arduino bootloader.

avrdude -c USBasp -B0.5 -p m328p -Uflash:w:optiboot_atmega328.hex -Ulfuse:w:0xFF:m -Uhfuse:w:0xDE:m -Uefuse:w:0x05:m -Ulock:w:0x3F:m

After the bootloader is flashed in, we can thereafter flash in firmwares using just the FTDI cable:

avrdude -carduino -PCOM5 -b115200 -p m328p -Uflash:w:open_evse.hex

Substitute your FTDI cable’s virtual serial port for COM5 above.

For those who are not comfortable with command lines, it’s also possible to use the Arduino IDE to burn the bootloader, and flash in firmwares.

  1. Set your board to Arduino UNO by using the menu to navigate to Tools->Board->Arduino UNO
  2. Select your hardware programmer via Tools->Programmer
  3. Install the bootloader via Tools->Burn Bootloader
  4. Disconnect the hardware programmer, and use Tools->Port to select your FTDI cable’s virtual serial port.

Thereafter, you may flash in your sketches with the upload button. The above procedure will also work with any DIY or other Arduino clone which is not wired for a bootloader. Note that the bootloader takes up 512 bytes, so your maximum sketch size drops from 32768 to 32256 bytes.