查看原文
其他

让 M1 芯片的 MacBook Pro 同时支持两个 4k 显示器

Xu Jiwei 云原生实验室 2022-11-11


本文转自 Architecting Life,原文:https://xujiwei.com/blog/2021/07/m1-displaylink-testing/,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang

这是什么坑

在使用一段 M1 芯片的 13 寸 MacBook Pro 之后,一直有一个问题没有解决,那就是两台 4K 显示器的一台,只能闲置在那里。

虽然给 M1 MacBook Pro 配备的是 StarTech 雷电 3 接口的扩展坞,它拥有一个 DisplayPort  接口和一个全功能 USB Type-C 接口,在配备 Intel 芯片的 16 寸 MacBook Pro 上,它是可以直接驱动两个 4K  显示器。

但是由于 M1 芯片又或者是 M1 MacBook Pro 的限制,配备 M1 芯片的 MacBook Pro 只能驱动一台 4K 显示器,另外一台显示器,即使将它连接在 MacBook Pro 上,也并不会有任何显示。

这个限制,在苹果官网 M1 芯片 MacBook Pro 的技术规格[1]中也有提到:

而在配备 Intel 芯片的 16 寸 MacBook Pro 技术规格[2]中对应的说明是这样的:

距离 M1 MacBook Pro 发布也已经过去了 8 个月,苹果并没有针对这个问题推出一些软件上的更新来修正,那么暂时就不用去考虑这是一个软件的限制,还是一个硬件的限制了,先来自己解决一下这个问题吧。

免责声明:此文介绍所有内容均为非严谨测试,仅供参考,不作为购买依据。

大救星 DisplayLink

在网上去搜索 M1 MacBook Pro 多显示器的解决方案时,很容易就可以找到各种使用 DisplayLink  的文章介绍,并且也是实际验证可用的,但是我对于使用 DisplayLink  真正能达到的效果也比较好奇,因此决定还是自己做一些调研,购买一些设备来实际测试一下看看。

DisplayLink 介绍

来自 Wikipedia 的 DisplayLink[3] 介绍:

DisplayLink (formerly Newnham Research) is a semiconductor[4] and software[5] technology company. They develop the DisplayLink USB graphics  technology, which is designed to connect computers and displays using  USB, Ethernet, and WiFi. It also allows multiple displays to be  connected to a single computer.

简单来说,DisplayLink 可以通过一个自建驱动,在系统中模拟出多个显示器设备,并且通过 USB 接口将数据输出到外部 DisplayLink 芯片,并且转换为 DisplayPort 或者 HDMI 信号,从而驱动多台显示器。

由于 DisplayLink 是使用软件去压缩视频信号,因此它本身也依赖于系统的 CPU,并且在视频画面变化比较剧烈的时候,需要的 CPU 资源会相比静态画面时要求更高。

另外由于 DisplayLink 是使用的 USB 3.0 协议,而不是更为先进的 Thunderbolt  3,所以在适应性上会更强,不管是 USB Type-C 还是 USB Type-A,或者是接在 Thunderbolt 3  的扩展坞上,甚至普通的 USB Type-C 扩展坞,都可以正常工作。

DisplayLink 的限制

因为 DisplayLink 是使用 CPU 去进行视频信号的压缩,所以在实际使用时会占用相当多的 CPU 资源,因此可能会影响整体系统的性能。

并且因为在一些情况下,DisplayLink Agent 进程甚至能占用到 100% 的 CPU 占用,如果笔记本的散热不够好,可能会导致笔记本的风扇一直处于高速运行状态,从而导致比较大的工作噪音。

但是对于 M1 系列的 MacBook 来说,这些问题并不会有太大的影响,一个是性能足够,另外一个就是即使一个核心 CPU 占用达到 100%,也并不会导致发热很严重从而调高风扇转速的情况。

在整个使用过程中,M1 MacBook Pro 的温度与通过 USB Type-C 只连接一个显示器的情况下,并没有明显区别。

如何选择 DisplayLink 设备

在一开始,网络上的一些文章以及在京东上搜索 DisplayLink 设备时,都提到 DisplayLink 视频输出分辨率会限制在 1080p,但是这并不是我想要的,总不能在 4K 显示器上去使用 1080p 这样的低分辨率。

