迅维网

标题: Surface Pro8 板载内存升级方法 [打印本页]

作者: shaopeijie    时间: 昨天 17:08
标题: Surface Pro8 板载内存升级方法
本帖最后由 shaopeijie 于 2025-3-21 17:36 编辑

本人软件工程师,爱好捣鼓硬件。因为工作需要经常跑虚拟机,原机16GB内存动不动就爆满,看了看某宝升级内存的价格下有点不去手(都是996挣的血汗钱),于是就想着自己升。因为平时经常看某音“浙江吴彦祖”、“大师兄”等大师的维修视频,感觉自己又行了,但隔行如隔山,没想到过程相当艰难。

Surface Pro8升级内存主要有6步:拆屏+换颗粒+改识别电阻+改BIOS+测试+装屏。
苏菲拆机难度大,各位如果想自己升,需要做好充分准备,拆坏了别来骂我。

【拆屏】
难度:五颗星
工具:吹风机+吸盘+拆机片
拆屏幕难度极大。SP8的边框很窄而且面板很薄,一不小心就会割伤排线或者拆裂屏幕,一张屏幕都够升两次内存了。
我采用的土办法是让机器处于亮屏状态,然后用吹风机加热屏幕四周,用吸盘吸喇叭位置,使屏幕翘起一条缝,再用拆手机后盖那种很薄的拆机薄片慢慢割。割的同时观察屏幕是否有液晶挤压,显示是否正常,如果没有,再一点点往里面割(窄边最多割进去3mm左右,底部要注意排线位置,顶部可以深一些),最终花了近一小时才把它无损搞下来。

【换颗粒】
难度:四颗星
工具:热风枪+加热垫(非必须)
器件:4颗镁光MT53E2G32D4NQ-046
Surface Pro8最大支持32GB内存,4片板载颗粒,每片容量8GB/64Gbit。根据图纸上的标注,8GB颗粒只有海力士H9HCNNNFAMMLXR-NEE和镁光MT53E2G32D4NQ-046,我选用的是镁光, 因为货源充足+便宜,而且原机内存也是镁光。在表中之外的颗粒型号BIOS是无法支持的,除非能找到跟两款型号时序参数一致的颗粒。改BIOS二进制代码是不可能的,都有数字签名。
mem.png
登录/注册后看高清大图

