Flashing the LSI2308 on an X9SRH-7F to IT mode?

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

TheLastBoyscout

New Member
Apr 22, 2013
3
1
0
Hi,

I just got a Supermicro X9SRH-7F with an E5-1650 (as a replacement for an X8DTL-3 with 2x L5518). The LSI2308 has the IR firmware 'installed'. The old board had a little jumper to put the LSI 1068E into IT mode (for ZFS/all-in-one use), but there is basically no information about the LSI2308 chip in the X9SRH-7F manual. Supermicro currently does not list any SAS updates on their website.
I assume I have to cross-flash the firmware to get to IT mode?

Can I just cross-flash any LSI2308 IT firmware (e.g. 9205-8e or 9207-8i)? Is there anything special to watch out for (I have cross-flashed the IBM ServeRAID M1015 to an 9211-8i in the past)?

Thanks,
-TLB
 

TheLastBoyscout

New Member
Apr 22, 2013
3
1
0
Well, I found out myself. Here are the step-by-step instructions for anyone else running into this issue:

1.) Download the PH15-IT.rar FW file from ftp://ftp.supermicro.com/Driver/SAS/LSI/2308/Firmware/IT/ (or whatever newer version exists)
2.) Disconnect all storage and boot devices, write down the current SAS ID (or take a picture of it)
3.) Extract the contents of the ..\PH15\UEFI\ folder of the PH15-IT.rar archive to an empty USB stick (the stick can be rather small as the files need ~1.4 MB)
Optional: Remove the following line from SMC2308T.nsh if you want to avoid the long delay during boot (if you're not using an all-in-one system, you probably want to keep the LSI BIOS):
Code:
sas2flash.efi -b mptsas2.rom
3.) Change the 'BIOS' settings to only allow one boot device 'Built-in UEFI shell' and boot:

4. When booted correctly into the UEFI shell, it should look like this:

5. Now change to the USB flash drive:

6. Execute the update script:

7. When the update is almost completed, you will be prompted to enter the last 9 digits of the SAS ID (don’t do the nine zero’s from the picture!):

7. Remove the USB stick with the FW update files, and re-attach all the storage and boot devices.
8. Reboot
 
  • Like
Reactions: NeverDie

TheLastBoyscout

New Member
Apr 22, 2013
3
1
0
Yeah, the controller is in IT/HBA mode and life is good, right?
Well, not if you're running an all-in-one system with OpenIndiana. :mad: I am running OI151a7 and it seems that the developers have not included the drivers for the LSI2308 yet as none of the drives connected to the LSI2308 was visible in OI.
Some more digging and it turns out that the mpt_sas driver is simply not associated with the chips device ID.

The following command (enter as root) does the trick of assigning the mpt_sas driver to the LSI2308:
Code:
update_drv -a –i "pci15d9,69l" mpt_sas
Now all connected drives show up fine and I can import the pool that was originally connected to the LSI 1068E on the original board (see 1st post).
 

Live Axle

New Member
Jul 15, 2013
5
0
1
Hi .

I have the same controller on my ASRock Z77 Extreme 11 . I didn't take note of the SAS address prior flashing it to IT mode (with -e 7 which erased the SAS address) .
I looked for it all over the board and the manuals , nothing . And ASrock's technical support is useless .
I gave up and opened the SB heatsink , I found the LSI chip with a 9 digit number (500007870) . Can anyone tell me how can I find the first 7 numbers ?

Thank you .
 

Aluminum

Active Member
Sep 7, 2012
431
46
28
Hi .

I have the same controller on my ASRock Z77 Extreme 11 . I didn't take note of the SAS address prior flashing it to IT mode (with -e 7 which erased the SAS address) .
I looked for it all over the board and the manuals , nothing . And ASrock's technical support is useless .
I gave up and opened the SB heatsink , I found the LSI chip with a 9 digit number (500007870) . Can anyone tell me how can I find the first 7 numbers ?

Thank you .
I could be wrong about this, but I'm pretty sure a SAS address is just like a MAC address, its supposed to be globally unique, but it really only has to be unique on the local network.

So I believe you can make the card's address whatever you want it to be, as long as its a valid format.
 

Live Axle

New Member
Jul 15, 2013
5
0
1
Thanks !

I actually put it as 0000000000000000 . When rebooted into linux and check dmesg , it assigned itself as 5000000080000000 , all HDDs are detected and -uptil now- working fine .

Now comes the true problem -the reason why I decided to flash in the first place- , I'm using it in a Linux file server , and whenever there is a heavy IO on the controller (Restore a backup from a RAID10 to a RAID0 on the same controller) it hangs after a while and drops ALL HDDs that are attached to it crashing both RAIDs .

a dmesg log as soon as OS starts up :

