Skip to content

Latest commit

 

History

History
253 lines (181 loc) · 39.6 KB

File metadata and controls

253 lines (181 loc) · 39.6 KB
OpenWrt

OpenWrt

English Instructions | 中文说明

OpenWrt 项目是一个针对嵌入式设备的 Linux 路由器操作系统。OpenWrt 不是单一且不可修改的固件,而是提供了具有软件包管理功能的完全可写文件系统,让您可以自由选择所需的软件包来定制路由器系统。对于开发人员而言,OpenWrt 是一个无需围绕它构建完整固件即可开发应用程序的框架;对于普通用户而言,这意味着拥有完全的定制能力,能以灵活多样的方式使用设备。它拥有超过 3000 个标准化应用软件包以及丰富的第三方插件支持,让您可以轻松地将它们应用于各种支持的设备。现在,您可以将电视盒子的安卓 TV 系统替换为 OpenWrt 系统,使其成为一台功能强大的路由器。

本项目依托众多贡献者的支持,为 AmlogicRockchipAllwinner 盒子构建 OpenWrt 系统。支持写入 eMMC 使用、内核更新等功能,详细使用方法请参阅 OpenWrt 使用文档。最新的固件可以在 Releases 中下载。欢迎您 Fork 本仓库并进行个性化软件包定制。如果对您有帮助,可以点击仓库右上角的 Star 表示支持。

OpenWrt 固件默认信息

系统名称 默认账号 默认密码 SSH 端口 IP 地址
🛜 OpenWrt.OS root password 22 192.168.1.1
🐋 OpenWrt.Docker root password 22 192.168.1.1

支持的设备列表

⬆️ 各平台(晶晨/瑞芯微/全志)型号均按 SoC 性能由高至低排列。

