LSI 9206-16E Soft Brick

  • Thread starter Deleted member 135857
  • Start date
Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.
D

Deleted member 135857

Guest
Hey folks,

Hoping someone can help me out here. I have a 9206-16E that I've managed to soft brick. I can't get either controller to fully come up. I have @fohdeesha's awesome live linux setup and see that the SBR is all out of whack with everything set to 0. My guess is that this is preventing me from flashing any firmware (pretty much any route I've taken to flash the card fails). I'm hoping someone with the same card could provide their SBR (either a backup or plain text).
 
D

Deleted member 135857

Guest
TY very much!

Seems to be a step in the right direction. I wrote the SBR using lsirec and was able to get one of the controllers back up. The other controller keeps throwing an error when trying to flash the firmware using lsiutil.

I'm loosely following the lsirec brick recovery guide: GitHub - marcan/lsirec: LSI SAS2008/SAS2108 low-level recovery tool for Linux

To make sure nothing was off, I used sas2flash to dump the firmware from the working controller, used it to hostboot the problematic controller using lsirec, and was able to get the controller to show up in lsiutil. Going through the flash erase steps, but when I get to the step of flashing the firmware (option 2) I'm getting checksum errors for the image. I continue and the flash bombs with "IOCStatus = 0003 (Invalid SGL)"
 
D

Deleted member 135857

Guest
Alright, I was finally able to get the card fully recovered. Haven't tested with any drives yet, but I'm at least back to normal behavior otherwise. The crux of the issue is that, I'm an idiot that can't read :D.

Here's a loose guide for anyone coming along down the line.

Setup fohdeesha's live boot.
  1. Follow the instructions under "Preparation" here: Introduction - Fohdeesha Docs.
  2. In the ZIP file that you'll download from there is a Linux ISO. Use rufusto write the image to a USB drive.
    1. You may be prompted by rufus to download additional packages.
  3. Boot the Linux distro up.
Grab files:
I stored all the files I needed on a second USB drive so I could easily move back and forth from a working PC in case I missed anything.
  1. The SBR linked above (make sure you have the proper SBR for your card if you aren't reading this specifically for a 9206-16e).
  2. The P20 firmware for the 9206-16e from Broadcom(direct download link).
    1. If you do a general search, there are two releases of P20 for this card. You want the one that is "9206-16e" and NOT the one with "9206_16e". Even though "9206_16e" shows a later release date, it is 20.00.06.00 (can confirm in the release notes of the downloaded file) and "9206-16e" is 20.00.07.00.
    2. 1732559552779.png
  3. Copy the files over. You should have '9206.SBR' (from LSI 9206-16e) and '9206-16e.bin' from the Broadcom download.
Mount the USB:
In the Linux live environment:
  1. Elevate to root access
    Code:
    sudo su -
  2. Find the drive ID for the secondary USB:
    Code:
    blkid
    1. Find the partition for the secondary USB.
  3. Create a mount point:
    Code:
    mkdir /media/usb
  4. Mount the drive:
    Code:
    mount /dev/sdxy /media/usb
    1. Set 'xy' to the one shown for the partition using blkid
  5. Verify you can see the files:
    Code:
    ls /media/usb
    1. Making sure you can see '9206.SBR' and '9206-16e.bin'
Recovery:
Follow the lsirec guide.

Notable notes:
  1. Work on one controller at a time. This board has two controllers. In my case, they were both soft-bricked so neither showed up in sas2flash nor lsiutil. My advice, to help keep things simple and prevent mistakes, is to work on one controller at a time and take the other offline. You can a controller offline using the 'unbind' and 'halt' commands from the guide and mentioned below.
  2. Start with sas2flash to find the controller that is broken:
    Code:
    /root/sas2flash -listall
    1. I had variations of the controller not showing at all or the controller showing up but with "firmware failed" error messages. If they show up, you can get the PCI address from here. If not, use 'lspci' in the next step.
  3. Run lspci | grep Broadcom to get your PCI address. You'll need to pad the address with leading zeros.
    1. e.g. - the controller address from lspci is '0b:00.0' then the address for the lsirec commands is '0000:0b:00.0'
    2. If the controllers don't show up here, throw the card in the trash, buy a new one, and move on with your life.
  4. When you get to option 46 is lsiutil make a new file. This is not to upload the correct firmware, but to backup the firmware current on the card. Someone in my house (me) didn't realize this when doing it 12 times and kept overwriting my good firmware file without realizing it.
  5. My order of operations using the example PCI address from above:
    Code:
    # Move to the lsirec directory
    cd /root/lsirec
    echo 16 > /proc/sys/vm/nr_hugepages
    
    # These two commands essentially stop the system from talking to the card in the background
    ./lsirec 0000:0b:00.0 unbind
    ./lsirec 0000:0b:00.0 halt
    
    # Backup the current SBR; just in case
    ./lsirec 0000:0b:00.0 readsbr /media/usb/sbr_backup.bin
    
    # Write the known-good SBR
    ./lsirec 0000:0b:00.0 writesbr /media/usb/9206.SBR
    
    # Boot the card up using the firmware. This does not flash anything to the card.
    ./lsirec 0000:0b:00.0 hostboot /media/usb/9206-16e.bin
    
    # PCI rescan to get the system to pick the card back up.
    # Give it about 15 seconds to pick the card back up before running the lsiutil command.
    ./lsirec 0000:0b:00.0 rescan
    
    # Move to the lsiutil directory
    cd /root/lsiutil
    ./lsiutil -e
    
    # Pick your controller. If you followed my advice to disable the other one, you'll only have one listed.
    1
    
    # Selection option 46 for "Upload FLASH section
    46
    
    # Select option 5 for "Complete (all sections)"
    # This command will pull the current firmware off the card and write it to a file.
    # This is not to upload the correct firmware. Give the file a new name
    5
    /media/usb/firmware_backup.bin
    
    # Back out to the main menu by hitting enter (should have options 1-99)
    # Pick the erase NV storage option
    33
    
    # Erase flash
    3
    
    # Erase manufacturing data
    8
    
    # Back out to the main menu by hitting enter (should have options 1-99)
    # Pick the download firmware option. This is to copy the good firmware to the card
    2
    
    # Will ask for the filename; provide the path to the good firmware.
    /media/usb/9206-16e.bin
    
    # My card did not have a boot rom installed, so I skipped that step.
    # Follow the prompts to quit out of lsiutil completely
    # Once back to the standard command prompt, reset the controller.
    /root/lsirec/lsirec 0000:0b:00.0 reset
    
    # Wait about 30 seconds for the controller to restart, then rescan to get the OS to pick it up
    /root/lsirec/lsirec 0000:0b:00.0 rescan
    
    # Verify everything looks good.
    # This calls a script that is running '/root/sas2flash -c 0 -list'
    info
  6. Assuming everything looks good after running info, then I'd suggest a system shut down and then powering back on before moving on. Make sure everything for the controller you were just working on looks good before moving on. For extra credit, make sure all the SAS ports are enabled:
    Code:
    /root/lsiutil/lsiutil -e
    # Select a controller
    # Check the port states
    68
    1. Make sure all the ports are set to enabled (Link Enabled = Yes). If they are not, refer to AoS's YouTube video.
Really want to think @fohdeesha for their comprehensive toolset, marcan for the lsirec tool which was crucial in all this, and @Dave Corder who's post here got me on the right track to get all this done.
 
Last edited by a moderator: