[Edit: Superceded by version 72.70c, but the following is the only description of these bug-fixes and features, which are retained in later versions.]

LiFePO₄ and Lead Acid Patched Firmware

This post describes both the LiFePO₄ (LFP, Lithium Iron Phosphate) and Lead Acid patched firmware for PIP-4048MS, Axpert MKS 5kVA and similar machines with other names. It is based on Voltronic's 72.70 firmware, which is supplied with newer machines that have single (not dual or triple) MPPTs (Solar Charge Controllers) that are capable of solar charging at up to 80 A. We believe that it is safe to use on all single MPPT post-2013 machines. [Edit: We also use it safely with machines that were originally supplied with firmware version 73.00.]

Warning! and disclaimer. It is possible to set the total charge current to 140 A, which may be beyond the capacity of your hardware. I don't believe that this is a problem, since the Solar Charge Controller (SCC) will limit itself to its own hardware capacity. All our testing has been on an early 2016 machine which came with 72.40 firmware, and no adverse effects have been detected to date, apart from the 60 A current limit noted below in the section headed "SCC Compatibility". So it all should be safe, but caution is advised particularly during initial testing.

This patched firmware has been developed mainly to overcome a bug in the charging algorithm for these machines. The bug manifests itself as not charging the battery fully. When charging from solar, the charge will often transition from bulk/absorb stage to float stage far too early, often in the first few minutes of charging.

The reason has been traced to a minor bug in a function far removed from the main charge control function, which is presumably why it escaped detection for so long. It's also why we thought that the manufacturer was ignoring the battery voltage termination condition. In fact, they weren't ignoring it; the typographical error (less than instead of a greater-equals) means that they compare against the float voltage setting less half a volt instead of the bulk/absorb (CV) voltage setting less half a volt, which makes the voltage criterion ineffective.

Our patch fixes this typo, which effectively re-introduces the battery voltage termination criterion: the battery voltage must be near the bulk/absorb voltage setting (parameter 26 on the LCD menu) as well as the charge current being at the low value. This means that the absorb stage cannot complete until the battery is close to or above the required absorb voltage. This bug is more likely to be seen when the maximum charge current setting is high; as a result, it seems to be less commonly seen with lead acid batteries (which typically charge at C/10 to C/6.7).

For those interested in the exact new charge terminating conditions, here they are. Others can skip this somewhat complex paragraph. The battery voltage must stay at or above a threshold, and the charge current must stay at or below another threshold, for at least 30 seconds. The voltage threshold is the bulk/absorb setting (parameter 26) minus 0.5 V. The current threshold is one ampere below the maximum of two values:
1) the sum of all the Maximum Charge Current settings (parameter 02) for all paralleled machines, divided by 5 (15 [Edit: 12 in version 72.70c] for LiFePO₄), and
2) the number of paralleled machines multiplied by 5 amps.
The official firmware is the same except that
(a) the voltage threshold is the float setting less half a volt,
(b) the total of maximum current settings is always divided by five, and
(c) the required time is 10 minutes (72.70 only).
When the new absorb (CV) time setting (setting 32) is set to a number (not "Aut"), the current threshold becomes 2 A, which is practically impossible to achieve. The effect is that when setting 32 is a number, the absorb stage will last for that many minutes.

Example 1: There are two paralleled machines. Maximum charge current (setting 2) is 60 A on each machine, and the Lithium iron Phosphate version of the patched firmware patch is in use. The current threshold is an amp less than the maximum of ((60+60)/15, 2*5) = max(8, 10) -1 = 9 A. So the current has to read at or below 9 amps. [Edit: For version 72.70c, it has to read below ((60+60)/12, 2*5) = max(10, 10) -1 = 10 A.]

Example 2: maximum charge current (setting 2) is 40 A, and the Lead Acid version of the patched firmware is in use. There is only one machine. The current threshold is an amp less than max(40/5, 1*5) = max(8, 5) - 1 = 7 amps. So the current reading has to be 7 A or less.

The patched firmware also fixes a new bug in the case where setting 32 is a number of minutes (not "Aut"). After reaching the absorb voltage setting for 10 seconds, the official firmware doesn't care if the battery voltage goes low again, say due to low solar input. It will still count this as absorb time. We now only increment the counter representing time in the absorb phase when the voltage criterion is met (battery voltage is greater than the CV setting less half a volt).

