树莓派终于能用了? - Raspberry Pi 4 Model B (4 GB RAM)

本文最后更新于:2020 年 03 月 02 日 星期一

曾经我有过两个树莓派: 3B 和 3B+ 。

首先买的是 3B ,我用得最多的也是它。除手机外,这是我第一次接触这种小巧的 ARM 机器,还是很新奇的。我试遍了我知道的所有能运行在树莓派上的操作系统,最后觉得比较有意义的用法是装个 OpenWrt 作个便携软路由、兼 NAS 、兼挂睿思(“睿思”在这里是指西电一个校内 BT 站)。

后来 3B+ 出了之后我就买了 3B+ ,把 3B 卖给了我的一个室友,后来这个 3B 又被借给了我另一个室友做毕设,转来转去也算是发挥了它的价值。

3B+ 对于我来说最有意义的升级第一个是从 3B 的百兆位以太网升级到了“千兆位以太网”,第二个是支持了 IEEE802.11ac 。但是我后来才知道这个“千兆位以太网”是从 USB2.0 分出来的,相当于一个 USB2.0 的集线器分出 4 个 USB 接口和一个“千兆位以太网”口。就算撇开 USB 会跟以太网抢带宽这事不谈,把实际传输速率最高只有 300Mbps 左右(因为 USB2.0 理论上限是 480Mbps )而且还是半双工的东西叫做“Gigabit Ethernet”我也是没法接受。 IEEE802.11ac 的 5GHz 速率也很一般。 3B+ 还有很多别的升级,比如支持更新的蓝牙标准、更高的 CPU 频率、支持 PoE 、 … 但是我都不是很感兴趣。

小巧、低功耗、通用性和可拓展性是树莓派的优点,意味着你可以把它放进口袋带出去,可以只用一个手机移动电源给它供电,可以运行你编写的各种程序,可以接上各种传感器、可以驱动外设。它比单片机容易使用太多,应用场景也更广泛,但是在体积和功耗上也没有比单片机差很多。

但是在我希望能用到它的应用场景中,我常常觉得它的 IO 性能太弱。 4 个 USB2.0 、不能达到 1000Mbps 传输速率的以太网、不太快的 WiFi 和读速不到 90MB/s 的 Micro SD 卡,这些跟不上时代的规格成为了它很大的瓶颈。我常常觉得它就是个玩具,有点鸡肋,所以我的 3B 和 3B+ 多数时候都是在吃灰的。

后来我的 3B+ 被我不小心短接了 GPIO 的 3.3V 和 5V 针脚,就坏了,送修之后催了几次也没个结果,再后来就不想管了。之后也没有再买,因为一直觉得没什么意思,虽然偶尔会遇到“这时如果有个树莓派就好了”的情况,但是多数也不是很重要的,也有其它解决方法。像软路由这种应用场景,我后来找了一个 x86 的工控主板做了一个,具体可以看这篇文章 软路由与NAS(1) - 硬件平台搭建

但是最近一两个月因为 COVID-19 疫情,呆在家没事干。毕设实现完了,一些环节卡在导师那也没法继续。我的个人项目更新了一些,但暂时也没什么好的想法要补充的。博客又给我换了一个主题,我还把这个主题我不满意的地方都给改了(本来我想完全自己写一个但是不知道怎么设计,感觉想要的就跟别人做的也差不多,那我不如直接改现成的)。游戏买了几个但是不想玩(果然还是买比玩更有趣)。 B 站关注的 50 多个 UP 主更新频率赶不上我看的速率,天天刷也没多少有趣的。

刚好我一个舍友的毕设跟树莓派有点关系(就是我那个 3B 目前的使用者),聊着聊着就让我有点怀念起树莓派。刚好树莓派 4B 已经在我的购物车里躺了很久了,经过半年实习也有了一点闲钱,就买了一个来玩玩。

树莓派 4B

box

box-and-pi

pi

我买的这个是 4GB 内存的版本。

外形上, 4B 保持了和前代相似的布局风格,但是跟 3B 和 3B+ 又有明显不同。最大的一个区别就是一个全尺寸 HDMI 被换成了两个 Micro HDMI ,电源输入接口从 Micro USB 换成了 USB Type C ,这意味着给前代使用的外壳一般都不能兼容 4B 。

主要元件、接口如下图:

pi-with-desc

树莓派 4B 比起 3B+ 有什么升级?

其实我下单时是没有仔细研究有什么升级的,只是依稀记得 4B 刚出时听说过内存从 1GB 升级到了 1/2/4GB 可选,还有一个标准 HDMI 接口升级到了两个 Micro HDMI (据说还支持双 4K )。然后我就买了一个 4GB 内存的版本。