在 DisplayLink 的官网上查阅一番后发现,DisplayLink 在 2016 年推出的 DL-6950[6] 系列芯片就已经能够支持到 4K60Hz 的视频输出了,并且使用双 DP 连接的话,还可以支持到 5K 视频输出。

但是在国内的市场上,并不能看到太多使用了 DL-6950 系列芯片的 DisplayLink 适配器或者扩展坞,最终我在 DisplayLink 官网的产品列表[7]中,去找到了一批使用了 DL-6950 系列芯片的设备。

在官网产品列表中找能找到的设备,基本上都没有在国内正式销售,但是在某鱼上,还是可以根据品牌或者型号找到不少洋垃圾产品,总的来说性价比也还不错。

在挑选 DisplayLink 设备时,可以认准 DL-6950 芯片,或者说明支持 5K 视频输出,因为目前 DisplayLink 所有芯片中,支持 5K 视频输出的也只有 DL-6950。

太长不看

在使用了一段时间之后,DisplayLink  整体表现还算可以的,作为一个副屏来使用,在画质和响应速度上,都处于可以接受的范围内,但是如果想用来看视频或者玩游戏,可能就不太适合了,会有比较大的延迟以及掉帧情况,这个时候可以用回 Intel MacBook Pro 或者是使用 M1 的 Mac mini 😃。

优点

  • 能解决 M1 系列笔记本(MacBook Pro 及 MacBook Air)不支持第二个显示屏的问题
  • 视频输出分辨率和刷新率可以支持到 4K60Hz,甚至可以使用双 DP 支持到 5K60Hz
  • 视频输出为文本内容中,文本内容渲染也足够清晰和锐利,满足正常使用标准
  • 视频输出画质,在多数时候没有与使用 DP 接口的显示器看出明显区别

缺点

  • 支持 HiDPI 的分辨率只有 3840x2160、1920x1080、1600x900
  • 不支持旋转显示器输出,只能横屏使用
  • 实际使用体验依赖 USB 通信速度,会出现掉帧的情况

适配器和 Dock

在 DisplayLink 产品列表中,可以看到两种类型的 DisplayLink 设备,一种是适配器类型,另外一种是扩展坞类型,可以根据实际使用情况和偏好去选择。

两种类型的设备,在对于外接显示器的支持上,其实都没有什么本质的区别,毕竟所有功能都是由同一款芯片去提供,因此在选择的时候,更多是看不同类型产品所提供的特点是否是必需的。

适配器类型 DisplayLink 设备

适配器类型的 DisplayLink 设备,跟常见的 USB Type-C 转 HDMI,USB Type-C 转 DP  很像,体积小,无需额外电源,但是相对功能就比较有限,基本上只会提供 DL-6950 芯片所能提供的功能,例如多数适配器类型的  DisplayLink 设备,只提供了两个 DisplayPort 接口和一个 RJ45 网络接口。

这种 DisplayLink 设备的优势就是体积小巧,便携,不需要额外电源,但是使用双显理论上也不需要便携这个属性,而不需要电源这个特点,使得它可以很方便地去配合其他 USB Type-C 类型的扩展坞来使用。

不过在某鱼上,这种适配器类型的 DisplayLink 设备比较少。

扩展坞类型 DisplayLink 设备

扩展坞类型的 DisplayLink 设备就比较多种多样了,不光外观有很多形式,能提供的接口类型也各不一样,提供的接口数量也会不太一样。

这类 DisplayLink 设备在选择的时候需要注意,它是否支持向主机使用 PD 供电。这类扩展坞,虽然连接同样使用的是 USB  Type-C,但有一些设备并不能通过和主机连接的 USB Type-C 进行供电,也就意味着使用这类扩展坞时,同时需要给 M1 MacBook  Pro 再连接一根电源线。

当然扩展坞类型的 DisplayLink 设备也可以直接连接在 USB Type-C 扩展坞上使用,只不过两个扩展坞放在一起可能会比较占面积。

最终两种类型的 DIsplayLink 设备,我分别挑选了一款来使用测试看看。

