Uni-T UT139c LCD biasing and other mods - Page 1
Forum section: electronics / testgear

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: February 16, 2017, 10:31:45 am
content: Dear forum,I am looking for some info on biasing the LCD on the UT139c. The issue in question is quite similar to that of the Brymen BM235 described and fixed inthis thread and Daves video.Forum and web search did not turn up anything useful so far. Has anyone reverse engineered said device or are schematics available?Thanks and best regards from Germany,FrederikEdit: After digging a little deeper I managed to find a solution, see detailed reply below.

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: February 16, 2017, 12:38:56 pm
content: From:Kerry Wong's dtm0660l based hack, especially: Thetranslated data sheet, it looks like the LCD Voltage is set by the EEPROM?I am having difficulties measuring VLCD. I only get 0.5V from VLCD to VSS. What am I doing wrong here? COM to SEG is sort of 3.1 Volt-ish.Reference from another thread:Pointers welcome!Regards,Frederik__Edit__Also: (And maybe I should have asked this in the first place)How is the biasing on the UT139Cs that you own?Is this just a one-off problem and I should return the thing to get a new one?

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: February 18, 2017, 06:50:15 pm
content: To cut it short:I found a solution starting from Kerry Wongs article.The broken out pins on the PCB did somehow not work for me. I bought a SOIC8 programming clip as I thought it might come handy in the future anyway.Basicallythis link to STM32duino forumsset me up with any additional info I needed.The EEPROM on the UT139C PCB (full disassembly of the LCD module required) is a T24C02A similar to other meters based on the DTM0660L chip.I used an Arduino and newly accuired programming clip to dump the EEPROM contents. The sketch of Andy Hulls post over at the STM32duino community is pretty nice and needs just minor adjustments to match an Arduino board of choice.The factory setting for my meters VLCD was 3.0V (taken from the memory dump). I reprogrammed it to 3.3V and the display is now pretty usable. For my taste, the contrast could still need a little bit more oomph, but I am not complaining. 3.3V is the maximum setting, as the DTM0660L datasheet indicates.While having the infrastructure set up I am wondering if all UT139 meters are built of the same hardware and just restricted via software. If I happen to find a cheap 139A I will check if I can simply turn it into a 139C as with the Rigol scopesAll in all there are a whole lot of hackable parameters to look into!Anyone wanting more info on the issue, feel free to ask!Regards,FrederikEdit: Added some photos

author: Kbird
author_rank: Regular Contributor
timestamp: March 12, 2017, 10:19:22 pm
content: Thanks for the Post I just opened mine up to try and reset the resolution and change the backlight timeout and discovered that the LCD Backplate (White peice) is now soldered to the PCB which I have not seen in any of the pics about this Hack before .It appears to be a Rev.4 like yours and I think in your last pic I can see you just carefully bent the white peice (real name ?)up to vertical while you did the mod, is that Correct ?KB

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 13, 2017, 12:00:01 am
content: Yes, two LEDs are glued to the white back plate and you need to bend the legs in order to reach the EEPROM.Also, I got an email from a reseller regarding the display:(translated from german)»Thank you for your inquiry for the UT139C.Unfortunately the manufacturer told us, that it is not possible to make changes to the display in order to improve readability.However, the UT139 series will soon be equipped with an HTN display instead of the current simpler LCD model. This will ensure optimal readability.«HTN are a bit better in regard to contrast and viewing angle, compared to TN as the cheapest option - STN or FSTN would be superior to all of these, but also way more expensive.As shown, there is a slight reserve to set a higher bias, but moving to a better panel is not the worst decision Uni-Trend could come up with. We will see, how this affects retail prices though.

author: Kbird
author_rank: Regular Contributor
timestamp: March 13, 2017, 03:27:18 am
content: Thanks for the reply Frozen , I will probably try your LCD enhancement too , though I think mine maybe a little better than yours was to start but could you post your new eeprom settings please for 3.3v , thx.KB

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 13, 2017, 07:59:52 am
content: The EEPROM dump (factory settings) looked like this:Code:I2C device found at address 0x50-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00 : FF FF FF FF FF FF FF FF FF 52 00 04 01 0C C1 0310 : 10 27 38 18 4E 02 65 4B 3D 3D FF 3B 0A FF 40 FF20 : 96 98 58 81 FA 00 32 00 00 80 00 80 A3 7D F3 AD30 : 4E 02 09 1C 02 09 A6 00 0B 41 14 0A 1C 03 0A 0040 : 00 01 00 01 00 07 98 00 64 00 64 00 64 00 00 0050 : 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 8060 : AB 7F E9 80 01 00 8F 2A 00 00 00 00 00 00 00 0070 : 47 7F 00 80 4A 81 E0 7C D2 2C 00 00 00 00 00 0080 : 00 00 00 0E 00 10 1E 18 00 00 0C 12 13 07 03 0190 : 00 00 00 0F 00 11 00 19 00 00 0D 00 15 09 04 02A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00C0 : 0D 00 02 20 0D 00 03 20 20 00 03 20 20 00 03 10D0 : 41 00 03 08 41 00 03 05 41 00 03 05 0D 00 02 20E0 : E2 F1 0B 80 00 80 00 80 00 80 00 80 00 80 00 80F0 : 00 80 00 80 00 80 00 80 5A C7 EC 0F 0F 80 00 00Look out for hex address F9 (in my case value C7).C7 base 16 converts to 1100 0111 base 2. Bit 3 and 2 hold the value for the LCD supply voltage. Taken from the DTM datasheet, my Uni-T was set to 3.0V, so the new value for 3.3V was: 1100 0011 – or C3 in hex.Yours may vary, so perform the dump and go with it accordingly.Just write the single byte at 0xF9.

author: Kbird
author_rank: Regular Contributor
timestamp: March 15, 2017, 03:36:48 am
content: Thanks for the information Frozen that will certainly be helpful.KB

