wilddingo 发表于 2018-4-25 16:26:02

西数2003FYYS 8头黑盘开启自校准方法

        这块盘是2T的mantis PL RE重盘。板号1624,8磁头。一开始像是所有磁头坏的现象,复位后哗啦哗啦响。无法读取模块。一直扔着以为没救了。前几天为了借它的pcb测试另一个1.5T的黑盘的盘体,就顺手把那个1.5t的pcb装在它上面试了一下,没想到磁头声音听起来很正常,而且复位很利索。尝试读取固件模块,还是读不出来。一时没了主意,不知道该怎么继续。就用这个pcb试着把磁道都读出来,过程中报了不少disk_dam_error的错误,具体含义不是很清楚。在做完这些之后,打算重写rom试试,反正编程器就在手边,不怕有什么幺蛾子。就把rom换成了同型号的其他盘的。复位一切正常,声音干脆利落。尝试读模块,还是失败。反正到这里已经死中得活了,索性一不做二不休,全写了算了。就尝试用WD repaire professional(下文简称wrp)回写固件。折腾了快半个小时,死活写不进去。手头又没有带磁道的固件,就算有,八成也写不进。又陷入僵局,瞎折腾的时候,发现wdr居然可以写入0001模块并初始化成功。然后用wdr完整地写入了一套固件。用wdr写固件之前,记得加载permanent overlay和transient overlay,否则写不了的。
   以前的模块读不出来,会不会是sa区有缺陷呢?所以写入之后,我立刻测试了一下全部模块,居然都正常,一个错误也没有,按理说复位应该可以认盘了。果然,一切顺利,认盘了。喜出望外。既然找不回原盘固件,剩下的事情似乎只有通过开启自校准来解决了。没想到这个过程比上面那个过程还要麻烦。
   之前没有处理过这种盘,所以也不知道西数似乎有一类产品都是无法通过arco历史恢复c3,c8参数的。很不幸,这种黑盘就是。通过wrp的init-old功能,可以初始化这套固件,为开启自校准做准备。然后wrp报告c3的6b参数找不到,同时c8的参数也一片空白。这两步是密度校准的核心,而密度校准又是arco的核心工作,如何是好呢?为了快速地验证想法,我从一个750G的双碟蓝盘中抄了c3和c8的参数,之所以选这么个盘抄参数,是因为粗算觉得它们的表面密度相近。我手头没有恰好密度一样的盘。只能先凑合了。等我把参数填上去以后,重建了pst脚本,清理了arco-pst历史记录,开跑。
   结果不难猜到,前面几步c4很顺利,c3运行了几十秒钟以后报错停下了。现在问题就变得复杂了。由于完全没有可供参考的盘。所以无法知道究竟是什么原因导致c3出错。是因为抄写的参数不正确?还是因为固件有问题?是没有充分初始化?还是说这种盘需要特别的流程辅助?或者说干脆是硬件故障?在这千头万绪中想把事情可靠地向前推进的方法是脚踏实地地做实验。因为未知的事情太多,全部混在一起,几乎全靠瞎猜,而瞎猜既浪费时间又于事无补。于是我打算从简单的做起,寻找1624 mantis PL RE家族的固件。最好是传说中的“通刷固件”。我手头的几个固件都是加密的,解不开。只好google之,还真找到几个,其中有一个居然是自带完整28脚本的,经过了充分初始化的固件,虽然不能肯定这就是通刷固件,但是至少它的pst脚本有相当大的参考价值,我们可以通过它了解,是否在现有的步骤中,有缺失的链环。另外,至少可以从这里得到这种盘的c3,c8参数了。既然它被初始化过,意味着它的参数的可信度很高,至少比我自己瞎写的要高,值得一试。从最简单的做起,直接换上这套固件。依旧顺利认盘,测试模块一切ok。开跑。这次更费解了,c3直接秒过了,c8只运行了5分钟...这究竟是为什么呢?由于之前的经验,我知道有些固件在某些盘体上一切正常,换个盘体,c3就可能秒过。虽然到现在我也不知道这究竟是什么原理,不过这时候我得抓住这个线索。是否是因为这套固件和这个盘体就是这种情况?还是手工合成之前那套固件的pst参数吧,就参考这个脚本。于是我和成了一个脚本,又刷回之前那套固件,再跑...现在这套固件的c3也秒过了。OMG,要崩溃了。什么疑问也没有解答,反倒弄进来更多问题。只好把从pc3k论坛上下到的其它几套固件依次换上去测试,哪怕只要能够验证固件与盘体配套会导致c3秒过这个猜测就是进步。这次运气好点,总算碰到一套固件,不会立刻报错,如果不初始化固件就运行c3,它似乎一切正常地一直在运行。但只要初始化了这套固件,它的表现就立刻像之前的那些一样,c3秒过。也许和这套固件没什么关系,不过正是因为测试它,揭示了这样一个新发现,不是吗?有新的突破方向了。
    只要初始化固件,c3就秒过。说明初始化后的固件和原固件之间的差异导致了这个现象。就从这个差异入手。
    首先,我们要弄清楚,old-init究竟进行了那些初始化工作。这个好办。我的实验方法是,old-init之后,备份出全部模块。在linux的NAS环境下(我的全部固件都存放于NAS),用这样一条命令来帮助分析:
    for fn in $(ls Modules);do
          if ! diff ${fn} ../original-fw/Modules/${fn} >/dev/null 2>&1;then
               echo ${fn}
          fi
   done