Plugable USBC-6950-DP

Plugable USBC-6950-DP 是一个适配器类型的 DisplayLink 设备,只提供了最基本的 DP 口和 RJ45 网络接口。

Plugable USBC-6950-DP

在系统报告里可以看到,它就是挂在 USB Hub 下的一个普通 USB 设备,且 USB 通信协商速率为 5Gbps。

Plugable USBC-6950-DP in Profile

i-tec CADUAL4KDOCK

这款扩展坞提供了 6 个 USB Type-A,两组 DisplayPort 和 HDMI,以及 RJ45 网络接口和音频接口。

需要注意的是,这款扩展坞还有一个外观极其相似的型号,那一款是提供了 4 个 USB Type-A 接口,2 个 USB Type-C 接口,当然价格也更高一点,在购买的时候需要注意。

i-tec Docking Station

在系统报告中同样显示为 USB Hub 下的一个 USB 设备,不过名称显示为 USB3.0 5K Graphic Docking。

i-tec Docking Station in Profile

系统信息及显示器设置

将两台显示器分别连接到雷电 3 Dock 和 DisplayLink Dock 上后,可以在系统报告中看到两台显示器的信息。

其中使用雷电 3 Dock 连接的显示器,可以设置分辨率缩放为 2560x1440,而使用 DisplayLink 连接的显示器,如果需要 HiDPI,就只能显示成 1920x1080 了。

这里也可以看到 DisplayLink 显示器的刷新率也是显示为 60Hz,不过这个数字,也只能当作参考,实际显示时,还是依赖系统资源情况以及 DisplayLink Agent 的处理速度。

Graphics/Display

在显示器设置里可以看到,使用 DisplayLink 连接的显示器只有固定几档分辨率可以选择,而支持 HiDPI 的就只能是 3840x2160、1920x1080 以及未在截图中显示的 1600x900。

Display Settings for DIsplayLink

而在雷电 3 Dock 使用 DisplayPort 连接的显示器,分辨率设置就强大很多。

Display Settings for DisplayPort

实测性能体验表现

为了实际测试通过 DisplayLink  连接的显示器,实际使用时,延迟和刷新率是否符合预期,我写了一个小程序来显示一个时间戳,并且通过系统函数控制刷新率为 60FPS,并且将  DisplayLink 显示器与 DisplayPort 显示器进行对比,来实际测量 DisplayLink 显示器的延迟和刷新率。

同时,为了测试在不同类型内容显示、不同系统负载情况下的 DisplayLink 表现情况,也在 Youtube 上选择了几个 4K60 的视频,来看看 DisplayLink 显示器 能不能满足流畅观看视频的需求。

另外为了表现出最差情况,以下测试都会尽量采用最差情况时的截图。

测试相关参数

测试所使用的视频和网站如下:

  • 4K60 视频:https://www.youtube.com/watch?v=linlz7-Pnvw
  • 浏览器性能测试:https://browserbench.org/Speedometer2.0/
  • 4K60 动作版视频:https://www.youtube.com/watch?v=t-R8PIADl7s

所有测试的照片使用 RX100M7 拍摄,并且快门速度使用 1/1000 秒。

将 DisplayLink 显示器作为镜像

为了更容易对比使用 DisplayLink 连接的显示器,在实际使用时,与使用 DisplayPort  连接的显示器,在延迟和帧率上的表现,先将 DisplayLink 显示器作为使用 DisplayPort  连接的显示器的镜像,这样两个显示器显示同样的内容,对比起来更清晰。

测试中左边显示器是使用 USB Type-C 扩展坞转 HDMI 连接,右边显示器使用 DisplayLink 连接。

系统空闲时延迟测试

在系统空闲时,DisplayLink 显示器输出应该可以说与使用 DisplayPort 连接的显示器没有区别,读取到的延迟也没有任何差异。

Mirrored timer in Idle

播放 4K60 视频时延迟测试

使用 Safari 播放 4K60 的视频时,就可以看到 DisplayLink 显示器的输出比使用 DisplayPort  连接的显示器输出延迟了 67ms,通常伴随着延迟的还有掉帧,并且会在这个时候明显看到鼠标的响应会比 DisplayPort 显示器上要慢。