(图片来自https://www.chinafix.com/thread-1365372-1-1.html)

在正式开搞前弄了条报废内存练手,尽可能保证一次成功。
SP8用的高温锡,吹的时候要用湿纸巾包住CPU和不耐高温的器件。拖焊盘是向大师们学的,用低温锡置换高温锡后再用吸锡带拖平,防止焊盘阻焊层脱皮掉点。注意SP8主板上没有内存的丝印,拆颗粒之前可以用铅笔在主板上沿着颗粒边缘划线标记一下。
焊接参数:房间温度15度,热风枪温度400度,最大风力,另外用加热垫把板子预热到70多度。

焊接清洗后的效果如下图:
board.jpg
登录/注册后看高清大图


【改识别电阻】
难度:三颗星
工具:烙铁
器件:634R 0201电阻

一般笔记本是通过上下拉数字电平编码选择内存,而Surface Pro8是通过电阻分压AD采样,电路图如下图,R3432控制采样电压,上表Resistor Value就是对应的电阻值,实际选取时只要在理论值附近即可(AD采样有一定容差)
adc.png
登录/注册后看高清大图

(图片来自https://www.chinafix.com/thread-1365372-1-1.html)


R3432对应主板的位置在SAM芯片(应该就是EC吧?)右上角,离SAM很近很近,以至于不敢用热风枪吹,用的很尖的烙铁焊上去的。
这颗电阻是0201封装的,实在太小,没有显微镜的情况下只能凭感觉焊,通过手机微距放大检查焊接情况,再通过测量右边R3406 2K电阻的阻值变化确认已焊接稳妥。
res.png
登录/注册后看高清大图

根据颗粒型号,我选用的是634欧姆电阻,焊接后的效果如下:
adc2.png
登录/注册后看高清大图


【改BIOS】
难度:两颗星
读写BIOS工具: CH341A+NeoProgrammer V2.2.0.10
操作:拆BIOS芯片-->读取BIOS内容-->清除BIOS内存配置-->烧回BIOS-->焊回BIOS
避坑1:有些编程器无法读取16MB以上FLASH(不支持4字节地址),或者读取出来错的。必须确保编程器能读取完整BIOS,否则烧回去可能就不开机了,
苏菲的机型信息写在BIOS NVRAM里,搞丢了弄回来挺麻烦的
避坑2:焊接BIOS温度要低一点,350度以内。我就是没经验,没打焊油400度直接干,把FLASH干挂了(幸好不是拆的时候挂),关于换FLASH,可以参考https://www.chinafix.com/thread-1379901-1-1.html

为啥要改BIOS呢?网上没有找到Surface Pro8升级内存修改BIOS的教程,采用逆向分析BIOS内存初始化代码获知修改方法,算是首次公开?
下图是Surface Pro8 BIOS内存初始化流程(Surface Pro9/10也大差不差):
image.png
登录/注册后看高清大图


FspNvsBuffer的作用是加速开机,内存训练需要十几秒到一分钟不等,如果每次开机都重新训练,开机速度就太慢了。
所以BIOS把训练好的数据命名为“FspNvsBuffer”保存在NVRAM中,下次开机直接用训练好的数据。我认为苏菲的BIOS
没写好,当内存型号变更时(当然这也是软件非预期的行为),傻傻的不知道要重新训练。
知道了原理,修改BIOS的方法就很简单了,只需要修改NVRAM,把FspNvsBuffer变量从NVRAM中删除即可。

删除方法1:手动删除
(1)用UEFITool打开BIOS固件,查找NVS中的FspNvsBuffer变量,定位到变量在BIOS文件中偏移位置
image.png
登录/注册后看高清大图

(2)使用hex工具把AA 55后面的3F改成3C即可(3F表示变量有效,3C表示变量已删除)

删除方法2:使用我写的脚本SurfaceMemoryCfgClear.py
详见附件
(1)在windows上安装python3.8或更新的版本
(2)在SurfaceMemoryCfgClear.py打开cmd.exe
(3)执行python SurfaceMemoryCfgClear.py XXXX.bin
(4)在当前文件夹下会自动生成修改好的BIOS文件 __out_image.bin
image.png
登录/注册后看高清大图

工具支持清理Surface Pro8的内存配置,Surface Pro9/10理论上也可以,但是我没机器测试。如果有人试了,请帮忙发个反馈。

【测试】
使用memtest86和AIDA测试内存稳定性,确保装机前硬件是稳定的,避免再次拆机。
24494bbf457e062b09c33f6592112bf.jpg
登录/注册后看高清大图



【装屏】
淘宝不知道为啥买不到Surface Pro8的屏幕胶条,为了省心买了Surface Pro9的,会稍微挡住一点点红外发射管,自己稍微割一下就行。胶不能覆盖的地方,自己再加一点就好。

【Surface Pro8的开机电流和现象
测试是裸板不装电池、摄像头的情况下,通过Type-C口测试的。
(1)不插硬盘:Type-c 20v不升压, 电源输出5V, 有微小电流(估计是给Type-C芯片供电)
(2)插入硬盘: Type-c 输出20v, 刚开始电流几乎为0 ,过几秒后有60ma左右电流
(3)插入硬盘、接上屏幕,没有焊BIOS芯片或者BIOS里面程序为空时:
             Type-c口输出20V,过一会回落5V,然后又升压到20v,循环往复,然后像是EC reset了。
(4)插入硬盘、接上屏幕,焊接BIOS但没有清理内存配置:
        开机定电流0.9(cpu温度较低约20多度)~1.2A(cpu温度较高烫手时)。随着温度升高电流会越来越大。
(5)插入硬盘、接上屏幕,焊接BIOS并且已清理内存配置:
        开机电流0.4(cpu温度较低约20多度)~1.5A(cpu温度较高烫手时)之间跳动,大约几十秒后内存训练结束,机器开机。
(6)如果ME和FLASH不匹配,开机会卡很久,并且找不到内置硬盘,进入BIOS后看到ME版本号为0.0.0.0。
(7)如果ME签名不对或ME配置错误(BIOS刷错了),按开机logo亮, 电流会定在0.6A左右,C口能够保持20V电压。

        
        















SurfaceMemoryCfgClear.zip

3.25 KB, 下载次数: 5, 下载积分: 下载分 -2 分, 下载 1 次


作者: chenjm86    时间: 昨天 19:35
我前几天升级PRO7 16内存,改完电阻没有写BIOS就秒进系统认到了,配置电阻图纸没看懂还花了50请教了个大师




欢迎光临 迅维网 (https://www.chinafix.com/) Powered by Discuz! X3.4