FriendlyWrt is a customized OpenWrt system developed by FriendlyElec. It is open source and suitable for applications in IoT, NAS and etc.
No password set default, please configure a root password to protect the web interface and enable SSH.
OS | Version | Supported Board Types | Image File | Download Link |
FriendlyWrt for H3 | 19.07.1 | NanoPi-R1S, NanoPi-R1, NanoPi-NEO, NanoPi-NEO-Air, NanoPi-M1, ZeroPi, NanoPi-NEO-S, NanoPi-NEO-Core, NanoPi-M1-Plus, NanoPi-Duo2 | nanopi-r1_sd_friendlywrt_4.14_armhf_YYYYMMDD.img.zip | H3 Download Link |
FriendlyWrt for H5 | 19.07-snapshot | NanoPi-NEO2,NanoPi-K1-Plus,NanoPi-NEO-Core2 | nanopi-neo-core2_sd_friendlywrt_4.14_arm64_YYYYMMDD.img.zip | H5 Download Link |
FriendlyWrt for S5P4418 | 19.07-snapshot | NanoPi-Fire2A, NanoPC-T2, NanoPi-S2, NanoPi-M2A, Smart4418 | s5p4418-sd-friendlywrt-4.4-YYYYMMDD.img.zip | S5P4418 Download Link |
FriendlyWrt for S5P6818 | 19.07-snapshot | NanoPi-Fire3, NanoPC-T3, Smart6818 | s5p6818-sd-friendlywrt-4.4-YYYYMMDD.img.zip | S5P6818 Download Link |
FriendlyWrt for RK3399 (1/2) | 21.02.5 with rockchip kernel-4.19 | All FriendlyElec's RK3399 based boards, including NanoPi-M4v2, NanoPi-M4B, Som-RK3399 | rk3399-sd-friendlywrt-4.19-YYYYMMDD.img.zip | RK3399 Download Link |
FriendlyWrt for RK3399 (2/2) | 21.02.5 / 22.03.2 with mainline kernel-5.15 | NanoPi-R4S, NanoPi-R4SE, NanoPC-T4, NanoPC-M4v1, NanoPi-NEO4 | rk3399-sd-friendlywrt-5.15-YYYYMMDD.img.zip | RK3399 Download Link |
FriendlyWrt for RK3328 | 21.02.5 / 22.03.2 | NanoPi-R2S, NanoPi-R2C, NanoPi-R2C-Plus | rk3328-sd-friendlywrt-5.15-YYYYMMDD.img.zip | RK3328 Download Lin |
FriendlyWrt for RK3568 | 21.02.5 / 22.03.2 | NanoPi-R5S | rk3568-sd-friendlywrt-5.10-YYYYMMDD.img.zip | RK3568下载链接 |
FriendlyWrt for RK3588 | 21.02.5 / 22.03.2 | NanoPi-R6S | rk3588-sd-friendlywrt-5.10-YYYYMMDD.img.zip | RK3588下载链接 |
How to test the image: extract the image file, use the "dd" command under Linux or the win32image utility under Windows to flash the image to an SD card.
Firstly you need to install the repo utility:
git clone https://github.com/friendlyarm/repo --depth 1 sudo cp repo/repo /usr/bin/
There are two ways to obtain the source code. For mainland Chinese users the first is recommended:
The source files are located at the "sources/friendlywrt-CPU-YYYYMMDD.tar" directory in FriendlyElec's cloud storage. "CPU" stands for an SoC model and YYYYMMDD stands for date(the year, month and day) in which the package is packed.
After you get a repo package run the following command to extract it. Let's take an image for Allwinner H3 based boards as an example:
tar xvf /path/to/netdisk/sources/friendlywrt-h3-20190101.tar cd friendlywrt-h3 repo sync -l --no-clone-bundle
Now you have had the full source code for generating an image. The last number digits in the file name stand for the packing date. If you want to obtain the latest official release, remove "-l" and do "repo sync" again:
cd friendlywrt-h3 repo sync --no-clone-bundle
mkdir friendlywrt-h3 cd friendlywrt-h3 repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v19.07.1 -m h3.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle repo sync -c --no-clone-bundle
mkdir friendlywrt-h5 cd friendlywrt-h5 repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master \ -m h5.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle repo sync -c --no-clone-bundle
mkdir friendlywrt-s5p4418 cd friendlywrt-s5p4418 repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master \ -m s5p4418.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle repo sync -c --no-clone-bundle
mkdir friendlywrt-s5p6818 cd friendlywrt-s5p6818 repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master \ -m s5p6818.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle repo sync -c --no-clone-bundle
For NanoPi-M4, NanoPC-T4, NanoPi-NEO4, Som-RK3399:
mkdir friendlywrt-rk3399 cd friendlywrt-rk3399 repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \ -m rk3399-kernel4.19.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle repo sync -c --no-clone-bundle
For NanoPi-R4S/NanoPi-R4SE:
mkdir friendlywrt21-rk3399 cd friendlywrt21-rk3399 git clone https://github.com/friendlyarm/repo --depth 1 tools tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \ -m rk3399.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
mkdir friendlywrt21-rk3328 cd friendlywrt21-rk3328 git clone https://github.com/friendlyarm/repo --depth 1 tools tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \ -m rk3328.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
mkdir friendlywrt21-rk3568 cd friendlywrt21-rk3568 git clone https://github.com/friendlyarm/repo --depth 1 tools tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \ -m rk3568.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
mkdir friendlywrt21-rk3588 cd friendlywrt21-rk3588 git clone https://github.com/friendlyarm/repo --depth 1 tools tools/repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master-v21.02 \ -m rk3588.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle tools/repo sync -c --no-clone-bundle
repo sync -c --no-clone-bundle
If synchronization is interrupted you can run the following script to do sync again:
#! /bin/bash repo sync -c --no-clone-bundle while [ $? -ne 0 ]; do repo sync -c --no-clone-bundle done
If you have been working on the source code for Allwinner H3's boards and want to swtich to the source code for Allwinner H5's boards you can do it this way:
cp -af friendlywrt-h3 friendlywrt-h5 cd friendlywrt-h5 repo init -m h5.xml repo sync --force-sync
You need a host PC running a 64-bit Ubuntu 18.04 system and run the following command on the PC:
wget -O - https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh | bash
Please use the Docker image provided by this link, for details, please refer to the README document:
https://github.com/friendlyarm/friendlyelec-ubuntu18-docker
Run the build.sh script without any options it will print the help information:
./build.sh
Let's take Allwinner H3 as an example, the help information will be presented as follows:
USAGE: ./build.sh <parameter> # Select Board Type: ./build.sh nanopi_r1.mk ./build.sh nanopi_duo.mk ./build.sh nanopi_neo_core.mk ./build.sh nanopi_neo.mk ./build.sh nanopi_neo_s.mk ./build.sh nanopi_m1_plus.mk ./build.sh nanopi_m1.mk ./build.sh nanopi_neo_air.mk # Select Module: ./build.sh all -compile all ./build.sh uboot -compile uboot ./build.sh kernel -compile kernel ./build.sh friendlywrt -compile friendlywrt ./build.sh sd-img -generate an image for an sd card ./build.sh emmc-img -generate an image for emmc (the generated image should be flased to an SD card and then flashed to emm with this SD card) # Clean: ./build.sh cleanall
For a first time compilation you need to select an SoC platform. Let's take the NanoPi R1(Allwinner H3) as an example:
./build.sh nanopi_r1.mk
After the script is done successfully all components including a u-boot, a kernel and a friendlywrt will be compiled, and an image file will be generated.
./build.sh kernel
./build.sh uboot
method 1:
./build.sh friendlywrt
method 2:
cd friendlywrt ./scripts/feeds update -a ./scripts/feeds install -a cp ../configs/config_XXXX .config make defconfig make download -j8 make -j8
sudo ./build.sh sd-img
If an img file is generated successfully you will see the following messages. You can use the "dd" command to flash the img file to an SD card. Note: you will need to replace "/dev/sdX" with the actual device name which your system recognizes the device as:
Run the following for sdcard install: sudo dd if=out/FriendlyWrt_20190828_NanoPi-R1_armhf_sd.img bs=1M of=/dev/sdX
sudo ./build.sh emmc-img
If an img file is generated successfully you will see the following messages. You can use the "dd" command to flash the img file to an SD card. Note: you will need to replace "/dev/sdX" with the actual device name which your system recognizes the device as:
Run the following for sdcard install: sudo dd if=out/FriendlyWrt_20190828_NanoPi-R1_armhf_eflasher.img bs=1M of=/dev/sdX
Use this SD card to boot the eflasher system and run eflasher commands to install an OS to emmc. After installation is done, take off the SD card of the board and boot your system friendlywrt will load from eMMC.
├── friendlywrt │ ├── friendlywrt -> friendlywrt's source code │ └── configs -> save the "friendlywrt defconfig" file │ └── toolchain -> cross-compiler, used for compiling a u-boot and kernel │ ├── build.sh -> script for auto-compile │ ├── device/friendlyelec -> configuration file for friendlyelec boards │ ├── kernel -> kernel │ └── u-boot -> u-boot │ └── scripts -> script files for generating an img
cd friendlywrt-h3/friendlywrt make menuconfig
make menuconfig ./scripts/diffconfig.sh > ../configs/my_config
Let's take the NanoPi-R1 as an example and edit the following file:
device/friendlyelec/h3/nanopi_r1.mk
Set TARGET_FRIENDLYWRT_CONFIG to your configurations.
./build.sh friendlywrt ./build.sh sd-img
Let's take H3 as an example. Put your files and directories to the following directory and they will be compiled to an img file.
device/friendlyelec/h3/common-files
Or you can put your files and directories in a new directory. Let's take the NanoPi-R1 as an example and edit the following file:
device/friendlyelec/h3/nanopi_r1.mk
Open the file and add a new line(replace "XXX" with your directory):
FRIENDLYWRT_FILES+=(device/friendlyelec/h3/XXX)
Open and edit the following files:
device/friendlyelec/h3/default-settings/files friendlywrt/package/base-files/files
Open and edit the following file:
device/friendlyelec/h3/nanopi_r1.mk
Change uboot's settings to your own by making the following changes:
TARGET_UBOOT_CONFIG=nanopi_h3_defconfig
Change kernel's settings to your own by making the following changes:
TARGET_KERNEL_CONFIG=sunxi_defconfig
Open and edit the following xml file and you can replace the source code of kernel, uboot and friendlywrt yo your own code:
.repo/manifests/h3.xml
For more details about what each item in the xml file means, refer to:repo Manifest Format
After you make your changes you need to do "repo" to sync and make the changes effective. For example after you change the kernel's source code you need to run the following command to sync:
repo sync --force-sync kernel
After synchronization you just need to recompile the kernel's source code:
./build.sh kernel
After compiling FriendlyWrt, you can get a copy of the filesystem contents (directory named rootfs) with the following command:
export KEEP_CACHE=1 ./build.sh sd-img cd scripts/sd-fuse rm -rf ./rootfs cp -r out/rootfs.* ./rootfs
Repacking firmware after editing:
./build-rootfs-img.sh $PWD/rootfs friendlywrt ./mk-sd-image.sh friendlywrt
Enter http://friendlywrt/ or the IP address on the computer browser to enter the FriendlyWrt management page. By default, the IP address of the LAN port is 192.168.2.1, and the WAN will dynamically obtain an IP address from your main router.
mount -t cifs //192.168.1.10/shared /movie -o username=xxx,password=yyy,file_mode=0644
Please mail-to:techsupport@friendlyarm.com