这个时候从屏幕数据计算出来延迟 67ms,换算成刷新率的话就只有 15 帧 / 秒,所以鼠标移动时感觉迟钝也很正常。

但是这个现象会更容易出现在视频缓冲时,如果播放已经缓冲完成的内容,并且视频内容不是动作特别大的话,总体表现倒也算可以接受。

Mirrored timer when playing 4K60 video

播放 4K60 视频和 SSD 测速时延迟测试

同样是 4K60 的视频,还加上一直对一个 SATA SSD 进行读取和写入速度测试,理论上会比单独播放 4K60  视频的延迟会更大,但是在实际测试过程中,表现并没有变得更差,并且 SSD 的读写速度,与没有使用 DisplayLink  连接显示器时,也没有明显差距。

这个也有可能跟视频并没有在缓冲有关系,以及这让我对 DisplayLink 对 USB 实际带宽占用多少很好奇,但是因为手上没有读写速度更快的 NVMe SSD,也没有办法去测试极限情况下,DisplayLink 能掉帧到多少了。

在这个场景下,计算出来的延迟为 16ms,刷新率理论上还是能到 60 帧 / 秒的,实际使用时,的确鼠标移动起来不太会有明显迟钝感。

Mirrored timer when playing 4K60 video and SSD speed testing

浏览器性能测试时延迟测试

在播放 4K60 视频时,同时使用 browserbench[8] 进行浏览器性能测试,以模拟在播放视频时,也同时进行一些高 CPU 占用的操作时,DisplayLink 的表现情况。

在实际使用时,这个场景下,DisplayLink 的延迟并没有很大差距,从照片中可以看到在 33ms,如果一直处于这个延迟,大概可以计算出来刷新率只能到 1000/33 约 30 帧 / 秒。

Mirrored timer when playing 4K60 video and browser benchmarking

播放 4K60 动作电影时延迟测试

播放 4K60 视频中画面变化比较大的场面时,显示延迟最大可以到 67ms,这基本上处于不太可用的状态了,理论上如果延迟都要到 67ms 的话,刷新率只能到 1000/67 约 15 帧 / 秒。

Mirrored timer when playing 4K60 Gemini

将 DisplayLink 显示器作为扩展

为了更好地对比在使用 DisplayPort 和 DisplayLink 显示时的延迟,通过将 DisplayLink  显示器设置为扩展,对比显示的时间戳差距,可以大概计算出,DisplayLink 在将屏幕数据压缩、传输到扩展坞、解压为 DisplayPort  信号时,需要消耗多长时间。

同样左边显示器是使用 USB Type-C 扩展坞转 HDMI 连接,右边显示器使用 DisplayLink 连接。

系统空闲时延迟测试

在系统空闲时,其实没有太明白这个情况是咋回事,按 Timer 显示的原理来说,DisplayLink 的延迟可能比 DisplayPort 更小?

也许是当时所使用的 USB Type-C 扩展坞中的 DP 处理芯片性能较 DisplayLink 中的芯片性能更差导致。

Extended timer when idle

播放 4K60 视频时延迟测试

在播放 4K60 视频时,就可以看出差距了,使用 DisplayLink 连接的显示器,信号要比 DisplayPort 连接的显示器慢约 20ms。

Extended timer when playing 4K60 video

播放 4K60 视频和 SSD 测速时延迟测试

这个时候延迟会到 62ms,与镜像时差不多。

Extended timer when playing 4K60 video and SSD speed testing

播放 4K60 视频和性能测试时延迟测试

延迟大概在 42ms,比镜像模式时稍差一些。

Extended timer when playing 4K60 video and browser benchmarking

播放 4K60 动作电影时延迟测试

延迟到了 74ms,比镜像模式时更差。

Extended timer when playing 4K60 Gemini

性能测试小结

在上面的测试中,很多时候延迟并不等同于刷新率会以那个延迟去刷新,不过基本上在延迟比较大的时候,刷新率也不会特别高就是了。

在使用 DisplayLink 连接的显示器上,显示的内容变化不大时,整体的使用体验还是可以接受的,例如使用它去显示的静态的网页等。