author: Kbird
author_rank: Regular Contributor
timestamp: March 15, 2017, 08:26:42 am
content: Hi Frozen could you please post or attach your .ino file you used please ? so I can study it and try and learn what is happening and where.I have a Leonardo , but I don't have a Test Clip and none of the local store do either , since I thought Uni-T at the Factory had programmed it with a Pogo Pin adapter I Soldered in a 5 pin Female header to the VDD,WP, SCL, SDA, and V- holes , and connected VDD to 3.3v, WP to GND and SCL and SDA to the same pin on the Leonardo , I am unfamilar with V- but thought perhaps it was GND too? , so hopefully I didnt hurt anything but 1st time i plugged the Leo. in the Meter chirped a few times and I quickly pulled V- out and Windows then recognised the Leo. too.I Uploaded Kerry Wong's sketch to the Leo thinking that I would then need to somehow dump the EEPROM , or the Sketch would ask questions like I saw in Andy Hull's sketch . Though I can't program Arduino yet I thought the "write" part of Kerry's sketch was commented out , and the Meter still works , ( not fully reassembled yet) I don't remember the Auto time off icon on all the time ? , and the Backlight now seems to stay on for about 4 minutes ? maybe 4 1/2 minutes..... so something happened.... but maybe it was my V- wire connecting that did it.If the Sketch dumped a .hex somewhere , I am not sure where.....If you know of another write up on this Hack with more in depth instructions that would be great too , thanks.KB

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 15, 2017, 09:55:38 am
content: Well..The unpopulated header (VDD, WP, SCL, SDA, V-) did not work for me - hence the use of an SOIC8 programming clip. You should get one at your local electronics store, or via ebay / amazon.Deducting from your write up, you did not really understand what the Arduino program does.Basically the dump is performed via serial write. That means, the contents of the EEPROM will be sent over the serial port and you need to »catch« it with a serial terminal - which happens to be shipped with the Arduino IDE.Here is my adapted version of the STM32 sketch, but beware: It is messy, because I just changed the parts I needed to make it work on an Arduino Uno without commenting etc.UT139 EEPROM dump and updateCode:// --------------------------------------// Modified i2c_scanner to find, dump and update a DTM0660 based multimeter EEPROM// to hack in missing features.//// See http://www.kerrywong.com/2016/03/19/hacking-dtm0660l-based-multimeters/comment-page-1/#comment-874169// for more about hacking this chipset//// The i2c scanner code came with the following comments.// Version 1// This program (or code that looks like it)// can be found in many places.// For example on the Arduino.cc forum.// The original author is not know.// Version 2, Juni 2012, Using Arduino 1.0.1// Adapted to be as simple as possible by Arduino.cc user Krodal// Version 3, Feb 26 2013// V3 by louarnold// Version 4, March 3, 2013, Using Arduino 1.0.3// by Arduino.cc user Krodal.// Changes by louarnold removed.// Scanning addresses changed from 0...127 to 1...119,// according to the i2c scanner by Nick Gammon// http://www.gammon.com.au/forum/?id=10896// Version 5, March 28, 2013// As version 4, but address scans now to 127.// A sensor seems to use address 120.////// This sketch tests the standard 7-bit addresses// Devices with higher bit address will not be seen properly.//// Additional i2c hints from http://playground.arduino.cc/Code/I2CEEPROM//// This code was written for and tested on and STM32F103C8T6 - the so called BluePill - see http://wiki.stm32duino.com/index.php?title=Blue_Pill// but should work pretty much unmodified on most 'duinos.//// Thanks to the many coding giants, who's shoulders this sketch stands upon.//// The hexdump of the 24c02 will appear on the STM32 USB serial device, or UART1, depending on the settings in the IDE.// See http://stm32duino.com for details of how the serial ports on the STM32F103XX devices are defined.//// For most Multimeters, you should be able to use a SOC8 clamp to connect without the inconvenience of soldering to the board.// Search Ebay for "SOIC8 SOP8 Flash Chip IC Test Clips Socket Adapter BIOS" or similar.#include <Wire.h>// #define BLINK_PIN 13 // Unused.. Can be used to assist with debugging.#define BOARD_POWER 9 // This can theoretically be used to power the multimeter/24c02 since the board draws a few miliamps.// In the end, I just opted to power the board from 3v3 directly, as this makes manually resetting the multimeter only, easier.#define BOARD_WP 8 // Pull down WP pin to allow us to write to the 24c02 - by default this is held high by a pullup resistor on the multimeter.void setup(){// Allow the USB to re-enumerate before we attempt to talk. You can probably shorten this delay considerably.delay(30000);Serial.begin(9600);// Using the BluePill, or other STM32F103XX boards, PB6 is SCL => Pin 6 on the 24C02// PB7 is SDA => Pin 5 on the 24C02// PB8 is GPOI used to pull WP (Write Protect) (Pin7) low on the 24C02 to allow writing to the chip.// There is a pullup on WP on the Victor VC921 and probably most other devices, so we need to pull low to write.// Power up the multimeter if connected to the BOARD_POWERpinMode(BOARD_POWER, OUTPUT);digitalWrite(BOARD_POWER, HIGH);//Enable writing to the eeprompinMode(BOARD_WP, OUTPUT);digitalWrite(BOARD_WP, LOW);Serial.println("\nDTM0660 EEPROM dumper and updater.");Wire.begin();Serial.println("Waiting for DTM0660 POST and i2c Bus to settle.");delay(3000);}void loop(){byte error, address;int nDevices;Serial.println("Scanning...");nDevices = 0;for (address = 1; address < 127; address++ ){// The i2c_scanner uses the return value of// the Write.endTransmisstion to see if// a device did acknowledge to the address.Wire.beginTransmission(address);error = Wire.endTransmission();if (error == 0){Serial.print("\nI2C device found at address 0x");if (address < 16) {Serial.print("0");}Serial.print(address, HEX);Serial.println(" ");// Dump the current rom values, so we have somthing to fall back on if it all goes pear shaped.// NOTE: The 24c02 also contains calibration values, so should be unique to the meter, simply pasting the hexdump from// one meter to another will screw up the calibration.dump24c02(address);// Enable serial.// NOTE: On some meters, this will break the button matrix, or screw up some other features.// You do this entirely at your own risk.. magic smoke and a dead meter may result.// If in doubt, check whether pin 20 on the DTM0660 looks to be connected to some other circuitry before attempting to enable serial output.// It is however safe to do this on the version of Victor VC921 I have as the Tx pin pad is not connected to anything else.//enableRS232();// Set LCD bias to 3.3V//VLCD();//Select one of the following three modes.//enable4000Count();//enable6000Count();//enable8000Count();//extendPowerOn();nDevices++;}else if (error == 4){Serial.print("Unknow error at address 0x");if (address < 16)Serial.print("0");Serial.println(address, HEX);}}if (nDevices == 0)Serial.println("No I2C devices found\n");elseSerial.println("\nDone.\n");// Put any changes to bytes immediately after the dump, since that will ensure they hit the found i2c device.delay(5000); // Wait 5 seconds then re-scan.}void dump24c02(byte i2cAddress){int addrPointer = 0;int romLength = 0xff; // 24c02 - 256x8 bits (256 bytes)byte b = 0;Serial.println("-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F");while (addrPointer <= romLength){if (!(addrPointer % 16)) {Serial.print("\n");if (addrPointer < 16) {Serial.print("0");}Serial.print(addrPointer, HEX);Serial.print(" : ");}b = i2c_eeprom_read_byte(i2cAddress, addrPointer); // Read byteaddrPointer++; // increment address pointerif (b < 0x10) {Serial.print("0");}Serial.print(b, HEX); // Print byteSerial.print(" ");}Serial.println(" ");}byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {Wire.beginTransmission(deviceaddress);Wire.write((int)eeaddress);Wire.endTransmission();Wire.requestFrom(deviceaddress, 1);if (Wire.available()) {return Wire.read();} else {return 0xff;}}void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {digitalWrite(BOARD_WP, LOW);delay(100);int rdata = data;Wire.beginTransmission(deviceaddress);Wire.write((int)(eeaddress)); //Wire.write(rdata);Wire.endTransmission();//digitalWrite(BOARD_WP, HIGH);}void enableRS232() {Serial.println("Enabling RS232");i2c_eeprom_write_byte(0x50, 0xFA, 0xCE);Serial.println("Done");}void extendPowerOn() {Serial.println("Extending Power On time");i2c_eeprom_write_byte(0x50, 0xFB, 0x1e);Serial.println("Done");}void VLCD() {Serial.println("Setting LCD bias to 3.3V");i2c_eeprom_write_byte(0x50, 0xF9, 0xC3);Serial.println("Done");}void enable8000Count() {Serial.println("Enabling 8000 Count Mode");// Enable 8000 Count - Values taken from - this thread. May require a little polishing, but do appear to work.// https://www.eevblog.com/forum/testgear/canadian-tire-mastercraft-dmm-new-and-old-revision-teardown/msg928377/#msg928377i2c_eeprom_write_byte(0x50, 0x10, 0x40); // Full Scale 0x1F40 - 8000i2c_eeprom_write_byte(0x50, 0x11, 0x1F); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x12, 0x41); // Range Up 0x1F41 - 8001i2c_eeprom_write_byte(0x50, 0x13, 0x1F); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x14, 0xEE); // Range down value, changed to 750 (0x02EE).i2c_eeprom_write_byte(0x50, 0x15, 0x02); // Note: Little endian byte swapSerial.println("Done");}void enable6000Count() {Serial.println("Enabling 6000 Count Mode");// Enable 6000 Count - values similar to 8000 count mode, but based on Kerry Wong's ennoLogic eM860T dumpi2c_eeprom_write_byte(0x50, 0x10, 0x70); // Full Scale 0x1710 - 5904i2c_eeprom_write_byte(0x50, 0x11, 0x17); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x12, 0x17); // Range Up 0x1838 - 6200i2c_eeprom_write_byte(0x50, 0x13, 0x71); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x14, 0x44); // Range down value, changed to 580 (0x0244).i2c_eeprom_write_byte(0x50, 0x15, 0x02); // Note: Little endian byte swapSerial.println("Done");}void enable4000Count() {Serial.println("Enabling 4000 Count Mode");// Enable 4000 Count - these values are taken from the Victor VC921 unmodified dump.i2c_eeprom_write_byte(0x50, 0x10, 0xA0); // Full Scale 0x0FA0 - 4000i2c_eeprom_write_byte(0x50, 0x11, 0x0F); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x12, 0x68); // Range Up 0x1068 - 4200i2c_eeprom_write_byte(0x50, 0x13, 0x10); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x14, 0x7C); // Range down value, changed to 380 (0x017C).i2c_eeprom_write_byte(0x50, 0x15, 0x01); // Note: Little endian byte swapSerial.println("Done");}I added the VLCD 'subroutine' which is currently commented out from the main loop.In its current state, you should get the dump via serial terminal without making changes to the EEPROM contents.Please read through the program carefully and make sure you understand what it does and how it correlates with your EEPROM contents before changing values. There are also a lot of calibration values stored in the EEPROM you do not want to touchGood luck,Frederik

