Boron VIN solar charger problem with firmware 1.4.2

Tags: #<Tag:0x00007fe21d481cf8>



I have a few remote Boron’s deployed with Device OS 1.3.0 rc.1 that are working flawlessly. These devices are powered with a 3.7V LiPo that is recharged by a 6V, 5W panel array connected to the Vin pin. I have not modified the default PMIC settings at all. Today, I updated the firmware on one of these devices to OS 1.4.2 (this device has been in the field for about 4 months operating flawlessly) but the update seems to have killed the charger. Looking at the diagnostic info, when things were working, the device.power.source would show, “USB Host” but now it says, “Unknown” or “VIN”. Also, the device.power.battery.state is always, “discharging” now.

Any insight or help would be much appreciated here! It seems like it’s a problem with the device OS 1.4.2. One of these devices is in California while I am in Pennsylvania so I am sprinting to resolve this issue and push a corrective software update before the battery is fully depleted.


Boron 1.4.2 battery charging issue

System Power Manager can change setInputVoltageLimit to (3880) , which wont work for a Solar Recharged Boron.

You can try the workaround mentioned in this post:


I am currently restrained from buying more Borons because Particle has chosen to go out and introduce these problems, and has not definitively fixed them.

I applaud Particle for deploying v1.4.2, where they chose to fix the catastrophic bug they introduced in 1.4.0 which made the Boron invariably crash and enter this irrecoverable spastic faint LED flash state.

Maybe we should just all strap-down 1.3.0-rc1, thank Particle for a pretty decent product, and never ever even think about downloading one of these garbage updates ever again.

I know personally that updating only to introduce Particle’s new bugs/issues has cost me hours.

On the other hand, 1.3.0-rc1 Borons likewise are working well for me since the fix of the cellular reconnection catastrophe.

Let’s all band together and recognize that, as comical and ridiculous as Particle’s terrorist software updates destroying the Boron have recently been, the product itself on v1.30-rc1 is rather unbeatable.

V1.3.0 stable Boron gives you reliable low-power LTE for 50 bucks and 40 cents a megabyte. That is good enough for me.

As long as I always have a way to protect myself, my family, and my Borons from these useless destructive sh*t updates, and remain on Holy v1.3.0-rc1, I think I can remain a routine customer and expand my Boron asset fleet.

Let me ask you: why do you need to have the update? Do you have any solar charging issues or issues at all on 1.3.0-rc1?


I’m seeing this exact same behavior on some 1.4.2 devices. Were you able to find any resolution? I’ve had this happen on two separate Borons now, and I’m in the same situation where they’re located far away from me so I’d prefer not to travel. Also, a hard reset (completely remove power/disconnect battery) seems to get it charging again, but I can’t be doing that remotely…


I believe Particle is working on a permanent fix.
The interim solution was linked in Post #2

