MSOM USB causing infinite boot loop

I'm trying to find out the root cause of this issue. My MSOMs are getting stuck in a boot loop. The M404 has been working and taking USB flash updates for about a week. I had just flashed new firmware over USB, then the MSOM starts rebooting constantly. It looks like a brownout, which occurs ~500 ms after the initial power-up. It established a serial USB connection with my computer briefly, but not long enough to get any logs. When unplugged from USB it never connects to the cloud, and I think it's still looping.

Both VCC (3.8V) and 3.3V power supplies are more than enough for the MSOM, and my power supply seems stable. I'm not using VBAT. I did remove the decoupling caps on my board. Had to do it, there was mechanical interference. I first suspected that it would fail when starting the radio. However, it's also been working for a week and connected to the cloud. I also tried disabling the radios. I suspect it's related to USB power and the PMIC. However, I set the PMIC parameters in my firmware. I'll put my PMIC settings below. I've also tested with the B404 on my board and that works fine.

Luckily, I can put the MSOM into boot mode and it will stay stable enough to flash. I'm hoping I can salvage a couple of MSOMs. I'm hoping someone will know the answer! Cheers.

Here is my PMIC setup:
SystemPowerConfiguration conf = System.getPowerConfiguration();
// Enable detection of the bq24195 PMIC on M SoM (requires I2C on D0/D1).
conf.feature(SystemPowerFeature::PMIC_DETECTION);
conf.feature(SystemPowerFeature::USE_VIN_SETTINGS_WITH_USB_HOST);
conf.feature(SystemPowerFeature::DISABLE_CHARGING);
conf.powerSourceMaxCurrent(2000);
conf.powerSourceMinVoltage(3600);
// Battery charge current. Since charging is disabled, this is moot,
// but we can set it to 0 so there's no accidental trickle.
conf.batteryChargeCurrent(0);
conf.batteryChargeVoltage(4112);
int result = System.setPowerConfiguration(conf);
Log.info("System.setPowerConfiguration() result = %d", result);

  • Did you build your own power supply?
  • Are the USB D+ and D- lines connected to your bq24195?
  • What is the size of your ILIM resistor on your bq24105?
  • USB2 or USB3?

It's very tricky to get enough power to power the M-SoM from USB with no battery. The M.2 SoM eval board requires an external power supply or battery.

The Muon can power the M-SoM by USB only, but it does so by using a USB C PD chip and switching the USB port to 9V to get sufficient power.

  • I did build my own power supply. Bucking down from a 24V rail. USB power only goes into the VUSB pin. I'm including a couple of screenshots from the schematic to clarify.
  • USB D+ and D- lines are connected directly from a USB-C port to the MSOM. I also have VUSB wired since this is a migration from the BSOM.
  • There is no external PMIC in my design. I was under the impression that the PMIC was included in the MSOM.
  • I'm in DFU mode and Windows is telling me it's USB Version 2.0 (but Device is Full-Speed only)

I'm not trying to get enough power from USB. I have an independent power supply, which is performing well with no dips in voltage and adequate current. Thanks for taking an interest! Really appreciate it!


There is no PMIC on the B-SoM or M-SoM but if you are not using a battery you don't need it. But also that means that the charging settings in your code won't do anything.

It sounds like you have enough current, so probably one of the other parameters like slew rate (rise time), ripple, etc. is violated, causing the M-SoM to not boot. It's much more particular about those things than the B-SoM, and also uses significantly more power on the 3V3 rail than the B-SoM.

You may end up needing a supervisory reset chip on your board to hold the SoM in reset until the power stabilizes. We have one on the Muon and also on the Photon 2 (which uses a similar RTL872x MCU).

1 Like

I looked into the power-up timing on my oscilloscope. For 3.3V, I'm seeing a 1.7ms-2.2ms rise time. With a slew rate from 1.5V to 3.3V of 1.1ms. That makes sense, as we see the MSOM boot for ~1 second before restarting. I took some oscilloscope measurements at 1 second and I did notice some ripple in voltage which stabilized quickly.

I tried one more test and added an LED to 3.3V, it's not lighting, but it is drawing more a lot more current and bringing down my 3.3V rail to 0.35V. Looks kind of like a partial short. I removed the MSOM and everything works again. The MSOM is still boot-looping without the LED. Not sure what to make of it.

I'm using an ST LD1086DT33TR LDO for 3.3V.

You could be right. I'm planning to put a supervisory/reset IC on my next gen PCB. I just wish I knew for sure this was the issue before rolling my next batch of boards.