Linux kernel 4.14+ for BPI-R2, 5.4+ for R64, 6.1+ for R2Pro and R3, 6.12+ for R4, 6.17+ for R4Pro/R4Lite
Find a file
Frank Wunderlich 3729869767 This is the 6.12.63 stable release
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmlD+lEACgkQONu9yGCS
 aT7yIA//UvUNHFUv3yqWuOc0+l+IKLv+z2x+dkF3XplhD540QQqrYooJgqsIxo/u
 UC+/PqPP/kdEAmvgHovDr/oPSdhG3mg0OyOKWTzLnbelRrTRTjrUqQt5Iz2L0GzZ
 DkWEpMhv1N1VOgUyO1y0U+iL/2K34g3zk07jI389eH+iiwBrfLxKo+XwnqSV/ZJC
 G+sCnhY5HECY3VX5NC9tLfvWuhe2kMATvjmHrez2PawiseefrYzAjerUDKXaFoFy
 oq54Njipf/z1Xof8gP7o5vFsTWH3QVD8lHkfluAJnls15UK2gC/VgzsHfcpBkOR2
 0IJz0/H5qPwTzNcRUj5/JvEQYiodyLm1rEyJT5BVDt7KL8IVn8kxFi+YtaCMKVgm
 PEFwN3/lmPKKbLkKYLT1lS/2/D1EYsDzrRqKmXv1RO1tB3XOtwKjZx2tjn7OqkN+
 LsGhq5Cl4mEDElt8rHODYLQo9AIpnEiOPD1zzK37w8eH6p7jU21S+Se3wE3c0O4a
 tgFUlYRd/19W76Fkz43glEzC70ZJBi/G22yI8HDYCtt6yY26TwgyituBeoLYMNB8
 /y6a7fnGxc51cG36KGp9FjSDZmujlgv3QE4HKICChhpfxz22fbT4MdDG+nh217ek
 H5hEMwbi1PDJYoOE+KtMImf9mps9elpwwjI1UMfYLwFAP8qxZhE=
 =PYQ2
 -----END PGP SIGNATURE-----

Merge tag 'v6.12.63' into 6.12-main