author: Kbird
author_rank: Regular Contributor
timestamp: March 16, 2017, 03:54:56 am
content: Thanks Frozen , You are correct I am New to Arduino too , I started a few months back converting some Old TM HOTAS Joysticks etc to USB, via the Leonardo or Pro Micro and MMJoy2 (custom Firmware) which does not require a whole lot of Arduino knowledge in and of itself , so I appreciate the Help and Hints.I could not find a SOIC Clip locally and didn't want to wait 30-60 days ...again... the Pro Micros I ordered 2 months ago , have still not arrived , nor has a small 2 port USB KVM which was ordered 6 weeks ago .Honestly I am not sure if the broken out Pins have worked or not , just not sure why I have a 4 - 4.5 minute Backlight time now, I did not see anything in the Serial Monitor Window though .I was hoping to just make the BACK-UP of the EEPROM , last night and then spend some time understanding and making the changes , since it is years since I fooled with a HEX Editor.I did find that Russian Thread here too :http://kazus.ru/forums/showthread.php?t=112135one of the Guys there made a Dump Editor , though I don't know if it works for the 139C as wellhttp://kazus.ru/forums/showpost.php?p=1024371&postcount=531Thanks again I appreciate it.KB.

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 16, 2017, 06:30:38 am
content: Regarding the SOIC8 clip, you could go DIY with the help of a PCI slot from an old board.See this thread for referenceSearching for "SOIC8 clip DIY" on the web should also get you various options.

author: Kbird
author_rank: Regular Contributor
timestamp: March 16, 2017, 03:38:59 pm
content: Thanks for that link interesting, I might have to give it a try , as I am not having much luck ordering stuff off AliExpress and other such Sites.

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 16, 2017, 03:57:43 pm
content: Yes, AliExpress is mostly cheap crap not worth paying a parcel service to ship stuff from China/Asia.You might get lucky, but actually you will need to do a whole lot of research

author: Kbird
author_rank: Regular Contributor
timestamp: March 17, 2017, 06:18:04 am
content: Hi FF , actually the 5 socket Female Pin Header I Soldered in to the Breakout Area is working and thanks to your Sketch File I can "see" the EEPROM Dump in Serial Monitor or CoolTerm , it takes a while to start ...maybe 30 secs as per the sketch , then it Reads the eeprom in a loop but seems to crash after about 8-12 "Prints" to the Terminal Window. I am using a Leonardo , I see you are Using an Uno , is the lockup something that could be caused by that difference do you think?Still reading up on Serial Terminal , so as yet I have not been able to save the eeprom but this is what is seen in CoolTerm with a Capture to Text File. From the Dump I can now see my Backlight is indeed 255 secs (FF), or 4 1/4 minutes.Scanning...I2C device found at address 0x50-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00 : FF FF FF FF FF FF FF FF FF 52 00 F0 00 DC B9 0310 : 10 27 38 18 4E 02 65 4B 3D 3D FF 3B 0A FF 40 FF20 : 51 98 3D 81 FA 00 32 00 00 80 00 80 4B 7D AE B130 : 4E 02 09 8D 02 09 CE FF 0A 3C 14 0A CE 02 0A 0040 : 00 01 00 01 00 07 98 00 64 00 64 00 64 00 00 0050 : 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 8060 : 9D 7F 04 80 01 00 A5 2A 00 00 00 00 00 00 00 0070 : 6B 7F 00 80 98 80 E0 7C F3 2A 00 00 00 00 00 0080 : 00 00 00 0E 00 10 1E 18 00 00 0C 12 13 07 03 0190 : 00 00 00 0F 00 11 00 19 00 00 0D 00 15 09 04 02A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00C0 : 0D 00 02 20 0D 00 03 20 20 00 03 20 20 00 03 10D0 : 41 00 03 08 41 00 03 05 41 00 03 05 0D 00 02 20E0 : E2 F1 0B 80 00 80 00 80 00 80 00 80 00 80 00 80F0 : 00 80 00 80 00 80 00 80 5A C7 FF 0F FF 80 00 00Done.Scanning...I2C device found at address 0x50-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00 : FF FF FF FF FF FF FF FF FF 52 00 F0 00 DC B9 0310 : 10 27 38 18 4E 02 65 4B 3D 3D FF 3B 0A FF 40 FF20 : 51 98 3D 81 FA 00 32 00 00 80 00 80 4B 7D AE B130 : 4E 02 09 8D 02 09 CE FF 0A 3C 14 0A CE 02 0A 0040 : 00 01 00 01 00 07 98 00 64 00 64 00 64 00 00 0050 : 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 8060 : 9D 7F 04 80 01 00 A5 2A 00 00 00 00 00 00 00 0070 : 6B 7F 00 80 98 80 E0 7C F3 2A 00 00 00 00 00 0080 : 00 00 00 0E 00 10 1E 18 00 00 0C 12 13 07 03 0190 : 00 00 00 0F 00 11 00 19 00 00 0D 00 15 09 04 02A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00C0 : 0D 00 02 20 0D 00 03 20 20 00 03 20 20 00 03 10D0 : 41 00 03 08 41 00 03 05 41 00 03 05 0D 00 02 20E0 : E2 F1 0B 80 00 80 00 80 00 80 00 80 00 80 00 80F0 : 00 80 00 80 FFthis is what is seen ^^^^^ when it locks up (not always same spot) , resetting the Leonardo usually gets it going again.but I just had a thought that perhaps I had both Serial Terminals Open by accident and they were both trying to access/connect at the same time...I have actually asked for my money back after 2 months of waiting for the AliExpress Shipment but the Seller extended the period by another Month and has not returned the Money...

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 17, 2017, 07:49:59 am
content: Why it locks up, I don't know. But regarding a file of the dump: Just copy and paste the table in a .txt file to save the initial valuesThat is all there is to it.I would not care to much about the locking up issue, there is no need to cycle through multiple times anyway.If you are going to write some new values (i.e. C3 instead of C7 for a higher LCD bias), you could also do the writing in the setup loop of the arduino code, so that it is only executed once. There are some other options, for example insert a checking routine and just write to the EEPROM in case the value differs from what it should be, but that is not jet implemented. Maybe I will incorporate something like that in a nicer versionEdit: I need to recheck the headers on my device. Somehow I could not find the EEPROM on the I2C, but I have been experimenting with different programs before. Because I wanted to rule out as many problems as possible, I went the SOIC8 clip way, but most likely access to the EEPROM will also work on my board and I just had something wrong in my first attempts.

