偶然在知乎看到有人问:“为什么认为游戏帧数要到 60 帧每秒才流畅,而大部分电影帧数只有 24 帧每秒?”

觉得自己有必要回答一下问题,发表在知乎上,Copy到这里。

原链接:http://www.zhihu.com/question/21081976/answer/75357913

 

在我看来,题主的这个问题其实包含了若干个小问题,这若干个小问题又引出一些其它的问题,我们一个个来看:

1、“为什么大部分电影只有24帧每秒?”

2、引发的问题(个人认为):“24帧每秒真的流畅吗?”

3、进而引发的问题:“如何解决观看视频时不流畅?”

4、”为什么认为游戏帧数要到 60 帧每秒才流畅?“

5、引发的问题:“如何解决或缓解游戏达不到60帧时不流畅的感觉”

注意

1、由于视频与游戏不太一样,“视频输出与显示设备不同步”与“游戏输出与显示器不同步”不同,请注意。

2、我们需要了解一点:由于人眼的适应性,观看等时输出的画面时会觉得流畅。而非等时输出的画面会明显感知。

下面我们来一一回答:

1、“为什么大部分电影只有24帧每秒?”

答:略,这个问题看其它答案吧,回答好的比比皆是,我就不再班门弄斧了。(滑稽)

2、引发的问题(个人认为):“24帧每秒真的流畅吗?”

答:其实电影24帧每秒是否流畅都要看设备。归根到底就是“视频输出与显示器不同步”,现在说下原理。

电影24帧历史由来已久,但发展到现阶段是最适合现代人的视觉感官的吗?个人的答案是——NO

首先我们先讲到人们日常观看电影(或视频)的两种方式:电视和显示器。

电视标准为两个:NTSC(29.97帧)和PAL(25帧),而大部分电视都支持24帧、25帧、30帧(24p、25p、30p),也就是说,观看电影时,视频文件每帧和电视每帧同步,每帧与每帧之间的输出间隔相同,由于等时效应,人眼感觉流畅。

而显示器大多支持50Hz、59Hz,60Hz这之中就有问题,其中默认都是60Hz。

当观看30p的视频文件时,显示器(60Hz)每刷新2次会输出视频文件的1帧,同步(2倍关系)

当观看25p的视频文件时,显示器(更改为50Hz)每刷新2次会输出视频文件的1帧,同步(2倍关系)

但是,当观看24p的视频文件时,却怎样才能同步?无论50Hz,59Hz,60Hz都不是其整数倍关系

这时显示器是如何工作的呢?

60/24=2.5,显示器要么刷新2次输出(视频文件的一帧),要么刷新3次输出(视频文件的一帧),不会出现刷新2.5次的情况

看似很合理,但我们分析一下其中的时间间隔

等时输出24帧画面需要的时间:1000ms/24=41.666……ms(24p视频文件)

显示器器实际的刷新时间:1000ms/60=16.666……ms(60Hz显示器)

于是就造成了以下结果:

当显示器刷新2次输出视频文件的1帧的时候,也就是显示器16.666……ms*2=33.333……ms

小于41.666……ms

当显示其刷新3次输出视频文件的1帧的时候,也就是显示器16.666……ms*3=49.999……ms

大于41.666……ms

所以当显示器输出24p视频文件的时候,是这样输出的:

前一帧和后一帧都不是等时输出,如此循环反复,人眼感官上肯定是不流畅的,更细致地说,画面输出间隔一会儿快一会慢,那种感觉与其说是卡顿,倒不如说是抖动感觉更合适。

所以,说到这里,有的人有没有发觉在电视上观看电影或视频时比显示器要流畅?

(但这种对比实际操作起来并不容易,因为如果将电视接在显卡上,你还是要设置刷新率的,这不就和显示器一样了吗)

现实的情况上比这更复杂,有的电视本身就提供了用于硬件补帧的电路,关于硬件补帧,后面讲到。

3、“如何解决观看视频时不流畅?”

要解决由于“视频输出与显示器不同步”引发的抖动问题,目前有以下几种方案:

①原生支持,显示器直接支持常用视频格式的输出帧率,比如24帧每秒的视频,就直接设为24Hz,效果最好。除了需要显示器支持,几乎不存在缺点。