这个命令运行的结果列出了这样几个文件名,我摘录在这里:
   
    我的想法是,根据这个列表,逐个回写对应的模块,看回写哪一个以后,c3开始正确运行。一开始我猜测,可能是段位表。结果怎么着?居然是0040,用户区适配参数。回写这个模块以后,c3终于开始正确运行了,为了验证运行结果,我记录了之前dcm初始化后的段位表内容,然后与运行了一段时间后的段位表比较,发现TPI确实改变了,这说明这条路是正确的!由此知道了两件事,一是wrp在初始化固件的时候改写了0040的内容。而在西数的本盘上,这样似乎不会导致问题。另一件事是,在mantis上,这会导致错误。看起来mantis似乎要求在运行c3或者c8之前,用户区适配参数必须存在。你也许可以通过回写原盘的0040模块来让arco标准5步曲能像过去那样演奏下去。不过我稍微改变了一下过去的标准5步曲,特意做了一个测试。先说结果,成功了。再说过程:我初始化了0040模块,然后把arco user area校准复制了一份,一份放在c3之前,用于在初始化的段位表上生成初次的适配信息。一份仍然在老地方,c8之后,用于重新生成新段位表的适配数据。
    现在,按照这个思路重建的固件,正在校准那块硬盘。这相当费时,已经过去36小时了,第二次user area校准刚刚结束。我让它停了下来,确认了段位分配一切正常,每个磁头的zone信息已经生成。现在这个流程虽然还没有结束(后面可能还要36小时或者更久),但一切已经走上正轨了,不是吗。
    关于c3,c8参数的选择问题,请参考这两篇帖子:
   OMG,论坛不让我发URL,我只能说,那两篇帖子叫《WDR自校准的16个参数》,就在本坛。
    它们给了我很大的帮助,我手头并没有trex,不过通过阅读这两篇帖子,我终于了解了这些参数的具体含义。不用像过去那样靠猜测,或者拷贝粘贴了。现在可以有的放矢地设计参数了。关于这些参数的选择,如果我的其它实验一切顺利,我将会在另一篇帖子中概要地给个总结。但是现在,我就把正在运行的那份脚本的c3,c8截图上来,这是取自那个疑似“通刷固件”的pst流程中的一部分,因为看起来似乎可以运行,贴出来也许能够帮助需要它的人。
   
    虽然我用的不是这套固件,不过我还是贴出来,我是从这里下载的:
   
   

xuqiang8817 发表于 2018-4-25 17:22:06

