My Portenta H7 is bricked: DL2 is always on (the red LED, for charging). No USB anymore (no device as UART, no sound on Windows PC). Double reset pressed does not enter anymore flash loader (never a green fading LED).
Nothing works anymore.
What is this?
Any chance to recover?
(but even BOOT pin via breakout board does not help, the STM chip cannot be connected, neither with an external ST-Link via SWD - but another MCU module works fine).
It looks like: the PMC (U10, MC34PF1550A4EP) is broken: always in charging mode and not powering anymore the STM MCU (?).
Pretty sensitive board: you can fry it so easily (maybe a bug in my FW? but now all is dead!).
Thank you. But no progress:
my board is bricked: connecting ST-Link (via SWD on carrier board) - not possible to access.
All works fine with another MCU module.
So, my one is broken.
And this happened just by flashing a "buggy" FW (my project).
Portenta H7 is very sensitive!
--> you can kill it with your FW project flashed, e.g. try to do something in setup(), let if fail (e.g. SD card initialization, do a while(1) on error - and you might lose your flash loader, not possible to access board again).
I see on my other working MCU module, with extended FW (e.g. SD Card, TFTP server ...) - it starts also behaving "strange":
I have to press the reset button now so often and so fast just to enable the flash loader (green LED)
Very often flashing FW fails: after erase and some blocks written - it complains with "error"
when it was fine - I press the reset button just to reboot the MCU - a "bad file descriptor" message pops up.
I think I will give up with this board. It is wasting my life time. Even TFTP to add to my project was such a disaster (so many missing things in Arduino library). And at the end, compile clean - but nothing works.
This board:
without a real debugger
a missing BSP (Board Support Package)
and not usable with other IDEs (e.g. IAR, Cube32IDE - I use VSMicro which is already better as Arduino IDE)
makes it almost impossible to use this board for serious and industrial projects.
It is such a nice piece of HW with such a bad SW (and IDE), and the support for this board is far away in the stars.
FYI,
I could fix my issue and board is alive again. "uffff".
Issues
There was voltage on 5V (5V) and VIN (4.8V), but no voltage on VCC (really just mV).
(the I2C pull-ups on (internal) I2C0 (on breakout board as I2C1) were powered with 3.3V)
The ST-Link debugger could not connect (sure, no voltage on debugger, JTAG pin 1, to probe the target voltage)
the CHG LED (from PMIC, LD2, orange) was on all the time (no flashing, permanent on)
My Solution
I have programmed on another Portenta H7 to have the I2C available (to read and write registers).
I could read the PMIC registers via I2C from my working board (I have it as reference, or see also here: GitHub - olback/h7-bootloader-rev )
I have connected the I2C from a working board to the failing one: read the PMIC registers and compare. YES, there were some differences!
I have programmed via I2C some PMIC registers and: "et voila: the power was back".
Now I could connect via ST-Link (and SWD). What I saw: the entire STM flash memory was empty (all 0xFF), also no bootloader on the board.
I have flashed an original boot loader image (I have read the entire flash memory on a working board before).
And now my board is back and working as the other one.
How could the STM flash lose the bootloader?
How could the entire STM flash be erased?
(but I know this issue also from some other NUCLEO boards: they can lose the content, no idea when and why - but happened several times already).
If you are interested, here the PMIC registers (all) of a working board and my failing one:
first of all thank you that you have written the answer for your own problem, in spite of nobody could help/answered you.
I have probably the same failure with the bootloader. I tried to communicate with the PMIC chip via I2C from another mcu, but i couldn't find any I2C (searched for the specific address 0x08 and other...)chips on the portenta. I connected 5V to Vin and i could measure 3V3 on the test pad under the NXP PMIC chip. I got the same measurement on VCC as you, so there isn't any Voltage on that pin.
Due to the fact that i can't establish an I2C connection, i can't restore the PMIC chip.
Maybe I am missing something and you can help to restore the board?
There are 3 I2C devices. The I2C on the MCU Module header is not the one used to access the PMIC chip.
I use the breakout board: there is SDA1, SCL1: this is the one for internal I2C bus with PMIC on it.
Not sure, maybe the I2C on this tiny white connector might be the I2C bus for PMIC.
You can figure out by measuring voltage on I2C signals: the internal I2C bus has pull-ups, the other two (user) I2C do not have.
It could be also a bit tricky to address the PMIC: the slave address 0x08. But this is also the value for a Master Code. If your I2C driver on other device is "smart" and sees you want to use a slave address which is a Master Code: the Master Code is sent in front of an I2C transaction, without to check for ACK/NACK. Try to send the slave address twice, 2x 0x08 where the first one acts as a Master Code, the second as the slave address.
You could also try to "see" other devices on MCU module: there are other chips, e.g. the Crypto (ox48) and MIPI-USB-C bridge (addresses 0x54, 0x58, 0x70, 0x72, ...). But no idea where the Chip ID is.
BTW: a register read for PMIC is not a simple I2C read transaction: it is a two-phase transactions as:
I can only read one byte at a time. A consecutive read of several registers does not seem to work on PMIC (it does not increment register address).
So, I guess:
you have not found the right I2C bus or your read transaction is not correct. A single I2C read does not work: you had to have a "prefix" with writing the register address and a RESTART when you change to a read transaction.
Thank you for your detailed informations. You were right, i was on the wrong i2c bus. The i2c bus on the white connector is the same as the on on the mcu header (ic2_3).
I connected the other mcu to the i2c_1 (internal) bus, but i still couldn't see any device on that bus. In the schematic (page 9 ) it looks like the i2c_1 bus is powered by 3V1 and not 3V3 (https://content.arduino.cc/assets/Schematic%20PDF_SL-ABX00042.pdf). I got no Voltage on 3V1 rail, so the i2c isn't powered. At the end there should be 3V3 on the i2c lines from the other mcu.
I tried to read other i2c devices with my sketch and i could see those devices on the bus. I tried to talk to different addresses and waited for the ACK message.
Right now im only having the portenta and the vision shield, but i bought the breakout board. When it arrives, testing should be a lot easier!
I tried to read the PMIC registers with the breakout board, but it wasn't successful. I connected the other mcu on on the SDA1 and SCL1 pins.
I measured only 1.2V on the 3V1 rail, which pulls the internal I2C high as you said (like in the schematics):
(the I2C pull-ups on (internal) I2C0 (on breakout board as I2C1) were powered with 3.3V)
Is the failure maybe bigger, than just corrupted data in the bootloader? I tested it with two other portenta boards which have the same failures.
Due to having a low voltage on the I2C i couldn't communicate to the PMIC chip and activate the other Volatge Rails. Do you have any idea what i did wrong or maybe the PMIC is broken?
I am sorry to hear. A bit lost (no idea).
internal VDD is 3V1. The PMIC should get power from VIN or/and VSYS.
There is a level shifter for the I2C on Video Bridge (U8): but this is 1V8.
So, 1V2 does not make sense, does not seem to be right.
I would guess something else is broken on your board, e.g. an LDO, the power rail.
Even the PMIC is "empty" (not programmed) it should be possible to access via I2C from external, other, board.
I have no idea. Are there any reasonable power voltage, VIN, VSYS?
Do you have a not-bricked board and try to measure on this one (what you should see)?
Even the bootloader is gone (my entire flash was empty): it should be possible to program the PMIC from the outside. Otherwise, such a "chicken and egg" problem would never let program the bootloader.
Maybe, but not sure (and a bit concerned): you trey to power the board not via USB-C, instead via VIN, or provide the 5V on external pin. But before: check carefully if possible (not voltage in the opposite, wrong direction against something else).
But trying to power the board from an external power supply (set the current limiter!), but USB-C not connected (no VBUS), might be possible.
Good luck. I am sorry. But if you get it to work again - please let me know (for my own curiosity).
Thank you.
I measured the voltages on the the pads. The portenta was powered via usb-c.
portenta 1 usb
VBUS: 5.1V
I2C1(SDA,SCL): 1.2V
VIN: 4.8V
VSYS 4.12V
3V1: 1.3V
3V1SW 0V
1V0: 0V (PMIC not configured)
1V8: 0V (PMIC not configured)
1V2: 0V (PMIC not configured)
PWRON: 1.050V on board and the other has 1.4V (Looking at the data sheet page 68: Voltage between .4 V and 1.4 V is not defined,maybe the PMIC is turned off?)
I measured the current that the board draws. It was around 60 mA. The boards gets a little bit warm, but nothing that is serious.
The reason why the portenta is broken now is due to having a short between 3V3 and GND due to two faulty stepper drivers. From the datasheet (PMIC) page 28:
6.2.4 Current limit protection
SWx features high and low-side FET current limit. When current through the FETs go
above their respective thresholds, the FET is turned-off to prevent further increase in
current.
Maybe their current protection isn't as good as they descripe it and the PMIC is broken.
My first thought wasn't that i had a short (i tried two different stepper drivers) and the portenta did power off immediately (nothing got warm). The only thing i could find about the red/orange led was that the bootloader was broken. After the second portenta was broken, i tried to run the setup with an ESP32, which powered the circuit long enough, that i could find the failure.
I try to power the board with an external power supply, where i can limit the current and maybe i am able to talk to the board again.
Theoretically the portenta is a great board, but it is very sensitive as you said earlier in other post.
I will keep you updated, but my hope to recover the boards, sinks every day.