②插帧,通过算法计算上下两帧画面中间的画面,插在两帧中间并按上中下的顺序输出出来。效果非常好。因为直接输出60帧每秒,所以每帧的间隔时间比原生24帧每秒更短,感官上甚至比上一种方案更流畅。但也存在缺点,暂停时可能会定格在这种中间帧上,并不是精确地实际画面,类似其他答友提到的动态模糊,所以需要截图时最好关闭。

如下图:

A PINK - NONONO .mp4_20151205_140656.156 Girls.Generation.Japanese.2012.BluRay.1080p.AC3.x264-CHD.mkv_20151205_140248.937

插帧分为两种:

软件插帧:使用通用集成电路(CPU)也就是软件来实现插帧,相关的计算任务由软件本身的算法定义,交由CPU来实现。相关软件:SVP,全称SmoothVideoProject,效果不错,缺点就是需要占用一定的CPU,具体占用情况视视频情况而定。低端CPU不建议使用。

硬件插帧:使用专用硬件集成电路实现的插帧技术,软件只进行调用,实际的计算交由硬件负责。所以CPU占用低到忽略不计。相关软件:Bluesky Frame Rate Converte,相关硬件:AMD独立显卡和AMD的CPU中的核显,两者都需要GCN架构以上。新版本中也可使用Intel Haswell架构以上的核显。目前作为本人的日常使用选项。

③这是madvr提供的一种方式,smooth motion,这一种是配合显示器的刷新率,优化视频画面输出的顺序,具体并不太了解,有人说有用,但是个人使用后感觉并没有多大的改善效果。

④potplayer播放器提供的倍帧,以前版本叫动态补偿,就是输出重复帧,与插帧不同,不计算中间帧,单纯将24帧的画面重复成48帧的画面,然后再输出到60Hz的显示器上,由于帧数翻倍,每帧的输出时间都会比较低,造成的抖动效果更少,实际效果虽然比不上插帧来的显著,但也比较不错,曾在一段时间内作为本人的日常使用选项。题外话:在win10上打开倍帧会更流畅,不知是不是新版本WDDM的原因。

4、”为什么认为游戏帧数要到 60 帧每秒才流畅?“

要剖析这个问题,就要不得不提到两个概念:每秒帧数和帧延时。

对于FPS(Frames per Second),即每秒帧数,通常每秒输出24张画面以上,根据人眼的视觉暂留现象,就被认为是连续的,但是不可忽视的是,这是一个统计学概念,只能描述宏观行为。

而针对游戏的卡顿情况,从微观上观察才是合理的,于是就有人提出了帧延时的概念。

帧延时,或者说Micro-stuttering。简而言之就是帧生成时间,可以理解为两帧输出的间隔时间。

如果你阅读并理解了上面的内容,那这里也就好理解了,游戏比视频更复杂,渲染量也更加不均衡,由于渲染量忽高忽低,在显卡运算上不可控制,每帧渲染耗时也不尽相同,在一秒之内如果有59帧渲染量都很小,每帧的耗时也很低,但是就有那么一帧相当复杂,渲染量很高,导致耗时很高,FPS就不能表现出来,如下图(图片取自网络):

 

sgpu-bc2-6870

可以看到突然有一帧的耗时相当长,达到了58ms,这表示什么呢?

显示器在刷新显示出A这一帧后,要等待58ms才能刷新显示B,而人的视觉系统善于捕捉不规律场景,那这一段延时就会被明显感知。

而在游戏场景中,这种问题相当常见:(图片取自网络)

bs-amd bs-nv

可以看出N卡相对A卡更平缓一些,但也只是缓解问题。

所以,实际上设成50Hz也行,只要显卡均匀输出每个画面,间隔时间一样长,就像播放每秒50帧的视频文件,也是不会出现卡顿的。人眼也就感觉流畅。

可以猜测,针对游戏的驱动优化就是分析出现这些延时帧较高的特定场景,进而对这些场景分析并优化,解决短板效应带来的影响,平均FPS和最低FPS就会显得好看。

所以,为什么会有60FPS流畅的说法呢?

个人认为有两个原因,

第一个原因:60FPS代表性能段,如果一款游戏平均帧率高于60FPS,那么出现帧延时的现象的频率更低。

第二个原因:因为显示器刷新率为60Hz,与60帧每秒对应,理论上同步,如果低于60帧,则还会出现渲染-刷新延迟问题(以下讲到)。

当然还有一个不算原因的原因:历史的原因,如果从CRT显示器时代就是默认50Hz,那么现在的说法也就会变成“为什么游戏帧数一般要到 50 帧每秒才流畅”这个说法。