在播放视频时,如果视频分辨率或者刷新率比较高,实际观看体验也不会特别好。

DisplayLink DL-6950 系列设备参数对比

在 DisplayLink 官方网站的产品列表[9]上查到了一些使用 DL-6950 芯片的扩展坞,并且基本上是能在某鱼上找到的洋垃圾型号,将它们的参数对比做了一下表格放在下面,可以根据自己的需求情况去选择对应的型号。

StarTech 还有一个型号 DK31C4DPPD[10] 接口和功能更加全面,不过目前还未发布,正在预订中,而且 StarTech 似乎在国内并没有官方代理,也只能通过转运的方式去购买。

另外淘宝上也有一个国产品牌 QGeeM 推出了一款似乎是使用了 DL-6950 系列芯片的 DisplayLink 扩展坞,可以使用 这个链接[11] 来查看,因为我并没有购买这款扩展坞,具体参数请联系客服确认。

型号类型主机连接视频接口USBPDLANAudio
StarTech






USB32DP24K60[12]适配器5Gbps2xDP----
USBA2DPGB[13]适配器5Gbps2xDP---
DK30C2DPPD[14]Dock5Gbps2xDP/HDMI3A1C60W
Plugable






USBC-6950-DP[15]适配器5Gbps2xDP---
UD-ULTC4K[16]Dock5Gbps2xDP, 1xHDMI4A1C60W
UD-6950[17]Dock5Gbps2xDP6A-
UD-6950H[18]Dock5Gbps2xDP/HDMI6A-
Wavlink






UG69DK7[19]Dock5Gbps2xDP/HDMI6A-
UG69PD2[20]Dock5Gbps2xDP/HDMI4A2C65W
UG69DK1[21]Dock5Gbps2xDP/HDMI6A-
Others






DELL D6000[22]Dock5Gbps2xDP, 1xHDMI4A65W
ThinkPad 40AF[23]Dock5Gbps2xDP/HDMI3A-
VisionTek VT4000[24]Dock5Gbps2xDP/HDMI6A
i-tec CADUA4KDOCKPDL[25]Dock5Gbps2xDP/HDMI4A2C65W
i-tec CADUAL4KDOCK[26]Dock5Gbps2xDP/HDMI6A-

结论

如果你购买了 M1 芯片的 MacBook Pro 或者 MacBook Air,并且已经配置了两台 4K 显示器,并且副显并不会用来做一些负载很大的工作,那么可以购买一个 DisplayLink 扩展坞来将第二块显示器利用起来。

由于 M1 的高性能和低发热,DisplayLink Agent 的高 CPU 占用并不会有什么感受,MacBook Pro 散热风扇一如即往的是 0RPM,机身温度与开启 DisplayLink 前也没有明显区别。

当然实际使用过程中,可能会碰到各种各样延迟大、掉帧的情况,例如我将飞书窗口放在 DisplayLink  显示器上时,整体响应明显就慢很多,但是将 Chrome 浏览器放在 DisplayLink 显示器上,整体感受与 DisplayPort  并没有明显区别。

另外在使用过程中,也经常会碰到鼠标移动过去,在刚开始的时候会刷新率特别慢,等上几秒上,刷新率才能提升到 60Hz 的样子的情况,如果不能接受的话,可能就不要购买 DisplayLink 扩展坞了。

希望此文对希望解决 M1 MacBook Pro / MacBook Air 双显问题的朋友们有所帮助。

参考资料

  • https://www.apple.com.cn/macbook-pro-16/specs/
  • https://www.apple.com.cn/macbook-pro-13/specs/
  • https://baike.baidu.com/item/DisplayLink/1145584
  • https://post.smzdm.com/p/ad2v8ppd/
  • https://post.smzdm.com/p/ar0nvegz/
  • https://www.bilibili.com/s/video/BV1HV411h73c
  • https://www.displaylink.com/integrated-chipsets/dl-6000
  • https://www.synaptics.com/products/displaylink-graphics/displaylink-products-list
  • https://en.wikipedia.org/wiki/DisplayLink

引用链接

[1]

苹果官网 M1 芯片 MacBook Pro 的技术规格: https://www.apple.com.cn/macbook-pro-13/specs/