author: Kbird
author_rank: Regular Contributor
timestamp: March 17, 2017, 03:29:03 pm
content: Ok great , you saved me from a weekend of trying to figure how people were capturing the EEPROM in BINARY/HEXRealTerm has an Option for that by the looks but I couldn't get it to work last night , from my reading so far on this Hack,no one had mentioned you just need to Copy and paste to Notepad from Serial Monitor to save the EEPROM and I wouldnot have guessed it was that easy , but I guess I should ask how to write it back to the EEPROM if needed? Just send the text file?It also appears RealTerm allows the Writing of Single Bytes to specific User assigned I2C addresses , though I have not tried itI got the File from SourceForge but this page has way more info I just found...https://realterm.sourceforge.io/My plan was to set 8000 count , and a backlight of 30 secs and now your LCD voltage Mod too , and not play around with it, (if it ain't broke...) so this has been a learning experience for sure. I am just hoping that Connecting V- to GND on my 1st hookup attempt has not damaged the EEPROM Calibration somehow as previously I had the standard 15 sec backlight time out (which is now 255sec).I added the lines below to the script but have not uncommented (//) it or the other options yet to "write them" as I thought I'd let you look and see if I was on the right track ? Or maybe I'll wait for your "Nicer Version" of the scriptsince I am not sure why the need for looping is needed either but I suspect something else on my Leonardo (USB?) is interrupting the Serial Port and causing the lock up.//extendBacklightOn(); // just copied and renamed extendPowerOn();andvoid extendBacklightOn() {Serial.println("Extending Power On time");i2c_eeprom_write_byte(0x50, 0xFC, 0x1e); // Copied and change Byte From extendPowerOnSerial.println("Done");}Thanks for the Help...KB

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 17, 2017, 03:39:23 pm
content: Regarding a memory dump that you could just write back to the EEPROM, you would need to do some re-formatting and also write a suitable routine to read from the file and write to each byte.However, as you should not touch most memory addresses in the EEPROM anyway, you need the original contents as a reference in case you screwed up.For this use-case the plain text / table is very convenient. You have all the initial values at hand if you want to roll back changes later.

author: Kbird
author_rank: Regular Contributor
timestamp: March 20, 2017, 12:58:42 am
content: Thought I would report back and Thank you again , the Mod is now complete but not without some misadventuresSince I had the backup i decided to Run your Sketch with my Leonardo so I un-commented the Enable lines in the Sketch and uploaded it but things didn't go well, I thought I had killed it , every byte that was programmed to be changed in the sketch was changed to FF , so I thought I was totally screwed ,especially when I reassembled the Meter and the display was so low Contrast it could not be seen looking straight on at it, even with the Backlight on. So after playing around with it and not getting anything to change I went looking for a SOIC8 Clip locally again but had no luck, but while I was out I had a thought that perhaps it was because you used an Uno and I was using a Leonardo , so I purchased a Uno instead to play with ...initially it did not help though.....The Uno not working either (still FF every time the Sketch ran) made me realise something else was up , and I realised that something was screwing up the Write but not the Read function of the Sketch , which meant probably the WP (Write Protect) Pin was no being pulled low enough. I had it connected to GND for that purpose but then realised the Sketch was defining a Pin for that ie :Pin 8. Changing that did not help actually, so my next thought was that something was up with the SDA and SCL Pins and on looking really close at your Pics I could see you were using the Uno's A4 and A5, not the Broken out SDA and SCL Pins next to AREF so I switched the wires to them , and the Meter PCB Chirped like it usually does, as I forgot to disconnect the Uno before switching the SDA and SCL wires and since the Sketch was still looping, it wrote the Correct Values almost straight away to my great relief, when wired Correctly the Meter PCB Chirps like it usually does , when SDA and SCL are incorrectly wired (along with WP?) the Buzzer "ticks" or chirps repeatedly fast not normally, this freaked me out initially on my 1st hookup but i didn't know what it was then. The PCB Chirps normally when you access the Serial Port with Serial Monitor or a Serial Terminal such as CoolTerm as well.When wired Correctly with WP to Pin8 and the Reference SDA and SCL Pins used not the Broke out pins next to AREF the Leonardo also worksso no need for a UNO after All.So I now have a nicely Contrasted LCDand a few other adjustments finally.... and a spare UnoWith the corrected Wiring I no longer seem to get the lock up in the Serial Terminal/Monitor either.so here is some Info for Others who find this thread in the future..... (this and more also included in the Modified Sketch below)BTW I Soldered a 5pin Female Header in which can be left in place if you didn't read the whole thread....*** the 2nd pic does not show the needed wire in the V- pin header going to ground139C Pin UNO Pin LEO PinVDD 3.3v 3.3vWP 8 8SLC A5 3SDA A4 2V- GND GNDand myAdapted Sketch with CommentingCode:// --------------------------------------// Modified i2c_scanner to find, dump and update a DTM0660 based multimeter EEPROM// to hack in missing features.//// See http://www.kerrywong.com/2016/03/19/hacking-dtm0660l-based-multimeters/comment-page-1/#comment-874169// for more about hacking this chipset// Modified slighty by Kbird March 2017 for Use with OSEPP Uno R4 and to clarify some things for Noobs like myself....// This Code is not mine, I do not Code, I have simply clarified things for myself and people new to this kind of thing.// I soldered a 5 pin female Header to the UT139c PCB on the RH side where I beleive Uni-T uses a Pogo Pin Adaptor + Programmer,// in the 5 Holes ,ie VDD_WP_SLC_SDA_WP_V- above the two holes labelled CAL (leave these empty), No need to remove the LCD at all.// When attaching the Uno or connecting to the Serial Port, the Buzzer on the PCB will "Chirp" as normal , as you must have the Meter ON// to Programme it , it can be in ANY MODE except OFF, so after pulling the Meter's batteries Turn the Dial to V before further disassembly.// If you hear the Buzzer "Ticking" or chirping Constantly remove the 3.3v pwr wire and Check your wiring or try the ALT SDA and SCL positions// IF you Find the EEPROM is programmed with FF in the positions you tried to change instead of what was intended Don't panic !// Check your Wiring especially that WP is to Pin 8 and that V- is to Ground (GND) to allow the Write process....// And then just let it run again after reconnecting the Uno. ( the Sketch should still be looping , open Serial Monitor to watch progress)// *** NOTE ALL OPTIONS ARE DISABLED BELOW CURRENTLY ..the sketch will just scan the I2C Bus and print the EEPROM to the Serial Monitor Window// *** THIS IS YOUR DEFUALT EEPROM ...COPY AND PASTE IT TO NOTEPAD and save it somewhere safe so you have a Copy in case your efforts go sideways// Using the Uno (or Leonardo) connect the UT139C Pins thus....// VDD Pin to 3.3v Power pin// SDA to A4 pin ( or Pin2 on Leonardo) *Can also use SDA PIN too if Working -- not working on some Clones// SLC to A5 pin ( or Pin3 on Leonardo) *Can also use SLC PIN too if Working -- not working on some Clones// GND to GND pin// WP to no#8 Pin (as defined above by ..... #define BOARD_WP 8)#include <Wire.h>// #define BLINK_PIN 13 // Unused.. Can be used to assist with debugging.#define BOARD_POWER 9 // This can theoretically be used to power the multimeter/24c02 since the board draws a few miliamps.// In the end, I just opted to power the board from 3v3 directly, as this makes manually resetting the multimeter only, easier.#define BOARD_WP 8 // Pull down WP pin to allow us to write to the 24c02 - by default this is held high by a pullup resistor on the multimeter.// ***Attach Meter WP (write protect) Wire to Pin 8 on Unovoid setup(){// Allow the USB to re-enumerate before we attempt to talk. You can probably shorten this delay considerably. Default 30000 (30 Secs)delay(10000);Serial.begin(9600);// Power up the multimeter if connected to the BOARD_POWERpinMode(BOARD_POWER, OUTPUT);digitalWrite(BOARD_POWER, HIGH);//Enable writing to the eeprompinMode(BOARD_WP, OUTPUT);digitalWrite(BOARD_WP, LOW);Serial.println("\nDTM0660 EEPROM dumper and updater.");Wire.begin();Serial.println("Waiting for DTM0660 POST and i2c Bus to settle.");delay(3000);}void loop(){byte error, address;int nDevices;Serial.println("Scanning...");nDevices = 0;for (address = 1; address < 127; address++ ){// The i2c_scanner uses the return value of// the Write.endTransmisstion to see if// a device did acknowledge to the address.Wire.beginTransmission(address);error = Wire.endTransmission();if (error == 0){Serial.print("\nI2C device found at address 0x");if (address < 16) {Serial.print("0");}Serial.print(address, HEX);Serial.println(" ");// Dump the current rom values, so we have somthing to fall back on if it all goes pear shaped.// NOTE: The 24c02 also contains calibration values, so should be unique to the meter, simply pasting the hexdump from// one meter to another will screw up the calibration.dump24c02(address);// Enable serial.// NOTE: On some meters, this will break the button matrix, or screw up some other features.// You do this entirely at your own risk.. magic smoke and a dead meter may result.// If in doubt, check whether pin 20 on the DTM0660 looks to be connected to some other circuitry before attempting to enable serial output.// It is however safe to do this on the version of Victor VC921 I have as the Tx pin pad is not connected to anything else.// *** Remove the Comment Marks (//) to enable the the following Options ***//enableRS232();// Set LCD bias to 3.3V by Removing the // below... Coutesy of FrozenFrog on EEVBlog//VLCD();//Select one of the following three modes by Removing the // in front of your choice//enable4000Count();//enable6000Count();//enable8000Count();//extendPowerOn();//extendBacklightOn(); // I just copied and renamed extendPowerOn();// ADD EXTRA CHANGES HERE AND DEFINE THEM BELOWnDevices++;}else if (error == 4){Serial.print("Unknow error at address 0x");if (address < 16)Serial.print("0");Serial.println(address, HEX);}}if (nDevices == 0)Serial.println("No I2C devices found\n");elseSerial.println("\nDone.\n");// Put any changes to bytes immediately after the dump, since that will ensure they hit the found i2c device.delay(5000); // Wait 5 seconds then re-scan.}void dump24c02(byte i2cAddress){int addrPointer = 0;int romLength = 0xff; // 24c02 - 256x8 bits (256 bytes)byte b = 0;Serial.println("-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F");while (addrPointer <= romLength){if (!(addrPointer % 16)) {Serial.print("\n");if (addrPointer < 16) {Serial.print("0");}Serial.print(addrPointer, HEX);Serial.print(" : ");}b = i2c_eeprom_read_byte(i2cAddress, addrPointer); // Read byteaddrPointer++; // increment address pointerif (b < 0x10) {Serial.print("0");}Serial.print(b, HEX); // Print byteSerial.print(" ");}Serial.println(" ");}byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {Wire.beginTransmission(deviceaddress);Wire.write((int)eeaddress);Wire.endTransmission();Wire.requestFrom(deviceaddress, 1);if (Wire.available()) {return Wire.read();} else {return 0xff;}}void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {digitalWrite(BOARD_WP, LOW);delay(100);int rdata = data;Wire.beginTransmission(deviceaddress);Wire.write((int)(eeaddress)); //Wire.write(rdata);Wire.endTransmission();//digitalWrite(BOARD_WP, HIGH);}void enableRS232() {Serial.println("Enabling RS232");i2c_eeprom_write_byte(0x50, 0xFA, 0xCE);Serial.println("Done");}void extendPowerOn() {Serial.println("Extending Power On time");i2c_eeprom_write_byte(0x50, 0xFB, 0x1e);Serial.println("Done");}void extendBacklightOn() {Serial.println("Extending Backight On time");i2c_eeprom_write_byte(0x50, 0xFC, 0x1e); // Copied and change Byte From extendPowerOnSerial.println("Done");}// COPY AND PASTE void settings here for your Other Byte Changes enabled abovevoid VLCD() {Serial.println("Setting LCD bias to 3.3V");i2c_eeprom_write_byte(0x50, 0xF9, 0xC3);Serial.println("Done");}void enable8000Count() {Serial.println("Enabling 8000 Count Mode");// Enable 8000 Count - Values taken from - this thread. May require a little polishing, but do appear to work.// https://www.eevblog.com/forum/testgear/canadian-tire-mastercraft-dmm-new-and-old-revision-teardown/msg928377/#msg928377i2c_eeprom_write_byte(0x50, 0x10, 0x40); // Full Scale 0x1F40 - 8000i2c_eeprom_write_byte(0x50, 0x11, 0x1F); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x12, 0x41); // Range Up 0x1F41 - 8001i2c_eeprom_write_byte(0x50, 0x13, 0x1F); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x14, 0xEE); // Range down value, changed to 750 (0x02EE).i2c_eeprom_write_byte(0x50, 0x15, 0x02); // Note: Little endian byte swapSerial.println("Done");}void enable6000Count() {Serial.println("Enabling 6000 Count Mode");// Enable 6000 Count - values similar to 8000 count mode, but based on Kerry Wong's ennoLogic eM860T dumpi2c_eeprom_write_byte(0x50, 0x10, 0x70); // Full Scale 0x1710 - 5904i2c_eeprom_write_byte(0x50, 0x11, 0x17); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x12, 0x17); // Range Up 0x1838 - 6200i2c_eeprom_write_byte(0x50, 0x13, 0x71); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x14, 0x44); // Range down value, changed to 580 (0x0244).i2c_eeprom_write_byte(0x50, 0x15, 0x02); // Note: Little endian byte swapSerial.println("Done");}void enable4000Count() {Serial.println("Enabling 4000 Count Mode");// Enable 4000 Count - these values are taken from the Victor VC921 unmodified dump.i2c_eeprom_write_byte(0x50, 0x10, 0xA0); // Full Scale 0x0FA0 - 4000i2c_eeprom_write_byte(0x50, 0x11, 0x0F); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x12, 0x68); // Range Up 0x1068 - 4200i2c_eeprom_write_byte(0x50, 0x13, 0x10); // Note: Little endian byte swap//i2c_eeprom_write_byte(0x50, 0x14, 0x7C); // Range down value, changed to 380 (0x017C).i2c_eeprom_write_byte(0x50, 0x15, 0x01); // Note: Little endian byte swapSerial.println("Done");}

author: Fohdeesha
author_rank: Regular Contributor
timestamp: April 12, 2017, 06:09:19 am
content: I'd like to add a data point - just got done doing this myself using the example sketches above. I changed the LCD bias, and also changed the lcd timeout and power timeout to 0 (so neither ever turns off).did so just by changing them to:Code:void extendBacklightOn() {Serial.println("Extending Backight On time");i2c_eeprom_write_byte(0x50, 0xFC, 0x0); // Copied and change Byte From extendPowerOnSerial.println("Done");}(just changed the last byte to 0x0)Using an arduino Uno R3 with the connections mentioned above (I wasn't having any trouble with the scl and sda pins however, they *should* be directly bonded to analog pins 4 and 5 so if they didn't work it could be a bad header). I was hoping I could get away with just holding a header up against the test pad, and that was seemingly working as the script never said "no devices found", however it acted strangely and just scanned forever with no dump output. So I reluctantly opened it up and soldered a header onto the test pad (was able to do it without lifting the lcd up, there's just enough room under there to get a solder tip in).After doing that of course it worked first try, instantly dumped the eeprom contents. Saved that and then enabled the write subroutines, and they wrote no problem. Now my backlight stays on forever and my LCD is a little more readable. Thanks to all in this thread!