Patched firmware version 72.70b also fixes a new bug, whereby in official firmware version 72.70 is it now *too hard* to exit absorb stage and enter the float stage. This is because they increased the "qualification time" when the battery voltage has to be above a threshold and the battery current has to be below a threshold, from 30 seconds to ten minutes. This was perhaps a misguided attempt to fix the original charge bug, which you will recall is that it was *too easy* to go to float (and it did so much too early).

Having gone to the trouble of devising the patched firmware, some other changes became desirable. Some of the 7 segment character renderings leave something to be desired, particularly letters "r" and "k". Weber devised a set based on what others have done, and a desire to have most character renderings distinct. But in the end, he decided that "S" and "5" need to use the same rendering. Some letters like "M", "W", "X" and "k" you can't do much with, but I think he's chosen good compromises.

When more than one machine is paralleled, one is designated the master, with "HS". This was presumably because they thought their rendering of an H looked more like an actual M than their rendering of an M did. In this firmware, we've used a different rendering of an M. After a while, you get used to reading the three separated segments as an M. Try to imagine it's like this:

It's also desirable that the patched firmware be readily identified, yet software such as Watchpower should not be confused by a version it's never heard of. Therefore, the U1 main version display screen has been replaced with either an LF1 (lithium ferrous) or Pb1 [Edit: LC1 in 72.70c] (lead acid or lithium cobalt) display screen, still with 72 in the middle, but now with 70b on the right. Subsequent versions of the patched firmware will be labelled 70C, 70d and so on. Enquiries such as QFVW (main firmware version enquiry) still return 00072.70 as before, so that Watchpower still works properly (with the limitations described at the end of the following post).

LiFePO₄ patched firmware only

All changes from here on are made to the Lithium Iron Phosphate (LiFePO₄) version of the patched firmware only. For other common lithium chemistries the "lead acid" patched firmware should used, typically with 14 cells in series.

For LiFePO₄ batteries, the most important other desired change is the battery low cutoff voltage, where the battery will be effectively disconnected to protect it from under-voltage. The maximum that this voltage can be set to in the official firmware is 48.0 V, which is unsuitable for lithium iron phosphate batteries. We have added 4.0 V to the manufacturer's range of 40.0 to 48.0 V, allowing cutoff voltages of 44.0 to 52.0 V. This assumes 16 cells in series.

In cases where the battery low cutoff voltage defaulted to 42 V, it now defaults to 44 V.

The battery low warning used to happen at 2 V above the battery low cutoff voltage, and reset at 4 V above the battery low cutoff voltage. They now happen at 0.5 V and 1 V above.

The transition from the "float" charging stage to the "bulk" charging stage was set at 4 V below the float setting. This has been reduced to 1 V below. [Edit: 1.2 V below in version 72.70c.]

It also makes sense for parameter 12 (back to utility voltage) to be increased. This is the battery voltage below which the loads will switch back to the utility. This is used when output source priority (parameter 01) is set to Sbu or SoL. Now, the range of this setting has been increased by 2 V, so it is now 46 V to 53 V.

Change SummaryLiFePO₄ and Lead Acid Patched Firmware
* The repaired voltage criterion for transitioning from absorb stage to float.
* For non-automatic absorb stage timing, only time when the battery voltage is near the CV setting counts as being "in absorb".
* "Font" improvements, and HS -> MS for Master units.
* Firmware revision display screen contains patch revision.

LiFePO₄ patched firmware only
* The bulk/absorb to float transition occurs with a different current threshold: (sum of maximum charge current settings) divided by 15. [divided by 12 in version 72.70c]
* Low battery cutoff voltage range changed from 40-48 V to 44-52 V.
* Back to utility voltage range changed from 44-51 V to 46-53 V.
* Float to bulk charge stage transition occurs at 1 V under the float setting. [1.2 V under in version 72.70c]
* The battery low warning occurs at the cutoff voltage plus half a volt, and returns at cutoff plus one volt.

SCC firmware compatibility

The Voltronic main firmware version 72.70 normally coexists with SCC firmware version 04.10. If you use either the original 72.70 or our patched 72.70b with any earlier version of the SCC firmware, the inverter refuses to charge from solar unless you set the maximum total charge current (parameter 02) to 60 A or lower. [Edit: This problem is fixed in patched firmware version 72.70c.]

So if you need a higher maximum charge current and you want to use this patched firmware, you will also need to update the SCC firmware to version 04.10 (provided below). [Edit: This is no longer required or recommended with patched firmware version 72.70c.]

Edit: a belated but heartfelt thanks to Weber, who did 99% of the grunt work of implementing the hex file patches with a text editor.

