An open source firmware for the Anbernic RG351P/M/V/MP, RG552 and other compatible devices (see listing below).
AmberELEC (formerly know as 351ELEC) is a fork of EmuELEC which is based on CoreELEC, Lakka, and Batocera.
We have a Website with installation instructions and a lot of information on how to get started using AmberELEC.
Visit us on our Discord! https://discord.com/invite/R9Er7hkRMe
SoC | Manufacturer | Device |
RK3399 | Anbernic | RG552 |
RK3326 | Anbernic | RG351P |
RG351M[1] | ||
RG351V[2] | ||
RG351MP[2] | ||
PowKiddy | RGB20S[3] | |
Magicx XU10[3] | ||
Game Console Game Station |
R35S[3] | |
R36S[3] | ||
SZDiiER | D007 Plus[3] |
Important
[1] use the RG351P image
[2] for RG351V and RG351MP devices with v2 display the use of the pre-release image is mandatory
[3] use the RG351MP pre-release image
Caution
Do not replace or rename any of the .dtb
files after flashing a new image or updating from an older AmberELEC release.
To simplify the process and reduce complexity, we're determining which display the device is using, so no manual interaction is necessary.
Please visit our Website Installation page for installation instructions.
Building AmberELEC from source is a fairly simple process. It is recommended to have a minimum of 4 cores, 16GB of RAM, and an SSD with 200GB of free space. The build environment used to develop these steps uses Ubuntu 20.04, your mileage may vary when building on other distributions.
Important
On Ubuntu 20.04 it's required to add the following apt-repository as golang 1.17 or higher is required for building AmberELEC:
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update && sudo apt upgrade
sudo apt install gcc make git unzip wget xz-utils libsdl2-dev libsdl2-mixer-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential libboost-all-dev cmake fonts-droid-fallback libvlc-dev libvlccore-dev vlc-bin texinfo premake4 golang libssl-dev curl patchelf xmlstarlet patchutils gawk gperf xfonts-utils default-jre python xsltproc libjson-perl lzop libncurses5-dev device-tree-compiler u-boot-tools rsync p7zip unrar libparse-yapp-perl zip binutils-aarch64-linux-gnu dos2unix p7zip-full libvpx-dev meson
git clone https://github.com/AmberELEC/AmberELEC.git AmberELEC
cd AmberELEC
make clean
make world
The make world process will build and generate a image which will be located in AmberELEC/release. Follow the installation steps to write your image to a microSD. It will build for the RG351P/M, RG351V, RG351MP and for the RG552.
To create the image for the RG351P/M just make RG351P
, and just for the RG351V make RG351V
, and just for the RG351MP make RG351MP
, and just for the RG552 make RG552
.
Building with Docker simplifies the build process as any dependencies, with the exception of make
, are contained within the docker image - all CPU/RAM/Disk/build time requirements remain similar.
NOTE: Make can be installed with sudo apt update && sudo apt install -y make
on Ubuntu-based systems.
All make commands are available via docker, by prepending docker-
. make RG351V
becomes make docker-RG351V
and make clean
becomes make docker-clean
.
New docker make commands:
make docker-image-build
- Builds the docker image based on the Dockerfile. This is not required unless changes are needed locally.make docker-image-pull
- Pulls docker image from dockerhub. This will update to the latest image and replace any locally built changes to the docker file.make docker-shell
- (advanced) Launches a shell inside the docker build container. This allows running any development commands like./scripts/build
, etc, which aren't in the Makefile.- NOTE: Errors like
groups: cannot find name for group ID 1002
and the user being listed asI have no name!
are OK and a result of mapping the host user/group into the docker container where the host user/groups may not exist.
- NOTE: Errors like
Example building with docker:
git clone https://github.com/AmberELEC/AmberELEC.git AmberELEC
cd AmberELEC
make docker-clean
make docker-world
Builds are automatically run on commits to main
and for Pull Requests (PR's) from previous committers.
Development builds can be found looking for the green checkmarks next to commit history. Artifacts are generated for each build which can be used to update the RG351P/RG351V and are stored for 30 days by GitHub. Note that due to Github Action limitations, artifacts are zipped (.img.gz and .tar are inside the zip file).
All artifacts generated by builds should be considered 'unstable' and only used by developers or advanced users who want to test the latest code.
See: Build Overview for more information.
Builds use GitHub actions (.github/workflow
) to execute. GitHub validates that changes to the .github/workflow
folder require a special workflow
permission.
When using Personal Access Token to push in upstream changes from AmberELEC into your fork, you may get an error similar to the following:
! [remote rejected] main -> main (refusing to allow a Personal Access Token to create or update workflow `.github/workflows/README.md` without `workflow` scope)
error: failed to push some refs to 'https://github.com/my-AmberELEC-fork/AmberELEC.git'
To fix, edit the Personal Access Token to add workflow
permissions (or create a new token with workflow permission).
Alternatively, ssh-key authentication can be used.