void setup() {
    detachInterrupt(LOW_BAT_UC);     // <-- The Important Part
    delay(2000);                     // Delay for up to two system power manager loop invocations
    PMIC pmic;                       // PMIC 
    pmic.setInputVoltageLimit(5080); // Your PMIC settings, such as (5080) for 6V Solar Panels
    // NOTE: these need to be performed again after a STOP mode Sleep


I’m using a standard 5V power supply, so should I use a different value for my voltage limit?


@aklein24, you might want to start a new Thread or a Support Ticket, since this one was dealing with Solar Charging. I wouldn’t expect that the changes in recent system firmware to impact your charging via 5V supply. You should not use (5080) from my suggestion above for a 5V power supply.

You might still benefit from the detachInterrupt(LOW_BAT_UC), but you may want to fine tune pmic.setInputCurrentLimit(x) and pmic.setChargeCurrent(y) for your specific supply, depending on it’s limitations.

I’m guessing your Power Supply Voltage falls too low (below 3.88V) when trying to supply ~1 amp with the recent system firmware updates…but that’s just a guess.
[EDIT] : Thinking about this a little more: The Boron cant re-charge the Li-Po when the Supply Voltage Drops below the (Li-Po Voltage + some Overhead)… so the Supply will probably need to maintain something higher than 3.88 V at the (Charging Current + Operating Current).


I’d like to give everyone affected by this change an update on:

  • Why this change was made
  • The unintended side effect
  • The workaround
  • Our choices now
  • Some input needed
  1. This initial change was made so that it is possible to utilize the Boron without using a LiPo battery enabling 1500ma of current to be drawn from VIN. The fact that it did not already do so was a bug as the USB was incorrectly detected whether powered from USB or not therefore limiting current to 500ma.

  2. The unintended side effect is that devices without current draw protection at this level could be damaged. Current-limited devices would not be affected.

  3. This workaround disables the interrupt for LOW_BAT_UC so that the system does not reset the limit and enables the user to set a new limit.

void setup() {
    // Delay for up to two system power manager loop invocations
    // Change PMIC settings
    PMIC pmic;

This might be needed to be executed after waking from STOP mode sleep as well.

  1. The simplest thing we can do now is to reset the limit back to 500ma by default. However, that introduces an incompatibility with the Electron which has a default charging current of 900ma. Therefore the reset should really be 900ma while providing an ability to set a larger charging current to avoid having to use a LiPo battery.

  2. We would like to know whether the 900ma default would still cause the problems that you have. If that current resolves the problem we’ll set the default the same as the Electron and provide a mechanism to increase it to 1500ma.

We are sorry that anyone has been impacted by the change and appreciate your input in helping us to get the right result going forward.

Thanks, Ian.

Boron 1.4.2 battery charging issue

Per my testing, the workaround still doesn’t meet previous charging performance for Borons, both Solar and Utility Powered when using the USB connector, link

I don’t think the pmic.setInputCurrentLimit() nor the pmic.setChargeCurrent() have as much impact to Solar Borons as the setInputVoltageLimit(3880) change that happens behind the curtains. The first two are maximum allowed by the PMIC. It really shouldn’t matter what the first 2 are set at for a Solar Boron.

Would the proposed fix still allow system power manager to reset the setInputVoltageLimit(3880) ?

For a utility powered Boron - if your Power Supply voltage drops to 3.88V to maintain 900 mA, then you need a better Power Supply :sunglasses:.


True, everybody should be fine with the:

pmic.setInputVoltageLimit(4640); vs. pmic.setInputVoltageLimit(3880);

Any well-regulated 5v charging port should be able to operate just fine at 4.64v under a .9A load and not allowing a poorly regulated 5v supply pull-down to 3.88v under load is doing it a favor and will keep it running cooler more than likely.

I vote to keep the default Input Voltage Limit to 4.640v to allow for the popular 6-5v Voltaic solar panels to operate closer to their Maximum Power Point voltage since the Voltaic panels will under-perform when pulled down to 3.88v all day during charging.



I will defer to @RWB on the panel settings - I also use the Voltaic Systems 6V panels on almost every installation.

I want to ask a different question - what is the use case for wanting to draw more than 900mA of current? They way I see it, the core Boron use case is a remote cellular connected device and remote often means solar powered. The big benefit of the Boron over the Electron 3G is its ability to use less power and I feel like the Boron Solar use case was sacrificed for a high-current use case that feels more edge than core. I could be completely wrong here but, this is what I see. Even where the Boron is controlling a higher current device (like a motor - which some of my devices do) using a solid state relay not only simplifies power considerations but provides isolation as well.

Thanks, Chip


Chip, I believe the culprit is the Boron 2G/3G. I typically assume LTE when speaking about Borons, I sometimes forget about the 2G/3G model that has a higher peak current demand. I’m assuming (from Below) the change was invoked for Boron 2G/3G without a Li-Po, which indeed is a very specific use-case to cause widespread problems for most other Boron Applications.

I do understand the need/desire to have the Boron and Electron compatibility in the Device OS (900 mA default).

However, the Boron was previously able to re-charge a Li-Po at 850 mA before the recent firmware changes… which I would assume it should have no problem providing 900 mA to the Boron 2G/3G without a Li-Po ( relating to oddwires1’s post), with the correct PMIC settings, pre-1.3.1.

With the proposed changes, I feel like a Solar Boron will still need to call the detachInterrupt(LOW_BAT_UC); workaround, in order to maintain pmic.setInputVoltageLimit(5080) for 6V Solar Panels. The Dynamic Power Management of the PMIC should handle the rest for us. I’ve performed a Curve Trace for many different 6V solar panels (including Voltaic). All have a maximum power point well above 5.08V, but 5.08V is the max limit for the PMIC.

Back to your point, I’m also in full agreement that the changes in 1.3.1 and after have caused significant problems with many users, even Boron’s on utility power. I have yet to understand or measure any benefit to the changes, quite the opposite actually.

When a user makes a change to the PMIC settings, it’s for a reason.
I wish System Power Manager wouldn’t be allowed to change those settings behind our backs (Li-Po Safety excluded, which isn’t the case here).

My vote is to “un-do” the changes and let the specific use-case of a Boron 3G without a Li-Po select a Proper Power Supply, and make the PMIC Calls (or use a Li-Po like the Electron)… Verses having Everyone’s PMIC calls overwritten in the background as a “fix” to help that 1%.
That “1%” also happen to also be utility powered. This is not the direction to take for a Low-Powered Device, IMHO.

Here’s another idea:
The Docs could simply recommend that Users who wish to operate a Boron 2G/3G without a Li-Po use a 12v power supply connected to Vin (Vusb), for their final deployment ? Or make the proper PMIC calls, their choice.



Makes perfect sense. Thank you for the explanation. I do make calls to change the PMIC settings in my firmware and would not want them “undone” in a way that could cause remote devices to loose power and go off-line. I agree with your position.

Thanks, Chip


I agree with that also.

Just make it so a simple PMIC code change is needed to allow for the higher input current limit for the Boron & Electron 2/3G devices that need to run on a power supply only. Or just recommend they use a quality 5v power supply to avoid voltage drop during cellular connection.

Particle are you seeing more Mains powered use cases than solar powered use cases for the 2/3 G cellular devices?


Hey guys I don’t really want to get into a discussion whether we are supporting one use case over another because that is certainly not the case - this is a side effect of fixing a bug.

While our solar base is small, it is very important to us. And given that, as I said above we will reset the base current limit and provide a mechanism to override that limit for users needing a higher current.

What I need to know is if we reset it to 900ma will that work for you all or do we have to go back to 500ma?


900ma should be fine for most LiPo cells big enough to handle the surge current required for the 2/3G cellular devices.

A lot of people requested quicker charging when it defaulted to 500ma anyways.



900mA works for me as well.

Apologize if my Solar use case topic was a distraction.

Thanks, Chip


No problem Chip. We’ll get it reset to 900ma in next available build.