Edit 2: removed the word "strict" (it has no meaning with analogue variables like charge current) and made the truncation to a whole number of amps more explicit. Added two examples.

Edit 3: Added a third difference to the official firmware (case (c)). Also "below" -> "at or below" for clarity.

Last edited by weber on Tue, 07 Nov 2017, 11:28, edited 2 times in total.

Learning how to patch and repair PIP-4048 inverter-chargers and Elcon chargers.

[Edit: The following files are no longer recommended or supported. Please use version 73.00a or version 75.31a for dual and triple SCC models. But the following reflashing instructions are the only ones available, and are still valid for the newer versions, although we no longer recommend updating the SCC firmware.]

NOTE: the above LFP and Pb patched firmware is for the PIP-4048MS / Axpert MKS 5kVA; it is probably not suitable for use with a PIP-4048HS, Axpert KS (note lack of "M"), or other non-MPPT based inverter. It will also not work on 24 V or 12 V inverter models. While it is possible that the patched firmware might work in a non-MPPT inverter with only minor problems (such as allowing 60 A of solar charge current when the hardware is only capable of 50 A), it is also possible that other hardware incompatibilities could cause the inverter to blow up. Such operation has never been tested and is highly discouraged.

NOTE: the above V4.10 SCC firmware is for the SCC inside a PIP-4048MS / Axpert MKS 5kVA; it is not suitable for use with a PCM60x or other stand alone solar controller. The PCM60x and the SCC seem to have essentially the same hardware, but the PCM60x makes its own decisions about voltage and current, and drives its own display, while the SCC has no display of its own, and relies on messages from the Axpert's DSP (Digital Signal Processor) to tell it what to do.

You will need a Windows computer and a USB to D9 serial adapter, or a very old computer with a real serial port. (You can't use the USB port of the inverter if it has one; that's only for monitoring programs.) Use the serial to RJ45 cable that came with your inverter-charger. Some serial adapters (or possibly the combination of serial adapter and Windows version) seem to be more suitable than others;
see earlier posts on this.

If, when you plug in your serial adapter, you get a notification similar to "a device is undergoing additional setup", wait until it says something like "update complete".

Power up your inverter charger by connecting the battery, which should not be nearly empty. Turn on the inverter switch. Make sure that your computer has power that won't go off during the reflash process. Disconnect all loads, and disconnect solar panels unless you are updating the SCC firmware.

Download and unzip the appropriate zip file above. The zip file does not have a folder inside it. (Version 72.70A was different; sorry about that inconsistency. ) Use the Windows File Manager "Extract All..." context menu item (right click menu) and follow the prompts to extract into a new folder. Make sure you are not running any software that could be using the serial port, in particular, exit the WatchPower application. Don't just close the application; use the right mouse button on the WatchPower system tray icon, usually at the bottom right of Windows:

The file name the reflash tool looks for is fixed, it's always "dsp.hex" in the same folder as the reflash tool. In the zip file, dsp.hex is already a copy of the patched firmware.

Finally, double click on the ReflashTool_Xseries.exe icon. It should bring up the small reflash application. If necessary, change the serial port selection to the one that connects to your inverter.

Click on the Update button, and answer Yes to "Are you sure". Nothing will appear to happen for 10-20 seconds, so don't panic. Eventually, new text should start appearing in the box under the progress bar, saying that erasing has been successful and so on. It will take some 8 minutes to complete the flash programming. At the end, just click OK and exit the reflash application.

