NVIDIA Shield 消失的解决办法和Moonlight串流

3080ti,Geforce experience

Views:  times Updated on March 14, 2023 Posted by elmagnifico on January 16, 2022

Foreword

之前有用Moonlight串口pc的游戏到公司电脑,然后突然有一天串流就不可用了,NVIDIA Shield 就消失了,怎么都开不起来。串流就失败了。然后也记录一下Moonlight串流的操作。

由于NVIDIA单方面宣布停止NVIDIA Shield Service,我之前一直以为是停止Shield硬件支持,没想到这个老黄直接把PC端的都干掉了,所以本篇Blog也成了历史的眼泪,新的串流方法是使用Sunshine,依然是Moonlight的,当然截止到今日20230-03-14 Shield依然正常工作

https://github.com/moonlight-stream/moonlight-docs/wiki/NVIDIA-GameStream-End-Of-Service-Announcement-FAQ

备胎方案看这里

https://elmagnifico.tech/2023/03/14/Sunshine-moonlight/

NVIDIA Shield 消失的解决办法

要想用Moonlight串流,就必须先解决 NVIDIA Shield 消失的问题,否则一定无法串流。

一般情况

一般情况下可能是Shield对应的进程或者服务没有启动,导致Shield不见了。

所以检查 NVIDIA Web Helper.exe 是否启动了

以及 NVIDIA 服务是否启动了,主要是看NVIDIA LocalSystem Container,服务是否正常。

远程桌面导致无法获取信息

RPD远程桌面的时候会出现无法获取信息!的故障提示,这个问题只能通过其他远程桌面比如AnyDesk或者TeamView等方式打开,他们打开就不会提示了。

国内联网问题

如果以上进程和服务都没问题,那大概率是联网问题了

看了几个帖子,大概就是驱动升级以后 NVIDIA Shield 有一项关键服务是联网的,而他的地址不巧,被墙了,导致正常连接根本连不到。

要解决这个问题就是想办法连到,有人通过改DNS来连接,但是这个方法现在已经不好用了,所以还是得通过翻墙或者代理对应的连接才行。

我通过netch代理进程以后,查看log,反复重启 NVIDIA LocalSystem Container 服务,大概搜集到了以下连接

3.113.57.2:443 timeout
18.176.165.151:443 timeout
35.165.244.249:443 timeout
52.33.13.112:443 timeout
52.89.140.243:443 timeout
54.92.35.37:443 timeout
52.193.86.115:443 timeout
52.194.128.239:443 timeout
72.25.64.2:443
117.18.232.173:443
152.199.40.78:443 timeout

其中72.25.64.2和117.18.232.173都是能正常连接的,而其余连接则是全部timeout,这些timeout的连接也都是Shield的验证服务器,所以随便他们中哪个连接可以连通,那么Sheild就能正常显示。

所以接下来就是在路由里面设置白名单,强行要求代理以下ip即可(有些路由更新DNS或者说PC更新DNS比较慢,建议添加以后手动重启路由器和PC,加速这个代理过程)

# 以下IP选一个就行,但是最好都加上吧,防止万一哪天哪个IP掉了
3.113.57.2
18.176.165.151
35.165.244.249 
52.33.13.112
52.89.140.243
54.92.35.37
52.193.86.115
52.194.128.239
152.199.40.78
# 注意下面这两个ip虽然能正常连上,但是也需要代理,否则验证不通过,SHIELD依然不能显示
72.25.64.2
117.18.232.173

或者是加速器代理指定ip也行,然后重启一下 NVIDIA LocalSystem Container 服务,就可以看到SHIELD 正常显示出来了

只要SHIELD正常显示了,那么这个时候断开他的代理也不会有问题,这个服务只是做了一次验证,只要不重启就一直有效。

MoonLight

再记录一下MoonLight 如何串流

https://moonlight-stream.org/

首先是下载moonlight

https://github.com/moonlight-stream/moonlight-qt/releases

然后正常安装即可,安好以后,确认你的Shield是正常能打开的状态,同时开启GAMESTREAM

ZeroTier

这里不得不提ZeroTier,因为串流本质上是要求局域网内才能这么操作的,但是当你在公网以后,需要串流就必须通过打洞来实现了。详细的看下面我的教程

http://elmagnifico.tech/2020/09/23/NAS-ZeroTier/

当两台PC都加入到了同一个ZeroTier的局域网以后,就可以开始匹配了

匹配

与串流PC进行配对

串流PC会显示输入验证码,输入即可

然后在显示PC上就看到了如下画面,已经正常连接了

点进去就能看到当前可以串流的游戏,剩下就是点击就能玩了

设置

一般来说网速没问题,都设置成1080P 60fps,然后下面的视频码率,可以当作带宽来看到,建议不超过串流网络的上传速率,比如家里只有30M上传,那么就别超过30就行了。

自定义串流软件

本质上说任何软件都能通过串流来显示,而默认情况下Shiedl只显示Geforce Experience扫描出来的游戏,如果你需要一些其他游戏,或者说这个游戏是通过一些软件或者平台启动的,就需要自定义添加。

在SHIELD这里,添加,然后指定exe即可,比如我这里D2R就是暗黑2,而mstsc就是windows RPD 远程桌面的exe,我也拿来串流了。

RPD锁帧的问题

众所周知,当使用RPD远程桌面的时候,很多游戏会直接无法开启,甚至它本身不调用显卡,但是通过MoonLight则可以强制开启,并且解锁RPD桌面的锁帧问题。

比如我如果使用RPD打开暗黑2,那么必定锁30帧,而且无论怎么调整都无效。但是当我使用MoonLight开启RPD的时候,锁帧就被取消了,这就很舒服了。

分辨率问题

注意修改分辨率,不要通过windows自带的,类似下图的地方修改,改了以后Moonlight可能识别不到,会导致串流的分辨率还是错误的。

要通过NVIDIA的显示更新分辨率来设置,这样才能正确识别。如果已经改了,可以先改个别的分辨率,再切过来就行了

可能很多串流的机器已经不是1080p了,但是串流以后会发现图像特别小,甚至可能有黑边,然后鼠标也是错位的情况。

这个时候就需要你进到NVIDIA的控制面板-调整桌面尺寸和位置 然后设置成全屏,下面的分辨率也设置成1080P

然后再重新开启串流,刚才变形的画面就正常了。

Summary

总的来说还是非常爽的,有了MoonLight以后基本走到哪里都能串流,手机也行,平板也行,非常舒服,再配合一个远程插座、远程开启PC,简直完美。

Quote

https://tieba.baidu.com/p/7667214917#142649620547l

https://tieba.baidu.com/p/7685678088

https://tieba.baidu.com/p/7447444245

https://bbs.a9vg.com/thread-5365751-1-1.html

https://nvidia.custhelp.com/app/answers/detail/a_id/4581

https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide