在XP系统上安装MTP驱动,以连接MTP方式接入的手机设备

       手头有个几年前买的一个老的笔记本,配置较低,所以一直使用的是XP系统,没有升级到win7。最近因为华为手机存储不足,需要清理手机的空间,需要连接到笔记本上,将拍的照片和视频拷贝到笔记本的硬盘上,以将占用的空间给腾出来。结果使用USB数据线连接到笔记本上后,XP系统始终无法识别手机,打开设备管理器,看到手机是以MTP方式接入到XP系统的,系统没法识别,系统中找不到对应的驱动程序:

几年前用过华为的手机,遇到过MTP驱动的问题,但好久没用笔记本,记不起来当时是怎么处理的了。这两年一直在用家里的台式机,台式机后来升级到了win7,win7中自带MTP驱动,所以没有这样问题。于是在网上搜索了一些资料,结果过程中折腾了好久,因为没搞过驱动相关的东西,就像上次处理以USB方式接入电脑的HP打印机的驱动一样,折腾了好久才搞定。所以在此详细记录一下,以供参考。

1、何为MTP?

        MTP即Media Transfer Protocol,媒体传输协议,是基于PTP(Picture Transfer Protocol)协议的扩展,主要用于传输媒体文件,其中有价值的应用就是同步DRM文件的license。目前支持MTP协议的只有WMP10(Windows Media Player 10)和WMP11(Windows Media Player 11)两个版本,WMP11加入了对Playlist和Album art的支持,在获取媒体文件信息的时候GetObjectPropList代替了WMP10的GetObjectInfo命令。
        MTP支持对数字音频播放器的音乐文件和移动媒体播放器上的电影文件的传输,它是Windows Media框架的一部分,因此与Windows Media Player紧密相关。Windows Vista内建了对MTP的支持,在Windows XP中支持MTP需要安装Window Media Player 10或以上的版本。Mac和Linux有支持MTP的软件包。

      MTP的应用分两种角色,一个是作为Initiator,另一个作为Responder。例如:WMP(Windows Media Player)就是Initiator,而portable media player设备就是作为Responder。Responder都是被动的回复Initiator的命令,不会主动发命令。主要的用途是传输媒体文件(Media File),并从(向)设备关联元数据,对设备的远程控制有可选的额外支持,读取和设置设备参数,如特别的DRM相关的受限内容设备参数。设备也可向主机发送事件(event)。

      现在仍在使用的Windows  XP系统大都是Service Pack 3版本的,由于SP3版本是2008/05/06全面发行的,而MTP是2008年5月份才研发完成正式面世。所以XP系统中是没有自带MTP的驱动程序,而后期的win7包含了MTP程序,所以Win7的用户可以直接连接MTP设备,而win XP需要下载MTP的驱动程序采用使用MTP设备。

       MTP既可以实现在USB协议上,也可以实现在TCP/IP协议上,它属于上层的应用协议,而不关心底层传输协议。目前大部分设备的应用都是基于USB协议。市场上支持MTP的设备有魅族MX2(Flyme3.x),MX3,Motorola的Z6, U9, E8等,还有索尼NWZ-A81X系列。总之有越来越多的设备开始支持MTP。我们使用的较新的华为荣耀8手机,也是使用MTP接入到Windows系统上的。

2、修改.inf配置文件,安装MTP驱动

       原以为有专门的MTP驱动程序,结果没有,只能使用Windows Media Player11中的MTP驱动程序。网上搜到的相关文章,讲的比较零散,基本都是相互拷贝的,不懂的人可能很难完成最终的操作,所以下面就详细的梳理一下解决的过程。

2.1 下载并安装Windows Media Player11

        MTP支持对数字音频播放器的音乐文件和移动媒体播放器上的电影文件的传输,它是Windows Media框架的一部分,因此与Windows Media Player播放器紧密相关。网上推荐安装Windows Media Player11 版本的播放器,可以自行到华军软件园或者中关村在线上下载。下载完成后,手动将文件解压出来,中文版32位的XP系统对应的安装包名称为wmp11-windowsxp-x86-zh-cn(以该文件夹名为例)。为了保证在安装过程中能顺利完成,先断开网络。

       进入解压出来的文件夹wmp11-windowsxp-x86-zh-cn,找到umdf.exe、wmfdist11.exe、wmp11.exe三个文件依次运行,然后重启电脑即可。重启后就能打开如下的wmp11的播放器:


但是用usb线将手机连接到电脑上后,还是没法识别,在我的电脑的页面中,还是看不到手机的磁盘驱动器。到设备管理器中查看,还是没有安装MTP驱动:


按讲Windows Media Palyer11中已经有MTP驱动了,为啥还是识别不了呢?

2.2 修改.inf配置文件,手动安装MTP驱动

       尝试手动右键点击设别管理器中的MTP节点:


以更新设备驱动的方式,使用windows向导,手动添加MTP驱动试试。在弹出的起始页面中,勾选自动搜索,但是提示没法找到驱动文件,如下:


wmp11已经安装上,应该能找到了啊!

        网上有人说,如果升级完后还无法识别,则需要手动修改inf文件。先取消系统掩藏文件的选项:文件管理器-->工具--》文件夹选项--》查看--》高级选项--》隐藏文件和文件夹-->显示所有文件和文件夹 ,然后在c:\windows路径下找到inf文件夹,进去找到wpdmtp.inf配置文件,即完整路径为:c:\windows\inf\wpdmtp.inf。在文件中添加我们的MTP设备的VID和PID条目,是系统能找到驱动文件。至于MTP设备的VID和PID,在设备管理器的MTP节点的属性中可以查看到:


在wpdmtp.inf中添加的条目如下所示:


配置文件中的注释也提到,如果你的MTP设备识别不出来,可以手动将MTP设备的id添加进来。

       然后以更新设备驱动的方式,使用windows向导(直接安装驱动不行,就使用系统向导来为设备添加驱动,就像处理USB方式接入的HP打印机一样),手动添加MTP驱动,就能找到驱动文件了,相关截图如下所示:




安装好后,在设备管理器中就不再显示问号图标了:


当前在安装驱动的过程中,要在设备管理器中看到MTP节点,要保证手机一直连着电脑,否则就看不到MTP节点了。于是,在我的电脑中就能看到手机的磁盘驱动器了,如下:


这样就能直接操作手机中的文件了。

3、MTP设备的VID和PID

       根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向USB执行论坛申请,每个供应商的VID是唯一的,PID由供应商自行决定,理论上来说,不同的产品、相同产品的不同型号、相同型号的不同设计的产品最好采用不同的PID,以便区别相同厂家的不同设备。

       VID和PID通常情况下有两种存储方式:
       第一种是主控生产商的VID和PID,存储在主控的bootcode中;
       第二种是设备生产商的VID和PID,该VID和PID存储在主控外部的非易失性存储设备中(EEPROM或Flash)的设备固件中,当USB设备连接主机时,如果固件中有设备生产商的VID和PID,会将该VID和PID报告给主机,而忽略主控生产商的VID和PID。所以理论上一个USB存储设备的VID应该是设备生产商的VID,而不是主控生产商的VID,这两个VID应该是不同的(主控生产商自己生产的设备除外)。

       由于VID和PID重复并不会对产品的使用带来严重影响,很多USB设备生产商(山寨厂居多)为了方便,并不会向USB执行论坛申请自己的VID,而是依然沿用主控生产商的VID或随便向产品写入VID和PID;同时,正规厂家只需要申请VID,PID由厂家自行确定,所以存在相同型号的产品,可能采用了不同的主控(商业需要,很正常),而他们的PID是一样的,基于上述原因通过VID和PID就不能准确识别USB设备的主控型号,这个问题大家在使用USB设备的过程中需要注意。

4、结束语

       后来听同事说,使用360手机助手,可以将安装MTP驱动复杂的过程屏蔽掉。目前也没有做相关的验证。貌似以前用过360手机助手,一连上电脑,就会给电脑自动安装一些软件,有点烦人,还不如直接安装MTP驱动来得清净,问题解决了就一劳永逸了!

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页