[ 3.014772] mpt2sas version 15.100.00.00 loaded
[ 3.015005] mpt2sas0: 64 BIT PCI BUS DMA ADDRESSING SUPPORTED, total mem (32631980 kB)
[ 3.015045] mpt2sas 0000:05:00.0: irq 68 for MSI/MSI-X
[ 3.015049] mpt2sas 0000:05:00.0: irq 69 for MSI/MSI-X
[ 3.015051] mpt2sas 0000:05:00.0: irq 70 for MSI/MSI-X
[ 3.015054] mpt2sas 0000:05:00.0: irq 71 for MSI/MSI-X
[ 3.015109] mpt2sas0-msix0: PCI-MSI-X enabled: IRQ 68
[ 3.015111] mpt2sas0-msix1: PCI-MSI-X enabled: IRQ 69
[ 3.015111] mpt2sas0-msix2: PCI-MSI-X enabled: IRQ 70
[ 3.015112] mpt2sas0-msix3: PCI-MSI-X enabled: IRQ 71
[ 3.015113] mpt2sas0: iomem(0x00000000f7940000), mapped(0xffffc90007d80000), size(65536)
[ 3.015114] mpt2sas0: ioport(0x000000000000e000), size(256)
[ 3.399107] mpt2sas0: Allocated physical memory: size(16686 kB)
[ 3.399110] mpt2sas0: Current Controller Queue Depth(9979), Max Controller Queue Depth(10240)
[ 3.399111] mpt2sas0: Scatter Gather Elements per IO(128)
[ 3.593668] mpt2sas0: LSISAS2308: FWVersion(16.00.00.00), ChipRevision(0x05), BiosVersion(00.00.00.00)
[ 3.593671] mpt2sas0: Protocol=(Initiator,Target), Capabilities=(TLR,EEDP,Snapshot Buffer,Diag Trace Buffer,Task Set Full,NCQ)
[ 3.593755] mpt2sas0: sending port enable !!
[ 16.092832] mpt2sas0: host_add: handle(0x0001), sas_addr(0x5000000080000000), phys(8)
[ 16.592281] scsi 0:0:0:0: SATA: handle(0x0009), sas_addr(0x4433221100000000), phy(0), device_name(0x0000000000000000)
[ 16.842112] scsi 0:0:1:0: SATA: handle(0x000a), sas_addr(0x4433221101000000), phy(1), device_name(0x0000000000000000)
[ 18.341716] scsi 0:0:2:0: SATA: handle(0x000b), sas_addr(0x4433221103000000), phy(3), device_name(0x0000000000000000)
[ 22.340349] scsi 0:0:3:0: SATA: handle(0x000c), sas_addr(0x4433221102000000), phy(2), device_name(0x0000000000000000)
[ 24.338453] scsi 0:0:4:0: SATA: handle(0x000d), sas_addr(0x4433221104000000), phy(4), device_name(0x0000000000000000)
[ 24.587836] scsi 0:0:5:0: SATA: handle(0x000e), sas_addr(0x4433221105000000), phy(5), device_name(0x0000000000000000)
[ 26.087346] scsi 0:0:6:0: SATA: handle(0x000f), sas_addr(0x4433221107000000), phy(7), device_name(0x0000000000000000)
[ 26.336777] scsi 0:0:7:0: SATA: handle(0x0010), sas_addr(0x4433221106000000), phy(6), device_name(0x0000000000000000)
[ 30.963926] mpt2sas0: port enable: SUCCESS


And this one is after it crashes :

[ 352.898758] mpt2sas0: _base_fault_reset_work : SAS host is non-operational !!!!
[ 353.948174] mpt2sas0: _base_fault_reset_work : SAS host is non-operational !!!!
[ 354.997545] mpt2sas0: _base_fault_reset_work : SAS host is non-operational !!!!
[ 356.046939] mpt2sas0: _base_fault_reset_work : SAS host is non-operational !!!!
[ 357.096327] mpt2sas0: _base_fault_reset_work : SAS host is non-operational !!!!
[ 358.145724] mpt2sas0: _base_fault_reset_work : SAS host is non-operational !!!!
[ 358.146569] mpt2sas0: _base_fault_reset_work: Running mpt2sas_dead_ioc thread success !!!!
[ 358.148062] mpt2sas0: removing handle(0x0009), sas_addr(0x4433221100000000)
[ 358.161885] mpt2sas0: removing handle(0x000a), sas_addr(0x4433221101000000)
[ 358.163569] mpt2sas0: removing handle(0x000b), sas_addr(0x4433221103000000)
[ 358.165741] mpt2sas0: removing handle(0x000c), sas_addr(0x4433221102000000)
[ 358.167359] mpt2sas0: removing handle(0x000d), sas_addr(0x4433221104000000)
[ 358.169035] mpt2sas0: removing handle(0x000e), sas_addr(0x4433221105000000)
[ 358.169799] mpt2sas0: removing handle(0x000f), sas_addr(0x4433221107000000)
[ 358.187821] mpt2sas0: removing handle(0x0010), sas_addr(0x4433221106000000)
[ 358.332109] mpt2sas0: sending diag reset !!
[ 358.628760] mpt2sas0: diag reset: FAILED
[ 359.420389] Modules linked in: ib_srpt target_core_pscsi target_core_file target_core_iblock iscsi_target_mod target_core_mod btrfs fuse loop xfs raid6_pq crc32c libcrc32c zlib_deflate xor raid0 md_mod iTCO_wdt iTCO_vendor_support mxm_wmi evdev psmouse serio_raw pcspkr i915 e1000e intel_agp ptp intel_gtt pps_core drm_kms_helper lpc_ich drm i2c_i801 i2c_algo_bit i2c_core mperf wmi button video processor ext4 crc16 mbcache jbd2 sd_mod ahci libahci libata firewire_ohci firewire_core crc_itu_t ehci_pci mpt2sas xhci_hcd ehci_hcd raid_class scsi_transport_sas usbcore usb_common scsi_mod


It has been driving me crazy for 4 days ! Any hint will be alot of help .
 
Last edited:

Kells

New Member
Jul 19, 2013
4
1
0
Just want to say great guide, it helped me out trying to figure out the process on my X10SL7-F. Flashed to IT mode and it's working great with my zfs pool now!
 
  • Like
Reactions: NeverDie