author: dimkasta
author_rank: Regular Contributor
timestamp: April 12, 2017, 08:15:57 pm
content: I just did this to my two UTs using an old Arduino pro I had around (duemilanove generation). The pinout is the same as in the Uno (same chip)I confirm that the boards need good voltage and good connections for the communication to work properly.I thought I could do this using just a header stuck in the holes, but it would just not work.It finally worked when I pushed the header sideways, forcing it to have a better connection with the programming holes.I also noticed that it was easier to get a reading when the PW, GND and VCC where close together. Probably because there was less voltage loss in comparison to using the long ground traces on the other side of the board.Finally, on my second DMM, I could not get a non-ticking connection. I kept moving things around, but no solid connection. But then the sketch started reporting the memory dump and programmed the changes while the main chip was ticking.I guess we only need a solid connection with the eeprom. The functionality of the main chip is irrelevant, and if I had to guess, it is probably because of low voltage reaching it through the thin wires/traces.By the way, the lcd mod was virtually worthless. The main problem is the useful viewing angle of the lcd. Even at 3.3V it looks pretty crappy looking it up front.It would be cool if we could find a replacementHere's a photo of my wiring

author: Kbird
author_rank: Regular Contributor
timestamp: April 14, 2017, 06:09:19 pm
content: Mine only "ticked" or chirped constantly when it was wired incorrectly I found but I'm not sure which wire it was now... V- to ground perhaps?SCL and SDA should be the same pinout physically as you say , and I can even with my DMM test they are connected , so I am unsurewhy the broken out pins didn't work , unless it is something to do with the sketch programming or that I'm using a Clone not an Official Leo / Uno.KB.