This is the 6.12.63 stable release

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCgAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmlD+lEACgkQONu9yGCS
# aT7yIA//UvUNHFUv3yqWuOc0+l+IKLv+z2x+dkF3XplhD540QQqrYooJgqsIxo/u
# UC+/PqPP/kdEAmvgHovDr/oPSdhG3mg0OyOKWTzLnbelRrTRTjrUqQt5Iz2L0GzZ
# DkWEpMhv1N1VOgUyO1y0U+iL/2K34g3zk07jI389eH+iiwBrfLxKo+XwnqSV/ZJC
# G+sCnhY5HECY3VX5NC9tLfvWuhe2kMATvjmHrez2PawiseefrYzAjerUDKXaFoFy
# oq54Njipf/z1Xof8gP7o5vFsTWH3QVD8lHkfluAJnls15UK2gC/VgzsHfcpBkOR2
# 0IJz0/H5qPwTzNcRUj5/JvEQYiodyLm1rEyJT5BVDt7KL8IVn8kxFi+YtaCMKVgm
# PEFwN3/lmPKKbLkKYLT1lS/2/D1EYsDzrRqKmXv1RO1tB3XOtwKjZx2tjn7OqkN+
# LsGhq5Cl4mEDElt8rHODYLQo9AIpnEiOPD1zzK37w8eH6p7jU21S+Se3wE3c0O4a
# tgFUlYRd/19W76Fkz43glEzC70ZJBi/G22yI8HDYCtt6yY26TwgyituBeoLYMNB8
# /y6a7fnGxc51cG36KGp9FjSDZmujlgv3QE4HKICChhpfxz22fbT4MdDG+nh217ek
# H5hEMwbi1PDJYoOE+KtMImf9mps9elpwwjI1UMfYLwFAP8qxZhE=
# =PYQ2
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu Dec 18 13:57:53 2025 CET
# gpg:                using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
# gpg: Can't check signature: No public key
2025-12-19 15:03:10 +01:00
.github/workflows ci: try to fix build-error caused by change for multiarch libssl 2025-02-01 09:09:10 +01:00
arch This is the 6.12.63 stable release 2025-12-19 15:03:10 +01:00
block block: Use RCU in blk_mq_[un]quiesce_tagset() instead of set->tag_list_lock 2025-12-18 13:55:21 +01:00
certs sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 2024-09-20 19:52:48 +03:00
crypto crypto: asymmetric_keys - prevent overflow in asymmetric_key_generate_id 2025-12-18 13:54:47 +01:00
Documentation This is the 6.12.63 stable release 2025-12-19 15:03:10 +01:00
drivers This is the 6.12.63 stable release 2025-12-19 15:03:10 +01:00
fs ocfs2: fix memory leak in ocfs2_merge_rec_left() 2025-12-18 13:55:22 +01:00
include This is the 6.12.63 stable release 2025-12-19 15:03:10 +01:00
init init: handle bootloader identifier in kernel parameters 2025-10-19 16:33:50 +02:00
io_uring io_uring/napi: fix io_napi_entry RCU accesses 2025-11-24 10:36:06 +01:00
ipc ipc: fix to protect IPCS lookups using RCU 2025-06-27 11:11:22 +01:00
kernel dma/pool: eliminate alloc_pages warning in atomic_pool_expand 2025-12-18 13:55:20 +01:00
lib lib/vsprintf: Check pointer before dereferencing in time_and_date() 2025-12-18 13:54:57 +01:00
LICENSES LICENSES: add 0BSD license text 2024-09-01 20:43:24 -07:00
mm mm/huge_memory: fix NULL pointer deference when splitting folio 2025-12-07 06:25:02 +09:00
net This is the 6.12.63 stable release 2025-12-19 15:03:10 +01:00
rust rust: kbuild: workaround rustdoc doctests modifier bug 2025-11-24 10:36:07 +01:00
samples samples: work around glibc redefining some of our defines wrong 2025-12-12 18:37:21 +01:00
scripts This is the 6.12.60 stable release 2025-12-07 13:41:08 +01:00
security ima: Handle error code returned by ima_filter_rule_match() 2025-12-18 13:55:04 +01:00
sound ASoC: codecs: nau8325: Silence uninitialized variables warnings 2025-12-18 13:55:23 +01:00
tools perf hist: In init, ensure mem_info is put on error paths 2025-12-18 13:55:14 +01:00
usr kbuild: uapi: Strip comments before size type check 2025-11-13 15:34:35 -05:00
utils mt76: mt7996: add firmware files for mt7996 chipset variants 2024-11-21 14:32:47 +01:00
virt KVM: guest_memfd: Remove bindings on memslot deletion when gmem is dying 2025-11-24 10:36:06 +01:00
.clang-format clang-format: Update with v6.11-rc1's for_each macro list 2024-08-02 13:20:31 +02:00
.clippy.toml rust: give Clippy the minimum supported Rust version 2025-08-01 09:48:44 +01:00
.cocciconfig
.editorconfig .editorconfig: remove trim_trailing_whitespace option 2024-06-13 16:47:52 +02:00
.get_maintainer.ignore Add Jeff Kirsher to .get_maintainer.ignore 2024-03-08 11:36:54 +00:00
.gitattributes
.gitignore rust: introduce .clippy.toml 2025-03-13 13:01:42 +01:00
.mailmap mailmap: add entry for Thorsten Blum 2024-11-07 14:14:59 -08:00
.rustfmt.toml
bpi-r2pro.its build.sh: add build script and defconfigs 2024-11-21 14:32:44 +01:00
bpi-r3.its its: r3: add sata overlay 2025-03-05 22:57:53 +01:00
bpi-r4.its its: r4: add 2g5 config (not working yet) 2025-04-14 11:44:47 +02:00
bpi-r64.its build.sh: add build script and defconfigs 2024-11-21 14:32:44 +01:00
build.conf build.conf: change tftp-server for upload to r3 2025-12-07 13:04:10 +01:00
build.sh build.sh: Build DEB packages in parallel. 2025-11-14 21:44:04 +01:00
COPYING
CREDITS MAINTAINERS: Remove self from DSA entry 2024-11-03 12:52:38 -08:00
Kbuild
Kconfig
MAINTAINERS This is the 6.12.61 stable release 2025-12-07 13:41:27 +01:00
Makefile Linux 6.12.63 2025-12-18 13:55:23 +01:00
README README: Fix spelling 2024-03-18 03:36:32 -06:00
README.md readme: add updated Readme 2025-04-15 09:46:38 +02:00