其实 4B 相比于 3B+ 的升级还是蛮多的,主要升级如下:

  1. Soc 从博通 BCM2837B0 的 4 核 Cortex-A53 升级成了博通 BCM2711 的 4 核 Cortex-A72 ,主频也从 1.4GHz 升级到了 1.5GHz ;
  2. 内存从 1GB 的 LPDDR2 SDRAM 升级到了 1/2/4GB 可选的 LPDDR4-3200 SDRAM ;
  3. 以太网从基于 USB2.0 的 300Mbps “千兆位以太网”升级成了真正的千兆位以太网;
  4. 蓝牙从低功耗蓝牙 4.2 升级到了低功耗蓝牙 5.0 ;
  5. USB 从 4 个 USB2.0 升级到了 2 个 USB2.0 加 2 个 USB3.0 ;
  6. HDMI 从 1 个全尺寸 HDMI 接口升级成了 2 个 Micro HDMI 接口,最高支持单屏 4K 60p 或双屏 4K 30p ;
  7. 电源输入从 Micro USB 的 5V/2.5A 输入升级成了 USB Type C 的 5V/3A 输入,原有 PoE (Power over Ethernet) 保留,新增了通过 GPIO 的 5V/3A 输入。

以上都是纸面参数,到底有多少水分还要试一下才知道:

  1. 以太网通过 iperf 测试,双向同时传输平均速率能达到 900Mbps ,符合千兆位以太网的要求。

  2. USB3.0 的测试,由于内置 SD 卡读写速率过低,所以挂载了一个 tmpfs (在内存中),在 USB3.0 接一个顺序读取速率可达 500MB/s 的 SSD ,测试通过从 SSD 拷贝文件到内存的方式进行。测试传输一个 1.1GB 的文件耗时 6.003s ,传输速率达到 189.33MB/s 。用同样的方式测试 USB2.0 接口传输速率可以达到 33.35MB/s 。(作为参考,我电脑的 USB3.0 在这个测试下可以得到 438.94MB/s 的成绩。)也就是说实际使用时 USB3.0 接口传输速率离理论值距离较大,但至少肯定是高于 USB2.0 的理论速率的。

  3. 还有一个测试是看看 USB3.0 与以太网是否会竞争。在 USB3.0 拷贝文件的同时用 iperf3 测试网速,看看 USB3.0 和以太网有没有明显掉速。实际测试结果: USB3.0 和以太网同时工作时都有一点掉速, USB3.0 掉到 114MB/s 左右,以太网也掉了 100Mbps 左右(不要弄混单位, 1MB = 8Mb )。从结果来看它们应该没有竞争带宽(不然不会只掉这么一点),少量掉速应该是由于 CPU 的瓶颈,因为测试时 CPU 占用一度高达 80%

    上面提到的以太网的传输速率掉了 100Mbps 是平均速率,但实际上以太网测速和 USB3.0 测速不是完全重叠的,看平均速率不太合适,而且以太网也没有进行双向同时传输。所以我改成双向同时传输又重复了几次,看 Windows 任务管理器的曲线图, USB3.0 传输时,以太网上行速率(相对树莓派上行)掉了 300Mbps ,下行速率没有太大变化:(纵向 1 格是 100Mbps )

    eth-with-usb-test

    USB3.0 传输速率掉到 114MB/s 这个结果是基本正确的。也就是说以太网掉速的情况比我最开始想的要大很多,而且不像是 CPU 瓶颈,因为从曲线图可以看出以太网下行速率没有跟随上行速率下降。

    然后我又做了两个测试。一个是在以太网测速时做 7zip 压缩解压测试( CPU 占用 100% ),发现以太网双向传输速率都有所下降,但是是波动较大的,而且下降幅度没有 300Mbps 。第二个测试时在以太网测速时从 SD 卡拷贝文件到内存(速率在 90MB/s 左右),发现以太网几乎没有掉速。

    所以感觉以太网和 USB3.0 还是有比较大竞争的,估计是会竞争一些内部总线。

  4. WiFi 声称支持 IEEE802.11ac ,也就是所谓 WiFi5 ,但是没有说支持到什么规格。连接到网件 R7000 的 5GHz 频段上测试得到速率 95Mbps 左右,也就是比较菜的水平(作为参考,我的手机可以达到 470Mbps )。

所以总的来说,这一次 IO 的升级算得上基本靠谱。

因为我没有支持通过 HDMI 达到 4K 60p 的显示器,也没有两个 4K 显示器,所以没法测试其外接显示能力,但至少带起单个 4K 30p 是可以的。

由于性能提升,树莓派的电源要求也从原来的 5V/2.5A 提升到 5V/3A 。但是实测不接 USB 设备时用 2A 的手机充电器也能带得动,而且运行稳定。官方的说法是这样的:

A good quality 2.5A power supply can be used if downstream USB peripherals consume less than 500mA in total.
译:如果下游 USB 外设的总耗电量小于 500mA ,则也可以使用质量好的 2.5A 电源。

