How to find if VUSB is powered or not from firmware?

I want to find if USB IN is powered or not from the Firmware. Is that possible. Please help.

@manihk, for which device - Photon or Electron?

I’ll assume you’re talking about the Electron. This is not possible on the Photon or Core because they don’t have a power management chip (PMIC). Also, I may not have done this in the preferred manner; I tried it for fun because I’d never done it before and was curious. It seems to work for me.

The docs are here, sort of:

#include "Particle.h"

bool isUsbPowered(); // forward declaration

PMIC pmic;
bool lastPowerState = false;

void setup() {

void loop() {
	bool powerState = isUsbPowered();
	if (powerState != lastPowerState) {
		Particle.publish("usbPowered", (powerState ? "true" : "false"), 60, PRIVATE);
		lastPowerState = powerState;


bool isUsbPowered() {
	byte systemStatus = pmic.getSystemStatus();

	return ((systemStatus & 0xc0) == 0x40);

//System Status Register
//NOTE: This is a read-only register
--- VBUS status
7: VBUS_STAT[1]	| 00: Unknown (no input, or DPDM detection incomplete), 01: USB host
6: VBUS_STAT[0]	| 10: Adapter port, 11: OTG
--- Charging status
5: CHRG_STAT[1] | 00: Not Charging,  01: Pre-charge (<VBATLOWV)
4: CHRG_STAT[0] | 10: Fast Charging, 11: Charge termination done
3: DPM_STAT		0: Not DPM
2: PG_STAT		0: Power NO Good :(
				1: Power Good :)
1: THERM_STAT	0: Normal
				1: In Thermal Regulation (HOT)
0: VSYS_STAT	0: Not in VSYSMIN regulation (BAT > VSYSMIN)
				1: In VSYSMIN regulation (BAT < VSYSMIN)ault is 3.5V (101)
0: Reserved

@peekay123 For photon. I understand that it doesnot come with a power management chip. I am building a product on photon in which I have a MCP73831 for charging. No special IC for management. I have replied to you in detail on the same in the other related question that I have raised in the forum.

@rickkas7 Its for photon.

@manihk, I answered you in the other topic. Let’s not have two topics going on this to reduce confusion.