[2]

配备 Intel 芯片的 16 寸 MacBook Pro 技术规格: https://www.apple.com.cn/macbook-pro-16/specs/

[3]

DisplayLink: https://en.wikipedia.org/wiki/DisplayLink

[4]

semiconductor: https://en.wikipedia.org/wiki/Semiconductor

[5]

software: https://en.wikipedia.org/wiki/Software

[6]

DL-6950: https://www.displaylink.com/integrated-chipsets/dl-6000

[7]

DisplayLink 官网的产品列表: https://www.synaptics.com/products/displaylink-graphics/displaylink-products-list

[8]

browserbench: https://browserbench.org

[9]

产品列表: https://www.synaptics.com/products/displaylink-graphics/displaylink-products-list

[10]

DK31C4DPPD: https://www.startech.com/en-us/cards-adapters/dk31c4dppd

[11]

这个链接: https://uland.taobao.com/coupon/edetail?e=iU6qTD2dJM4NfLV8niU3RxsUty%2FyJZUCIUcOemCte8jHoQe1tkK55XIqYFQrrDoAybtZZBddl%2FVt3vqbdXnGlqpwhtt51FKuFubS3bFNEeUWetk5uokIcifK0mje7IKEVDuOjAVHpq48yfxBW58a1QRiC4wD9cHL237jW2YIURth9foG%2F5o3V9u1tLb6KOkTbac7vn259G6ie%2FpBy9wBFg%3D%3D&app_pvid=59590_33.8.171.41_673_1626444597135&ptl=floorId%3A17741&app_pvid%3A59590_33.8.171.41_673_1626444597135&tpp_pvid%3A&union_lens=lensId%3APUB%401626444593%400ba932e7_1cb4_17aafa6f95d_dd60%40023kltqvdvAvXKGSDNC9GyaE

[12]

USB32DP24K60: https://www.startech.com/en-us/audio-video-products/usb32dp24k60

[13]

USBA2DPGB: https://www.startech.com/en-us/cards-adapters/usba2dpgb

[14]

DK30C2DPPD: https://www.startech.com/en-us/cards-adapters/dk30c2dppd

[15]

USBC-6950-DP: https://www.walmart.com/ip/Plugable-USBC-6950-DP-Docking-station-USB-C-3-1-Thunderbolt-3-2-x-DP-GigE/398476662

[16]

UD-ULTC4K: https://plugable.com/products/ud-ultc4k

[17]

UD-6950: https://plugable.com/products/ud-6950/

[18]

UD-6950H: https://plugable.com/products/ud-6950h

[19]

UG69DK7: https://wavlink.com/en_us/product/WL-UG69DK7.html

[20]

UG69PD2: https://www.wavlink.com/en_us/product/WL-UG69PD2.html

[21]

UG69DK1: https://wavlink.com/en_us/product/WL-UG69DK1.html

[22]

DELL D6000: https://www.dell.com/zh-cn/work/shop/戴尔通用坞站-d6000/apd/452-bczk/电脑外设产品

[23]

ThinkPad 40AF: https://support.lenovo.com/us/en/solutions/pd500180-thinkpad-hybrid-usb-c-with-usb-a-dock-overview-and-service-parts

[24]

VisionTek VT4000: https://www.visiontek.com/vt4000-universal-dual-4k-usb-dock.html

[25]

i-tec CADUA4KDOCKPDL: https://i-tec.pro/en/produkt/cadua4kdockpdl-2/

[26]

i-tec CADUAL4KDOCK: https://i-tec.pro/en/produkt/cadua4kdock/



你可能还喜欢

点击下方图片即可阅读

K8s 的核心是 API 而非容器:从理论到 CRD 实践

2022-06-06

使用自动化工作流聚合信息,实现个人数字生活的信息聚合

2022-06-01

使用 Packer 构建虚拟机镜像踩的坑

2022-05-30

使用 Finalizers 来删除那些死活删除不掉的 K8s资源

2022-05-29


云原生是一种信仰 🤘

关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!



点击 "阅读原文" 获取更好的阅读体验!


发现朋友圈变“安静”了吗?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存