Fine3399资料:https://gitee.com/opengisbook/Fine3399-Official
莓底板/fine3399测试工程:https://gitee.com/xiayang0521/berrybaseboard-test
早期固件:https://github.com/xiayang0521/rk3399-images/releases/tag/fine3399-images
cm9vdA大佬适配的DTS:https://github.com/cm9vdA/build-linux/blob/master/boot/dts/rockchip/mainline/rk3399-fine3399.dts
经测试,基于cm9vdA大佬仓库里的fine3399_defconfig和DTS设备树编译出来的uboot23.07和22.07,上电虽然能正常点亮输出uboot启动信息(HDMI),但是引导linux内核启动进入系统后卡死,原因未知。
而使用该DTS编译出来的linux kernel dtb,系统能正常工作,包括双网口,HDMI,PCIE设备,蓝色led。
ophub大佬release出来的Fine3399镜像直接烧录,无法正常启动,原因还是uboot。
之后又尝试,将xiayang0521的早期armbian固件提取出来的uboot引导分区镜像(https://github.com/QXY716/u-boot/blob/main/u-boot/rockchip/fine3399/uboot-bozz-rk3399.bin ),缝合进ophub大佬的固件之后,均能正常启动,内核5.15,6.1,6.6都通过。
本人水平有限,根据固件缝合原理,整出了一个临时解决方法。修改了rebuild重构脚本,在Fine3399固件生成时将uboot-bozz-rk3399.bin写入,达到替换uboot的效果。
代码语句:sudo dd if="${bootloader_path}/uboot-bozz-rk3399.bin" of="${loop_new}" bs=1k skip=32 seek=32 conv=notrunc 2>/dev/null
Fine3399固件的DTS中已经开启了pcie2.0 x2通道,双网口,HDMI,led正常工作,已满足大部分人的日常使用。
PWM、WIFI、蓝牙在DTS中默认关闭,并未开启。
2024.4.20: 添加R08支持
本人适配的基于flippy打包脚本构建的openwrt下载地址:
https://github.com/QXY716/flippy-openwrt-actions/releases
默认支持WIFI功能。
2024.5.11: 添加了Fine3399的AP6236固件,并且修改了rebuild脚本,经测试wifi和蓝牙已经能够正常使用,至此Armbian几近完美。
决定将机型命名为Fine3399-full,意为全功能版固件。
如无需无线蓝牙功能,只需下载非full普通版固件。
View Chinese description | 查看中文说明
Armbian is a lightweight Linux system specially built for ARM chips based on Debian/Ubuntu. The Armbian system is lean, clean, and 100% compatible with and inherits the features and rich software ecosystem of the Debian/Ubuntu system. It can run securely and stably in TF/SD/USB and the device's eMMC. This project preserves the integrity of the official Armbian system and further expands its usage on devices such as TV boxes that are not officially supported. It adds some convenient operation commands. Now, you can replace the Android TV system on your TV box with the Armbian system, turning it into a powerful server.
This project relies on many contributors to build the Armbian system for Amlogic
, Rockchip
, and Allwinner
boxes, supports writing to eMMC for use, supports updating the kernel and other features. Detailed usage can be found in the Armbian User Documentation. The latest Armbian system can be downloaded from Releases. Welcome to Fork
and personalize. If it's useful to you, you can click Star
in the upper right corner of the repository to show support.
Tip
At present, the s905 box can only be used in TF/SD/USB
. Other models of boxes support writing to EMMC
for use. For more information, please refer to the Supported Device List Description. You can refer to the method in Section 12.15 of the instruction document to add new supported devices. Please read the Armbian User Documentation before use. It provides solutions to common issues.
Choose the Armbian system that corresponds to your box model, and refer to the corresponding instructions for different devices.
-
For
Rockchip
platform, please refer to the Chapter 8 in the instruction document. -
For
Amlogic
andAllwinner
platforms, use tools such as Rufus or balenaEtcher to write the system to a USB stick, then insert the USB stick with the written system into the box. Log in to the Armbian system (default user: root, default password: 1234) → Enter the command:
armbian-install
Optional | Default | Options | Description |
---|---|---|---|
-m | no | yes/no | Use mainline u-boot |
-a | yes | yes/no | Use ampart partition adjustment tool |
-l | no | yes/no | Show a list of all devices |
Example: armbian-install -m yes -a no
Log in to the Armbian system → Enter the command:
# Run as root user (sudo -i)
# If no parameter is specified, it will be updated to the latest version.
armbian-update
Optional | Default | Options | Description |
---|---|---|---|
-r | ophub/kernel | <owner>/<repo> |
Set the repository to download the kernel from github.com |
-u | Automation | stable/flippy/dev/beta/rk3588/rk35xx/h6 | Set the tags suffix of the kernel in use |
-k | Latest version | Kernel version | Set the kernel version |
-b | yes | yes/no | Automatically back up the current system's kernel when updating the kernel |
-m | no | yes/no | Use mainline u-boot |
-s | None | None/DiskName | [SOS] Restore the system kernel in eMMC/NVMe/sdX and other disks |
-h | None | None | View help |
Example: armbian-update -k 5.15.50 -u dev
When specifying the kernel version number through the -k
parameter, you can accurately specify a specific version number, for example: armbian-update -k 5.15.50
, or you can specify the kernel series vaguely, for example: armbian-update -k 5.15
. When vaguely specified, the latest version of the specified series will be automatically used.
When updating the kernel, the currently used kernel will be automatically backed up and stored in the /ddbr/backup
directory. The backup keeps the three most recent versions of the kernel. If the newly installed kernel is unstable, you can easily restore the backup kernel at any time. If the kernel update fails and the system cannot boot, you can restore the system kernel using armbian-update -s
. For more details, see the Help Document.
Log in to the Armbian system → Enter the command:
armbian-apt
Choosing the appropriate software source for your country or region can improve software download speeds. For more details, see the Help Document.
Log in to the Armbian system → Enter the command:
armbian-software
The command armbian-software -u
can update the local software center list. Based on the demand feedback from users in Issue, we gradually integrate commonly used software to achieve one-click installation/update/uninstallation and other shortcut operations. This includes docker images
, desktop software
, application services
, etc. For more details, see the instructions.
Log in to the Armbian system → Enter the command:
armbian-config
If you feel that the current box's memory is insufficient when using applications that consume a lot of memory, such as docker
, you can create a swap
virtual memory partition, virtually using a certain capacity of disk space as memory. The unit of the input parameter of the following command is GB
, the default is 1
.
Log in to the Armbian system → Enter the command:
armbian-swap 1
Log in to the Armbian system → Enter the command:
armbian-openvfd
Debug according to the LED Screen Display Control Instructions.
Supports backing up/restoring the EMMC
partition of the box in TF/SD/USB
. Before installing the Armbian system in a brand new box, it is recommended that you back up the Android TV system that comes with the current box so that it can be used in the future to restore the TV system and other situations.
Please boot the Armbian system from TF/SD/USB
→ Enter the command:
armbian-ddbr
Enter b
according to the prompt to back up the system, and enter r
to restore the system.
Important
In addition, the Android system can also be flashed into eMMC using the method of flashing via a cable. The download image of the Android system can be found in Tools.
For the usage of compiling the kernel in Armbian, please refer to the Compile Kernel instruction document. Log in to the Armbian system → Enter the command:
armbian-kernel -u
armbian-kernel -k 6.6.12
To update all service scripts in the local system to the latest version, you can log in to the Armbian system → Enter the command:
armbian-sync
In the use of Armbian, some common problems that may be encountered can be found in documents
-
Clone the repository to local
git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-armbian.git
-
Install the necessary software packages (scripts have only been tested under x86_64 Ubuntu-20.04/22.04)
sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-22.04
sudo apt-get install -y $(cat compile-kernel/tools/script/ubuntu2204-build-armbian-depends)
-
Enter the
~/amlogic-s9xxx-armbian
root directory, create abuild/output/images
folder in the root directory, and upload the Armbian image file (such asArmbian_21.11.0-trunk_Odroidn2_current_5.15.50.img
) to~/amlogic-s9xxx-armbian/build/output/images
directory. Please keep the release version number (such as21.11.0
) and the kernel version number (such as5.15.50
) in the original Armbian image file name. It will be used as the name of the Armbian system after restructuring. -
Enter the
~/amlogic-s9xxx-armbian
root directory, and then run thesudo ./rebuild -b s905x3 -k 6.6.12
command to generate the Armbian image file for the specified board. The generated file is saved in thebuild/output/images
directory.
Parameter | Meaning | Description |
---|---|---|
-b | Board | Specify the TV box model, such as -b s905x3 . Connect multiple models with _ , such as -b s905x3_s905d . Use all to represent all models. The model code can be found in the BOARD setting in model_database.conf. Default value: all |
-r | KernelRepo | Specify the <owner>/<repo> of the github.com kernel repository. Default value: ophub/kernel |
-u | kernelUsage | Set the tags suffix of the kernel used, such as stable, flippy, dev, beta. Default value: stable |
-k | Kernel | Specify kernel name, such as -k 6.6.12 . Connect multiple kernels with _ , such as -k 6.6.12_5.15.50 . The kernel version freely specified by the -k parameter is only valid for kernels using stable/flippy/dev/beta . Other kernel series such as rk3588 / rk35xx / h6 can only use specific kernels. |
-a | AutoKernel | Set whether to automatically adopt the latest version of the same series of kernels. When it is true , it will automatically look for whether there is a newer version of the same series in the kernel library in the kernel specified in -k , such as 6.6.12. If there is a latest version after 6.6.12, it will be automatically changed to the latest version. When set to false , it will compile the specified version of the kernel. Default value: true |
-t | RootfsType | Set the file system type of the system's ROOTFS partition, the options are ext4 or btrfs type. For example: -t btrfs . Default value: ext4 |
-s | Size | Set the size of the system's image partitions. When setting only the ROOTFS partition size, you can specify a single value, for example: -s 2560 . When setting both BOOTFS and ROOTFS partition sizes, use / to connect the two values, for example: -s 512/2560 . The default value is 512/2560 |
-n | BuilderName | Set the Armbian system builder signature. Do not include spaces when setting the signature. Default value: None |
sudo ./rebuild
: Use the default configuration to package all models of TV boxes.sudo ./rebuild -b s905x3 -k 6.6.12
: Recommended. Use the default configuration to package related kernels.sudo ./rebuild -b s905x3 -k 6.1.y
: Package the relevant kernels using the default configuration; the kernel utilizes the latest version of the 6.1.y series.sudo ./rebuild -b s905x3_s905d -k 6.6.12_5.15.50
: Use the default configuration, package multiple kernels at the same time. Use_
to connect multiple kernel parameters.sudo ./rebuild -b s905x3 -k 6.6.12 -s 2560
: Use the default configuration, specify a kernel, a model for packaging, the system size is set to 2560MiB.sudo ./rebuild -b s905x3_s905d
Use the default configuration, package all kernels for multiple models of TV boxes, use_
to connect multiple models.sudo ./rebuild -k 6.6.12_5.15.50
: Use the default configuration, specify multiple kernels, and package all models of TV boxes, the kernel package uses_
for connection.sudo ./rebuild -k 6.6.12_5.15.50 -a true
: Use the default configuration, specify multiple kernels, and package all models of TV boxes, the kernel package uses_
for connection. Automatically upgrade to the latest kernel of the same series.sudo ./rebuild -t btrfs -s 2560 -k 6.6.12
: Use the default configuration, set the file system to btrfs format, the partition size is 2560MiB, and specify the kernel as 6.6.12, package for all models of TV boxes.
-
The configuration of the Workflows file can be found in the build-armbian.yml file.
-
Full compile: On the Actions page, select
Build armbian
. According to the OS versions supported by Armbian official, you can choose the Ubuntu series:jammy
, or the Debian series:bullseye
etc. Click theRun workflow
button to compile. More parameter setting methods can be found in the Armbian official documentation. -
Recompile: If there are already compiled
Armbian_.*-trunk_.*.img.gz
files in Releases, and you just want to make another box of different boards, you can skip the compilation of Armbian source files and proceed with the second production directly. On the Actions page, selectUse Releases file to build armbian
, and click theRun workflow
button to compile again. -
Use other Armbian systems, such as the odroidn2 system provided by the Armbian official system download website armbian.tnahosting.net, and only introduce the script of this repository in the process control file rebuild-armbian.yml to restructure Armbian, which can be adapted to the use of other boxes. On the Actions page, select
Rebuild armbian
, input the network download address of Armbian likehttps://dl.armbian.com/*/Armbian_*.img.xz
, or set the loading path of the restructuring file in the process control file rebuild-armbian.yml through thearmbian_path
parameter. The code is as follows:
- name: Rebuild Armbian
uses: ophub/amlogic-s9xxx-armbian@main
with:
build_target: armbian
armbian_path: build/output/images/*.img
armbian_board: s905d_s905x3_s922x_s905x
armbian_kernel: 6.1.y_5.15.y
The related parameters correspond to the local packaging command
, please refer to the above description.
Parameter | Default | Description |
---|---|---|
armbian_path | None | Set the path of the original Armbian file, support the file path in the current workflow such as build/output/images/*.img , and also support the network download address such as: https://dl.armbian.com/*/Armbian_*.img.xz |
armbian_board | all | Set the board of the package box, refer to -b |
kernel_repo | ophub/kernel | Specify <owner>/<repo> of the github.com kernel repository, refer to -r |
kernel_usage | stable | Set the tags suffix of the used kernel. Refer to -u |
armbian_kernel | 6.1.y_5.15.y | Set the version of the kernel, refer to -k |
auto_kernel | true | Set whether to automatically adopt the latest version of the same series kernel, refer to -a |
armbian_fstype | ext4 | Set the file system type of the system's ROOTFS partition, refer to -t |
armbian_size | 512/2560 | Set the size of the system BOOTFS and ROOTFS partitions, function reference -s |
builder_name | None | Set the Armbian system builder signature, refer to -n |
To upload to Releases
, you need to set Workflow read/write permissions
for repository. For details, see the usage instructions.
Parameter | Default | Description |
---|---|---|
${{ env.PACKAGED_OUTPUTPATH }} | out | Armbian system files output path |
${{ env.PACKAGED_OUTPUTDATE }} | 04.13.1058 | Packaging date (month.day.hourminute) |
${{ env.PACKAGED_STATUS }} | success | Packaging status: success / failure |
Name | Value |
---|---|
Default IP | Obtain IP from router |
Default account | root |
Default password | 1234 |
For the method of compiling the kernel, refer to compile-kernel
- name: Compile the kernel
uses: ophub/amlogic-s9xxx-armbian@main
with:
build_target: kernel
kernel_version: 6.1.y_5.15.y
kernel_auto: true
kernel_sign: -yourname
First of all, thanks to 150balbes for the outstanding contributions and the solid foundation laid for using Armbian in Amlogic TV boxes. The Armbian system compiled here directly uses the latest source code from the official in real-time. The development ideas of the program come from tutorials from authors such as ebkso. Thank you all for your dedication and sharing, allowing us to use the Armbian system in more boxes.
The u-boot, kernel and other resources used in this system are mainly copied from the unifreq/openwrt_packit project, and some files are provided by users in Pull and Issues of projects such as amlogic-s9xxx-openwrt, amlogic-s9xxx-armbian, luci-app-amlogic, u-boot and kernel. To thank these pioneers and sharers, from now on (this source code repository was created on 2021-09-19
), I have recorded it uniformly in CONTRIBUTORS.md. Thanks again to everyone for giving the box a new life and meaning.
- The amlogic-s9xxx-openwrt project provides the
OpenWrt
system used in the box, which is also applicable to devices that support Armbian. - unifreq has made
OpenWrt
system for more boxes such as Amlogic, Rockchip, and Allwinner, which is a benchmark in the box circle and recommended to use. - Scirese tested the production, installation, and use of
Arch Linux ARM
/Manjaro
system in Android TV boxes, for details refer to the relevant instructions in his repository. - 7Ji has published some articles on reverse engineering and development on the Amlogic platform in his blog, such as installing the ArchLinux ARM system in the way of ArchLinux, an introduction to the boot mechanism of the Amlogic platform, etc. In his ampart project, a partition tool is provided that can read and edit the Amlogic eMMC partition table and DTB internal partition, and can utilize 100% of eMMC space. The amlogic-s9xxx-archlinuxarm project provides the production and use method of
Arch Linux ARM
system. In the YAopenvfD project, another openvfd daemon is provided. - 13584452567 is the pioneer for the
Rockchip
series of devices in this repository, having expanded support for numerousRockchip
devices like EAIDK-610, King3399, TN3399, Kylin3399, ZCube1-Max, tvi3315a, xiaobao and more, thanks to his sharing. Additionally, he remains the maintainer of specialized kernels forAllwinner
devices like TQC-A01. Having provided a wealth of tech support and solutions within Discussions and Issues sections, he's made significant contributions to the development of the box circle. - cooip-jm shares many Armbian, lxc, docker, AdGuard, etc. usage methods in his wiki, recommended learning.
The amlogic-s9xxx-armbian © OPHUB is licensed under GPL-2.0