5、“如何解决或缓解游戏达不到60帧时不流畅的感觉”

我们先来讲一下垂直同步技术,垂直同步解决的问题其实是画面撕裂(只讲每秒帧数达不到60帧的情况)

玩游戏时显卡的工作可不像视频输出那么有规律,每一帧的处理、渲染时间都不尽相同,而显示器很规律,每1000/60=16.666……ms就向显卡要一次画面。就像饭店,服务员每隔一段时间向后厨要客人点的饭,后厨说:忙不过来了,你先把这半碗饭端过去吧……半碗……半碗……

转到显示器上,就是完整的画面渲染不过来了,只渲染了一半的画面,由于液晶显示器的工作状态:你显卡不给我信号,那我就刷新显示前一帧的画面,可是你只给了半个画面(半碗饭),那我就把你给的这半个画面和上一帧的另一半画面一块显示出来,于是玩家看到了画面撕裂。(为了便于理解这样讲解)

怎么解决呢?开启垂直同步,强制每秒输出60帧,理论上讲你显卡输出超过60帧每秒,显示器也显示不过来啊(当每秒帧数超过刷新率时,显示器依旧每秒只输出60次画面,于是多出来的画面就丢弃了,这称为丢帧或掉帧)。

也就是说,强制后厨做完整碗饭再端上来,特么的有你这样给客人上半碗饭的么?

这样看似完美了,但是问题又来了,前面说到,玩游戏时显卡的工作不那么有规律,每一帧的处理、渲染时间都不尽相同,突然这一帧工作量超大,渲染时间超过了16.66……ms,于是不输出,再过16.66ms的时候输出给显示器,于是这一帧的渲染时间就变成了33.333……ms,1000/33.333……=30,即到达了每秒输出30帧的标准, 这种突然的输出延时,造成了人眼的卡顿。

翻译过来就是,后厨忙不过来,但是又不允许只盛半碗饭,那服务员你下次再来吧,客人这段时间就只能饿着了。

怎么办,怎么办?

造成这个原因最根本的是什么?

就是“游戏输出与显示器不同步”啊,要是能同步,还有你垂直同步什么事?

根据上面说的面垂直同步解决的是撕裂,但是又带来了渲染延迟的问题,针对延迟渲染的问题,下面我再解释一下:
假设不考虑画面撕裂,只考虑渲染量不均,当显卡渲染能力到达不了60帧每秒的情况时是这样的:
游戏画面第一帧渲染量很小,在显示器要刷新第一次的时候就渲染完成了,于是显示器刷新第一次的时候画面就显示出来了。
然后突然渲染量突然变大,显卡耗时很长,这一帧刚好在显示器刷新完第2次时渲染出来,(此时由于显示器由于没有接受到新的画面,刷新再显示一次上一帧画面),这一帧画面就只能在显示器刷新第3次的时候显示出来,白白浪费16.666……ms的时间(注),于是乎玩家看到实际输出是这个样子:

实际的两帧画面间隔时间是16.666ms+16.666ms=33.333ms,这种延迟就造成了人眼的卡顿。

于是AMD的Freesync和NVIDIA的G-sync应运而生。(需要显示器支持)。

这项技术的初衷就是要解决打开垂直同步后,显卡输出达不到60帧每秒出现的渲染-刷新延迟,和关闭垂直同步后,出现的画面撕裂问题。

两者的原理大致相同,强制显卡渲染完一帧再输出,什么时候渲染完什么时候输出给显示器,显示器不再是隔一段时间来取一次。解决了“游戏输出与显示器不同步”的问题,同时渲染-刷新延迟问题不存在了,所以感觉会流畅一些。这样有点类似上面的播放视频时讲到的直接调节显示器刷新率,以达到流畅。但是有一点不可忽视,视频画面是均匀输出的,而游戏画面是不均匀输出的,人眼对于规律的画面适应性更强,但对于不均匀输出的画面适应性偏弱,所以在使用了这两种技术后,有人觉得流畅,但有人却觉得依旧卡顿。毕竟说到底这也只是小部分场景,没有从根本上解决帧渲染时间不相等的问题。

在游戏卡顿的道路上任重而道远啊。