author: Nitec0re
author_rank: Newbie
timestamp: September 16, 2017, 09:37:07 am
content: HelloMy 139C does come next week and I would like to flash the DDM. But I have no skills with the Arduino Board and I dont understand the Code.Is there someone who can edit the code from #18 for copy/paste for me (bought a original Arduino Uno only for this)? I need two Versions of the Code.First: ONLY eeprom dump for saving and BackupSecond: A Code for reflash the DMM with 3.3V for the Display, 15min Auto-Off and NO auto-off for the BacklightWhy two separate Codes? Because its much easier for me to handle

author: Kbird
author_rank: Regular Contributor
timestamp: September 16, 2017, 05:14:51 pm
content: My modified Sketch in No#18 only reads the Eeprom and Dumps the eeprom to the Serial Monitor window on the 1st run, which you then copy and paste to Notepad, and save as your default Eeprom as a Backup. You then need to modify the sketch and uncomment ( // ...delete this) from the 2nd section,reupload the sketch and it will program the eeprom All the instructions are actually in the Sketch if you read through it....I am no expert , so I tried to make it understandable for Newbies like me and you.you could simply make two copies of the Sketch , one commented ( no edits) and the other altered and uncommented as needed.you do need a SOIC Clip or be able to add pins to the PCB to do this as I did.....I soldered mine in and left them for further use.

author: Nitec0re
author_rank: Newbie
timestamp: September 17, 2017, 11:16:14 am
content: Thank you for the reply.For the first run I leave the code as it is. And for the second run I have to remove the // in line:105 for the 3.3V113 for the extendPowerOn115 for the Backlightand I have to change the hex value in line 199 and 205 from 0x1e to 0x0 for manual controlled Backlight and no auto power off - right?

author: Kbird
author_rank: Regular Contributor
timestamp: September 17, 2017, 07:41:52 pm
content: Been a while since I did the mod but I believe you are correct on all counts NiteC0re ,setting the value to 0 (00) should mean there is no time out , so both would become Manual.There are other hacks you can do too , look for posts on DMM 660L Chipset DMM Hacking eg the Uni-t 210E has the same Chip and is also hackable..https://www.eevblog.com/forum/testgear/a-look-at-the-uni-t-ut210e/msg1034969/#msg1034969If you plan to use it for mains voltage testing it is recommended not to set it up any higher than a 8000 count meter though as it may read incorrectly especially at or above I think it is 200volts eg 220v or 240v.... there is more info in a post here about a Canadian Tire DMM with the same chip , commenting on this issue.https://www.eevblog.com/forum/testgear/canadian-tire-mastercraft-dmm-new-and-old-revision-teardown/msg927276/#msg927276KB

author: Nitec0re
author_rank: Newbie
timestamp: September 19, 2017, 10:06:19 am
content: Thank you for ur helpIt workedCode:DTM0660 EEPROM dumper and updater.Waiting for DTM0660 POST and i2c Bus to settle.Scanning...I2C device found at address 0x50-- : 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F00 : FF FF FF FF FF FF FF FF FF 52 00 2C 01 08 C8 0310 : 10 27 38 18 4E 02 65 4B 3D 3D FF 3B 0A FF 40 FF20 : 77 98 AF 81 FA 00 32 00 00 80 00 80 4B 7D DE BD30 : 4E 02 09 25 03 09 62 FF 0A D7 13 0A AE 03 0A 0040 : 00 01 00 01 00 07 98 00 64 00 64 00 64 00 00 0050 : 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 8060 : 97 7F 89 80 01 00 84 2A 00 00 00 00 00 00 00 0070 : 61 7F 00 80 61 7E E0 7C 57 2B 00 00 00 00 00 0080 : 00 00 00 0E 00 10 1E 18 00 00 0C 12 13 07 03 0190 : 00 00 00 0F 00 11 00 19 00 00 0D 00 15 09 04 02A0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0A 00 00B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 00 00C0 : 0D 00 02 20 0D 00 03 20 20 00 03 20 20 00 03 10D0 : 41 00 03 08 41 00 03 05 41 00 03 05 0D 00 02 20E0 : E2 F1 0B 80 00 80 00 80 00 80 00 80 00 80 00 80F0 : 00 80 00 80 00 80 00 80 5A C7 EC 0F 0F 80 00 00Setting LCD bias to 3.3VDoneExtending Power On timeDoneExtending Backight On timeDoneDone.

author: Kbird
author_rank: Regular Contributor
timestamp: September 19, 2017, 02:04:19 pm
content: good news.......now you'll want a 210E to play with too

