SandForce SF2281主控SSD开卡案例

目录

参考

警告:

确认:

准备:

1、截图、文档保存SSD的信息

2、获取Flash ID

3、提取固件支持列表

4、Lic授权文件

5、checksum生成器

6、SF_Genesis-v1.7

7、建立SF2281文件夹存储以下文件夹,放入相应的资料

8、安装Deepin15.11

开卡流程(基于Deepin 15.11):

1、让SSD进入ROM模式

2、读取SSD地址

3、读取Flash ID

4、如果无法确定Flash ID

5、修改lic授权文件

6、重新生成checksum

7、解包固件

8、修改driveconfig文件

9、执行开卡指令

10、另一种开卡方式

11、开卡失败

12、本案例用到的资料


参考

SandForce SF2281主控ssd开卡教程—适用于所有SF-2000系列
http://www.upantool.com/jiaocheng/ssd/2017/10231.html

[SandForce](或许是首发补上教程)SF系列开卡虚拟机,带工具固件等你没见过的船新版本(仅供研究)
http://bbs.mydigit.cn/read.php?tid=2610365

链接:https://pan.baidu.com/s/16dYaVZvJXvRC5IYPhkoRtQ
提取码:eodk


警告:

1、开卡后,原来的资料都会刷掉,无法恢复数据。要恢复数据,请找专业数据恢复公司。


确认:

1、接口正常,没有接触不良的现象,没有脱焊。
2、固件芯片完整,没有烧焦击穿,没有脱焊。
3、Flash芯片完整,没有脱焊。
(硬件损坏无法通过开卡修复)

我的SSD状况:
1、突然掉盘,无法识别。分钟大法没什么用,有一次在移动硬盘盒能正常识别,断电后再也无法识别了。
2、短接J2可以进入ROM模式。
3、芯片无外损。
4、实在看不出哪里有脱焊。。。

 

准备:

1、截图、文档保存SSD的信息

通过以下软件,尽量获得更多关于SSD的信息,这个对开卡非常有帮助,而且卡开后资料会被刷掉:
CrystalDiskInfo
HD-Tune Pro
SSD-Z
Hard Disk Sentinel
SSD官方的工具软件
官方的固件升级文件

保固期后,通过拆解SSD,得到固件型号和Flash型号。

例如我的SSD:
主控芯片:SandForce SF-2281VB2-SPC MAQ1500900 1315 TAIWAN
Flash芯片:
60073779 2300670734 2JL12
60073779 2300670734 2JL12
60073779 2300670734 2JL12
60073779 2300670734 5K152
序列号:7D27*****146

J1两个孔,J2两个孔,J3一个孔

4颗Flash共128G,每颗32G,BGA封装

例如,通过SSD-Z得到以下信息:
Device Name:ADATA SX900
Firmware:5.8.2a
Serial Number:7D27*****146
Technology:25nm
Cells:MLC
Controller:SandForce SF-2881
NAND:Intel 64Gbit
Capacity:119.24GB
Over-Provision:1.3MB(0.00%)

根据序列号在官网查询到信息:
您的产品保固期限至:2016/07/31,谢谢您的查询。
*以上产品(仅限SSD固态硬盘产品)保固期限不包含多1年的延保时间。

例如,通过ADATA SSD ToolBox得到以下信息:
型号:ADATA SX900
固件版本:5.8.2a
WWN:0000000000000000 (16个0)
连接速度:SATA 6.0 Gb/s

例如,通过Hard Disk Sentinel的信息页得到详细的硬盘信息。

例如,通过官方固件文件,我得到了5.8.2的所有Flash ID。(我之前通过官方软件从5.0.7a升级到5.8.2a)

 

2、获取Flash ID

第一次开卡,务必先读取Flash ID
Windows下运行SandForce_Flash_ID文件夹中的sf_info.exe(来自于U盘量产网)
输入SSD编号,获取Flash ID

如果这一步无法获取,可以再到Linux系统中再试多几次。
在不知道Flash ID前不要随意开卡,这会增加很多难度。

 

3、提取固件支持列表

