|
本帖最后由 syzdq 于 2013-12-9 08:41 编辑
由于ST的F指令手册没有公开,网上一般也只有个4代设置型号和容量的指令,经过观察PCI3K的指令输出回显和本人研究后整理如下,希望对大家有所帮助。
几个基本情况介绍,大家看了这个以后也应该可以自己来研究其它的了(更改设置后复位,再用VCR看打开或关闭了什么功能):
1、ST的VENDOR(ID模块,出厂证),一般是512个字节,一般有3份,都在VNEDOR磁道,第一份一般是VENDOR磁道的04扇区,后两份型号不同就会有所不同,但一般都是在0x20扇区前的,比如5400.4的后两份在0C和0D扇区,通过里面的型号等字符串很好认出。
2、里面定义了硬盘的型号、容量、是否支持LBA48、密码、AAM、NCQ等很多功能,有的是设置ASCII码或具体数值,有的是按位设置0或1来决定功能的开关。
3、我们用F指令来设置它时,是按字来定义的,比如设置ASCI1B,就是设置这里的0x1B字地址的内容,也就是0x36和0x37这两个字节地址(或后跟更多)。
4、有些功能要是硬盘本身就不支持,那么打开了也没用,比如很多系列的硬盘不支持AAM,你打开了对应的这位后在VCR里看也是没有AAM功能的。
5、一般把MEDALIST等古老的盘、U系列和鱼1到7代作为一个大代,此处通称7代,鱼8到10代作为一个大代,此处通称9代,两者指令上有些不同之处,没注明的就是两者通用,7代PUMA和8代可算是过渡代数,有些指令上可能会适用另一代的。命令格式两种不一样,主要区别就是7代的可以一条指令里连续输入,9代的每次只能输入一个字。
6、为什么我们从PUMA起的盘,按以前的初始化后重建会不行呢(比如无法格式化或GHOST极慢)?因为这样做后NCQ等一些功能没打开,所以我们一般是回写0x20或30个VENDOR扇区的(容量改过就直接编辑磁道文件中的型号和容量后回写,要注意的是,1个扇区内的容量有3或4处),这样就是全部原始功能都正常打开着的。
7、手工输F命令主要用于无合适的VENDOR回写,或要更改硬盘的某个特定功能(比如打开AAM)。
好了,讲了这么多后,下面开始正式的内容(T级下的F指令,也就是在T级下输入F后回车,出来SetStuff->后要输入的内容):
1、ASCIFE,这是初始化整个ID,全部恢复成出厂默认值,硬盘型号一般会变成ST几碟几头,容量也会成为一个固定的值,基本上所有特殊功能都被关闭。很多9代的盘不支持这一命令(也许是变成了FF等其它的值,没试过)。命令格式就是输入ASCIFE并回车,后面不用跟别的参数。
2、ASCI1B,设置硬盘的型号,比如把硬盘的型号设置成ST340016A。7代的看着比较简单,比如要把一个鱼4的40G盘型号ST340016A用F指令进行输入的指令是ASCI1B53543334303031364120202020202020202020202020202020202020202020202020202020202020,就是型号的ASCII码,共40个字节,不足的用空格码补足,比如这里是补31个20。9代的输入比较麻烦,比如下面是一个10代80G盘的型号输入过程:
T>F
SetStuff->ASCI1B5354
Stuff key 1b -> 53 54
T>F
SetStuff->ASCI1C3338
Stuff key 1c -> 33 38
T>F
SetStuff->ASCI1D3038
Stuff key 1d -> 30 38
T>F
SetStuff->ASCI1E3135
Stuff key 1e -> 31 35
T>F
SetStuff->ASCI1F4153
Stuff key 1f -> 41 53
T>F
SetStuff->ASCI202020
Stuff key 20 -> 20 20
T>F
SetStuff->ASCI212020
Stuff key 21 -> 20 20
T>F
SetStuff->ASCI222020
Stuff key 22 -> 20 20
T>F
SetStuff->ASCI232020
Stuff key 23 -> 20 20
T>F
SetStuff->ASCI242020
Stuff key 24 -> 20 20
T>F
SetStuff->ASCI252020
Stuff key 25 -> 20 20
T>F
SetStuff->ASCI262020
Stuff key 26 -> 20 20
T>F
SetStuff->ASCI272020
Stuff key 27 -> 20 20
T>F
SetStuff->ASCI282020
Stuff key 28 -> 20 20
T>F
SetStuff->ASCI292020
Stuff key 29 -> 20 20
T>F
SetStuff->ASCI2A2020
Stuff key 2a -> 20 20
T>F
SetStuff->ASCI2B2020
Stuff key 2b -> 20 20
T>F
SetStuff->ASCI2C2020
Stuff key 2c -> 20 20
T>F
SetStuff->ASCI2D2020
Stuff key 2d -> 20 20
T>F
SetStuff->ASCI2E2020
Stuff key 2e -> 20 20
T>
哈哈,很长,大家应该能看懂我输入的是什么型号吧?
3、ASCI83,硬盘容量的设置。7代输入一个40G盘(78165360=0x04A8B570)的容量格式是ASCI83B57004A8。9代输入一个80G盘(156301488=0x0950F8B0)的容量过程是:
T>F
SetStuff->ASCI83F8B0
Stuff key 83 -> f8 b0
T>F
SetStuff->ASCI840950
Stuff key 84 -> 09 50
T>
LBA值的计算和输入:比如ST340016A的盘上标着LBA为78165360,那么转16进制后是04A8B570,那么我们指令后要输入的数字就是B57004A8,就是把高、低4个数字互换后填入,具体的各容量值对应的LBA值我昨天刚发过一贴,大家可以参考一下:
http://bbs.intohard.com/thread-262237-1-1.html
4、ASCI3C,也是硬盘容量的设置,这个应该是设置HPA值的,用法完全同上面一条的ASCI83,一般后面填和83一样的值就行了,注意9代也要分3C和3D两次输入。
5、ASCI64到67,9代的容量输入,除了前面两个外,还要输入这一个,64和65后输入值同83和84,66和67后都是输入0000,这个估计是给容量超过FFFFFFFF的盘(约2.2T)保留用的更高位的容量值,但因为10代最大也只有750G(0x575466F0个LBA),用不上,要3T或以上盘才会用到。
6、ASCI01、ASCI03、ASCI06,8.4G或以上的盘,这三个使用标准值,分别为3FFF,0010,003F,也就是逻辑CHS值,而且这个一般都不用设,ASCIFE后默认的就是这个值了。
7、ASCI52,HPA、ATA密码等功能的开关,全关闭是ASCI523069,只打开HPA功能是ASCI523469,只开启密码功能是ASCI52306B,两个都打开就是ASCI52346B,明显是用了其中的一位是1还是0来定义某个功能的开启和关闭,下面的53和54也是一样的。大家可以把这三个(甚至带上附近几个)字当中的某一个字的内容改全0或全1后,看VCR显示里多或少了什么功能,再按位来改0或1,来确定哪位是管哪个功能开关的。这个我有好久没看过了,记忆中好象在盘片的扇区中内容是两个字节前后交换存放的,比如输入的是ASCI52346B,则相应扇区中保存的内容是6B34。52到54的这些功能在ASCIFE后全部都是关闭的,一般都要打开它们(后面注明的除外,如鱼4不得打开LBA48),当然你也可以根据自己的实际需要来决定,比如你只是不想打开密码功能。
8、ASCI53,LBA48、AAM、APM等功能的开关,全关闭是ASCI534001,只打开LBA48功能是ASCI534401,要连AAM也打开就是ASCI534601,如果还要连APM也打开就是ASCI534609。4代盘(最大80G)必须关闭LBA48才能正常工作,硬盘标称超过137G(2的28次方)的盘必须打开LBA48,不然盘只有137G(按WINDOWS的正常容量标准看是128G)。PCI3K的编辑ID中的53只有LBA48这一项,其它的是我自己研究出来的,我还把它加进了PCI3K的用户自定义命令中:
自己在ST的一个模块里点Tools-Options的General栏最下面的seagate U5,Baracuda XX...,在Commands里加入一条命令来同时打开这三个功能(其它的组合大家可以参考这个格式自己定义):
命令标题栏输入:
打开LBA48、AAM和APM
命令内容则输入:
LEV 0
F
ASCI534609
9、ASCI54,一些SMART功能的开关,全关闭是ASCI544000,只打开Smart Error Logging功能是ASCI544001,只打开Smart Selftest功能是ASCI544002,两个都打开就是ASCI544003。 |
|