If you get an error to do with the serial port (e.g. invalid serial port, or the serial port doesn't appear in the drop down list), it's probably because you have something running that is keeping the serial port in use. Double check that you have exited WatchPower and any terminal emulation programs like TeraTerm. You may need to change the com port used by the USB to serial adapter to be named COM1 through COM9 for the reflash tool to see it (Device Manager, Ports, Properties, Advanced).

The standard instructions say you should revert all the settings to standard, then change them to suit your needs. As long as you had been running a recent firmware (52.30 or later), this should not be necessary. But if you were running an earlier firmware, or if the settings seem strange after the update, use WatchPower to reset to default settings, then change them to suit your needs.

The instructions say to turn off the inverter after the firmware update. This doesn't seem to be necessary.

WatchPower comes for free and allows basic interaction with the inverter(s). However, many find that it does not meet all their needs. In this case, consider some of the many other monitoring programs available. A few of them are referenced from the index at the start of this thread.

WatchPower is not aware of the changes to the range of the battery low cutoff voltage and the back to utility voltage parameters. You will not be able to change these values with WatchPower outside their original range. Instead, you can use the LCD buttons, or any software that changes these settings via the PSDV or PBCV commands.

SCC updating

[Edit: This is no longer required or recommended, with DSP patched firmware version 72.70c]

It's not essential to update to the latest SCC firmware when updating the DSP firmware, especially if you don't think you'll need more than 60 A of maximum charge current.

There are two reasons why updating the SCC firmware is a little more difficult than updating the DSP firmware.

Firstly, the updating process uses a completely different updating program, and for whatever reason, they insist that the USB to serial adapter has to be on COM1. To do this, run Device Manager, under Ports (COM & LPT) locate your USB to serial adapter, right click to bring up the context menu, and select Properties. Choose the Port Settings tab. Click Advanced... and in the COM Port Number drop down box at the bottom of the dialog select COM1. Restart the computer for this to take effect.

Secondly, there is a .OCX driver that needs to be registered. There are instructions for this in a PDF file with the other upload files. You need to run a command prompt as administrator and enter a command to regsvr32.exe with the name of the .OCX file as its only argument. You can use the tab key to help fill in parts of the path (path completion? A bit like command completion). It's not too hard, and you only need to do this once. If you get an assert failure when you attempt to flash the SCC firmware, it's possible that this OCX registration failure hasn't happened or didn't succeed (perhaps an incorrect path to the .OCX file was given).

Remember also that the SCC is only powered up from the PV inputs. So make sure that you have PV input. An easy check is to attempt to view the SCC firmware's version number. If you can see that, the SCC is powered up and talking to the DSP.

Just use the Post Reply button under the last post of the page, and use the File Upload toolbar button (yellow folder with the G-clamp around it, ) to start the file upload dialog. Just hit the Choose File or Browse button, locate your file, and follow the prompts. You can add text to the upload as well.

The file size limit is 3 MB. If it's larger than that, or not a usual file format (.pdf, .zip. .rar etc) then you'll have to upload to a third party storage site and post a link.

[ Edit: it seems that new members don't get upload privileges, until they have made a certain number of posts. ]

I'd be interested to know where you obtained the file, if you're willing to say.

[ Edit: added Post Reply button image. Some browsers have a Browse button in place of a Choose File button.]

Last edited by coulomb on Sat, 25 Feb 2017, 15:26, edited 1 time in total.

Learning how to patch and repair PIP-4048 inverter-chargers and Elcon chargers.

I got a couple of Axpert 5MKS inverters which I have replaced with new one's for customers which gave me a Error 51. The inverters still work but will come up with the error intermittently.

I would like to repair these one's so that I can use them for swopout units - anybody who have had these problems and repaired the mainboard who can assist? Which components are the probable cause - the IGBTs or Mosfets. Since they are working I assume that it could be component failure which is busy to happen.

The service manual does not give a lot of information about the error and what needs to be replaced. Like a error 09 I know that the IGBTs and mosfets had gone.

I got a couple of Axpert 5MKS inverters which I have replaced with new one's for customers which gave me a Error 51. The inverters still work but will come up with the error intermittently... Which components are the probable cause

Error 51 is only set from the two main interrupt routines. I don't have a lot of detail at this stage, but it seems to be associated with an instantaneous current sample exceeding 192 A. Presumably this is on the battery side.

Assuming that there aren't such currents about, even for short periods of time, the fault would seem to be associated with that current measurement. So some current shunt (which may be an area of printed circuit trackwork), or filter components associated with that measurement. Likely there is also an op-amp to amplify the small shunt voltages to the three volts or so that represent full scale on the DSP analogue inputs. Any components around this op-amp could cause such trouble.

This one doesn't seem to involve the MOSFETs or IGBTs.

[ Edit: "during one of the two" -> "from one of the two" (main interrupt routines) ]

Last edited by coulomb on Mon, 27 Feb 2017, 18:09, edited 1 time in total.

Learning how to patch and repair PIP-4048 inverter-chargers and Elcon chargers.

coulomb wrote: I think the only setting you lose is the one associated with the low power mode, where it pulses the output when the load is very low.

OK, thanks. That reminds me - once paralle mode is set up, is it possible to regularly power down a slave (to save on idle power at night) by turning off the switch at bottom, without stuffing up the parallel mode?

Somehow I didn't take notice of the fact that one of the changes in official firmware 72.70 is that the "qualifying time" for transitioning from absorb stage to float stage has been increased from 30 seconds to 10 minutes. It is possible that they did this in a misguided attempt to fix the original charge bug, which allowed a transition from absorb or even bulk stage to float stage too early. The qualifying time is the time that the voltage must exceed a threshold, and the current stay below a threshold, with no exceptions. When utility charging, this is not much of a problem, but when charging from solar (hopefully the common case), the many overshoots and undershoots of battery voltage and current due to clouds, sun, and load changes, makes it exceedingly difficult to meet both criteria for 10 minutes with no exceptions. User Don from the South African Power Forum, has found that his twin Axperts typically won't go to float, bouncing around most of the day near the absorb voltage setting (setting 26), until he switches to utility charging. After utility charging is started, the absorb stage completes in 20-60 minutes.

At about the time I was reading this, I was also having trouble getting from absorb stage to float stage, running patched firmware 72.70A. I thought that this was due to one cell "running away" to over 3.6 V, causing my LyteFyba Battery Management System to turn off the PV contactors. This protects my cell, but stops the charging altogether, and it has to charge back to where it was, and start the 10 minute timer all over again. It occurred to me that if I had the 30 second qualifying time that was used in official firmware version 72.60 and earlier, I would avoid this problem.

Thus was born patched firmware 72.70b, the same as patched firmware 72.70A except for the 30 second qualifying time to transition from absorb stage to float stage. This only applies when the absorb time setting (setting 32) is set to "Aut" (automatic, the default setting).

I've tested this at home, and although available solar power has been poor, today it made float quite soon after the current dropped below my threshold (8 amps). Time will tell if this still happens when much more solar power is available.

Last edited by coulomb on Fri, 03 Mar 2017, 11:55, edited 1 time in total.

Learning how to patch and repair PIP-4048 inverter-chargers and Elcon chargers.

yes you can power down the slave whenever and save your idle current at night and day and switch it back on whenever.
I use a Digital Current switch on the inverter output to turn on the second PIP when my load exceeds 2750 watts it switches a timer relay and holds the slave on for approx. 30 minutes, this works well with the oven thermostat, I have had it working like this for over a year now and its going great, I was thinking I will change the Master and slave inverters around soon so they can each share the working load hours better.

I still think they need more cooling the fans were slowed down too much, my units (the older ones with external black heatsink) get to over 50C on the inverter heatsink inside the units, so I have external temperature controlled fans to keep it below 40C

andys wrote: Had a brainstorm today and figured out I am happy to just mount the damn units upside down to improve heat transfer, and just flip the display (very easy, only takes seconds) to make it easy to use.

Ha! Love it! That's brilliant, andys! It made me lean back in my chair and laugh out loud.

One of the fathers of MeXy the electric MX-5, along with Coulomb and Newton (Jeff Owen).

paulvk wrote: I still think they need more cooling the fans were slowed down too much, my units (the older ones with external black heatsink) get to over 50C on the inverter heatsink inside the units, so I have external temperature controlled fans to keep it below 40C

I think I found a simple solution for this too: Remove the blue wire to the fans, it causes them to stay at 100% all the time.

coulomb wrote:
Error 51 is only set from the two main interrupt routines. I don't have a lot of detail at this stage, but it seems to be associated with an instantaneous current sample exceeding 192 A. Presumably this is on the battery side.

Not sure if this helps, but...

I have a MPP Solar branded 4048 with an Error 51, for me it must be related to PV input current - as the error doesnt re-occur with PV input switched off, but all other connections active. (and now re-occurs within an hour if PV input is on, even with half the panels disabled)

I'm taking apart my PIP-4048 to upgrade the MOSFETs and capacitors. It's a slog getting to the main board. The mains connectors to the main board are either very tightly pushed on, or are in fact soldered. So it's necessary to disconnect the mains wiring at the terminal block ends. To get to the lower (AC output) wires, it's necessary to remove the top terminal block.

It took me a while to find the screws allowing me to do that, and I've taken PIPs apart before. So I thought I'd post a photo showing the screws here, in case it helps someone else ,and so I can find it myself in the future.

After removing these two screws, the top terminal block can slide out to reveal similar screws to the above, for the lower terminal block. The lower terminal block also has to be removed.

Edit: There is also the "last screw" (nine on the main PCB) holding down the main board. It's hidden underneath one of the date stickers, as shown in the second photo. (Before removal, it's far less obvious that there is even a screw there at all). There is also one between the battery terminals.

[ Edit: lower terminal block has to be removed as well. Also added second photo and last paragraph. ]

Last edited by coulomb on Fri, 24 Mar 2017, 16:57, edited 1 time in total.

Learning how to patch and repair PIP-4048 inverter-chargers and Elcon chargers.