这样帖子的沙发得坐一坐    楼主分析的很透彻    再接再砺

nmxhx 发表于 2018-4-26 14:13:04

ManPL RE跑2909啊,不要跑什么C3/C8

wilddingo 发表于 2018-4-26 15:02:46

nmxhx 发表于 2018-4-26 14:13
ManPL RE跑2909啊,不要跑什么C3/C8

果真如此?难怪arco日志中没有c3,c8的记录。早点知道就好啦。谢谢你的回复。

wilddingo 发表于 2018-4-26 15:07:14

nmxhx 发表于 2018-4-26 14:13
ManPL RE跑2909啊,不要跑什么C3/C8

多问一句,过去是两步的密度校准,现在只要2909一步就可以了吗?

nmxhx 发表于 2018-4-26 18:33:37

wilddingo 发表于 2018-4-26 15:07
多问一句,过去是两步的密度校准,现在只要2909一步就可以了吗?

是的,2909相当于老盘的C3+C8

辉盛数据恢复 发表于 2018-4-27 10:04:26

大佬的思路值得学习!点个赞

假皮 发表于 2018-4-30 18:44:43

写的很详细,值得点赞!

wilddingo 发表于 2018-5-8 10:05:38

最新情况是,这盘终于完成了校准,总算有结果了。调整了一次C3的参数。虽然从坛友处得知应该运行2909(好像还有2901,290F ??)来执行新款硬盘的密度校准,但是实际上由于完全不清楚这种新的校准所需的ARCO参数,所以还是没法运行起来,我试着杜撰了几个参数,参考的一个1822的盘中残存的290F的参数。结果当然是--没有结果。
    倒是C3,C8老流程运行的段位看起来像是那么回事,就是实在是太慢了。ARCO得两三天,后续的步骤还得72小时以上,总的算起来,这盘要持续不断地校准一个礼拜...西数出厂前的电费成本也真够吓人的。
    C3的前几个参数照抄C4的就可以了,关键是zone bitmap, starting TPI, smart TPI这几个参数。由于ARCO部分我运行了不止一次,总结了一点规律。如果把bitmap设置为0x1000002(little endian看起来就是0200 1000),C3大概需要3小时多一点。starting TPI我设置为1,smart TPI开关使能,也就是4。那么这几个重要参数是:
                  0200 1000 0100 0000 0400 0000
    0A03 0900 6400 0000 E803 0000 0000 0000             这几个参数没那么重要,可以从别的带有C3的流程中复制
   如果把zone bitmap换为0x1FFFFE,也就是20个zone全部标记为1,都执行TPI校准,所需时间大约是6:30.结果看起来也没有特别明显的不同。这个参数之下,倒是有时候会出现好几个磁头的段位情况完全一样的情形(这是十分明显的TPI校准失败的信号)。
    wdr的日志如下:
    2018-5-3 上午 12:22:17 Power On Reset Immediate - SUCCESS by
