年前无事+图便宜收了几台百视通 R3300-M 来玩,S905M-B + 1G RAM + 4G EMMC 的配置,之前刷国内论坛自制固件看看电视或者跑 Armbian 倒也不错。不过当我想用它运行 Coreelec 播放 4K 视频时,产生了越来越多的迷惑:
1 ) S905M-B 是否支持 4K@60 输出
首次尝试:安卓系统下,盒子原厂固件(电信 IPTV )和国内论坛自制固件最高支持到 3840X2160@30,启动到 Coreelec 最新稳定版( 9.2.6 )也是如此,尝试设置 3840X2160@60 直接黑屏遂告失败。
二次尝试:发现几年前的外贸盒子 MXQ Pro 4K 与 R3300-M 的核心配置相近,于是在外国论坛找了个 ATV 的包尝鲜( MXQ_PRO_4K_p201_android_TV_by cOOLio_V2.5_MEE.7z ),刷好后第一时间注意到这个固件能够正常输出 3840X2160@60 。启动 Coreelec,设置 3840X2160@60 分辨率以及播放 3840X2160@60 视频毫无问题,视频详情与系统硬件信息可以确认。
所以发生了什么?
2 ) S905M-B 的真实 CPU 性能
几年前 Armbian 论坛上有人发帖抨击 S9XX 家族 CPU 主频高于 1.5GHz 为造假,还贴出了 7z 测试结果。我对此产生兴趣的契机还是刷了 MXQ_PRO_4K_p201_android_TV_by cOOLio_V2.5_MEE.7z 这个固件之后,在 Armbian 的 htop 中我发现 CPU 主频最高能达到 2.02GHZ 了,而在刷写原厂固件和国内论坛自制固件情况下运行 Armbian 主频只有 1.54GHz,国内论坛上广为流传的 S905M-B CPU 主频就是 1.54GHz 。对此我用 7zip 做了个不太严谨的小测试:
盒子 1 与 2 是同一批的全新 R3300-M,TF 卡均为三星 128G 红卡。其中,盒子 1 刷写了 20171210_Q5_G2-40F_S905-S905M_android4.42_root_qlzy.rar (潜龙固件),运行 Armbian20.10 Focal ;盒子 2 刷写了 MXQ_PRO_4K_p201_android_TV_by cOOLio_V2.5_MEE.7z ,运行 Armbian_5.99_Aml-g12_Ubuntu_bionic_default_5.3.0_rtl8189ftv.tar.gz ,7zip 版本相同。
盒子 1 测试结果:
root@arm-64:~# 7z b -mmt1
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: 64000000 64000000 - - - 256000000 - 1024000000 2048000000
RAM size: 922 MB, # CPU hardware threads: 4
RAM usage: 435 MB, # Benchmark threads: 1
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 839 99 823 817 | 14397 100 1233 1229
23: 814 99 836 830 | 14089 100 1223 1220
24: 816 99 884 877 | 13803 100 1215 1212
25: 792 99 912 905 | 13596 100 1213 1210
---------------------------------- | ------------------------------
Avr: 99 864 857 | 100 1221 1218
Tot: 99 1042 1037
root@arm-64:~# 7z b
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: 64000000 64000000 - - - 256000000 - - -
RAM size: 922 MB, # CPU hardware threads: 4
RAM usage: 882 MB, # Benchmark threads: 4
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 2227 309 701 2167 | 55424 395 1196 4729
23: 2196 310 723 2238 | 54495 396 1190 4715
24: 2107 302 749 2266 | 53410 396 1184 4689
Killed
盒子 1 的多线程测试几次都没法跑完。
盒子 2 测试结果:
root@aml:~# 7z b -mmt1
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: 497 1306 1533 1533 1533 1533 1533 1533 1533
RAM size: 797 MB, # CPU hardware threads: 4
RAM usage: 435 MB, # Benchmark threads: 1
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 952 99 935 927 | 17109 100 1465 1461
23: 936 99 963 954 | 16772 100 1456 1452
24: 933 99 1012 1004 | 16433 100 1447 1443
25: 921 99 1061 1052 | 16130 100 1440 1436
---------------------------------- | ------------------------------
Avr: 99 993 984 | 100 1452 1448
root@aml:~# 7z b
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: 712 1533 1533 1533 1533 1532 1532 1533 1532
RAM size: 797 MB, # CPU hardware threads: 4
RAM usage: 450 MB, # Benchmark threads: 4
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 2518 312 785 2450 | 65823 395 1423 5616
23: 2476 311 811 2524 | 64601 395 1414 5590
24: 2485 313 855 2673 | 63318 396 1405 5558
---------------------------------- | ------------------------------
Avr: 312 817 2549 | 395 1414 5588
Tot: 354 1115 4068
测试结果表明无论是单线程还是多线程盒子 2 都比盒子 1 的 CPU 性能高出了 19%左右,十分可观。
所以发生了什么?
3 ) IR 遥控器开机的实现
MXQ_PRO_4K_p201_android_TV_by cOOLio_V2.5_MEE.7z 解决了许多问题,但是带来了新问题:没办法用盒子随机附带的红外遥控器开机了。自己为 Coreelec 写了个 ir-meson 遥控文件,在开机时工作正常,也能关机,不过没办法开机。
经过上面的试验和搜索我大概意识到可能与底层 Firmware 有关。Coreelec 上有一篇CoreELEC BL301 Wake-Up feature [inject_bl301]文章,大意说要用它的 bl301 注入 BootLoader,不过我的盒子设置里没有这个选项……去 Github 看了一眼,有这么一条 commit:
hardware: hide 'inject_bl301' on GXL SoC as it's experimental
或许有空时自己编译一个试试?
4 ) S905M-B 为何资料缺失
事实上国内 IPTV 盒子广泛使用的 S905M-B,S905L 种种型号千奇百怪的 S905 SOC 在 Amlogic 官网都无法找到资料,WIKI 上也没有收录, 官方的态度或许也是 balbes150 放弃维护 Armbian for S9XX 的缘由之一。
所以海思 SOC 的机顶盒有大佬移植 Armbian 来玩吗 (:з」∠)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.