# Would like to upgrade old firmware on my emonTx V3 device

**URL:** <https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268>\
**Category:** emonTx\
**Created:** [19 October 2025 09:00 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268 "2025-10-19T09:00:14Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [19 October 2025 09:00 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/1 "2025-10-19T09:00:15Z")

</div>

Many years ago I have bought an emonTX V3 device that has worked fine all the time.  
Now I want to update the firmware to:

\* [emontx3/firmware/emonTx34/emonTx\_3Phase\_PLL at master · openenergymonitor/emontx3 · GitHub](https://github.com/openenergymonitor/emontx3/tree/master/firmware/emonTx34/emonTx_3Phase_PLL)

As my emontTx device is sending data to my raspberrry pi with the [RFM69Pi v3](https://docs.openenergymonitor.org/emonbase/rfm69-pi.html) expansion board, I would like to use the jeelib classic/native protocol as that is currently the protocol that my RFM69Pi expansion board understands.

So when compiling the firmware I have set:

`#define RadioFormat RFM69_JEELIB_CLASSIC`

or set

`#define RadioFormat RFM69_JEELIB_NATIVE`

The problem is that in both cases it doesn’t compile as it can’t include:

- `rfmTxLib.h` (in case of `RFM69_JEELIB_CLASSIC`)
- `rfm69nTxLib.h` (in case of `RFM69_JEELIB_NATIVE`)

I looked everywhere but I can’t find those include files.

---

<div class="post-metadata">

**Author:** ![Robert.Wall](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/robert.wall/32/38246_2.png) [@Robert.Wall](https://community.openenergymonitor.org/u/Robert.Wall)\
**Post date:** [19 October 2025 11:07 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/2 "2025-10-19T11:07:46Z")

</div>

Straight from the horse’s mouth:

[rfmTxLib.zip](https://community.openenergymonitor.org/uploads/short-url/2itZ1bA7J0D1bfJO2byhattak9U.zip) (61.3 KB)

[rfm69nTxLib.zip](https://community.openenergymonitor.org/uploads/short-url/pv8ewlR5XzEfB8M4Qge6ekUIlOR.zip) (62.2 KB)

(They must be on Github somewhere, but I can never find my way around that.)

Installation instructions if you need them [Using the Arduino IDE — OpenEnergyMonitor 0.0.1 documentation](https://docs.openenergymonitor.org/electricity-monitoring/arduino-ide/index.html#using-the-arduino-ide)

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 08:25 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/3 "2025-10-25T08:25:36Z")

</div>

It took me some time to reinstall the drivers on my macbook.

I am using `_OpenEnergyMonitor USB to serial UART Programmer sold before January, 2021_`  
so I followed the instructions at :

- [Wicked Device / OpenEnergyMonitor Programmer — OpenEnergyMonitor 0.0.1 documentation](https://learn.openenergymonitor.org/electricity-monitoring/programmers/wicked-device)

When trying to install the driver (`SiLabsUSBDriverDisk.dmg`) I was facing the problem:

- [Silicon Labs Community](https://community.silabs.com/s/question/0D5Vm00000VbqHJKAZ/cp210x-vcp-driver-installer-hangs-on-mac?language=en_US)

The issue and solution are:

> One appears to be asking for permissions, but pressing OK causes it to hang. On closer inspection, you have to click the other button and accept the permissions directly within setting. Then the installation will finish successfully

So now I can continue with upgrading the firmware.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 09:48 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/4 "2025-10-25T09:48:54Z")

</div>

As a first test I would like to get the following repository working:

- [emontx3/firmware/emonTx34/emonTx34\_DS\_jeelib\_classic at master · openenergymonitor/emontx3 · GitHub](https://github.com/openenergymonitor/emontx3/tree/master/firmware/emonTx34/emonTx34_DS_jeelib_classic)

I managed to compile and download it to my emon tx device

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/f/5/f507e92c6540a24ff19c96cc8dfee6c79b02445c.png)

The problem is that it doesn’t seem to be working properly.  
It is every x seconds outputting the following message in the serial monitor:

```auto
emonTx V3.4 Discrete Sampling V3.40
OpenEnergyMonitor.org

No EEPROM config
RFM69CW Node: 10 Freq: 433Mhz Group: 210

```

I also tried to send commands (e.g. `h` for help) to the serial monitor but that is also not working.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 10:05 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/5 "2025-10-25T10:05:53Z")

</div>

Fixed above issue.  
I had to change:

```auto
#define RF69_COMPAT 1   

```

into

```auto
#define RF69_COMPAT 0   

```

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/b/c/bcf86e939dae7a0d80cbcb6820dd524e5d4dfed1.png)

serial commands is also working.  
Note that there is only a short window you can window enter serial command and first you have to enter `+++`.

---

<div class="post-metadata">

**Author:** ![Robert.Wall](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/robert.wall/32/38246_2.png) [@Robert.Wall](https://community.openenergymonitor.org/u/Robert.Wall)\
**Post date:** [25 October 2025 11:24 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/6 "2025-10-25T11:24:35Z")

</div>

If your radio is a RFM12B ( for pictures, see Docs → Electricity Monitoring → Networking → RFM12B & RFM69CW Wireless Transceiver Modules), then you must have

```auto
#define RF69_COMPAT 0

```

or remove (comment out) the line, but if it is the later RFM69CW, then

```auto
#define RF69_COMPAT 1

```

is correct.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 13:12 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/7 "2025-10-25T13:12:51Z")

</div>

When compiling:

- [emontx3/firmware/emonTx34/emonTx\_3Phase\_PLL at master · openenergymonitor/emontx3 · GitHub](https://github.com/openenergymonitor/emontx3/tree/master/firmware/emonTx34/emonTx_3Phase_PLL)

I am getting compilation errors:

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/9/e/9e057e6296044f9d94ef590332e0718fb9a37123.png)

So it reporting:

```auto
error: 'RF69_433MHZ' was not declared in this scope
error: 'RF69_868MHZ' was not declared in this scope
error: 'RF69_915MHZ' was not declared in this scope

```

So basically it seems that the constants RF69\_433MHZ, RF69\_868MHZ and RF69\_915MHZ are not defined.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 14:31 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/8 "2025-10-25T14:31:22Z")

</div>

I managed to compile it by adding following 3 defines to `emonTx_3Phase_PLL.ino`

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/f/8/f8ba20cdf5ed2f2f120f5d0f896b3f445b90f818.png)

but when I uploaded it: nothing happened also nothing appeared on the Serial Monitor.

So _ **emonTx34\_DS\_jeelib\_classic** _ ( [emontx3/firmware/emonTx34/emonTx34\_DS\_jeelib\_classic at master · openenergymonitor/emontx3 · GitHub](https://github.com/openenergymonitor/emontx3/tree/master/firmware/emonTx34/emonTx34_DS_jeelib_classic) )

works for me with following configuration:

```auto
#define RF69_COMPAT 0

byte RF_freq=RF12_433MHZ;
byte nodeID = 10;
int networkGroup = 210;
boolean RF_STATUS = 1;

```

but I have no idea how I can get _ **emonTx\_3Phase\_PLL** _ ( [emontx3/firmware/emonTx34/emonTx\_3Phase\_PLL at master · openenergymonitor/emontx3 · GitHub](https://github.com/openenergymonitor/emontx3/tree/master/firmware/emonTx34/emonTx_3Phase_PLL) ) working.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 14:48 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/9 "2025-10-25T14:48:03Z")

</div>

When I disabled define `RFM69CW` and set baud speed to 9600 I am getting serial output

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/f/a/fac911b21bf811bb09708521e3b9456952a37cd3.png)

but sending is still not working.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 15:38 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/10 "2025-10-25T15:38:24Z")

</div>

The sketch file mentions:

```auto
// Output settings // THIS SKETCH WILL NOT WORK WITH THE RFM12B radio.

```

So I guess that explains why it is not working for me as I am having RFM12B radio.

The strange thing is that many years ago I managed to install a sketch that was able to monitor the power consumption of the 3 phases. I forgot where I have found that sketch and I have no longer a copy of its source code.

… I think I am having emon Tx V3.2 and not emon Tx V3.4. I have no idea how I can find this out.  
FYI I have bought it 13th December 2014 and I am having RFM12B radio 433 MHz.

---

<div class="post-metadata">

**Author:** ![Robert.Wall](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/robert.wall/32/38246_2.png) [@Robert.Wall](https://community.openenergymonitor.org/u/Robert.Wall)\
**Post date:** [25 October 2025 19:25 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/11 "2025-10-25T19:25:54Z")

</div>

The emonTx V3.2 uses a RFµ328. This is a small module which carries an ATMega328P and the RFM12B radio module. The RFµ328 itself sits on the main circuit board with the c.t. sockets etc.

The emonTx V3.4 has the processor on the main p.c.b. and the radio module is mounted directly on this. It might have either A RFM12B or a RFM69CW.

Let me know which you have.

Also, please confirm you require a sketch for a 3-phase supply.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 20:52 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/12 "2025-10-25T20:52:55Z")

</div>

![IMG_3399](https://community.openenergymonitor.org/uploads/default/original/3X/6/f/6f84efa8cf91e7acd431b7daf2b560b7469b331e.jpeg)

 ![IMG_3397](https://community.openenergymonitor.org/uploads/default/original/3X/0/b/0b2245027ea93bd7ad46fc3db4362b87c964b067.jpeg)

 ![IMG_3398](https://community.openenergymonitor.org/uploads/default/original/3X/0/6/060df9264abb85676caf13b1da55dcf6317006a2.jpeg)

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 21:11 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/13 "2025-10-25T21:11:25Z")

</div>

So it is version v3.4 as it is written on the board.  
I don’t know if it is RFM12B or a RFM69CW.  
I would think it is RFM12B as the `emonTx34_DS_jeelib_classic` sketch only works when it is configured for RFM12B 433MHz.

And indeed I am looking for a sketch for a 3-phase system.  
Actually one of the 4 CT clamps is on the same phase as the AC-AC power  
The other 3 CT clamps are on the other phase.  
So there is one phase that I am not monitoring.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [25 October 2025 22:16 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/14 "2025-10-25T22:16:41Z")

</div>

I am planning to use the `emonTx34_DS_jeelib_classic` sketch.  
I have adapted it a little bit so that for CT2, CT3 and CT4 it will calculate apparant power instead of real power as the AC-AC adapter is monitoring another phase.

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/a/1/a1dd2bc06386b17dba956ed36c6b0ddaa80a5354.png)

I have also set Vcal = 245 as this reports more realistic voltage (230V) - more inline with what my digital meter reports.

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/c/4/c4cc6c1f28fd1369b1121d7de0069c5bb369ad74.png)

---

<div class="post-metadata">

**Author:** ![Robert.Wall](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/robert.wall/32/38246_2.png) [@Robert.Wall](https://community.openenergymonitor.org/u/Robert.Wall)\
**Post date:** [26 October 2025 00:17 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/15 "2025-10-26T00:17:13Z")

</div>

What you have there is an early emonTx V3.4 with an RFM12B radio. Which explains why you do **not** want

```auto
#define RF69_COMPAT 1

```

(Post No.6 told you where to look for the radio module.)  
Not many of these were produced before the RFM12B was replaced by the RFM69CW.

I think I’ve found the sketch you had - it’s not phase-locked to the supply frequency, but as your frequency is more tightly controlled than ours, this should not be a problem. It will calculate real power as it delays Phase 1 to artificially create Phases 2 & 3 internally. It can use either the RFM12B or the RFM69CW.  
I’d like to have a closer look before I send it to you. It is dated April 2017.

When you gave this topic the title “Would like to upgrade old firmware on my emonTx V3 device”, what exactly did you want to upgrade?

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [26 October 2025 08:21 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/16 "2025-10-26T08:21:09Z")

</div>

A/ Only CT1 clamp is phase-locked to the supply frequency.

The 3 other clamps (CT2, CT3, CT4) are all on the same phase (measuring current of 3 different fuses in my electricity board) which is different from the phase of the supply frequency.

For the 3 other clamps I have adapted the sketch to measure

- the apparent power (`emontx.power4 = ct4.calcIrms(no_of_samples)*Vrms`) and
- not the real power ( `ct1.calcVI(no_of_half_wavelengths,timeout); emontx.power1=ct1.realPower;` )

As I am not measuring the voltage of the other phase, I can only approximate it by the voltage of the phase of the supply, so I was thinking that the real power calculation for CT2, CT3 and CT4 would also be an approximation which is not necessarily much better than simple apparent power calculation.

B/ regarding

> [@Robert.Wall](#):
>
> When you gave this topic the title “Would like to upgrade old firmware on my emonTx V3 device”, what exactly did you want to upgrade?

I wanted to update my firmware on emonTx V3 as I have changed my CT clamps. They are no longer measuring the same phases as before.

I also wanted to upgrade it to a version that is also measuring the termperature as I am having an _RJ45 Encapsulated DS18B20 temperature sensor_ also connected to my emonTx device.

---

<div class="post-metadata">

**Author:** ![Robert.Wall](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/robert.wall/32/38246_2.png) [@Robert.Wall](https://community.openenergymonitor.org/u/Robert.Wall)\
**Post date:** [26 October 2025 14:03 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/17 "2025-10-26T14:03:52Z")

</div>

Here is a sketch that I think will work for you.

[emonTx\_3Phase\_Voltage.zip](https://community.openenergymonitor.org/uploads/short-url/bRTyw8qrv0AitnSEWLXWeAZOhYK.zip) (13.6 KB)

It is not phase-locked - you cannot have a phase-locked loop with the RFM12B radio. This is because the radio can handle only one character at a time, so it interrupts the processor continually, preventing the loop from locking. This means that a change in line frequency will appear as a change in power factor (and hence real power) for loads on lines 2 & 3. The RFM69CW buffers the entire message internally, so radio transmission does not interfere with operation of a PLL.

It has temperature measurement.

It will give a good approximation for real power measured on phases 2 & 3, the load’s power factor is taken into account but as you know, but any difference in line voltages 2 & 3 is not.

You must carefully read through the sketch and change the pre-processor definitions and calibration constants as necessary. It does not have on-line calibration.

If you need clarification, please ask.

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [31 October 2025 15:05 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/18 "2025-10-31T15:05:40Z")

</div>

So I am using the `emonTx34_DS_jeelib_classic` sketch with little adaptation to measure apparant power instead of real power for CT2, CT3, and CT4.

It does it quite well.  
Here below you see the power measured on fuse K (= CT2) when my electric car was charging and not charging (between 14:02 and 14:33).

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/f/6/f64f958723e0e10f955c9129a2bea6f24839d3b2.png)

The only thing is that I need to calibrate it a bit.

- It measures a charging power of 1765 W while

- the actual charging as measured by my smart meter seems to be between 1560 W and 1690 W while

- my Blink charging cable reports 1710 W and

- my Mercedes app reports 1600 W charging power

---

<div class="post-metadata">

**Author:** ![Robert.Wall](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/robert.wall/32/38246_2.png) [@Robert.Wall](https://community.openenergymonitor.org/u/Robert.Wall)\
**Post date:** [31 October 2025 17:15 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/19 "2025-10-31T17:15:11Z")

</div>

So you didn’t want the sketch I found for you after all?

---

<div class="post-metadata">

**Author:** ![jvda](https://community.openenergymonitor.org/user_avatar/community.openenergymonitor.org/jvda/32/4254_2.png) [@jvda](https://community.openenergymonitor.org/u/jvda)\
**Post date:** [1 November 2025 10:00 UTC](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268/20 "2025-11-01T10:00:03Z")

</div>

Only if it is better than the sketch I have currently flashed.  
So is it better ?

Also note that the device is no longer at my desk but installed in my electricity board - uploading a new sketch is hastle now.

FYI this is the voltage for my 3 phases as measured by my smart meter:

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/3/6/365b6c3ea2606d79341561d61b167b06bc03c8ae.png)

and over a longer period:

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/2/9/2925a969f180f2ef31272d785bc1d50e73c14b1d.jpeg)

and for last week:

 ![image](https://community.openenergymonitor.org/uploads/default/original/3X/b/7/b7f155ab40c960c7caed447c9ec642421c37fff2.jpeg)

FYI the phases corresponding to my 4 CTs connected to my emonTx device.  
CT1 = L2 Voltage = AC-AC voltage  
CT2, CT3, CT4 = L3 Voltage.

[Next page](https://community.openenergymonitor.org/t/would-like-to-upgrade-old-firmware-on-my-emontx-v3-device/29268.md?page=2)
