meklort / bcm5719-fw

BCM5719 firmware reimplementation
BSD 3-Clause "New" or "Revised" License
82 stars 10 forks source link

Add recovery instructions #112

Open hughsie opened 4 years ago

hughsie commented 4 years ago

I know from real feedback from end users that flashing hardware makes a lot of people nervous. This is going to be specially so for firmware explicitly not from the chip vendor.

In the README file there is a big warning followed by:

...an external programmer is required, or the external flash must be temporarily disabled during boot-up

...but it doesn't actually say which programmer would be required -- and because the SPI flash is a 2.7V part I'm guessing someone is going to connect up a typical 3.3V programmer and blow it to bits. Perhaps show the user a link of the programmer that you use making it explicit it needs to be 2.7V.

I think if the README was also expanded with, for example, a diagram showing the jumper to set for device recovery that would make a lot of people more likely to try this firmware. Thanks!

meklort commented 4 years ago

During firmware development, I ran into a number of cases where I bricked the network card on the Talos II. This happens when incorrect settings are programmed into certain registers on the NIC, resulting in the card dropping off the PCI bus. When this happens, the only way to recover is to either (1) stop the card from booting off the NVRAM or (2) invalidate the firmware in NVRAM.

Unfortunately, on the Talos II and Blackbird, there are no jumpers to enable/disable the NVM. Additionally, there are no inline resistors and so an external device cannot easily overdrive the SPI signalling.

I'll take a look at the Dell NIC and see if there is a good way to recover that doesn't require soldering, but as it stands soldering is required for the blackbird products. To be clear: Any firmware images release have been tested to boot properly and should not have this issue. The only time I'd expect a possible bricking event is if a user is modifying and rebuilding stage1. That said, all other bad flashes are recoverable without an external programmer or soldering.

In any case, adding the above recovery procedure does make sense, if only to document it. I'll see what the best way to add

hughsie commented 4 years ago

Additionally, there are no inline resistors and so an external device cannot easily overdrive the SPI signalling

Hmm, that's unfortunate.

but as it stands soldering is required

I used to do PCB rework under a 'scope for job :)

adding the above recovery procedure does make sense

Many thanks, and sorry for adding to the every-growing list of things I ask from you.

meklort commented 4 years ago

I used to do PCB rework under a 'scope for job :)

In this case, a scope is definitely a requirement.

Many thanks, and sorry for adding to the every-growing list of things I ask from you.

The comments a good - they help me see what issues users are running into so that the documentation / quality can improve. Plus, anything I fix here means you have more time to help me with fwupd.