小米ruby 15.6 I3-8130U笔记本外接GTX1060 3G显卡成功——独显焊盘飞线PCIe x4
4月份入手的小米ruby 15.6。老实说,除了看中他的屏幕大适合办公、便宜外,还有一点就是m.2插槽吸引我,可以外接显卡DIY过把瘾。
先上一张外接显卡成功图,有帮到大家的请顶起来,让有需要的小伙伴看到。
题外话不多说,进入主题。
1 NVMe插槽不支持PCIe
M.2接口竟然不支持PCIe x4。为此还特意上东东买了三星970EVO Plus(支持NVMe固态)SSD来做测试,实测确实不支持。插上硬盘能用,但工作在SATA3.0模式,而非NVME/PCIEx4。
这样的话,外接显卡计划有点凉凉。
2 连接器选型
本来已经打消PCIE外接显卡的念头。看到独显的焊盘,想到它不也是PCIE吗…没错,你猜对了,从独立显卡焊盘上把PCIe x4的线飞出来,外接显卡。这种操作网上没找到成功的经验,看到的一个论坛有这种想法,可惜没有下文,也不知道结果是啥。https://www.chinafix.com/thread-948361-1-1.html。那么不管他把吧,自己试试看。
查了下,同款小米TM1709主板有独显的本子,独显配置应是MX250或者MX110,这两个显卡走的均是PCIE 3.0@x4。想着3.0的速度就有点馋,立即判断,外接显卡有得搞。
科普一下,目前PCIE已经到了第四代4.0。各代带宽和速率列表如下:
当然,上面是单Lane的速率,如果是多条Lane,总速率要乘以Lane数。
跑题了,这节讲的是连接器选型。PCIe x4一共20根信号线(具体信号见第三节信号定义)。要找一个类似USB口的方案,把外接显卡的线可以正常插拔的接口。个人鄙视那种两根老粗的线直接从m.2的插槽引出来,搞完壳体盖不上的外接方案,想想都失去笔记本的意义。
找了一圈,满足pin数和小体积要求的,只有USB type-c的24pin座子连接器。其实作者最想用的是micro hdmi,能防插反,可惜它只有19pin,PCIe x2可以而x4肯定不行。其他的8611等大头哥哥就更别想了,体积太大。Type-c有个确定是不防插反,但是在没有别的选择了,只能选择type-c。
于是乎第一步就先把笔记本开了个洞洞,放了一个type-c的母座,搞完外观还能看。考虑右手要用鼠标,接口开在左侧。请注意,这不是一个type-c,这是一个DIY添加的PCIe x4。
内部位置如下,刚好有个小空位能放下type-c,空间尺寸没记错的话,当时用游标卡尺测量结果长宽高是12.0*7.5*7.5mm,塑料厚度是1.8mm。这里的宽是主板PCB的宽,实际type-c能放到PCB板下面,所以宽度不太受限。
type-c座子尺寸如下左图。长宽高9.87*8.65*3.26mm。钻孔的时候用2.9-3.0直径的钻头就可以,作者用电钻钻的,有点风险,推荐还是手工钻慢慢搞。
还有一个问题就是,怎么防止座子拔出时被带出。解决方法就是下图这样,胶布缠边缘留一点,然后烙铁上锡。装上后用胶枪打点胶就固定住了(千万不要用502一次性焊死,万一有问题就SB了),绝对不会在插拔时被带出来。
下图实物是第一个用0.1mm线飞的连接,实际对信号影响较大,第二版改用了和type-c座子pin中心间距(0.5mm)相同的FPC来设计,效果好很多。这是后话。
3 显卡pin信号定义
从显卡焊盘把PCIE的信号线飞线出来就可以外接显卡。有哪些信号呢,PCIe x1的应该都知道了:CLK+/-、TX+/-、RX+/-、复位信号RST、WAKE信号、GND,一共9根信号线。而PCIe x4无非就是再加3对TX和RX有12根信号线。那PCIex4总共9+12=21根信号线(作者后期实测才确定,WAKE信号确实可以不用,实际8+12=20根就可以)。
明确信号后,难点来了,没有原理图,怎么知道独显哪些pin是这8+12个信号?
网上找了一圈本本的原理图,结果没有,想了下新本子也不太可能有,不然小米还卖个啥…尝试找MX110和MX250芯片的Datasheet!可惜去论坛和英伟达官网转了一圈,结果还是没有找到。
直到在论坛看到MX110就是GT920M的马甲显卡,MX250就是GT940M的马甲...再看看英伟达的官方图片,以及论坛参数信息,确定只要找一个GT920M的本子的原理图和pcb图,基本就能知道MX110的显卡pin定义了。然而论坛里还是没能找到GT920M笔记本的原理图和PCB资料。最后,万能的淘宝帮了我,五块钱买了一份Asus X455LD的点位图,从此,黑路变明路。
最终MX110显卡的PCIe x4总线信号脚如下,MX250/MX230/MX130跟它一样。
附一些当时确定MX110芯片型号的链接,叫N16V-GMR1-S-A2(A2貌似是GT920M,MX110的记不得了,反正封装和这个一样N16V-GMR1-S-A2)
https://www.notebookcheck.net/GeForce-MX150-vs-GeForce-MX110_8000_8130.247598.0.html#
http://share.iclient.ifeng.com/shareNews?aid=53690964&fromType=vampire
https://www.docin.com/touch/detail.do?id=503093690
封装图片
小米笔记本焊盘图片,红圈是PCIe x4信号区域,看不懂的@作者。
PCIe x4信号定义图(Top view)
4 器件补焊/复位信号推断
明确信号pin定义,还要把NC的器件补焊上,Serdes的差分线电容还好找,一对一对排齐的电容,很快就找到了。补完如下图。
显卡的四对RX(CPU的TX)共8颗电容。
显卡的四对TX(CPU的RX)共8颗电容。
注意这里PCIe 3.0用的电容不再是0.1uF,而是0.22uF,虽然是0402的焊盘,不过推荐用0201的器件,分布参数更小些。借用别人的图:
复位的器件补焊卡了一下,但没难到我,一步步找到下图这些位置是CPU复位显卡的信号路径。只不过CPU的输出电平是1.8V,而显卡的是3.3V,先不管他直接连上,1.8V应该先可以拉高显卡。而且复位电路一般是mos管的OD门电路,凭借经验,要加一个上拉电阻,参考以前本子的电路图,上拉的是10k的电阻。保险起见咱先拉一个15k的,不行再减小。补焊器件如下:
放大看,红线用0R连接。然后,复位信号还要做一个1.8V上拉,上拉电阻用4.7K,这里是CPU千万别3.3V上拉。
上拉的1.8V的电源,作者选了这个点,可以自己量一下是1.8V。
5 REQCLK信号拉低
上面都搞好了,楼主小激动地插上显卡进行了第一把试机,结果和预想的一样,没识别显卡...所以还要排查哪根信号有问题。可怜没有示波器....只好用万用表摸着石头过河,然后发现不插显卡,TX/RX信号都有电压,而CLK竟然没有电压。那么为啥没时钟呢,又逛了一圈帖子,发现时钟请求信号REQCLK要拉低,作为Host的CPU才会输出时钟信号。又按图索翼量了一圈,找到REQCLK信号路径如下,下拉了一个1k电阻。再测试,时钟信号电压表测量约0.65V的电压,不再是0V,时钟有了!
连接下图红圈0R电阻连接,显卡焊盘的REQCLK就连上CPU的REQCLK了。然后再接一个1K下拉到地就行了。
到这,器件补焊就完成了!
6 信号串扰,信号质量改善
可是,再次接上显卡上电开机试验的时候,还是不识别卡,这就**了...
开动脑筋想想想,觉得3.0的路径,这个搞法信号质量是不是太差了,于是用下图的方式直连试了一把,不走type-c连接器,结果设备管理器GTX1060显卡它出来了...
在想哪个地方出的问题?从不怀疑信号质量太差3.0可能会跑到2.0甚至1.1,但不太可能识别卡都不行。经过几翻周折,发现走type-c座子很小概率还是能识别到卡,最后终于找到原因:Serdes的TX和RX信号串扰了,看看type-c的连接器信号距离就知道,第一次把TX和RX信号镜像排布了,母座正反面pin之间的塑料也就0.5mm,不串扰才怪。
把信号分开一些,结果稳定识别了。这使得我不得不重新思考信号排布的问题。问了下搞信号串扰研究的小伙伴,串扰主要要避开TX与RX信号路径,避免源端串扰。因为远终端TX与TX的干扰,干扰信号会随着信号路径,和有用信号一起衰减;而源端如果串扰,TX的信号直接就耦合到源端的RX了。
下图是重新做的信号排布,主要考虑三个当面:(1) TX和RX隔离,差分信号间用地隔开,(2)pin数有限,时钟信号没办法和,先和RX镜像放一块,后面再想办法去掉CLK,这是后话。(3)如果做不到x4模式,预留后路做成x2时,串扰尽量小。
上图最终想去掉CLK+/-的信号排布,调测阶段先走PCIe x1,CLK+/-随便先放在TX1+/-的位置,能工作起来。
到这里,硬件难题全部攻破。目前成品背面图片。飞线出来先经过了两个12pin的FPC座子,这么做的目的是防止以后拆主板麻烦。
8 368.81驱动
硬件识别卡后,硬件的难点基本就攻破了。下面开始进行驱动安装,不出所料,安装完黄卡感叹...这时候第一想到的自然是eGPU DIY软件,很遗憾折腾了一个周末两夜都没把感叹号黄卡去掉。
有点泄气,再看看论坛帖子,发现了神贴。368.81驱动可以解决43错误,而且还不用eGPU软件!方法我不过多介绍,都是前人的宝贵经验,附链接(http://tieba.baidu.com/p/5018389514)。几个点提一下,安装时要禁用驱动签名,.inf小米的是nvqui.inf,但是修改它没用,要修改nv_dispi.inf下图两个位置。其他步骤和链接方法一样。
9 外接成功
驱动安装完,外屏突然亮起,终于乐了,哈哈哈。内屏试了下也可以设置,NVIDIA控制面板3D和phy都改为高性能显卡就能内屏,到这一步应该都会了,不会的朋友去问度娘吧。从此难点几乎都攻破了,剩下一堆优化的事情。
PCIe x1模式内屏跑鲁大师帧率50,不会增也不会减,明显带宽限制,等PCIe x4的结果再看。
10 后续优化
(1)验证能不能100M晶振直接给显卡提供CLK,省掉两根信号线,给PCIex4留条路。
(2)添加与门保护CPU RST复位信号,避免外接RST接错或者ESD什么的把CPU搞挂了。
(3)把PCIe x4剩下的信号线加上。
(4)type-c的公头pcb是两层板,自己要做一个四层板,避开信号串扰。
优化的事情等我后续的帖子更新。搞这事女朋友不知道吐槽了多少次,乐在其中吧,继续折腾。第一次发帖,觉得有用的小伙伴们别忘了顶起来啊!!!
4月份入手的小米ruby 15.6。老实说,除了看中他的屏幕大适合办公、便宜外,还有一点就是m.2插槽吸引我,可以外接显卡DIY过把瘾。
先上一张外接显卡成功图,有帮到大家的请顶起来,让有需要的小伙伴看到。
题外话不多说,进入主题。
1 NVMe插槽不支持PCIe
M.2接口竟然不支持PCIe x4。为此还特意上东东买了三星970EVO Plus(支持NVMe固态)SSD来做测试,实测确实不支持。插上硬盘能用,但工作在SATA3.0模式,而非NVME/PCIEx4。
这样的话,外接显卡计划有点凉凉。
2 连接器选型
本来已经打消PCIE外接显卡的念头。看到独显的焊盘,想到它不也是PCIE吗…没错,你猜对了,从独立显卡焊盘上把PCIe x4的线飞出来,外接显卡。这种操作网上没找到成功的经验,看到的一个论坛有这种想法,可惜没有下文,也不知道结果是啥。https://www.chinafix.com/thread-948361-1-1.html。那么不管他把吧,自己试试看。
查了下,同款小米TM1709主板有独显的本子,独显配置应是MX250或者MX110,这两个显卡走的均是PCIE 3.0@x4。想着3.0的速度就有点馋,立即判断,外接显卡有得搞。
科普一下,目前PCIE已经到了第四代4.0。各代带宽和速率列表如下:
当然,上面是单Lane的速率,如果是多条Lane,总速率要乘以Lane数。
跑题了,这节讲的是连接器选型。PCIe x4一共20根信号线(具体信号见第三节信号定义)。要找一个类似USB口的方案,把外接显卡的线可以正常插拔的接口。个人鄙视那种两根老粗的线直接从m.2的插槽引出来,搞完壳体盖不上的外接方案,想想都失去笔记本的意义。
找了一圈,满足pin数和小体积要求的,只有USB type-c的24pin座子连接器。其实作者最想用的是micro hdmi,能防插反,可惜它只有19pin,PCIe x2可以而x4肯定不行。其他的8611等大头哥哥就更别想了,体积太大。Type-c有个确定是不防插反,但是在没有别的选择了,只能选择type-c。
于是乎第一步就先把笔记本开了个洞洞,放了一个type-c的母座,搞完外观还能看。考虑右手要用鼠标,接口开在左侧。请注意,这不是一个type-c,这是一个DIY添加的PCIe x4。
内部位置如下,刚好有个小空位能放下type-c,空间尺寸没记错的话,当时用游标卡尺测量结果长宽高是12.0*7.5*7.5mm,塑料厚度是1.8mm。这里的宽是主板PCB的宽,实际type-c能放到PCB板下面,所以宽度不太受限。
type-c座子尺寸如下左图。长宽高9.87*8.65*3.26mm。钻孔的时候用2.9-3.0直径的钻头就可以,作者用电钻钻的,有点风险,推荐还是手工钻慢慢搞。
还有一个问题就是,怎么防止座子拔出时被带出。解决方法就是下图这样,胶布缠边缘留一点,然后烙铁上锡。装上后用胶枪打点胶就固定住了(千万不要用502一次性焊死,万一有问题就SB了),绝对不会在插拔时被带出来。
下图实物是第一个用0.1mm线飞的连接,实际对信号影响较大,第二版改用了和type-c座子pin中心间距(0.5mm)相同的FPC来设计,效果好很多。这是后话。
3 显卡pin信号定义
从显卡焊盘把PCIE的信号线飞线出来就可以外接显卡。有哪些信号呢,PCIe x1的应该都知道了:CLK+/-、TX+/-、RX+/-、复位信号RST、WAKE信号、GND,一共9根信号线。而PCIe x4无非就是再加3对TX和RX有12根信号线。那PCIex4总共9+12=21根信号线(作者后期实测才确定,WAKE信号确实可以不用,实际8+12=20根就可以)。
明确信号后,难点来了,没有原理图,怎么知道独显哪些pin是这8+12个信号?
网上找了一圈本本的原理图,结果没有,想了下新本子也不太可能有,不然小米还卖个啥…尝试找MX110和MX250芯片的Datasheet!可惜去论坛和英伟达官网转了一圈,结果还是没有找到。
直到在论坛看到MX110就是GT920M的马甲显卡,MX250就是GT940M的马甲...再看看英伟达的官方图片,以及论坛参数信息,确定只要找一个GT920M的本子的原理图和pcb图,基本就能知道MX110的显卡pin定义了。然而论坛里还是没能找到GT920M笔记本的原理图和PCB资料。最后,万能的淘宝帮了我,五块钱买了一份Asus X455LD的点位图,从此,黑路变明路。
最终MX110显卡的PCIe x4总线信号脚如下,MX250/MX230/MX130跟它一样。
附一些当时确定MX110芯片型号的链接,叫N16V-GMR1-S-A2(A2貌似是GT920M,MX110的记不得了,反正封装和这个一样N16V-GMR1-S-A2)
https://www.notebookcheck.net/GeForce-MX150-vs-GeForce-MX110_8000_8130.247598.0.html#
http://share.iclient.ifeng.com/shareNews?aid=53690964&fromType=vampire
https://www.docin.com/touch/detail.do?id=503093690
封装图片
小米笔记本焊盘图片,红圈是PCIe x4信号区域,看不懂的@作者。
PCIe x4信号定义图(Top view)
4 器件补焊/复位信号推断
明确信号pin定义,还要把NC的器件补焊上,Serdes的差分线电容还好找,一对一对排齐的电容,很快就找到了。补完如下图。
显卡的四对RX(CPU的TX)共8颗电容。
显卡的四对TX(CPU的RX)共8颗电容。
注意这里PCIe 3.0用的电容不再是0.1uF,而是0.22uF,虽然是0402的焊盘,不过推荐用0201的器件,分布参数更小些。借用别人的图:
复位的器件补焊卡了一下,但没难到我,一步步找到下图这些位置是CPU复位显卡的信号路径。只不过CPU的输出电平是1.8V,而显卡的是3.3V,先不管他直接连上,1.8V应该先可以拉高显卡。而且复位电路一般是mos管的OD门电路,凭借经验,要加一个上拉电阻,参考以前本子的电路图,上拉的是10k的电阻。保险起见咱先拉一个15k的,不行再减小。补焊器件如下:
放大看,红线用0R连接。然后,复位信号还要做一个1.8V上拉,上拉电阻用4.7K,这里是CPU千万别3.3V上拉。
上拉的1.8V的电源,作者选了这个点,可以自己量一下是1.8V。
5 REQCLK信号拉低
上面都搞好了,楼主小激动地插上显卡进行了第一把试机,结果和预想的一样,没识别显卡...所以还要排查哪根信号有问题。可怜没有示波器....只好用万用表摸着石头过河,然后发现不插显卡,TX/RX信号都有电压,而CLK竟然没有电压。那么为啥没时钟呢,又逛了一圈帖子,发现时钟请求信号REQCLK要拉低,作为Host的CPU才会输出时钟信号。又按图索翼量了一圈,找到REQCLK信号路径如下,下拉了一个1k电阻。再测试,时钟信号电压表测量约0.65V的电压,不再是0V,时钟有了!
连接下图红圈0R电阻连接,显卡焊盘的REQCLK就连上CPU的REQCLK了。然后再接一个1K下拉到地就行了。
到这,器件补焊就完成了!
6 信号串扰,信号质量改善
可是,再次接上显卡上电开机试验的时候,还是不识别卡,这就**了...
开动脑筋想想想,觉得3.0的路径,这个搞法信号质量是不是太差了,于是用下图的方式直连试了一把,不走type-c连接器,结果设备管理器GTX1060显卡它出来了...
在想哪个地方出的问题?从不怀疑信号质量太差3.0可能会跑到2.0甚至1.1,但不太可能识别卡都不行。经过几翻周折,发现走type-c座子很小概率还是能识别到卡,最后终于找到原因:Serdes的TX和RX信号串扰了,看看type-c的连接器信号距离就知道,第一次把TX和RX信号镜像排布了,母座正反面pin之间的塑料也就0.5mm,不串扰才怪。
把信号分开一些,结果稳定识别了。这使得我不得不重新思考信号排布的问题。问了下搞信号串扰研究的小伙伴,串扰主要要避开TX与RX信号路径,避免源端串扰。因为远终端TX与TX的干扰,干扰信号会随着信号路径,和有用信号一起衰减;而源端如果串扰,TX的信号直接就耦合到源端的RX了。
下图是重新做的信号排布,主要考虑三个当面:(1) TX和RX隔离,差分信号间用地隔开,(2)pin数有限,时钟信号没办法和,先和RX镜像放一块,后面再想办法去掉CLK,这是后话。(3)如果做不到x4模式,预留后路做成x2时,串扰尽量小。
上图最终想去掉CLK+/-的信号排布,调测阶段先走PCIe x1,CLK+/-随便先放在TX1+/-的位置,能工作起来。
到这里,硬件难题全部攻破。目前成品背面图片。飞线出来先经过了两个12pin的FPC座子,这么做的目的是防止以后拆主板麻烦。
8 368.81驱动
硬件识别卡后,硬件的难点基本就攻破了。下面开始进行驱动安装,不出所料,安装完黄卡感叹...这时候第一想到的自然是eGPU DIY软件,很遗憾折腾了一个周末两夜都没把感叹号黄卡去掉。
有点泄气,再看看论坛帖子,发现了神贴。368.81驱动可以解决43错误,而且还不用eGPU软件!方法我不过多介绍,都是前人的宝贵经验,附链接(http://tieba.baidu.com/p/5018389514)。几个点提一下,安装时要禁用驱动签名,.inf小米的是nvqui.inf,但是修改它没用,要修改nv_dispi.inf下图两个位置。其他步骤和链接方法一样。
9 外接成功
驱动安装完,外屏突然亮起,终于乐了,哈哈哈。内屏试了下也可以设置,NVIDIA控制面板3D和phy都改为高性能显卡就能内屏,到这一步应该都会了,不会的朋友去问度娘吧。从此难点几乎都攻破了,剩下一堆优化的事情。
PCIe x1模式内屏跑鲁大师帧率50,不会增也不会减,明显带宽限制,等PCIe x4的结果再看。
10 后续优化
(1)验证能不能100M晶振直接给显卡提供CLK,省掉两根信号线,给PCIex4留条路。
(2)添加与门保护CPU RST复位信号,避免外接RST接错或者ESD什么的把CPU搞挂了。
(3)把PCIe x4剩下的信号线加上。
(4)type-c的公头pcb是两层板,自己要做一个四层板,避开信号串扰。
优化的事情等我后续的帖子更新。搞这事女朋友不知道吐槽了多少次,乐在其中吧,继续折腾。第一次发帖,觉得有用的小伙伴们别忘了顶起来啊!!!