2018-5-3 下午 12:36:19 C4 - 磁头读写参数/飞檐高度调整 - SUCCESS by
2018-5-3 下午 12:36:19 C3 - 调整磁道密度 - Start
2018-5-3 下午 03:41:36 C3 - 调整磁道密度 - SUCCESS by
2018-5-3 下午 03:41:36 C8 - 调整扇区密度 - Start
2018-5-3 下午 09:50:20 C8 - 调整扇区密度 - SUCCESS by
2018-5-3 下午 09:50:20 C4 - 磁头读写参数/飞檐高度调整 - Start
2018-5-3 下午 09:59:00 Disable PST Mode - OK
2018-5-3 下午 10:02:27 Power On Reset Immediate - SUCCESS by
2018-5-4 下午 12:59:17 C4 - 磁头读写参数/飞檐高度调整 - SUCCESS by
2018-5-4 下午 12:59:17 B1 - 快速扫描/测试用户区 - Start
2018-5-4 下午 01:14:37 B1 - 快速扫描/测试用户区 - SUCCESS by
2018-5-4 下午 01:14:37 B2 - 用户区优化 - Start
2018-5-6 上午 11:37:51 B2 - 用户区优化 - SUCCESS by
2018-5-6 上午 11:37:51 D8 -- Start
2018-5-6 上午 11:42:35 D8 -- SUCCESS by
2018-5-6 上午 11:42:35 1000 - Sector NULL - Start
2018-5-6 上午 11:46:07 1000 - Sector NULL - SUCCESS by
2018-5-6 上午 11:46:07 B1 - 快速扫描/测试用户区 - Start
2018-5-6 下午 12:00:18 B1 - 快速扫描/测试用户区 - SUCCESS by
2018-5-6 下午 12:00:18 D1 - 扫描缺陷(写)并加入LOG - Start
2018-5-6 下午 06:58:01 D1 - 扫描缺陷(写)并加入LOG - SUCCESS by
2018-5-6 下午 06:58:01 DD - 增益校准 - Start
2018-5-6 下午 06:59:06 DD - 增益校准 - SUCCESS by
2018-5-6 下午 06:59:06 DB - 扫描缺陷(读)并加入LOG - Start
2018-5-7 上午 02:53:00 DB - 扫描缺陷(读)并加入LOG - SUCCESS by
2018-5-7 上午 02:53:00 D5 - 测试簇 - Start
2018-5-7 上午 02:55:47 D5 - 测试簇 - SUCCESS by
2018-5-7 上午 02:55:47 D4 - 测试磁道缺陷 - Start
2018-5-7 上午 03:00:27 D4 - 测试磁道缺陷 - SUCCESS by
2018-5-7 上午 03:00:27 D3 - 处理扇区数量 - Start
2018-5-7 上午 03:00:38 D3 - 处理扇区数量 - SUCCESS by
2018-5-7 上午 03:00:38 D2 - 加P-LIST - Start
2018-5-7 上午 03:02:53 D2 - 加P-LIST - SUCCESS by
2018-5-7 上午 03:02:53 1002 - 自校准引导程序 - Start
2018-5-7 上午 03:05:21 1002 - 自校准引导程序 - SUCCESS by
2018-5-7 上午 03:05:21 BB - SPT全写 - Start
2018-5-7 上午 03:06:03 BB - SPT全写 - SUCCESS by
2018-5-7 上午 03:06:03 C4 - 磁头读写参数/飞檐高度调整 - Start
2018-5-7 上午 03:07:27 C4 - 磁头读写参数/飞檐高度调整 - SUCCESS by
2018-5-7 上午 03:07:27 B9 - 低级格式化 - Start
2018-5-7 上午 03:08:10 B9 - 低级格式化 - SUCCESS by
2018-5-7 上午 03:08:10 BA - SPT全读 - Start
2018-5-7 上午 03:08:14 BA - SPT全读 - SUCCESS by
2018-5-7 上午 03:08:14 1000 - Sector NULL - Start
2018-5-7 上午 03:08:25 1000 - Sector NULL - NOT_AN_ERR_VSC_CMD_EXEC_IN_BKG
2018-5-7 上午 03:08:25 C4 - 磁头读写参数/飞檐高度调整 - Start
2018-5-7 上午 03:11:11 C4 - 磁头读写参数/飞檐高度调整 - SUCCESS by
2018-5-7 上午 03:11:11 AA -- Start
2018-5-7 上午 04:37:59 AA -- SUCCESS by
2018-5-7 上午 04:37:59 1001 - 自校准引导程序 - Start
2018-5-7 上午 04:40:35 1001 - 自校准引导程序 - SUCCESS by
2018-5-7 上午 04:40:35 B6 - 工厂自测试模块 - Start
2018-5-7 上午 04:41:21 B6 - 工厂自测试模块 - SUCCESS by
2018-5-7 上午 04:41:21 1003 - 自校准引导程序 - Start
2018-5-7 上午 04:42:13 1003 - 自校准引导程序 - SUCCESS by
2018-5-7 上午 04:42:13 3402 -- Start
2018-5-7 上午 04:45:03 3402 -- SUCCESS by
2018-5-7 上午 04:45:03 1003 - 自校准引导程序 - Start
2018-5-7 上午 04:51:11 Disable PST Mode - SUCCESS by

