Sun/Oracle Flash Accelerator F40 PCIe Card

Manchmal wird ungeachtet ob ev. etwas noch Wert hat bzw. noch in irgend einer Form verwertet werden kann einfach entsorgt. So ist dies auch passiert mit diesen Sun/Oracle PCIe Karten. Diese waren in Server verbaut und stecken auf einem PCI Slot. Wenn man sich damit nicht auseinander setzt und nachsieht was dies ist, kann das schon mal passieren.

Diese Karten haben 4x 100 GB bzw. verwendbar 4x 93 GB eMLC Flashspeicher verbaut. Die technischen Daten laut Datenblatt sind sehr vielversprechend.

Das einzige „Problem“ welches man hat ist die propäritäre Firmware von Sun/Oracle, dass diese Flashspeicher auch nur als 4x 93GB ansprechbar sind und scheinbar keine andere Konfiguration zulässt. Deshalb hat sich ein Kollege etwas schlau gemacht und ist auf diesen Artikel gestoßen.

Hier wird eine Firmware von LSI/Seagate geflashed und somit die einzelen Flashspeicher im Raid0 geschalten. Damit erreicht man einen Speicher mit 372GB, welcher im Betriebssystem angesprochen werden kann. Den Raid0 macht dabei der Controller auf der Platine, somit muss man sich nicht weiter kümmern und kann die PCI-SSD in jedem beliebigen Betriebssystem verwenden.

Die gefunden Anleitung ist grundsätzlich sehr gut geschrieben, lässt einen Laien aber schnell scheitern. So werden die Installation der einzelnen Tools nicht genau beschrieben. Auch das erneute schreiben der SAS WWID wird nicht erklärt, obwohl der Author auf das Problem eingeht, wenn diese nicht vorhanden ist. Größtes Problem stellt auch die „Herstellung“ einer gemoddeten Firmware dar um die Möglichkeit zu schaffen eine „fremde“ Firmware zu flashen. In der Anleitung werden nicht Adressen angegeben, wo man die Firmware anpassen muss, sondern Daten aus der .bin File. Zudem ist der erste angegebene Datenblock 2x in der .bin vorhanden, was es nicht einfacher macht.

Hier habe ich noch einige nützliche Links zu diesem Thema.
Forum Eintrag zu der Anleitung
lsirec auf GitHub
Firmware für diese und ähnliche Karten und kompilierte Tools für verschiedne Betriebssysteme
3D-Druck Adapter für den „normal“ großen PCI-Slot


Ich habe die gesamte Anleitung zum Installieren, Backupen und Flashen in einer Textdatei zusammen gefasst. Basis war ein Linux Mint 19.3.

********************************************************
/----------------- INSTALLATION  ----------------------/
********************************************************

sudo apt install build-essential unzip -y
mkdir lsi
cd lsi
wget https://github.com/marcan/lsirec/archive/master.zip
wget https://github.com/exactassembly/meta-xa-stm/raw/master/recipes-support/lsiutil/files/lsiutil-1.72.tar.gz
tar -zxvvf lsiutil-1.72.tar.gz
unzip master.zip
cd lsirec-master
sudo make
sudo chmod +x sbrtool.py
sudo cp -p lsirec /usr/bin/
sudo cp -p sbrtool.py /usr/bin/
cd ../lsiutil
sudo make -f Makefile_Linux
sudo cp -p lsiutil /usr/bin/
wget http://blog.r00x.at/wp-content/uploads/2020/pcissd/ddcli
sudo chmod +x ddcli
sudo cp -p ddcli /usr/bin/
cd /home/yourusername

/*******************************************************/
/**    1.bin ist die gemoddete Firwmare               **/
/**    NWD-BLP4-400_13.00.08.00.bin ist die Firmware  **/
/**    welche auf der Karte läuft und am Ende         **/
/**    geflashed wird                                 **/
/*******************************************************/

wget http://blog.r00x.at/wp-content/uploads/2020/pcissd/1.bin
wget http://blog.r00x.at/wp-content/uploads/2020/pcissd/NWD-BLP4-400_13.00.08.00.bin

/*******************************************************/
/**   Alternative Links, falls github down            **/
/*******************************************************/
wget http://blog.r00x.at/wp-content/uploads/2020/pcissd/lsirec-master.zip
wget http://blog.r00x.at/wp-content/uploads/2020/pcissd/lsiutil-1.72.tar.gz

#############################################################
/----------------- END INSTALLATION  -----------------------/
#############################################################

***************************************************
/----------------- BACKUP  -----------------------/
***************************************************

sudo lsiutil -e

	Choose your Card
	Select 46. Upload FLASH section 
	then 5. Complete (all sections).
	Choose a filename: backup.bin

	Choose 18
	Write down current SAS WWID = 500605b0047a3a90 (Example!)
	(Your SAS WWID is also printed on your PCI SSD)
	Press Enter

Exit Isiutil

sudo lspci -Dvvnn |grep LSI
	# PCI Adresse auslesen & Befehle entsprechend anpassen!

sudo lsirec 0000:XX:00.0 readsbr sbr_backup.bin

########################################################
/----------------- END BACKUP!  -----------------------/
########################################################

***********************************************************
/----------------- Create Files  -------------------------/
***********************************************************

sudo sbrtool.py parse sbr_backup.bin sbr.cfg
sudo nano sbr.cfg

	<----------------- Content from sbr.cfg  ---------------------->

		PCIVID = 0x1000
		PCIPID = 0x007e
		SubsysVID = 0x1000
		SubsysPID = 0x0581 (400GB).
		SASAddr = 0x500605B000000000 (SAS WWID from above!)
		/************************************************/
		/*   unfortunate write SASAddr doesn't matter   */
		/*   it's 0000000000000000 anyways - just skip */
		/************************************************/

	<----------------- END Content from sbr.cfg  ---------------------->

sudo sbrtool.py build sbr.cfg sbr_new.bin

################################################################
/----------------- END Create Files  -------------------------/
################################################################

***************************************************
/----------------- Flash  ------------------------/
***************************************************

sudo lsiutil -e

	Choose your Card
	Choose 33. 
	Erase 3. FLASH (take some time)
	then 1. NVRAM 
	and 8. Persistent manufacturing config pages
	Back to mainmenu from lsiutil

	Choose 2
	Select "modified" Firmware: 1.bin
	/* 1.bin is the modified Firmware */

Exit Isiutil

sudo lsirec 0000:XX:00.0  writesbr sbr_new.bin

sudo shutdown -r now

	# instead of rebooting, you can use:

	# sudo lsirec 0000:XX:00.0 reset
	# sudo lsirec 0000:XX:00.0 rescan

after reboot or reset & rescan

********************************************************
/-------------- SAS WWID Write  -----------------------/
********************************************************

sudo lsiutil -e

	Choose your Card
	Choose 18
	Write SAS WWID and press Enter (16 hex digits)

Exit lsiutil

***************************************************
/----------- Flash final Firmware  ---------------/
***************************************************

sudo ddcli -listall
sudo ddcli -c 1 -updatepkg NWD-BLP4-400_13.00.08.00.bin
sudo ddcli -c 1 -format


Open gparted - Partition and format your PCI-SSD

reboot

########################################################
/----------------- END Flash  ----------------------/
########################################################

Anbei noch ein Speedtest in meinem PC. Karte steckt in einem PCI 3.0 8x Slot.