那树莓派终于能用了吗?

IO 性能翻倍,基本算是补齐了一块短板,内存也从 1GB 升级到了最高 4GB ,性能超过了一些最低配的 VPS ,能干的事情自然是多了很多。 4B 带来这些升级的同时,还很好地保持了大小和功耗基本不变,它仍然是一张银行卡大小的通用计算机。

如果问“树莓派终于能用了吗?”,我觉得回答是“是的!”。单是 IO 的提升,我觉得我就突然很有意愿去用它或者玩它,哪怕只是作一个便携软路由或者 NAS 或者挂一下睿思,也比过去好用太多。更何况它有 4GB 的内存,我完全可以跑一个 GitLab 作为我的私有仓库,甚至觉得买 4 、 5 个组一个 Hadoop 集群也完全是可行的,很多脑洞都变得比过去更有实现的可能。

价格的话, 1GB 版本现在停产了,但是记得跟 3B+ 价格差不多( 3B+ 我买的时候是 215 元), 2GB 版本 268 元, 4GB 版本 405 元,可以说是十分良心了。如果没有树莓派,想买一个来玩玩,绝对推荐买 4B 。如果已经有了 3B 或者 3B+ ,纠结要不要升级,我觉得值得升级,旧的 3B 或者 3B+ 还可以半价咸鱼卖掉。

一些问题

树莓派 4B 在我看来已经非常不错,物超所值了,但使用上还是有一些问题。

HDMI

显示规格升级到 4K 60p 我用不到,但是可以理解,但是我不能理解为什么接口要从单个全尺寸 HDMI 接口换成 2 个 Micro HDMI 接口。

hdmi

全尺寸 HDMI 就是上图的 A , Micro HDMI 就是上图的 D 。

这意味着你首先需要买一根下图这样的 Micro HDMI (公)转 HDMI (母)的转接线,或者如果不想转多一次可以直接买需要长度的公对公转接线。由于是直连转接线,所以也不太贵,我这根 25 元,但如果要接两个屏幕就需要买两根。

micro-hdmi-to-hdmi-adapter

多一根转接线意味着在便利性、体积、连接的可靠性等方面的牺牲。而且 Micro HDMI 比全尺寸 HDMI 插头要脆弱,更容易断裂或弯折,接口连接可靠性也要低很多。

而且树莓派也并不是没有空间放下全尺寸 HDMI ,放一个全尺寸 HDMI 加一个 Micro HDMI 看起来空间是足够的,这样可以像以前一样很方便地接一个显示器,如果要接两个也可以转接一下加上。即使维持原来的单个全尺寸 HDMI 我也觉得比现在这样两个 Micro HDMI 要好。

散热

树莓派 4B 的发热量明显是比 3B 和 3B+ 都要多的。 3B+ 还能不贴任何散热片直接放在官方外壳里维持可以接受的温度。但是到了 4B ,像这样放在官方外壳里的话:

pi-in-offical-shell

即使什么都不做,盖上上盖温度会慢慢上升到 70°C 以上,打开上盖温度也在 60°C 左右,整个 PCB 板都烫得不能碰,更别提在较重负载情况下了。

所以可能在 SoC 、内存、网卡上贴一些散热鳍片是有必要的。不过我觉得官方外壳就是一个闷罐,不通风,即使有散热鳍片效果也不会怎样。所以我买了这样一个带风扇的铝制外壳:

pi-in-cooling-shell

上下两面黑色的铝制散热鳍片,带双风扇,看起来非常“酷”( “cool” 双关)。

因为它在 PCB 板背部对应 SoC 和内存中间、 SoC 、内存、 USB 控制器上都有散热柱通过导热硅胶跟元件或 PCB 板接触,所以散热效果非常好。

pi-not-in-cooling-shell

实测静息时开风扇温度在 40°C 左右,不开风扇温度在 50°C 左右。

(风扇电源线插在 GPIO 第 4 脚( 5V )和第 6 脚( GND )之间)

一些期待

现在的树莓派已经能用了,但是对于树莓派的未来,我也还有一些期望改进或者提升的地方。

首先 HDMI 真的希望能够给回我一个全尺寸 HDMI 接口,哪怕只有一个显示接口也好。

USB3.0 最好能提升到满速 5Gbps , WiFi 最好能支持到 2 * 2 MIMO 。

如果可能的话,能否多加一个千兆以太网口?哪怕砍掉两个 USB2.0 接口。

最后, SD 卡现在成为了最大的 IO 瓶颈。现在普通价格的 SD 卡读速只有 90MB/s 左右,写速更是低到 15MB/s 左右,已经明显低于树莓派上的 WiFi 、以太网、 USB3.0 的传输速率。未来如果能够用 eMMC 作为启动盘或者同时支持 eMMC 和 SD 卡启动就最好不过了。