SoC 设备 内核
a311d Khadas-VIM3, WXY-OES stable
s922x Beelink-GT-King, Beelink-GT-King-Pro, Ugoos-AM6-Plus, ODROID-N2, X88-King, Ali-CT2000, WXY-OES-Plus stable
s905x3 X96-Max+, HK1-Box, Vontar-X3, H96-Max-X3, Ugoos-X3, TX3(QZ), TX3(BZ), X96-Air, X96-Max+_A100, A95X-F3-Air, Tencent-Aurora-3Pro(s905x3-b), X96-Max+Q1, X96-Max+100W, X96-Max+_2101, Infinity-B32, Whale, X88-Pro-X3, X99-Max-Plus, Transpeed-X3-Plus, TOX1 stable
s905x2 X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2, HG680-FJ stable
s905l3a E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, ZTE-B863AV3.2-M, CM311-1a-CH, IP112H, B863AV3.1-M2 stable
s905l3b CM201-1, CM211-1, CM311-1, E900V21D, E900V22D, E900V21E, E900V22E, M302A/M304A, Hisense-IP103H, TY1608, TY1608, MGV2000, B860AV-2.1M, UNT403A, RG020ET-CA, M411A stable
s905l3 CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT400G, UNT402A, ZXV10-BV310, M411A, ZXV10-B860AV3.2-M, ZXV10-B860AV2.1-U, E900V22D-2, CM201-1-6-YS, IP108H, M301A stable
s912 Tanix-TX8-Max, Tanix-TX9-Pro(3G), Tanix-TX9-Pro(2G), Tanix-TX92, Tanix-TX9S, Nexbox-A1, Nexbox-A95X-A2, A95X, H96-Pro-Plus, VORKE-Z6-Plus, Mecool-M8S-PRO-L, Vontar-X92, T95Z-Plus, Octopus-Planet, Phicomm-T1, TX3-Mini, OneCloudPro-V1.1_V1.2 stable
s905d MECOOL-KI-Pro, Phicomm-N1, SML-5442TW stable
s905x HG680P, B860H, TBee-Box, T95, TX9, XiaoMI-3S, X96, Nexbox-a95x, BTV9 stable
s905mb S65 stable
s905l UNT402A, M201-S, MiBox-4, MiBox-4C, MG101, E900V21C, IP108H-53u1m, Tencent-Aurora-1s, B860AV2.1, B860AV2.1U, HM201 stable
s905l2 MGV2000, MGV2000-K, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E, e900v21d, CM201-1, IP108H, MGV2000-CW stable
s905lb Q96-mini, BesTV-R3300L, SumaVision-Q7, MG101, s65, IPBS9505 stable
s905w X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K, MeCool-m8s-pro-W stable
s905 Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 stable
rk3588(s) Radxa-Rock5B, Radxa-Rock5C, Orange-Pi-5-Plus, Beelink-IPC-R, HLink-H88K, HLink-H88K-V3, NanoPC-T6, Smart-Am60, DC-A588, Orangepi-5B, CM3588-NAS, Rock-5-ITX, LZ-D3588, Boca-tcn100, Boca-tcn200, Firefly-ITX-3588J rk3588
rk3576 NanoPi-m5, LCKFB-Taishan-Pi-3M stable
rk3399 EAIDK-610, King3399, TN3399, Kylin3399, ZCube1-Max, CRRC, SMART-AM40, SW799, ZYSJ, DG-3399, DLFR100, Emb3531, Leez-p710, tvi3315a, xiaobao, Fine3399, Firefly-RK3399, LX-R3S, Hugsun-x99, Tb-ls3399, Hisense-hs530r, Tpm312, ZK-rk39a, YSKJ, Fmx1-Pro, Fmx1-Pro-B, Sv-33a6x, Sv-33a6x(VPU), AIO-3399B, AIO-3399C, AIO-3399C(AI), TaraM, NanoPC-T4, Firefly-Core-3399-JD4, GEA-6319 rk35xx
stable
rk3568 FastRhino-R66S, FastRhino-R68S, Radxa-E25, NanoPi-R5S, NanoPi-R5C, HLink-H66K, HLink-H68K, HLink-H69K, Seewo-sv21, Mrkaio-m68s, Swan1-w28, Ruisen-box, DG-TN3568, Alark35-3500, MMBox-Anas3035, Wocyber-A3, Photonicat, NSY-G16-Plus, NSY-G68-Plus, BDY-G18-Pro, Gzpeite-P01, LZ-D3568, LZ-K3568, BDKJ-One, Station-P2, Lyt-t68m rk35xx
stable
rk3566 Panther-X2, JP-TvBox, LCKFB-Taishan-Pi, WXY-OEC-turbo-4g, Station-M2, Orange-Pi-3B, X88Pro20 rk35xx
stable
rk3528 HLink-H28K, Radxa-E20C, H96-Max-M2, HK1-Rbox-K8S, HT2, CD1000 rk35xx
rk3328 BeikeYun, Chainedbox-L1-Pro, Station-M1, Bqeel-MVR9, Renegade/Firefly rk35xx
stable
rk3318 RX3318-Box stable
h6 Vplus, Tanix-TX6, TQC-A01 h6
stable
h618 OrangePi-Zero3, H618-DevBoard, X98H stable

Tip

目前 s905 的盒子只能在 TF/SD/USB 中使用,其他型号的盒子支持写入 EMMC 中使用。更多信息请查阅 ✅支持的设备列表说明。可以参考说明文档中 12.15 章节的方法添加新的支持设备。使用前先阅读 OpenWrt 使用文档,常见问题都有解决方法。

安装及升级 OpenWrt 的相关说明

请选择与您的电视盒子型号对应的 OpenWrt 固件,不同设备的使用方法请参阅相应说明。

  • 安装 OpenWrt

  1. Rockchip 平台的安装方法请查看说明文档中的 第 8 章节 的介绍,和 Armbian 的安装方法相同。

  2. AmlogicAllwinner 平台,使用 Rufus 或者 balenaEtcher 等工具将固件写入 USB 里,然后把写好固件的 USB 插入盒子。浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用默认账户登录进入 OpenWrt系统菜单晶晨宝盒安装 OpenWrt ,在支持的设备下拉列表中选择你的盒子,点击 安装 OpenWrt 按钮进行安装。

  • 升级 OpenWrt 系统或内核

浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用账户登录进入 OpenWrt系统菜单晶晨宝盒手动上传更新 / 在线下载更新

如果选择 手动上传更新 OpenWrt 固件,可以上传编译好的 OpenWrt 固件压缩包,如 openwrt_xxx_k5.15.50.img.gz(推荐上传压缩包,系统会自动解压;若上传解压后的 xxx.img 格式文件,可能因文件过大而导致上传失败)。上传完成后,界面将显示 更新固件 操作按钮,点击即可更新。