Windows下运行Sandforce支持列表提取工具.exe(来自于U盘量产网),固件DFP文件,输入Excel路径,导出。
这里有两个可供选择:
FW_PPRO_5_8_2_Release.906190.release.dfp
FW_PPRO_6_0_A_Release.1134440.release.dfp

得到:
FW_PPRO_5_8_2_Release.906190.release.xlsx
FW_PPRO_6_0_A_Release.1134440.release.xlsx

 

4、Lic授权文件

这里有两个可供选择:(来自于U盘量产网)
hasee-sf-2000_lic.lic
asiacom_SF-2000_20110815_lic.lic

 

5、checksum生成器

checksum

 

6、SF_Genesis-v1.7

感谢数码之家的1169044503提供的SF_Genesis-v1.7包括:
checksum
SF_ConfigurationManager
SF_FieldUpdater
SF_Genesis
SF_GenesisDashboard
SF_OEM_PackageManager
lic文件
其他

 

7、建立SF2281文件夹存储以下文件夹,放入相应的资料

LIC(授权文件)
FW(固件文件)
SF_Genesis-v1.7(感谢数码之家的1169044503提供的版本)
MFP(后面用来存储固件解包的文件)
VIC(官方Vic文件)
LOG(输出日志文件)
DATE(你收集的资料)

因为实体机的Deepin和Windows在HDD磁盘分区有点兼容问题,就是Deepin下修改后的文件,在Windows下会提示损坏,甚至丢失。你可以选择一下方式存储文件:
a、Windows的SSD分区根目录。
b、U盘。
c、Windows下使用DiskGenius,调整HDD分区空间腾出空闲(建议32G),,新建新分区,格式化为NTFS格式。
d、Windows下使用DiskGenius,调整HDD分区空间腾出空闲(建议32G),在Deepin内新建新分区,格式化为Ext4格式。Windows下使用Ext2 Volume Manager for Windows挂载。

 

8、安装Deepin15.11

如果你要用虚拟机安装Linux系统,或者直接使用数码之家1169044503提供的CentOS虚拟机备份,需要用到USB转接卡。
虚拟机通过添加SCSI接口读取SDD,开卡时会死机。

我这里因为用虚拟机+USB转接卡开卡提示(0x00100001:SF_SATA_DEVICE_NOT_PRESENT_ERROR),无奈只能用实体机安装Linux系统。
坑爹的是,N年前的32位Linux系统(Fedora14和CentOS6.7),对现在的机器非常不友好,不过是驱动还是更新。
即使是最新版的32位系统,Fedora-17-i686、Fedora-Workstation-Live-i386-30、CentOS-6.10-i386、CentOS-7-i386(键盘无法输入)、deepin-15.3-i386,不管是虚拟机安装还是实体机安装都非常不友好。

最后还是选择Deepin15.11,这个是64位系统,但是依然可以运行开卡工具。

Deepin安装还是非常简单的,以下是注意点:
a、在台式机上提前腾出一段32G的无分区空间。
b、建议在SSD上安装Deepin。
c、用deepin-boot-maker制作启动U盘。
d、开机调出启动项菜单(按F12),选择带UEFI的U盘选项,如果是BIOS启动选择没有UEFI那个。
e、在安装位置那里千万不能选错,不是全盘,是选择腾出的空闲空间。

 

开卡流程(基于Deepin 15.11):

1、让SSD进入ROM模式

SSD通电前,短接J2两个孔,通电,几秒后再放开。(这个步骤非常关键,不能一直短接)
如果是实体机,时机是主机通电前后。
如果是虚拟机,时机是USB通电前后。

进入Deepin 15.11

打开Disk,可以看到一个33 KB Hard Disk,名称可能是品牌名、SandForce或转接卡名。

 

2、读取SSD地址

打开开卡工具的文件夹,右击空白,Open in Terminal,执行:
sudo apt-get install lsscsi