这次执行的结果,head2缺陷达到了6w,爆头了。由于其它头的状况都非常好,缺陷大部分只有3位数,所以我认为密度校准很成功,于是没有重复执行ARCO,而是接受了这个现实。砍掉了head2.本来砍掉了就可以了,不过日志中关于head2的记录没有清掉,为了保留其它磁头的日志,又不能全部清掉,所以只好又做了一次PST的缺陷扫描部分。我猜可能有不需要全部重做的方法,比如说执行流程中的depop?
    我用了傻办法,第二次wdr日志如下:
2018-5-7 上午 08:31:53 Power On Reset Immediate - SUCCESS by
2018-5-7 下午 01:58:07 D1 - 扫描缺陷(写)并加入LOG - SUCCESS by
2018-5-7 下午 01:58:07 DD - 增益校准 - Start
2018-5-7 下午 01:58:53 DD - 增益校准 - SUCCESS by
2018-5-7 下午 01:58:53 DB - 扫描缺陷(读)并加入LOG - Start
2018-5-7 下午 07:39:24 DB - 扫描缺陷(读)并加入LOG - SUCCESS by
2018-5-7 下午 07:39:24 D5 - 测试簇 - Start
2018-5-7 下午 07:42:55 D5 - 测试簇 - SUCCESS by
2018-5-7 下午 07:42:55 D4 - 测试磁道缺陷 - Start
2018-5-7 下午 07:47:18 D4 - 测试磁道缺陷 - SUCCESS by
2018-5-7 下午 07:47:18 D3 - 处理扇区数量 - Start
2018-5-7 下午 07:47:28 D3 - 处理扇区数量 - SUCCESS by
2018-5-7 下午 07:47:28 D2 - 加P-LIST - Start
2018-5-7 下午 08:51:48 D2 - 加P-LIST - SUCCESS by
2018-5-7 下午 08:51:48 1002 - 自校准引导程序 - Start
2018-5-7 下午 08:52:04 Disable PST Mode - SUCCESS by
只是这几步明显快多了。
缺陷情况大约是:
SPT Defect Statistical Chart
Head 0 = 1593    ( Tracks: 405    , Sectors: 1188   , Max: 68263)
Head 1 = 652   ( Tracks: 412    , Sectors: 240    , Max: 68263)
Head 2 = 669   ( Tracks: 457    , Sectors: 212    , Max: 68263)
Head 3 = 541   ( Tracks: 403    , Sectors: 138    , Max: 68263)
Head 4 = 719   ( Tracks: 405    , Sectors: 314    , Max: 68263)
Head 5 = 1769    ( Tracks: 682    , Sectors: 1087   , Max: 68263)
Head 6 = 893   ( Tracks: 405    , Sectors: 488    , Max: 68263)
Head 7 = 0       ( Tracks: 0      , Sectors: 0      , Max: 68263)
低格我是手动进行的,一切顺利,测试结果很不错。至于head2,我有个单独测试它的计划。我打算彻底备份这次的校准结果。然后打开head2,关闭所有其它磁头。单独运行校准,以验证它的实际状况。在这个盘上损失一个磁头非常不划算。明明只损坏了1/8的磁头,却必须付出1/4的容量代价。因为似乎没有1.75T这种档位。

结论,这种8头黑盘运行旧式的C3,C8校准是可行的,参数是可以自己选择的。这个例子给遇到同样问题的人参考。

pp-ss10907 发表于 2018-6-14 10:59:09

请问楼主的 B2参数是如何确定的,我有一个和你一样的硬盘需要校准,能不能将28模块发一个给我,谢谢269198124@qq.com
页: [1] 2
查看完整版本: 西数2003FYYS 8头黑盘开启自校准方法