不妨脑洞一下,既然AMD有硬件插帧技术,能不能将本来帧数偏低的画面通过硬件插帧补偿一下呢,因为硬件插帧是额外的电路,对游戏性能不造成影响。(针对视频渲染与游戏渲染的画面输出方式其实是不同的,做一个转换电路。)不用补帧到每秒60帧的程度,就是比如需要48ms才渲染完成,在这中间24ms的时候插入一帧,传统的中间帧是需要由上下两帧计算出来,那么改下算法,根据上两帧的画面计算这一帧的画面,然后再下一帧是真正渲染出来的画面,这样也可以回避传统的动态模糊造成的额外显卡运算。

哈哈哈,这不扯淡吗。。。哈哈哈,显卡怎么可能知道每一帧需要的渲染时间2333……

说点靠谱点的,游戏开发时与显卡厂商更深一步的合作,提前预判渲染量大的画面,然后提前渲染画面,也就是将垂直同步中的双重、三重缓冲拿到Freesync和G-sync上来。


自动驾驶
显卡
通用计算

看到上面的关键词你想到了什么?不会想,你脑袋秀逗了吧,科技是你这么生拉硬扯的吗?
嗯,是有些扯淡……但扯的没你想象中的那么离奇
首先咱们还是先从PC端开始,PC是我们这篇文章的开端,从DirectX9.0c被称之为GPU发展历程中最具活力的时代走出来,微软逐渐意识到Pixel Shader这项技术在历史进程中留下了辉煌的一笔,但同样也在历史进程中埋下了隐患,通俗地讲,如果不考虑效率,DirectX 9.0C甚至完全可以实现迄今为止出现过的所有图形特效。但同样,单纯加大寄存器总量无疑是死路一条,这是受制程技术制约的。

于是微软走了出来,推出DirectX10,从DirectX9到DirectX 10,微软几乎将API打破重来以构建全新的渲染体系,DirectX10也成为了第一种影响硬件设计的图形API——统一渲染架构代替传统的分离渲染,从而赋予GPU更高的渲染效率和可编程能力,也为通用计算提供良好的基础。

而从DirectX11开始,通用计算才开始大行其道(注意通用计算不是微软提出的,但DirectX11却是推动通用计算的功臣),通用计算标志着显卡不再单纯是为游戏而设计的,这就导致了一些诉求:虽然CPU的逻辑判断能力、计算精度和单核心计算能力要比GPU更强,但是GPU的优势在于核心数非常多,与CPU的核心数量相比非常悬殊,因此在一些计算场合下效率要比CPU高很多,而这些场合就是通用计算的优势,事实上通用计算所涉及的领域非常多,我们处于一个数据量爆炸的时代,而其中大部分都是简单数据的叠加计算,这正是GPU的用武之地,也就是通用计算的用武之地。(PS:比特币,挖矿或许你们有人听过,它用到的技术就是基于GPU通用计算的数据挖掘)

然后我们谈到NVIDIA,在DirectX10失利以后,AMD和NVIDIA不再由着性子来,慢慢跟着微软制定的规则走,即DirectX11,NVIDIA意识到通用计算的前景,也同样是显卡的未来之路,于2008年正式收购AGEIA,它看上的是AGEIA推出的PhysX物理加速技术,现在某些玩家可能在游戏中看到PhysX物理加速选项,这就是NVIDIA通用计算的第一个用武之地,但通用计算涉及的领域绝不仅仅是游戏那么简单。

在兴起比特币挖矿风潮时,大众已经意识到通用计算所存在的价值,而NVIDIA绝对不会考虑的这么晚。

