# FLASH IT
The only script you'll need for flashing LSI SAS2-based adapters.
During execution the script will:
* Download and compile all the packages and software it needs
* Download P20 IT mode firmware
* Download boot ROMs
* Backup the current SBR and flash regions from your device
* Backup the SAS and PCI addresses for reference
* Flash modified SBR
* Flash IT firmware
* Flash BIOS/signed UEFI boot ROM
* Sets the original SAS address post-flash to retain multi-adapter support
Just a single reboot is necessary after the script completes.\*
Tested on R320, R420, R720xd with RancherOS 1.5.4 (kernel 4.14) and the Ubuntu 18.04 console, but should work with anything that has bash and apt.
\*_You will need to move your backups to persistent storage before rebooting or they will be lost_
## Supported Devices
* PERC H310 Mini Monolithic
* PERC H310 (beta)
* _more coming soon!_
## Should support but untested (plz halp)
* Other cacheless LSI SAS2008 cards
## Prerequisites
* Server or other computer with only the target adapter installed and visible to the OS
* Linux environment with bash and apt that does not rely on the controller (live environment is recommended)
* Internet access from the flashing environment
## Brief background
This script was born from necessity. I've got a pile of 12G Dell servers that need IT firmware and I wasn't about to flash them all manually. Drives were removed for the first server I flashed, but left in for the subsequent machines to no ill-effect. If you're paranoid, remove them. I tried to make the script with as many safeties as possible since this is such a sensitive process, but it's not perfect, as nothing is.
*By downloading and using the scripty bits and associated file(s), you are relinquishing the ability to hold me accountable in any capacity for hardware/software damage or data loss, as well as any moldy pizzas or fruit flies that may manifest in and around your server(s). Use at your own risk.*
## How to
1. Ensure the adapter you want to flash is the only LSI/Avago/rebranded HBA device in the system.
2. Copy `flash-it.sh` to a directory you're okay with making a mess in:
```
wget https://raw.githubusercontent.com/Confusingboat/flash-it/master/flash-it.sh
```
3. Make the script executable:
```
chmod +x flash-it.sh
```
4. Make it go:
```
sudo ./flash-it.sh
```
**Don't forget to save your backups.** They will be saved in `/tmp/` throughout the flashing process.
## Troubleshooting
### It broke half way through and I want it to work again
If the actual flash hasn't been erased or overwritten, just flash the original SBR back by running `restore_sbr.sh` from the same directory you downloaded the other two files into.
This one *is* interactive, but if your backups are in place you can just leave the inputs blank.
1. `wget https://raw.githubusercontent.com/Confusingboat/flash-it/master/restore_sbr.sh`
2. `chmod +x restore_sbr.sh`
3. `sudo ./restore_sbr.sh`
## Testing other adapters
Testing adapters that are currently not on the supported list is super easy! Just change the `ADAPTER_PATTERN="H310"` line, where `H310` is a regex pattern that matches your adapter. Please let me know if you test another adapter with success or failure, with the following information:
* Adapter model
* Exact pattern used
* Whether it succeeded or failed
* Other notes about your experience
PRs are also welcome!
## Credit where it is due
The creation of this script would not have been possible without a PDF I found by [/u/fourlynx](https://www.reddit.com/u/fourlynx) or the [lsirec tool](https://github.com/marcan/lsirec) and [other info](https://marcan.st/2016/05/crossflashing-the-fujitsu-d2607/) by [Hector Martin](https://marcan.st/about/).