# Boron Charge Fault Question

**URL:** <https://community.particle.io/t/boron-charge-fault-question/48576>\
**Category:** Hardware\
**Tags:** boron\
**Created:** [March 21, 2019, 12:05pm UTC](https://community.particle.io/t/boron-charge-fault-question/48576 "2019-03-21T12:05:14Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![slacker89](https://avatars.discourse-cdn.com/v4/letter/s/9de053/32.png) [@slacker89](https://community.particle.io/u/slacker89)\
**Post date:** [March 21, 2019, 12:05pm UTC](https://community.particle.io/t/boron-charge-fault-question/48576/1 "2019-03-21T12:05:14Z")

</div>

So recently I managed to turn off charging on my Boron 2G/3G device which works well. However, when running the Boron I notice the charging LED blinking slowly which indicates a charge fault. The LED does not start blinking immediately, only after a few mins of operation (~20mins+). This does not seem to affect the operation of the device whatsoever so I am just curious and have some questions:

- With charging disabled and nothing connected to the LiPo port, how is a charge fault triggered? Re-enabling charging seems to stop the LED from blinking.
- Anyway to nicely turn off this LED? I guess I could clear the fault and stop the LED from blinking?
- I have not printed out the fault registers value and since it doesn’t seem to affect operation, its on my TODO backlog. Are the following values for the electron applicable/accurate for the Boron?
- 
  - Found them [https://github.com/kennethlimcp/particle-examples/blob/master/electron-testing/socPubNokiaThingSpeak/electron/pmic.h](https://github.com/kennethlimcp/particle-examples/blob/master/electron-testing/socPubNokiaThingSpeak/electron/pmic.h)

**Charge fault values:**

```auto
//-----------------------------------------------------------------------------
//Fault Register
//-----------------------------------------------------------------------------
//NOTE: This is a read-only register
REG09
BIT
7: WATCHDOG_FAULT	0: Normal
					1: watchdog timer expired
6: Reserved
--- Charge fault status
5: CHRG_FAULT[1]	| 00: Normal, 01: Input fault (VBUS OVP or VBAT < VBUS < 3.8 V)
4: CHRG_FAULT[0]	| 10: Thermal shutdown, 11: charge safetly timer expiration
--- Battery fault status
3: BAT_FAULT 0: Normal
					1: BATOVP battery over threshold
--- NTC thermistor fault status
2: NTC_FAULT[2] | 000: Normal
1: NTC_FAULT[1] | 101: Cold
0: NTC_FAULT[0] | 110: Hot

```

**Set up**

- Boron 2G/3G on DeviceOS 0.9.0
- USB powered with 5V, 2.4A

**Relevent Docs**

- [Disable charging on Boron 2g/3g turns off cellular](https://community.particle.io/t/disable-charging-on-boron-2g-3g-turns-off-cellular/48524)
- [https://docs.particle.io/datasheets/cellular/boron-datasheet/#led-status](https://docs.particle.io/datasheets/cellular/boron-datasheet/#led-status)
- [https://docs.particle.io/reference/device-os/firmware/boron/#fault-register](https://docs.particle.io/reference/device-os/firmware/boron/#fault-register)
- [https://github.com/kennethlimcp/particle-examples/blob/master/electron-testing/socPubNokiaThingSpeak/electron/pmic.h](https://github.com/kennethlimcp/particle-examples/blob/master/electron-testing/socPubNokiaThingSpeak/electron/pmic.h)

---

<div class="post-metadata">

**Author:** ![KyleG](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/kyleg/32/11077_2.png) [@KyleG](https://community.particle.io/u/KyleG)\
**Post date:** [March 25, 2019, 5:46pm UTC](https://community.particle.io/t/boron-charge-fault-question/48576/2 "2019-03-25T17:46:10Z")

</div>

@ParticleD, or @mstanley are you able to assist?

---

<div class="post-metadata">

**Author:** ![rickkas7](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/rickkas7/32/8681_2.png) [@rickkas7](https://community.particle.io/u/rickkas7)\
**Post date:** [March 25, 2019, 6:44pm UTC](https://community.particle.io/t/boron-charge-fault-question/48576/3 "2019-03-25T18:44:29Z")

</div>

The problem is most likely the charge safety timer. It must be disabled as well as disabling charging, otherwise the charge fault light will come on at some point in the future.

This post is for the Electron and E series, but the Boron uses the same PMIC and I think it should work the same on the Boron 2G/3G.

> [@Disabling the Electron red charging LED when not using the LiPo](https://community.particle.io/t/disabling-the-electron-red-charging-led-when-not-using-the-lipo/26604):
>
> If you are in a situation where you have a power supply on VIN that can support 1800 mA and do so very quickly, it is possible to use the Electron without the LiPo battery. One use case for this high or low temperature environments, outside of the range of the LiPo. I think I discovered the settings you must make to disable the battery and charging completely. I had missed the watchdog before, and that would cause the charging light to start blinking at odd times, including when sleeping. Then …

---

<div class="post-metadata">

**Author:** ![slacker89](https://avatars.discourse-cdn.com/v4/letter/s/9de053/32.png) [@slacker89](https://community.particle.io/u/slacker89)\
**Post date:** [March 31, 2019, 6:27am UTC](https://community.particle.io/t/boron-charge-fault-question/48576/4 "2019-03-31T06:27:01Z")

</div>

@rickkas7 thanks!

I tried this on my Boron unit and ran into some issues. Fire I assume `Wire3` is replaced with `Wire`? It seems that “Wire3” isnt defined for Boron. After added the `Write.write()` it seems my Boron gets stuck on breathing white. I guess it gets stuck somewhere and doesn’t reach Particle.connect(). Removing the `Wire.write()` reverts the issue.

```auto
SYSTEM_MODE(SEMI_AUTOMATIC);
void setup() {
  // Disable charging
  #if defined(PLATFORM_BORON) || defined(PLATFORM_ELECTRON_PRODUCTION)
    PMIC pmic;
    pmic.begin();
    pmic.disableCharging();
    // 0b11001110 = disable watchdog
    // 0b11000110 = disable watchdog and charge safety timer
    byte DATA = pmic.readChargeTermRegister();
    DATA &= 0b11000110;
    // This would be easier if pmic.writeRegister wasn't private (or disable
    // charge safety timer had an exposed method
    Wire.beginTransmission(PMIC_ADDRESS);
    Wire.write(CHARGE_TIMER_CONTROL_REGISTER);
    Wire.write(DATA);
    Wire.endTransmission(true);
  #endif

  // Set up cellular connection
  #if (PLATFORM_ID == PLATFORM_BORON)
  	Cellular.setActiveSim(EXTERNAL_SIM);
  	Cellular.setCredentials(gCellularAPN);
  	Particle.keepAlive(gKeepAlive); // This is needed if we are using Roger's network
    Particle.connect(); // Make sure connect is alway last since we want to register all cloud components first
  #elif (PLATFORM_ID == PLATFORM_ELECTRON_PRODUCTION)
    cellular_credentials_set(gCellularAPN, "", "", NULL);
    Particle.keepAlive(gKeepAlive); 
    Particle.connect();
  #endif
}

```

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [March 31, 2019, 8:48am UTC](https://community.particle.io/t/boron-charge-fault-question/48576/5 "2019-03-31T08:48:47Z")

</div>

The block diagram in the [Boron datasheets](https://docs.particle.io/datasheets/cellular/boron-datasheet/#block-diagram) shows this

 ![image](https://us1.discourse-cdn.com/flex026/uploads/particle/original/3X/e/e/ee67f4ef8137993dea8cf5954316868091b0d7a9.png)  
and these are not the `Wire` pins.

But you may want to try `Wire1` instead.

---

<div class="post-metadata">

**Author:** ![rickkas7](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/rickkas7/32/8681_2.png) [@rickkas7](https://community.particle.io/u/rickkas7)\
**Post date:** [March 31, 2019, 11:26am UTC](https://community.particle.io/t/boron-charge-fault-question/48576/6 "2019-03-31T11:26:24Z")

</div>

Sorry, yes, it should be Wire1 on the Boron, not Wire3.