lsscsi
[4:0:0:0]    disk    ATA      SandForce{200026 BBR0  /dev/sdd

得知SSD地址为4:0:0:0
如果你是使用USB转接卡,每次断开USB重连,这个地址都会变化,需要重复读取。

 

3、读取Flash ID

第一次开卡,务必先读取Flash ID
sudo ./SF_Genesis -READ_FLASH_ID 4:0:0:0

如果到这里也无法获取,请多试几次,或者不进入ROM模式再尝试读取,或者有老司机可以拆出Flash芯片用读取器读取ID。

 

4、如果无法确定Flash ID

我的SSD因为突然掉盘,想读取时都没有信息,不管是正常模式还是ROM模式。
但是我们依然可以通过排除法筛选确认合适Flash ID。

例如,筛选FW_PPRO_5_8_2_Release.906190.release.xlsx:
2281、25nm、MLC、Intel、128G、4x、ADATA官方固件vic文件存在的ID、5.8.2a
只有一个符合:
SF-2281-Gold 128GB Intel25 eMLC BGA 4xPF29F32B16NCME1 (RAISE OFF)

 

5、修改lic授权文件

备份lic文件为lic.bak

打开lic文件,修改:
 <configuration_id id="22813" />
你可以删除不相关的部分,添加有可能的ID

删除末尾的一行:
<checksum>*****</checksum>

另存为一个文件,例如我的sx900.lic

如果修改后导致SF_OEM_PackageManager无法正常解包,使用vim命令进行编辑。

 

6、重新生成checksum

打开SF_Genesis-v1.7文件夹,右击空白,Open in Terminal,执行:
./checksum sx900.lic

 

7、解包固件

运行SF_Genesis-v1.7文件夹中的SF_OEM_PackageManager
Distribution Firmware Package File:
选择FW_PPRO_5_8_2_Release.906190.release.dfp
(因为我的SSD之前是5.8.2a,你也可以尝试6.0.A)

License file:
选择sx900.lic

Customer Identification Number:
0

Diagnostics Unlock Key:
1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6
(固定格式,注意这是英文的逗号)

Firmware Revision Override String:
5.8.2a
(这是软件读取的固件信息)

点击Create OEM Package等待一段时间后会出现Process completed successfully,则证明MFP生成成功。

 

8、修改driveconfig文件

运行SF_Genesis-v1.7文件夹内中的SF_ConfigurationManager,点击右下角的Open,选择你的driveconfig文件路径:
*****/SF2281/MFP/FW_PPRO_5_8_2_Release.906190.release--0/Configuration_Files/22813.0.driveconfig

修改External Write protect:
External write protect circuit Exists
(这个直接影响写入)

填写Identify Data的Model No.:
ADATA SX900
(这个就是软件识别的型号信息,建议填写)

填写Serial Number
7D27*****146
(这个就是软件识别的序列号信息,可以不填)

填写Vendor Unique Data:
ADATA(www.adata.com)
(这个就是软件识别的信息,可以不填)

修改Power Management Settings的Power Management Feature Selection:
(我这里不选也可以开)

Temperature Sensor Settings的Sensor #1/#2的Device ID:
(我这里不选温度也正常显示)

右下角Save As:
*****/22813.0.test
(加上test以便识别)

 

9、执行开卡指令

打开开卡工具的文件夹,右击空白,Open in Terminal,执行以下格式的命令:
./SF_Genesis -PROCESS_SSD [DEVICE] [MFP_PACKAGE] [DRIVE_CONFIG_FILE] [SERIAL_NO] [WWN] [CID=IDENTIFY_FILE] [LOG=FILENAME]

./SF_Genesis[空格]-PROCESS_SSD[空格]SSD地址[空格]存放MFP文件的目录[空格]保存的driveconfig的路径[空格]序列号[空格]WWN号[空格]CID=识别文件[空格]日志文件

两个教程都没有提到CID……

最终要执行的命令:
sudo ./SF_Genesis -PROCESS_SSD 4:0:0:0 *****/SF2281/MFP/FW_PPRO_5_8_2_Release.906190.release--0/FW_PPRO_5_8_2_Release.906190.release.0.mfp *****/SF2281/MFP/FW_PPRO_5_8_2_Release.906190.release--0/Configuration_Files/22813.0.test.driveconfig 7D27*****146 0000000000000000 LOG=*****/SF2281/LOG/SF.log

实在不想输入,你可以这样:
a、复制粘贴sudo ./SF_Genesis -PROCESS_SSD 4:0:0:0 
(注意最后面是一个空格)
b、拖入FW_PPRO_5_8_2_Release.906190.release.0.mfp文件
c、拖入22813.0.test.driveconfig文件
d、复制粘贴7D27*****146 0000000000000000 
(注意最后面是一个空格)
e、复制粘贴LOG=
f、拖入SF.log文件
(如果输入log=/log/,日志文件会创建在SF_Genesis-v1.7文件夹内中)

回车,输入密码,执行。

不会很久(除非开新板),如果你看到:
Overall Result for Device:  ****** PASS ******
恭喜你开卡成功,关机,再开机后你可以开始检查、测试SSD是否正常了。

 

10、另一种开卡方式

(注意:在Deepin里不可行,一运行就自动注销)

例如,如果你想量产多个SSD,运行SF_GenesisDashboard:
a、FUNCTION选择PROCESS_SSD
b、DriveConfig选择22813.0.test.driveconfig文件路径
c、MFP Package选择FW_PPRO_5_8_2_Release.906190.release.0.mfp文件路径
d、Port ID输入4:0:0:0
e、Log Folder选择LOG文件夹
f、Serial No.输入7D27*****146
g、WWN输入0000000000000000
h、点击Start开始开卡
i、开卡成功显示PASS,失败显示FAIL

 

11、开卡失败

如果你看到:
Overall Result for Device: /dev/sg1 ****** FAIL ******
代表开卡失败,请往前查找错误信息。

我大部分的尝试,22813都能过Flash测试,只不过都是WARNING,如果是FAIL是绝对不过的,当然PASS是最好的。

FATAL_ERROR: Could not perform the ReadDriveConfigUnique() operation on the drive... (0x12000004:SF_SG_HOST_BAD_TARGET_ERROR)
超时?

FATAL_ERROR: Could not perform the ReadDriveConfigUnique() operation on the drive... (0x00100001:SF_SATA_DEVICE_NOT_PRESENT_ERROR)
接口有问题?

多逛论坛案例,多试几次,说不定就PASS了。

Good Luck!

 

12、本案例用到的工具和资料

链接: https://pan.baidu.com/s/1PO7jBQ5gGNyV5Eyp-mWxVg
密码: nswd
(这些工具都可以在U盘量产网找到)


下载Deepin15.11和深度启动盘制作工具
http://cdimage.deepin.com/releases/15.11/deepin-15.11-amd64.iso
http://cdimage.deepin.com/applications/deepin-boot-maker/windows/deepin-boot-maker.exe
详细安装流程自行度娘。

 

PS:

SX900 128G刷5.8.2和6.0.A的性能都差不多,不过都比以前测试的分数高(不知道是不是因为空盘测试)

6.0.A

 

以前5.8.2a

 

6.0.A

 

以前5.8.2a

 

几个奇怪的问题:

1、以前的健康度一直是100%……都写入27T了,128GB,PE数221多:

按照emlc的寿命5000PE-20000PE

按5000次PE来算,健康度是95%

按20000次PE来算,健康度是98%

开卡后,现在默认百分比是99,写入30GB掉98……

2、开卡的log文件显示Flash都是Warming,多次开卡结果都不一样,大部分是N3,有几个在N3、N1 N3、N3 N5、N3 N6之间变化,没有一个N1……Flash好像是威刚自封装的(BGA),跟旧款TOP封装不一样,Flash ID也不印上去。

3、这款SX900 128G,3年保固,5年掉固件,后期S.M.A.R.T的01原始读取错误率很高,没有坏道。

4、主控芯片是SF-2281VB2,但是Hard Disk Sentinel软件读取的是SF-2281VB1。

5、ATA信息里,预读取缓冲区是支持但是禁用,原来是支持并启用,不知道在哪里启用,对性能有没有影响。

6、偶尔开机会识别不了,关机后重新插拔电源和数据线,开机又可以连上。连上后测试,随机写入验证也是OK的。(可能是走线太紧的原因?)

发布了21 篇原创文章 · 获赞 7 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章