Kernel 6.12 for BananaPi R2/R64/R2Pro/R3/R4

CI

Requirements

On a x86/x64-host you need cross compile tools for the armhf architecture (bison and flex-package are needed for kernels >=4.16):

#for r2
sudo apt install gcc-arm-linux-gnueabihf libc6-armhf-cross u-boot-tools bc make ccache gcc libc6-dev libncurses5-dev libssl-dev bison flex
#for r64 / r2pro / r3 / r4
sudo apt install gcc-aarch64-linux-gnu u-boot-tools bc make gcc ccache libc6-dev libncurses5-dev libssl-dev bison flex

If you build it directly on the BananaPi-R2/R64 (not recommended) you do not need the crosscompile-packages gcc-arm-linux-gnueabihf/gcc-aarch64-linux-gnu and libc6-armhf-cross

Issues

Ubuntu 22 seems not set update-alternatives for gcc, so build.sh will report crosscompiler is not installed

for i in $(ls /usr/bin/arm-linux-gnueabihf-gcc-{8..12});do sudo update-alternatives --install /usr/bin/arm-linux-gnueabihf-gcc arm-linux-gnueabihf-gcc $i 50;done
sudo update-alternatives --config arm-linux-gnueabihf-gcc

for i in $(ls /usr/bin/aarch64-linux-gnu-gcc-{8..12});do sudo update-alternatives --install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc $i 50;done
sudo update-alternatives --config aarch64-linux-gnu-gcc

R2

internal wifi/bt does not work anymore on 6.0+ as there are internal changes in linux which break mt6625 driver

R64

  • pcie-slot CN8 does not detect gen2-cards due to hardware-issue (missing capacitors)
  • some pcie-cards are not detected because of wrong memory-mapping of BAR0

R2Pro

  • mic-switch not working (hw related)

R3

R4

Usage

if you want to build for other board than R2, change "board" in build.conf first

  ./build.sh importconfig
  ./build.sh config #to configure manually with menuconfig
  ./build.sh

the option "pack" creates a tar.gz-file which contains folders "BPI-BOOT" (content of Boot-partition aka /boot) and BPI-ROOT (content for rootfs aka /). simply backup your existing kernel (uImage or bpi-rX.itb on /boot) and unpack the content of these 2 folders to your system