author: Folxs
author_rank: Contributor
timestamp: November 21, 2019, 02:41:36 am
content: Quote from: frozenfrogz on February 18, 2017, 06:50:15 pmI assume that VLCD is contrast, but what does VDD does? Changes supplyment od all ICs?Maybe it is possible to take VDD (3.6V) and short it to VLCD to gain better contrast? (just wondering if antyhin won't burn on PCB)

author: UK
author_rank: Regular Contributor
timestamp: December 19, 2019, 07:05:19 pm
content: Sorry for the upping such an old thread. But I have a newbie question, how do you guys think will these hacks work for a newer UT139E model?

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: December 19, 2019, 07:13:02 pm
content: Since I do not have one of those, I can not give a definite answer. However, my guess would be, that Uni-T did not opt for a different measuring IC on the updated version. There were no problems with the older models (that I know of) and completely reworking that series is not a thing that is easily done or financially justifiable. Hence, all the EEPROM modifications should work.Someone having the E or S model would have to confirm though.

author: UK
author_rank: Regular Contributor
timestamp: December 19, 2019, 07:42:00 pm
content: Quote from: frozenfrogz on December 19, 2019, 07:13:02 pmThanks for your fast response! I will definitely try to apply these hacks my new UT139E.Hope I will not brick it

author: Folxs
author_rank: Contributor
timestamp: December 20, 2019, 12:13:50 pm
content: I have question - is it possible to activate RS232 on 139C? Datasheet says it is - but which pin is going to be responsible for communication? I wanted to add IR diode like in this video:https://youtu.be/8VPsWI963p8?t=7m21sCan anyone help?

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: December 20, 2019, 03:11:37 pm
content: UART is on pins 20 / 21 of the DTM0660L as taken from:http://www.kerrywong.com/blog/wp-content/uploads/2016/04/DTM0660DataSheet.pdf

author: Folxs
author_rank: Contributor
timestamp: December 20, 2019, 04:14:05 pm
content: Quote from: frozenfrogz on December 20, 2019, 03:11:37 pmAre You sure 100% about that?I have seen that, but this is two way UART - so I thought this is UART between EEPROM and DTM0660.Does that IR RS232 is two way communication somehow? It shouldn't be only one way?Best way to find out is to check in other multimeter based on DTM0660 and see where that IR diode resistor is connected and how.

author: nicstoun
author_rank: Newbie
timestamp: March 22, 2020, 05:45:45 pm
content: Hi, i buy139Ebut with these hack on FC address to 00 or 1E blacklight time cant changei try everything. Backup eeprom,erase upload with changes. Not way only 15sec.Any idea why multimer not read changes ?

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 22, 2020, 06:30:53 pm
content: Please re-check what you are doing. If I remenber correctly, byte 0xFB is where to change the power off time.

author: nicstoun
author_rank: Newbie
timestamp: March 22, 2020, 07:24:12 pm
content: No, i talk for blacklight time..

author: frozenfrogz
author_rank: Frequent Contributor
timestamp: March 22, 2020, 07:26:54 pm
content: Sorry, misread that on mobile.Did you read back the value from the EEPROM after programming to check it has been written correctly?

author: nicstoun
author_rank: Newbie
timestamp: March 22, 2020, 07:30:05 pm
content: Yes, all is correct but there on 139E include another chip not only dmt006.. Not sure if keep some data from eeprom

author: xeezawaki
author_rank: Newbie
timestamp: May 14, 2020, 07:20:39 pm
content: I tried to do this mod with a UT139C and it worked with almost no setupI adjusted the LCD biasing and prevent the backlight to auto turn-off.I soldered header pins on the board, connected pins to Arduino as shown by @KBird, read the sketch of @frozenfrogz , try to understand what was doing and what was going to happen, uploaded et voilà. Done.I have a question as I'm quite new on this: the methods that do the bit write are into the loop(). I'm not sure if I did the correct thing, but I waited for two loops (one to see the dump before, and the next to see the dump after and check if bytes were written), and after all bitwrite functions executed i pulled out the 3v3. Did I act correctly or are there less agressive ways to break or stop the loop once everything is done?Thanks to all people that investigated and made this possible, btw.

author: rogbese
author_rank: Newbie
timestamp: November 17, 2020, 07:08:24 pm
content: Hello!I have the ut139c and I love it. I do electronics and basic electricals. I ordered the ch341a mini programmer and soic8 clip. I will be using the accompanying app. I have ZERO knowledge of hex bit I want to extend the power off time and set the backlight to manual.I would really appreciate it if someone here could please tell me what addresses to look for and values to change to, to achieve this.Thanks in advance all... 🙋🏾‍♂️

author: Kbird
author_rank: Regular Contributor
timestamp: November 17, 2020, 11:12:47 pm
content: See Reply No#25 , there are links to more info I used there ie to FlyWheelz Post.WARNING :MAKE VERY SURE to save the Existing Hex dump in case you need to recalibrate the Meter in the future...this info is UNIQUE to YOUR METER....

author: rogbese
author_rank: Newbie
timestamp: December 19, 2020, 11:16:04 pm
content: Hello again.My test clip just arrived and the attached is what i got from the meter.I just need manual backlight control.Any help would be greatly appreciated.And yes, I made a backup already!Thanks in advance

author: rauldm
author_rank: Regular Contributor
timestamp: February 02, 2022, 05:27:16 pm
content: Hi have a new revision of board for this meter, I like it, now multimeter chip and eeprom are located in rear circuit board, only removed rear cap for access.

author: kkontak
author_rank: Contributor
timestamp: November 09, 2023, 11:52:23 pm
content: My UT139C meter from work (bought in 2019) is also the new board revision with the eeprom at the back of the PCB, along with the main IC (wafer under blob).I was able to read the 24C02 eeprom with my miniPRO, but it would not write.The pins were:8 V+7 WP6 SCL5 SDA4 VSS(gnd)I resorted to desolder the eeprom and program the new BIN file directly with a SOIC8 adapter.The changes I made were:ADDRESS OLD -> NEW8D 07 -> 09 (Mode1 Resistance -> Continuity)9D 09 -> 0D (Mode2 Continuity -> Resistance)FC 0F -> B4 (backlight 15s -> 180s)FB 0F -> 1E (Auto Power OFF 15m -> 30m)By default, the UT139C starts with DC on V/A modes, so I didn't need to change that, as opposed to the UT210E.For some reason, the first 9 bytes were all FF, as per DTM0660 DataSheet. I haven't seen that at other's BINs. Even my UT210E had the first 5 bytes all FF.