如果选择 手动上传更新 OpenWrt 内核,可以上传 boot-xxx.tar.gzdtb-xxx.tar.gzmodules-xxx.tar.gz 这 3 个内核文件(其他内核文件无需上传,即使同时上传也不影响更新,系统可以准确识别所需的内核文件)。上传完成后,界面将显示 更新内核 操作按钮,点击即可更新。若内核更新失败导致系统无法启动,可以使用 openwrt-kernel -s 命令进行内核恢复,方法详见内核恢复

如果选择 在线下载更新 OpenWrt 固件或内核,系统将根据插件设置中的固件下载地址内核下载地址进行下载。您可以自定义修改下载来源,具体操作方法详见 luci-app-amlogic 的编译与使用说明。

  • 为 OpenWrt 创建 swap

如果您在使用 docker 等内存占用较大的应用时,发现当前盒子的内存不足,可以创建 swap 虚拟内存分区,将 /mnt/*4 磁盘空间的一定容量虚拟为内存使用。以下命令的输入参数单位为 GB,默认值为 1

浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用默认账户登录进入 OpenWrt系统菜单TTYD 终端 → 输入命令

openwrt-swap 1
  • 备份/还原 EMMC 原系统

支持通过 TF/SD/USB 对盒子的 EMMC 分区进行备份与恢复。建议您在全新的盒子上安装 OpenWrt 系统之前,先备份盒子自带的安卓 TV 系统,以便日后需要恢复时使用。

请从 TF/SD/USB 启动 OpenWrt 系统,浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用默认账户登录进入 OpenWrt系统菜单TTYD 终端 → 输入命令

openwrt-ddbr

根据提示输入 b 进行系统备份,输入 r 进行系统恢复。

Important

除此之外也可以通过线刷的方法,将安卓系统刷入 eMMC 中,安卓系统的下载镜像可在 Tools 中查找。

  • 控制 LED 显示

浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用默认账户登录进入 OpenWrt系统菜单TTYD 终端 → 输入命令

openwrt-openvfd

根据 LED 屏显示控制说明 进行调试。

  • 恢复到初始化状态

浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用默认账户登录进入 OpenWrt系统菜单晶晨宝盒备份固件配置快照管理初始化快照,点击 还原快照 即可恢复至初始化状态。

也可以在 系统菜单TTYD 终端 → 输入命令 firstboot 恢复系统至初始化状态。这两种方法的操作结果相同。

  • 更多使用说明

在使用 OpenWrt 的过程中,常见问题及解决方案详见 使用文档

本地化打包

  1. Clone 仓库到本地 git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-openwrt.git
  2. 安装必要的软件包(如 Ubuntu 24.04)

~/amlogic-s9xxx-openwrt 根目录下执行以下安装命令:

sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-24.04
sudo apt-get install -y $(cat make-openwrt/scripts/ubuntu2404-make-openwrt-depends)
  1. ~/amlogic-s9xxx-openwrt 根目录下创建 openwrt-armsr 文件夹,并将 openwrt-armsr-armv8-generic-rootfs.tar.gz 文件上传至此目录。
  2. ~/amlogic-s9xxx-openwrt 根目录下执行打包命令,如 sudo ./remake -b s905x3 -k 6.1.10。打包完成的 OpenWrt 固件将存放在根目录下的 openwrt/out 文件夹中。
  • 本地化打包参数说明

参数 含义 说明
-b Board 指定目标设备代号。您可以指定具体设备进行编译(如 -b s905x3),或使用下划线连接多个设备代号同批编译(如 -b s905x3_s905d)。本参数还支持通过特殊关键字进行批量编译:all 表示编译全部设备,first50 表示编译设备库中的前 50 个,range50_100 表示编译从第 51 个至第 100 个设备(range100_150 同理),last20 表示最后 20 个。此外,支持按硬件平台(amlogicrockchipallwinner)进行分类编译,直接输入平台名称即可编译对应的所有镜像,例如 -b amlogic;若在平台名称后附加数值,则可指定编译该平台列表中的特定范围,例如 -b amlogic50 表示编译 Amlogic 平台支持列表中的前 50 个设备,-b amlogic50_100 表示编译从第 51 个至第 100 个设备。具体的设备代号支持列表,请详见 model_database.conf 中的 BOARD 配置项。默认值:all
-r KernelRepo 指定 github.com 内核仓库的 <owner>/<repo>。默认值:ophub/kernel
-u kernelUsage 设置使用的内核的 tags 后缀,如 stable, flippy, beta。默认值:stable
-k Kernel 指定 kernel 名称,如 -k 5.10.125。多个内核使用 _ 连接,如 -k 5.10.125_5.15.50。通过 -k 参数自由指定的内核版本仅对使用 stable/flippy/beta 的内核有效。其他内核系列如 rk3588 / rk35xx / h6 等只能使用特定内核。
-a AutoKernel 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 -k 中指定的内核如 5.10.125 的同系列是否有更新的版本,如有 5.10.125 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true
-p IP 指定 OpenWrt 系统的默认 IP 地址,例如: -p 10.1.1.1。默认值:192.168.1.1
-s Size 对系统的镜像分区大小进行设置,只设置 ROOTFS 分区大小时可以只指定一个数值,例如: -s 1024。需要同时设置 BOOTFS 和 ROOTFS 分区大小时,使用 / 对两个数值进行连接,例如: -s 256/1024。默认值:256/1024
-n BuilderName 设置 OpenWrt 系统构建者签名。设置签名时请勿包含空格。默认值:
  • sudo ./remake : 使用默认配置,使用内核库中的最新内核包,对全部型号的电视盒子进行打包。
  • sudo ./remake -b s905x3 -k 6.1.10 : 推荐使用. 使用默认配置进行相关内核打包。
  • sudo ./remake -b s905x3 -k 6.1.y : 使用默认配置进行相关内核打包,内核使用 6.1.y 系列的最新版。
  • sudo ./remake -b s905x3_s905d -k 6.1.10_5.15.50 : 使用默认配置,进行多个内核同时打包。使用 _ 进行多内核参数连接。
  • sudo ./remake -b s905x3 -k 6.1.10 -s 1024 : 使用默认配置,指定一个内核,一个型号进行打包,固件大小设定为 1024 MiB。
  • sudo ./remake -b s905x3_s905d 使用默认配置,对多个型号的电视盒子进行全部内核打包, 使用 _ 进行多型号连接。
  • sudo ./remake -k 6.1.10_5.15.50 : 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用 _ 进行连接。
  • sudo ./remake -k 6.1.10_5.15.50 -a true : 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用 _ 进行连接。自动升级到同系列最新内核。
  • sudo ./remake -s 1024 -k 6.1.10 : 使用默认配置,设置固件大小为 1024 MiB, 并指定内核为 6.1.10 ,对全部型号电视盒子进行打包。

使用 GitHub Actions 进行编译

您可以通过修改 config 目录下的个性化固件配置文件以及 .yml 文件,自定义并编译适合您的 OpenWrt 固件,固件可以上传至 github.com 的 ActionsReleases 等处。

  1. 您可以在 使用文档 中查看个性化固件配置说明。编译流程控制文件为 .yml
  2. 全新编译:在 github.com 的 Action 页面选择 Build OpenWrt system image,点击 Run workflow 按钮进行固件一站式编译和打包。
  3. 再次编译:如果 Releases 中已有编译好的 openwrt-armsr-armv8-generic-rootfs.tar.gz 文件,且您只需重新制作其他不同 board 的盒子,可以跳过 OpenWrt 源码编译,直接使用 build-openwrt-using-releases-files.yml 进行二次制作。
  4. 更多支持:编译好的 openwrt-armsr-armv8-generic-rootfs.tar.gz 文件是制作各种不同 board 固件的通用文件,也适用于使用 unifreq 的打包脚本制作 OpenWrt 固件。作为在盒子中使用 OpenWrt 和 Armbian 系统的开创者,他支持了更多设备,包括在 Armbian 系统中通过 KVM 虚拟机使用的 OpenWrt(QEMU 版)、Amlogic、Rockchip 以及 Allwinner 系列等。打包方法详见其仓库说明,在 Actions 中可通过 build-openwrt-using-unifreq-scripts.yml 调用其打包脚本制作更多固件。
- name: Package armsr-armv8 as OpenWrt
  uses: ophub/amlogic-s9xxx-openwrt@main
  with:
    openwrt_path: openwrt/bin/targets/*/*/*rootfs.tar.gz
    openwrt_board: s905x3_s905x2_s905x_s905w_s905d_s922x_s912
    openwrt_kernel: 6.12.y_6.18.y
    openwrt_ip: 192.168.1.1
  • GitHub Actions 输入参数说明

相关参数与本地打包命令相对应,请参考上面的说明。

参数 默认值 说明
openwrt_path 设置 openwrt-armsr-armv8-generic-rootfs.tar.gz 的文件路径,可以使用相对路径如 openwrt/bin/targets/*/*/*rootfs.tar.gz 或网络文件下载地址如 https://github.com/*/releases/*/*rootfs.tar.gz
openwrt_board all 设置打包盒子的 board ,功能参考 -b
kernel_repo ophub/kernel 指定 github.com 内核仓库的 <owner>/<repo>,功能参考 -r
kernel_usage stable 设置使用的内核的 tags 后缀。功能参考 -u
openwrt_kernel 6.12.y_6.18.y 设置内核版本,功能参考 -k
auto_kernel true 设置是否自动采用同系列最新版本内核。功能参考 -a
openwrt_ip 192.168.1.1 设置 OpenWrt 系统的默认 IP 地址,功能参考 -p
openwrt_size 256/1024 设置系统 BOOTFS 和 ROOTFS 分区的大小,功能参考 -s
openwrt_files false 添加自定义 OpenWrt 文件。设置后,该目录下的所有文件将被复制到 common-files 中。目录结构必须与 OpenWrt 根目录保持一致,以确保文件被正确覆盖到固件中(例如:默认配置文件应存放于 etc/config/ 子目录下)。
builder_name 设置 OpenWrt 系统构建者签名,功能参考 -n
  • GitHub Actions 输出变量说明

上传到 Releases 需要给仓库设置 Workflow 读写权限,详见使用说明

参数 默认值 说明
${{ env.PACKAGED_OUTPUTPATH }} out Armbian 系统文件输出路径
${{ env.PACKAGED_OUTPUTDATE }} 04.13.1058 打包日期(月.日.时分)
${{ env.PACKAGED_STATUS }} success / failure 打包状态。成功 / 失败

openwrt-*-rootfs.tar.gz 用于打包的文件编译选项

Option Value
Target System Arm SystemReady (EFI) compliant
Subtarget 64-bit (armv8) machines
Target Profile Generic EFI Boot
Target Images tar.gz

更多信息请查阅 使用文档

编译内核

内核的编译方法详见 compile-kernel

- name: Compile the kernel
  uses: ophub/amlogic-s9xxx-armbian@main
  with:
    build_target: kernel
    kernel_version: 6.12.y_6.18.y
    kernel_auto: true
    kernel_sign: -yourname

资源说明

制作 OpenWrt 系统时,所使用的 kernelu-boot 等文件与制作 Armbian 系统使用的文件相同。为避免重复维护,相关内容已归类至对应的资源仓库,使用时将自动从相关仓库下载。

本系统所使用的 u-bootkernel 等资源主要源自 unifreq/openwrt_packit 项目,部分文件由用户在 amlogic-s9xxx-openwrt / amlogic-s9xxx-armbian / luci-app-amlogic / kernel / u-boot 等项目的 PullIssues 中贡献分享。unifreq 为我们开启了在电视盒子中使用 OpenWrt 的大门,我的固件在制作和使用中深受其影响,并沿用了他一贯的标准。为感谢这些开拓者和分享者,我已统一在 CONTRIBUTORS.md 中进行记录。再次感谢大家为盒子赋予了新的生命和意义。

其他发行版

  • unifreq 为晶晨、瑞芯微和全志等更多盒子制作了 OpenWrt 系统,是盒子圈的标杆项目,推荐使用。
  • amlogic-s9xxx-armbian 项目提供了适用于盒子的 Armbian 系统,同样兼容支持 OpenWrt 的相关设备。
  • fnnas 项目提供了适用于盒子的 FnNAS 系统,同样兼容支持 OpenWrt 的相关设备。

链接

License

The amlogic-s9xxx-openwrt © OPHUB is licensed under GPL-2.0