首图是目前的家庭网络设备拓扑图。虽然是教程贴,还是记录下前因后果。
看片困境 前段时间买了低功耗小主机,关掉了威联通 NAS,客厅如何看电视就成了问题,看了不少经验分享贴都推荐五十块的二手魔百盒。闲鱼下单了 s905l3a 带 wifi 的商家版本,预装了常用的电视 app,配合红外遥控确实是老年人友好的解决方案。 开机后发现按键操作时常失灵,而且操作和播放视频过程中频繁自启或者退回桌面。联系商家说可能是电源的问题,这个是旧华为路由器闲置下来的。尝试跟光猫的电源(高 0.5A)交换,情况有所好转,但依然会概率性重启。一番交涉,商家爽快的答应换货。
最坑的是,BBLL 能装上,jellyfin TV 却不行。网上也看到有人 po 出同样的问题,原因是这种在运营商基础上魔改的 ROM 缺少很多系统模块。有大佬给出了 patch ,但需要自己动手编译并且不保证有 bug,遂放弃。 当然,还有刷机这条路,买这个盒子也是图他 ROM 生态丰富。偶然间看到盒子店铺的一条评论,想再刷回来的话还要再掏钱或者提前备份镜像(不会啊),还是放弃吧。所以换货回来只是简单检查了下重启的毛病,就没有继续折腾的兴致了,扔到卧室给小朋友放放动画片也挺好。
前期摸索 所以事情又回到原点,客厅的电视用什么播放器。最终,还是打上了小主机的主意。因为一开始只打算做网络服务,装的是没有桌面程序的 Ubuntu server 系统,不过 N100 算比较新的 CPU,为了提高驱动兼容性上了最新的 **Ubuntu 24.10 (Oracular Oriole)**,据说明年 Plucky Puffin 发布的时候可以无痛升级。
所有 linux TV 播放器里面,kodi 绝对是老大哥 ,生态完整、资料好找,安装方式也多种多样,最简单的当然是 libreElec,开箱即用,但考虑到要把系统重装为 PVE,也没有 openwrt 的需求,还是打算宿主机直装的方式。一开始考虑 docker,但不是版本太老 就是没啥人用 ,出问题的概率很大。
幸运的是,找到两篇(1 ,2 )在 server 版 ubuntu 上最小安装 kodi 的教程;遗憾的是,他们用的 GUI 框架都是比较古老的 X11,在最新内核下需要安装很多依赖并且参在兼容性风险。另外这个一键安装脚本 也是差不多的思路。关于 X11、Wayland 和 GBM 的区别可以看这里 的解释。
进一步查找,官方论坛的这个帖子 给出了重要线索,所以首先确认硬件驱动没问题(参考 1 ,2 ),然后根据官方文档直接安装。
具体流程 硬件和驱动情况如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ➜ ~ uname -a Linux n100 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 14 13:19:59 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux ➜ ~ sudo lspci -v | grep i915 Kernel driver in use: i915 Kernel modules: i915, xe➜ ~ sudo lshw | grep i915 configuration: depth=32 driver=i915 latency=0 mode=1920x1080 resolution=1920,1080 visual=truecolor xres=1920 yres=1080➜ ~ sudo dmesg | grep i915 [ 13.326033] i915 0000:00:02.0: [drm] Found ALDERLAKE_P/ADL-N (device ID 46d1) display version 13.00 stepping D0 [ 13.326927] i915 0000:00:02.0: [drm] VT-d active for gfx access [ 13.370261] i915 0000:00:02.0: vgaarb: deactivate vga console [ 13.371357] i915 0000:00:02.0: [drm] Using Transparent Hugepages [ 13.371930] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 13.374690] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)[ 13.587503] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/tgl_guc_70.bin version 70.29.2 [ 13.587515] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3 [ 13.592056] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads [ 13.592757] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled [ 13.592762] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled [ 13.593204] i915 0000:00:02.0: [drm] GT0: GUC: RC enabled [ 13.594830] mei_pxp 0000:00:16.0-fbf6fcf1-96cf-4e2e-a6a6-1bab8cbe36b1: bound 0000:00:02.0 (ops i915_pxp_tee_component_ops [i915]) [ 13.595027] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized [ 13.595034] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915]) [ 13.630189] [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1 [ 13.706559] fbcon: i915drmfb (fb0) is primary device [ 13.784629] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device [ 13.796441] sof-audio-pci-intel-tgl 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
看上去万事具备了,不需要额外安装或者设置什么。根据官方文档 add-apt-repository -r ppa:team-xbmc/ppa
却遇到问题,提示“The repository ‘https://ppa.launchpadcontent.net/team-xbmc/ppa/ubuntu oracular Release’ does not have a Release file”,手动修改/etc/apt/sources.list.d/team-xbmc-ubuntu-ppa-oracular.sources
,把oracular
降级为 23.04 的lunar
是可以获取到源了,但却少了kodi-gbm
包,且不知道会不会有其他隐性问题。从新闻看到,kodi 团队从今年 5 月开始就停止维护 PPA 源了,索性参考文档 手动编译。另外根据 reddit 网友提供的信息,手动编译可以设置 HDR 直通(虽然家里的老电视只支持 SDR)。
同样的问题,安装前置依赖 过程中无法添加 xbmc-nightly 源,只能手动安装,大概占掉 1G 的硬盘空间。配置之前还要安装 libdisplay-info:
cd ~ && wget https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/0.2.0/libdisplay-info-0.2.0.tar.gz tar xzf libdisplay-info-0.2.0.tar.gz && cd libdisplay-info-0.2.0 mkdir build && cd build meson setup --prefix=/usr/local --buildtype=release ninja sudo ninja install cd ~/kodi-build cmake ../kodi -DCMAKE_INSTALL_PREFIX=/usr/local -DCORE_PLATFORM_NAME=gbm -DAPP_RENDER_SYSTEM=gles -DENABLE_VAAPI=ON
理所当然的报错了:
CMake Error at /usr/share/cmake-3.30 /Modules/FindPackageHandleStandardArgs.cmake:233 (message ): Could NOT find PCRE (missing: PCRE_LIBRARY PCRE_INCLUDE_DIR) Call Stack (most recent call first): /usr/share/cmake-3.30 /Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE) cmake/modules/FindPCRE.cmake:126 (find_package_handle_standard_args) cmake/scripts/common/Macros.cmake:403 (find_package ) cmake/scripts/common/Macros.cmake:417 (find_package_with_ver) CMakeLists.txt:261 (core_require_dep) -- Configuring incomplete, errors occurred!
搜索发现,最近的更新从 pcre 切换到了 pcre2,而之前安装的就是 libpcre2-dev,而 ubuntu apt 仓库里根本就没有 libpcre-dev。所以源码下载地址从release 切换到master 。顺利通过配置,执行编译。
cmake --build . -- VERBOSE=1 -j$(getconf _NPROCESSORS_ONLN)
注意过程中会从网络下载依赖,编译期间最好挂上梯子。
耗时 30 分钟,成功之后生成 kodi-gbm 可执行文件,使用 sudo ./kodi-gbm
进行测试。注意,如果没有给当前用户赋予足够的权限,一定要用 root 执行,否则可能无法访问 GPU,强制软解。
后续问题 远程遥控 app 手机上安装 Yatse,连上 wifi。小主机插上鼠标,根据文档 打开远程控制功能。成功登录之后就可以拔掉鼠标了。Pro 版增加了投屏、jellyfin 客户端、离线播放等功能,仅售 3.49 刀。
shellCrash 白名单 播放无声音 standalone 模式