Products > Test Equipment
121GW multimeter firmware hack to prevent remembering last mode
f36:
Normally, the 121GW will remember the last mode you were in for each range switch setting. This means if you make a measurement in capacitance mode, turn the meter off, then turn the range switch back to ohms, it will go back to capacitance mode. If you want to change back to ohms mode, you have to press the mode button a few times. I find this annoying and prefer the meter to default to the most commonly used mode for each range (i.e. default to DC volts, DC current, ohms, etc), similar to my other meters.
I don't see a way to disable this functionality from the menus, so I spent a couple hours figuring out how do hack the firmware. Figured I'd share the process in case anyone else wants to do the same.
* Download firmware version 2.05 (https://www.eevblog.com/wp-content/uploads/2017/11/EEVBlog2_05.zip) from Dave's website. This patch will likely only work for V2.05.
* Using the instructions in the manual, update your firmware to V2.05. Remember to rename the file on the SD card to EEVblog.bin. I don't know if the EEPROM data layout is different for other versions so this is just to make sure the following step works.
* Turn the rotary switch to each position and select the mode you want as default for every position.
* Open the V2.05 firmware binary file in a hex editor and change bytes starting at address 0xB140 (45376) from 00 F0 C6 FF to 00 BF 00 BF.
* Put this firmware on the SD card and update to it. Now the meter should default to the modes you selected in step 3 every time. If you want to change these default modes, temporarily go back to the unmodified firmware image.
This is a very simple patch. The edit simply replaces the function call to the EEPROM write function inside the mode change code with two NOPs. Therefore, the EEPROM is never written to on mode change and it reads the values set in step 3 every time the rotary switch is moved. As a bonus, it'll take you a few extra eternities to wear out the EEPROM's 300k rated cycles.
Fenton Bresler:
Can't wait to try this out. This function gets in my way every day. It always seemed like such a false good idea to me. Thanks!
bicycleguy:
@f36
Nice hack!! Not sure why, but the auto last mode screws me up more often than not with this meter. Curious if this helps or I'm just not careful enough.
thanks
J-R:
Very nice, this hack shows there is still untapped potential in the 121GW. It's too bad UEi hasn't continued work on the firmware and the custom firmware never took off.
I can see both the factory and custom configurations being desirable depending on use case. Given the sheer number of ranges and modes, having a predictable default makes good sense on one hand, but on the flip side if you're frequently jumping between two switch positions this could get annoying quickly.
Luckily I have more than one 121GW so I flashed one with the custom firmware and put a note on it so I know which is which. So far I like this hack more than I dislike it.
This hack also affects the range setting in each mode. I set mine to Auto for every switch position.
I also ran some additional tests. Best I can tell other functions are not affected. You can set the contrast and auto-power-off for example and it still writes those settings correctly.
f36:
--- Quote from: J-R on July 23, 2022, 11:26:53 pm ---...but on the flip side if you're frequently jumping between two switch positions this could get annoying quickly.
--- End quote ---
Yeah, I agree. Decided to go back at it today and eventually got some handwritten assembly jammed into the firmware. Now it'll store the mode settings in RAM instead of EEPROM so it remembers any changes until you power off the meter. On startup, it loads the settings from EEPROM into RAM, so you can still choose defaults by setting them with the stock firmware.
Quick summary of how it works: Changed the NOPs from the previous hack back to a call to a new function that stores the mode values in RAM at around 0x2000A000. Found and replaced all calls to the EEPROM read function that read from addresses I observed change when the mode changed (EEPROM offsets 0x8-0xE) with another new function that read from RAM. Finally, redirected the reset interrupt vector to a new function that copies the 7 bytes from EEPROM to the new location in RAM. 0x2000A000 is in the middle of RAM, so hopefully it'll stay out of global variables and the stack, but I have no way of making sure nothing will read/write from the addresses I chose.
Even with the stock firmware, it doesn't remember range settings and always defaults to auto, so IDK how to make it remember those as well.
I hope posting the full firmware image here is kosher since this is a bit more than a few bytes changed.
Disclaimer: I have no idea what I'm doing and have never done ARM ASM before, so your meter may spontaneously combust. :-+
Navigation
[0] Message Index
[#] Next page
Go to full version