从2008年开始,NVIDIA就做了一件当时看起来不太靠谱的事情——与微软联合研制出一款处理器,该处理器集成了一个ARM处理器和一个显示核心。用于提高Windows Mobile平台的多媒体处理能力。这就是tegra的前身,随后推出了Tegra 600和Tegra 650,并于2010年CES上推出全球首款移动双核CPUTegra 2,引发了全球移动处理器核心数量的战争,又于2011年推出全球首款移动四核处理器tegra 3,2013年推出Tegra 4,是当时市面上第一款安兔兔破4万的处理器,然后在2014年又是CES上推出Tegra K1,又到现在的Tegra X1。但是功耗发热的问题一直未能解决,然而值得注意的是,随着NVIDIA推陈出新,可以发现从Tegra K1开始,它采用的是PC显卡的架构,Kepler和Maxwell。正是基于PC显卡的架构,核心数量过多(192个CUDA核心)无疑会使Tegra在移动领域水土不服,这使得Tegra不得不瞄准其它领域(参见http://news.mydrivers.com/1/293/293121.htm),在其他功耗不是太敏感的领域,tergra的性能不再受功耗限制,性能将会有质的提升。
在移动领域未能成功后,NVIDIA开始进军汽车领域,首个合作的就是奥迪,今年年初的CES上奥迪的自动驾驶可谓是逼格满满,让一辆处于原型车状态的A7 Concept Piloted Driving在zFAS的控制下以无人驾驶状态完成了从旧金山到拉斯维加斯的行程,其最高时速甚至一度达到了140 km/h。相比其他厂商谈高谈阔论不同,奥迪可谓是高冷十足:是骡子是马拉出来溜溜。而它其中的核心就是基于Tegra K1的zFAS(中央驾驶辅助控制系统),这标志着车载Tegra平台已经走向成熟,正式进入汽车最核心的应用领域。

得益于改进自Kepler GPU架构这一要素,TegraK1天生就具备了强大的并行处理能力,这种源自GPU通用计算的并行处理能力给了Tegra K1同时处理多个复杂任务的并行度和总处理能力。通过不断深入的优化,基于Tegra K1的zFAS从最初的高速赛道行驶到高速公路长途转场,再进化到今天的通过实际城市道路通勤时段,其强大的并行处理能力已经让车辆自动驾驶技术发展到了接近成熟量产的关键节点,zFAS系统能够走到今天,来自桌面GPU架构的设计可以说是功不可没的。

——摘自中关村在线

汽车自动驾驶除了强大的数据运算能力外,必须依托背后强大的云端数据总量支撑才能有所作为,也就是车载电子元器件与外界的沟通,包括与云端的连接,娱乐平台,还有与其它车辆、道路基础设施、或任何信息来源的数据进行互联。(说到这里我不得不吐槽一下,云最本质的概念是一切计算交由云端完成,而终端设备的工作只是单纯的数据采集并提供需求。但到现在为止这种意义上的云应用范围还是太小太小,虽然这种理想化的云距离现实还太远太远,但憧憬一下心里还是有些小激动的)

自动驾驶是一块很大的蛋糕,所涉及概念也非常广泛,但在中国无疑会有更好的环境,从14年4月《国家集成电路产业发展推进纲要》发布(链接http://news.mydrivers.com/1/371/371971.htm),到最近提出的“互联网+”的概念,可以看出中国对发展电子信息行业的重视程度,而自动驾驶在其中都有交集,可以预见未来几年内自动驾驶将是众企业抢占的一块地盘。

在这之前先看图片

1

Mantle最初的目标就是刺激微软加快DirectX12的推出,由于诸多原因,DirectX更新乏力,

DirectX11生存周期明显比历代更长,但它却并不是因为像DirectX9.0c一样成功,生存周期

过长导致DirectX11的缺点一点点被放大,首当其冲的就是其对多线程优化的欠缺,严重阻

碍了显卡性能的进一步发展,而AMD的基于GCN架构则更是受限(当然AMD不争气也是重

要的原因,根本原因就是穷),当架构更新不给力,又没有足够的资金推动架构的改进,

AMD则从其它方向寻找捷径:推出Mantle,一方面通过Mantle的优化提升了自家显卡游戏

性能表现,另一方面刺激微软加快推出DirectX12(自己饭碗要被别人抢去,微软会不着急?

),并一定程度上影响了DirectX12开发,使自己更有发言权,更受益,否则若没有Mantle

的话,DirectX12不知何时会出,就算N久后,在DirectX12的开发上更有发言权的无疑会是

NVIDIA,因为不论是市场占有率,还是利润率,AMD都不是NVIDIA的对手,谁会去听一个

一直做亏本买卖的公司呢?到时候AMD会更被动,而且一旦NVIDIA占据有利地位,形成垄

断,显卡性能的发展将进一步减慢,这也不是玩家希望看到的,现在你们没看到INTEL,

NVIDIA越来越会耍滑了吗?当垄断一旦形成,电子行业不再遵循摩尔定律,这切切实实都

是人为原因。(想想现在的INTEL就知道了,什么?14nm制程推进不顺利?三星自家的

Exynos 7420都用上14nm了,你INTEL三四年会搞不定?)

 

说远了,AMD推出Mantle其实是一举两得、皆大欢喜的事情,给自己喘息的机会(至少不

会马上被K.O),正确刺激DirectX12的推出,引导显卡市场(当然后面这个就是AMD无意为

之了,AMD想的当然是干掉NVIDIA~~~笑~~~),而现在,Mantle扮演的角色相当成功

,但是AMD得未来依旧不明朗,因为显卡公司就是做显卡的,你显卡架构没有得到彻底

改进,一切就都是天方夜谭

2

3

极路由是基于openwrt修改的,而openwrt是基于linux的,哈哈,有玩头了。

日前使用迅雷快鸟PC端时总是感觉不舒服,提升带宽按理来说应该是局域网根设备所做的工作,而不是让PC来加速,不开电脑就不能享受提速,便利性大打折扣,正常的逻辑应该是路由器拨号后立即进行加速,两步本应合成为一步,使带宽加速不再受限于PC端与手机端。

而小米路由器却有这功能,小米路由器mini采用的处理器是联发科7620,极路由也是采用的7620,是否存在移植的可能?

更为方便的是,github上@fffonion已经做到了,剩下的就好办了

这里解释一下:

源码是Python写的,运行 python ./swjsq.py生成ipk文件,安装,会生成swjsq文件,这个文件就是用来加速的脚本文件

作者的步骤:

1、在路由器上安装Python,

2、生成ipk文件,然后安装

3、运行swjsq

4、设置自启动

本人在实际过程中发现:本着性能最大化,文件最精简的原则,发现1、2步骤完全不用在路由器上进行。

所以实际步骤:

1、在本地安装Python

2、CD到Python根目录,

3、新建 swjsq.account.txt,填入用户名,密码,如ahaha,123456,保存

4、执行命令python ./swjsq.py,生成ipk文件

5、解压ipk文件,打开data.tar.gz,得到.\bin\swjsq文件

6、连接极路由,放到usr\bin目录下,chmod 777 swjsq

7、./swjsq测试运行是否成功

8、设置自启动,rc.local添加(/usr/bin/swjsq &)

OK!!!

注意:不管哪种办法都要路由器安装支持https的wget或curl

关于上一篇说到刷CM12.1导致的无信号,这篇文章给出解决办法

解决办法很简单

问题重现:

*#*#4636#*#*-手机信息-设置首选网络类型不能固定,就是选上又跳回,

原理:使用LockNetworkType锁定频段

具体步骤:

因为CM12.1不能直接安装Xposed框架,XDA论坛上(链接)有解决办法:

因为是英文,这里简单将步骤翻译一下

111

选择与你android对应SDK版本的xposed-v*-sdk*-*.zip

在recovery下刷入

安装XposedInstaller_3.0-alpha*.apk

搜索安装LockNetworkType,然后在Xposed中启用,锁定在你想要的频段,因为我是电信卡,所以运行LockNetworkType选择CDMA Auto(PRL)

成功

真是不知该怎么开头,常言道:折腾总伴随着手贱,我的手贱可算得上是一绝啊!这是建站之前的事情了,印象深刻,想着建站之后立刻记下来,谁知又因为手贱,导致重装系统,唉,说多都是泪

废话少说,切入正题,日前MIUI更新乏力,开发版周更的新功能乏善可陈,虽食之无味,但弃之可惜,MIUI可是出奇的好用,可是本人的本性就是闲不住,于是乎心血来潮刷第三方rom,一想到第三方rom首先就是CM,去CM官网查看正好支持Mi3w and Mi4 (cancro)。好,twrp-2.8.7.0-cancro、CM12.1 for cancro,下载、刷入一气呵成,一切顺利,成功进入桌面,看样子一切安好,下载安装APP,玩的不亦乐乎

然后问题就来了,正打算打电话叫外卖,卧槽!!!木有信号啊!!!这可是头等大事啊!

于是*#*#4636#*#*工程测试模式,进入手机信息设置首选网络类型CDMA Auto(PRL),可是我的就是选不上,这时就开启了手贱作死模式,右上角选择无线通信频道,看到几个选项,USA Band,AUS2 Band,Band 6等等,一个一个去点,还是没用(作死成功,现在想想,一切罪恶的源头就出自这里)

其实这里的解决办法很简单,为防止忽略主题,将在下一篇文章中讲到

没办法,百度,有人说是基带刷坏了,要重新刷基带,可是我的手机IMEI,SN,和基带版本号都是正常的,而且小米压根就没有出单独的基带包,这时只能刷回官方MIUI了,于是下载700+MB的线刷包,线刷回去吧,刷完,重启,进入桌面,卧槽!卧槽!!卧槽!!!还是没有信号,无服务!!!

QQ截图20151202144855

当时我的内心是崩溃的,再度百度,也有人碰到过这种情况,也是手贱选了美国频段(看来不止我一个人手贱作死啊)

后来拿起送修了

QQ截图20151202144807

尼踏马逗我??

言归正传,新手遇到这种情况有两种解决办法,不,三种,因为返厂送修也是一种方法

1、多刷几个rom,官方第三方皆可,这种成功率随机,网上有成功的,也有成功一半的(也就是只有2G或3G),或许有的rom支持选回中国频段,只要选回就可重新刷机,理论上刷机不会有此问题发生,全是手贱惹的祸,本人当时考虑刷rom总有一种碰运气的成分,所以略过

2、QCN恢复,用高通的QPST恢复QCN文件,成功率100%,就是要有一个前提条件,你要有QCN文件。

3、返厂送修

说实话当时挺镇静的,并没有因为一时手贱而懊恼不已,或许是因为习惯了(哈哈),分析出这三种解决办法后,思路就清晰了,身为一名伪极客,本着我不入地狱谁入地狱的大无畏送死精神,当然是选择第二种方法啦

好,下面就是干货(注意:经测试Win10可能连接不上,我是用win7虚拟机)

1、首先下载安装QPST,我下载的是2.7.422版本

2、安装高通手机驱动,当然像MTK平台的就两说了,这里只讲高通平台,小米手机的驱动包含在小米的官方线刷工具MIflash中

3、输入*#*#717717#*#* 显示USB port enable,反之就是USB port disable,注:小米MIUI官方开启了这个功能,我现在用的CM12.1没有,不知别的rom怎么样

4、连接手机,设备管理器-端口会出现Qualcomm的两项,我是小米3,所以出现Qualcomm MSM 8974(COM**),另一项名字忘了,网上的有的是3项,不过不重要,至于怎么选,往下看就知道了

5、打开Qualcomm\QPST\bin\QPSTConfig.exe,出现下图的界面,我这里是空的因为现在CM12.1*#*#717717#*#*没有效果,连不上

QQ截图20151202154327

Srart Clients-Software Download切换到Restore选项卡

QQ截图20151202154949

接下来很重要的一部分,你要有qcn文件,有的话,选择路径,勾选Allow phone/file ESN mismatch

然后点击Start,等待就行了,有警告提醒可以略过,最后我的显示内存初始化失败,没有管,直接重启,开机看到中国电信我就知道我成功了

如果你没有的话,一定要想办法搞到,本人就是找了好久,看到一个论坛上收费500金币,充值最少冲5001个金币,真是气的不行不行的,最后差点下决心充值的时候找到了一个人的qcn,真是喜出望外

其实这个软件也有备份为qcn文件的功能,只不过一般网上看类似教程的人都是出了问题的,谁会提前备份呢,再次鄙视那些见钱眼开的人!!!最底下贴出找到的qcn文件,都是小米,红米系列的

到这里已经完结了。

再多说一点,其实上面更改无线通信频道例如USA Band,AUS2 Band,Band 6等,都可从QPST中读出

具体操作,在第5步第一个截图界面下选择Srart Clients-Service Programing

Enter Service Programing 默认000000,不用管直接点击OK,然后read from phone,网上找的图

221922gk5khk25s0iplihr.jpg.thumb

然后切换到UMTS System选项卡

你点不同的频段有不同的勾选2 3

就是这个原因导致的无信号或无服务,如果你要知道怎么勾选,可以在这里勾选上然后Write to Phone,理论上是一样的,但是我就没成功,提示Roaming file is empty什么的,原因就在旁边的Roam选项卡

11

要点Browse选择prl或rh*文件,可是我网上找了好几个电信的prl文件载入然后Write to phone都不行,不知什么问题,最后还是找到qcn文件恢复的

不过还有收获,我的设备型号显示8974,而不是小米官方标称的小米3电信版8674

其区别为8974支持4G!所以我只要在这里勾选上4G波段貌似就可以支持4G了,

我猜的!!哈哈哈,但是既然有可能为毛不试试呢,谁叫我爱折腾,等手里刚刷的CM12.1玩熟了在折腾

附上我找到的小米、红米系列QCN文件

小米手机全系列QCN备份文件