you can also install direct to sd-card which makes a backup of kernelfile, here you have to change your uEnv.txt if you use a new filename (by default it's containing kernelversion)

Usage with docker

The Dockerfile in utils/docker/ provides a build environment without installing the native compilers on the local system.

The local directory will be mounted into the docker container. All changes will also be present in the respository folder.

  1. Build the docker container for building once:

    sh ./utils/docker/build_container.sh
    

    Note: if you get this error: "Got permission denied while trying to connect to the Docker daemon socket at ..." you have to configure non-root https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user

    sudo usermod -aG docker $USER
    newgrp docker
    
  2. Start and connect to the running docker container:

    sh ./utils/docker/run.sh
    
  3. Now you can use the commands from above:

    ./build.sh
    
  4. Close the container with exit or CTRL-D.

  5. Your build artifacts from the build script will be in the folder ./SD/

If you want to clean up you can remove all containers (and the associated docker images) with:

docker rmi bpi-cross-compile:1 --force

install kernel (debian/ubuntu images)

either on host-system (build maschine) and inserted sdcard:

./build.sh install

or in running system (first make backup of your current itb in /boot) by unpacking the tar.gz file created by pack option in build.sh

kernelfile=bpi-r3_6.6.47-main.tar.gz
sudo tar -xzf $kernelfile --strip-components=1 -C /boot/ BPI-BOOT
echo "unpack kernel-modules to bpi-root loopdev..."
sudo tar -xzf $kernelfile --strip-components=2 -C /lib/. BPI-ROOT/lib/

Branch details

Kernel upstream + BPI-R2 / R64

Kernel versions

Kernel features by version

R2/R64:

Feature 4.4 4.9 4.14 4.19 5.4 5.10 5.15 6.1 6.6 6.12
PCIe Y Y Y Y Y Y Y Y Y Y
SATA Y Y Y Y Y Y Y Y Y Y
2 GMAC Y Y Y Y N N N Y Y
DSA N Y Y Y Y Y Y Y Y Y
USB Y Y Y Y Y Y Y Y Y Y
VLAN (dsa) Y N Y Y Y Y Y Y
VLAN-aware Bridge N Y Y Y Y Y Y Y
HW NAT (R2) Y Y N Y Y Y Y
HW QOS (R2) Y ? N N
Crypto Y Y Y Y
WIFI (internal) Y Y Y Y Y Y N N N
BT N N Y Y Y Y Y N N N
VIDEO (R2 only) Y N Y Y Y Y Y Y Y
ACPI (R2) ? N Y Y Y Y N
IR (R2) ? N N N Y Y ? Y Y
WIFI (R64) N N N N Y Y Y Y Y
BT (R64) N N N N Y Y Y Y Y
Other options -- -- -- -- -- -- -- -- --
OpenVPN ? Y Y Y Y Y Y Y Y Y
iptables (R2) ? Y Y Y Y Y Y Y Y Y
nftables (R2) ? N N Y Y Y Y Y Y Y
LXC / Docker (R2) ? ? Y Y Y Y Y Y Y Y

Symbols:

Symbol Meaning
? Unsure
() Testing

(Testing in separate branch wlan/hdmi/hwnat/hwqos)

  • WIFI/BT on R2 needs WMT-tools called before
  • HW-NAT only works between LAN and WAN (bridge unclear, wifi not supported)
  • HW-QoS is merged into 4.14-main, but we do not know how to test it
  • ACPI-feature means System is powered off, not only halted (power-consumption ~0.2W, no reboot on reset), reboot-problem on R2 with soldered power-switch (see https://github.com/frank-w/BPI-R2-4.14/issues/35). Power-off is also initiated by pressing the power-switch, on R64 not currently not available
  • VIDEO is hdmi-output (X-server/framebuffer-console)...here some resolutions are not supported by vendor-driver. R64 does not have HDMI

kernel 4.4 / uboot 2014-04: https://github.com/frank-w/BPI-R2-4.4 mainline-uboot: https://github.com/frank-w/u-boot

R2Pro/R3/R4

Feature 6.1 6.6 6.12
USB Y Y Y
PCIe Y Y Y
SATA (r2pro) Y Y Y
DSA Y Y Y
2 GMAC Y Y Y
SFP (R3) Y Y Y
VLAN Y/P Y/P Y
HW NAT (R3) Y Y Y
WIFI (r3 internal) Y Y Y
VIDEO (R2pro only) Y Y Y
IR (R2pro) ? ? ?
R3mini support N Y Y
R4 support N N Y

P=partial (vlan on r3 only works on dsa-ports, not on left SFP)

Images

Latest images are created by my BPI-Router-Images repo https://github.com/frank-w/BPI-Router-Images

and stored on my gdrive https://drive.google.com/drive/folders/1A5S7_82Bg4EYxjzdQ5FKyBw9Qi2C3uK-?usp=drive_link

discussion in bpi forum: https://forum.banana-pi.org/t/debian-ubuntu-image-creation/15826

more information: https://www.fw-web.de/dokuwiki/doku.php?id=en:bpi-r4:start#debian_ubuntu_image_building

License

GPL-2.0

Free Software, Hell Yeah!