11 Commits

Author SHA1 Message Date
Douglas Teles c9fa2ae9d3 archr: package scripts and alpm hooks so they ship through pacman
The archr scripts (archr-update, archr-flash-sync, archr-depmod,
wifictl, governors, ...) and the alpm hooks were installed in
post_install, which writes into the assembled image only, so they never
entered the pacman package: every one of them was flash-only. That is
why the dual update path could deliver package contents but not its own
plumbing, and the depmod fix would not have reached existing installs.
Move the copy into makeinstall_target so the package carries them and
pacman -Syu updates them like anything else.
2026-07-08 21:37:13 -03:00
Douglas Teles faa9c6f6c4 update: stop the linux package from wiping out-of-tree modules
Installing the linux package through pacman overwrote modules.dep with
the copy generated at kernel build time, which predates every
out-of-tree module: the joypad and the WiFi drivers vanished from the
index and the console booted with dead input and no network
(reproduced on real hardware). Two independent layers fix it: the repo
generator no longer ships any depmod-generated index inside packages
(modules.builtin*/order stay, they are kernel-owned depmod inputs),
and a new alpm hook rebuilds the index over the full overlay tree
after any transaction that touches kernel modules. linux goes to rel 3
so updated devices pick the clean package.
2026-07-08 21:22:34 -03:00
Douglas Teles 14db5f1ffb archr-update: sanitize the channel and seed the pacman local db
Two failures kept every device from ever seeing an update. The ES
settings historically stored updates.branch=auto, which pointed the
mirrorlist at a repo tag that does not exist, so the metadata sync
always failed. And freshly flashed images carry an empty pacman local
database, so even with a working mirror there was nothing to compare
against and every check reported no updates. Fall back to stable for
unknown channels and seed the local db once from the published
archr-localdb tarball.

Known limitation of the remote seed: it reflects the newest repo
state, so the first check after seeding reports the current batch as
already installed. Baking the per-image database at build time is the
follow-up.
2026-07-08 18:28:41 -03:00
Douglas Teles b29af12832 RK3326: hold RTL8852AU out of the build, lwfinger tree breaks on 6.12
rtw_pwrctrl.c fails to compile against 6.12.94; the package stays in
the tree for a future port, and the common BU/CU variants remain in.
2026-07-08 18:00:14 -03:00
Douglas Teles 9723e3e09c packages: bump linux and kernel-firmware so MT7921U flows via pacman
The MT7921U enablement changes the kernel image and the firmware list;
without a REV bump pacman would never offer them and only reflashes
would pick the new driver up. The flash-sync hook then lands the new
kernel on the boot partition.
2026-07-08 17:55:15 -03:00
Douglas Teles c1b9f27838 RK3326: add out-of-tree drivers for the RTL8852 USB WiFi 6 family
The four-distro dongle census left the RTL8852AU/BU/CU chips as the
remaining orphans: common WiFi 6 dongles with no mainline USB support
on 6.12 (the in-kernel rtw89 only starts covering them in 6.17).
Package the maintained vendor drivers (morrownr for BU and CU, both
declaring kernels 5.15 to 6.14; lwfinger for AU, with version guards
up to 6.9 and strscpy fallbacks in place) pinned to current HEADs,
modeled on the sibling morrownr packages. No udev hand-off rules: the
USB IDs bind by modalias since nothing else claims them. RTL8831 and
AIC8800 stay untouched; they serve validated hardware.
2026-07-08 17:53:51 -03:00
Douglas Teles 2d04170214 RK3326: enable the in-tree MT7921U driver with its firmware
Common WiFi 6 dongles use the MediaTek MT7921U, which mainline has
supported since 5.18, but the kernel config never enabled the USB
glue and the firmware list did not ship the MT7961 blobs. Cheapest
gap found in the four-distro dongle driver census.
2026-07-08 17:44:08 -03:00
Douglas Teles 01bfa9a5c7 readme: reposition the project as an Arch Linux distribution
Arch R stopped being a ROCKNIX fork a long time ago: the OS is Arch
Linux ARM with pacman and the built-in updater (SteamOS-like model),
and only the image build tooling descends from the LibreELEC family
through JELOS/ROCKNIX. Refresh the outdated claims along the way: the
GPU stack ships libmali (Panfrost is not exposed), images are gzip not
xz, the board table now matches config.xml, DDR trains at 666MHz, and
the update, sleep and power LED features from 2.1 are documented.
2026-07-07 22:20:54 -03:00
Douglas Teles 8275879350 gen-pacman-repo: create the seed root before invoking pacman
pacman resolves the --root path before doing any work and errors out
when it does not exist, so the seed always failed after the cleanup rm.
2026-07-07 22:03:09 -03:00
Douglas Teles ccb3eaaa86 gen-pacman-repo: seed the local db with an aarch64 no-sig config
The host pacman applies the host architecture and signature policy to
the seed transaction, so every aarch64 package was rejected and the
local-db tarball was silently skipped, leaving freshly flashed images
without an upgradable base.
2026-07-07 22:01:20 -03:00
Douglas Teles 330c4199a6 packages: give quirks, sleep and system-utils a real version
Empty PKG_VERSION made gen-pacman-repo fall back to a garbage version
derived from the install dirname (quirks--quirks.-1) and broke the
package.mk lookup, so the PKG_REV bump was never honoured and pacman
could not see these packages as upgradable. Version them 2.1; vercmp
ranks it above the old garbage string, so 2.0 installs upgrade cleanly.
2026-07-07 21:59:07 -03:00
17 changed files with 236 additions and 53 deletions
+43 -32
View File
@@ -3,7 +3,7 @@
</p>
<p align="center">
<strong>Arch Linux-based gaming distribution for handheld devices.</strong>
<strong>Arch Linux gaming distribution for handheld devices.</strong>
</p>
<p align="center">
@@ -14,17 +14,22 @@
---
Arch R is a custom Linux distribution for the **R36S** handheld gaming console and all its variants, built on top of [ROCKNIX](https://github.com/ROCKNIX/distribution) with an **Arch Linux-based** build environment. It supports **16 board profiles** and **20 display panels** across original and clone hardware.
Arch R is an **Arch Linux** distribution for the **R36S** handheld gaming console and its many variants. In the same spirit as SteamOS, it pairs a genuine Arch userland (pacman, systemd, up-to-date packages) with a curated console experience: flash it, turn the device on, play. System updates are delivered through the built-in updater, kernel included; reflashing is only needed for a fresh install or recovery.
The image build pipeline descends from the LibreELEC family of embedded build systems (through JELOS and ROCKNIX), but the operating system it assembles is Arch Linux ARM, not a JELOS derivative.
## Features
- Arch Linux-based build system with Docker support.
- Kernel 6.12 LTS with board auto-detection via SARADC.
- Mesa Panfrost open-source GPU driver (GLES 3.1, no proprietary blobs).
- EmulationStation frontend with RetroArch and 18+ cores pre-installed.
- Full audio support with speaker/headphone auto-switch.
- Battery monitoring with capacity reporting and LED warning.
- MIPI panel overlays for every known motherboard revision, generated on demand by the online overlay generator at https://arch-r.io/overlay-generator/ (or during flashing by the Arch R Flasher).
- Genuine Arch Linux ARM base with pacman and signed package repositories (stable, next and dev channels).
- Built-in system updater in EmulationStation; kernel and device trees update through it too, with checksum-verified writes to the boot partition.
- Mainline kernel 6.12 LTS with board auto-detection via SARADC.
- Memory clock trained at 666MHz from boot (twice the BSP-era default) and tuned Mali-G31 graphics.
- EmulationStation frontend with RetroArch and 18+ cores pre-installed, plus PortMaster.
- Full audio support with speaker/headphone auto-switch across board revisions.
- Power button light sleep: screen and backlight fully off, instant wake.
- Power LED control (on, off, heartbeat) on every supported family.
- USB WiFi dongle support, including the common RTL8188EUS family (TP-Link, Edimax).
- MIPI panel overlays for every known motherboard revision, generated on demand by the online overlay generator at https://arch-r.io/overlay-generator/ (or during flashing by the Arch R Flasher). The generator also extracts board-specific wiring (audio amplifier, jack detect, LEDs, PMIC interrupt) from your stock DTB.
- Separate images for original and clone boards, both with hardware auto-detection.
- Integrated cross-device local and remote network play.
- Fine-grained control for battery life and performance.
@@ -40,13 +45,12 @@ Arch R is a custom Linux distribution for the **R36S** handheld gaming console a
| Board | Image |
|-------|-------|
| R36S (original), R33S | Original |
| R36S (original), R33S, R36S Soysauce | Original |
| Odroid Go Advance / v1.1 / Super | Original |
| Anbernic RG351V / RG351M | Original |
| GameForce Chi, MagicX XU10 | Original |
| K36 / R36S clones / EE Clone | Clone |
| Powkiddy RGB10 / RGB10X / RGB20S | Clone |
| MagicX XU-Mini-M, BatLexp G350 | Clone |
| GameForce Chi, MagicX XU10, Powkiddy RGB10 | Original |
| K36 / R36S V20 clones / EE Clone | Clone |
| Powkiddy RGB10X, MagicX XU-Mini-M | Clone |
### Display Panels
@@ -59,15 +63,22 @@ Download the latest images from [Releases](https://github.com/archr-linux/Arch-R
- **Original image** -- for genuine R36S and compatible boards.
- **Clone image** -- for K36 clones and compatible boards.
Flash to a MicroSD card:
The easiest path is the [Arch R Flasher](https://github.com/archr-linux/archr-flasher), which downloads, verifies, flashes and installs your panel overlay in one go. Manual flashing works too:
```bash
xz -d ArchR-R36S-*.img.xz
gzip -d ArchR-R36S-*.img.gz
sudo dd if=ArchR-R36S-*.img of=/dev/sdX bs=4M status=progress
sync
```
Insert the SD card and power on. The correct board DTB is selected automatically.
Always verify the download against the published `SHA256SUMS` before flashing. Insert the SD card and power on; the correct board DTB is selected automatically.
## Updates
- **In place (default after install)**: EmulationStation > Updates, or `archr-update` over SSH. Updates come from the signed pacman repository; after each transaction the boot partition is synchronized automatically, so kernel and device-tree fixes arrive without reflashing. User overlays and configuration are never touched.
- **Reflash**: for fresh installs, recovery, or the rare low-level bootloader change (TPL/U-Boot, e.g. a DDR frequency change), which lives outside the filesystem.
Release channel is configurable (stable, next, dev) under updates settings.
## Building from Source
@@ -90,7 +101,7 @@ make docker-image-build
make docker-RK3326
```
Output images are generated in `target/`.
Output images are generated in `target/`. Add `OFFICIAL=yes` for release-stamped images.
### Build Commands
@@ -105,23 +116,23 @@ Output images are generated in `target/`.
Arch R separates **board configuration** from **panel configuration**:
- **Board DTB** = hardware profile (GPIOs, PMIC, joypad, audio codec). Selected automatically by U-Boot via SARADC.
- **Panel overlay** = display init sequence and timings. Applied on top of the board DTB at boot time.
- **Board DTB** = hardware profile (GPIOs, PMIC, joypad, audio codec). Selected automatically by U-Boot via SARADC. One generic DTB per hardware family; board-revision differences are carried by the overlay.
- **Panel overlay** = display init sequence, timings and board-specific wiring extracted from the stock DTB. Applied on top of the board DTB at boot time.
This means the same image works on all boards of a variant. Only the panel overlay needs to match the specific display.
This means the same image works on all boards of a variant. Only the overlay needs to match the specific device.
### Boot Flow
```
Power On
U-Boot (BSP or mainline)
boot.scr: read SARADC hwrev, select board DTB
U-Boot (mainline, legacy BSP loader for clone boards)
boot script: read SARADC hwrev, select board DTB
sysboot: load kernel + DTB + overlay from extlinux.conf
Kernel 6.12 + initramfs
mount root (ext4) + storage
mount root (ext4) + storage, resolved by partition label
switch_root to systemd
systemd
archr-autostart (quirks, governors, audio)
archr-autostart (quirks by device-tree model, governors, audio)
EmulationStation
```
@@ -130,7 +141,7 @@ Power On
| Partition | Filesystem | Label | Purpose |
|-----------|-----------|-------|---------|
| 1 | FAT32 | ARCHR | Boot (kernel, DTBs, overlays, boot.scr) |
| 2 | ext4 | ARCHR_ROOT | Root filesystem |
| 2 | ext4 | ARCHR_ROOT | Root filesystem (Arch Linux ARM) |
| 3 | ext4 | STORAGE | User data, ROMs, configs |
## Community
@@ -139,7 +150,7 @@ Contributions are welcome. Please open issues or pull requests on [GitHub](https
## Licenses
**Arch R** is a fork of [ROCKNIX](https://github.com/ROCKNIX/distribution), which is a fork of [JELOS](https://github.com/JustEnoughLinuxOS/distribution/). All upstream licenses apply.
The Arch R operating system is Arch Linux ARM plus original Arch R software. The image build tooling in this repository descends from [ROCKNIX](https://github.com/ROCKNIX/distribution) and [JELOS](https://github.com/JustEnoughLinuxOS/distribution/); the licenses of that inherited tooling continue to apply to the portions derived from it.
You are free to:
@@ -168,12 +179,12 @@ Like any Linux distribution, this project is not the work of one person. It is t
Special thanks to:
- **[ROCKNIX](https://github.com/ROCKNIX/distribution)** -- the upstream distribution that Arch R is forked from. ROCKNIX provided the complete build system, device support, EmulationStation integration, and the foundation for handheld gaming on Linux.
- **[JELOS](https://github.com/JustEnoughLinuxOS/distribution/)** -- the project that ROCKNIX was originally forked from.
- **[CoreELEC](https://coreelec.org/)** and **[LibreELEC](https://libreelec.tv/)** -- the embedded Linux distributions whose build system forms the backbone of this project.
- **[Arch Linux](https://archlinux.org/)** and **[Arch Linux ARM](https://archlinuxarm.org/)** -- the operating system Arch R is built on.
- **[ROCKNIX](https://github.com/ROCKNIX/distribution)** and **[JELOS](https://github.com/JustEnoughLinuxOS/distribution/)** -- the projects whose build tooling and RK3326 device knowledge Arch R inherited and still learns from.
- **[CoreELEC](https://coreelec.org/)** and **[LibreELEC](https://libreelec.tv/)** -- the embedded Linux distributions whose build system forms the backbone of the image pipeline.
- **[Hardkernel](https://www.hardkernel.com/)** -- for the Odroid Go Advance BSP U-Boot and kernel device trees.
- **[Rockchip](https://www.rock-chips.com/)** -- for the RK3326 SoC and rkbin firmware.
- **[Mesa](https://mesa3d.org/)** -- for the Panfrost open-source GPU driver.
- **[Rockchip](https://www.rock-chips.com/)** -- for the RK3326 SoC, rkbin firmware and the libmali GPU driver.
- **[Mesa](https://mesa3d.org/)** -- for the open-source graphics stack.
- **[RetroArch](https://www.retroarch.com/)** and **[Libretro](https://www.libretro.com/)** -- for the emulation framework and cores.
- **[EmulationStation](https://emulationstation.org/)** -- for the frontend.
- All developers and contributors across the open-source community who made this possible.
@@ -2173,7 +2173,7 @@ CONFIG_MT7663_USB_SDIO_COMMON=m
CONFIG_MT7663U=m
CONFIG_MT7663S=m
# CONFIG_MT7921S is not set
# CONFIG_MT7921U is not set
CONFIG_MT7921U=m
# CONFIG_MT7925U is not set
CONFIG_WLAN_VENDOR_MICROCHIP=y
# CONFIG_WILC1000_SDIO is not set
+1 -1
View File
@@ -61,7 +61,7 @@
# for a list of additional drivers see packages/linux-drivers
# Space separated list is supported,
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
ADDITIONAL_DRIVERS="rk915 RTL8188EUS RTL8812AU RTL8814AU RTL8821AU RTL8821CU RTL88x2BU RTL8831 AIC8800 mali-bifrost"
ADDITIONAL_DRIVERS="rk915 RTL8188EUS RTL8812AU RTL8814AU RTL8821AU RTL8821CU RTL88x2BU RTL8831 RTL8852BU RTL8852CU AIC8800 mali-bifrost"
# Additional Firmware to use ( )
# Space separated list is supported,
+11 -9
View File
@@ -121,6 +121,17 @@ EOF
# final dir so it materializes on first launch.
mkdir -p ${INSTALL}/opt
ln -sf /storage/jdk ${INSTALL}/opt/jdk
# Scripts and alpm hooks belong in makeinstall_target, NOT post_install:
# post_install writes straight into the assembled image, so anything
# done there never lands in the pacman package and stays flash-only.
# These (archr-update, flash-sync, the depmod hook, wifictl, ...) must
# reach users through `pacman -Syu` too, so they go here.
mkdir -p ${INSTALL}/usr/bin
cp ${PKG_DIR}/sources/scripts/* ${INSTALL}/usr/bin
chmod 0755 ${INSTALL}/usr/bin/* 2>/dev/null ||:
mkdir -p ${INSTALL}/etc/pacman.d/hooks
cp ${PKG_DIR}/sources/pacman-hooks/*.hook ${INSTALL}/etc/pacman.d/hooks
}
post_install() {
@@ -143,15 +154,6 @@ EOF
cp ${PKG_DIR}/sources/motd ${INSTALL}/etc
cat ${INSTALL}/etc/issue >> ${INSTALL}/etc/motd
cp ${PKG_DIR}/sources/scripts/* ${INSTALL}/usr/bin
chmod 0755 ${INSTALL}/usr/bin/* 2>/dev/null ||:
# alpm hooks (pacman.conf points HookDir at /etc/pacman.d/hooks): the
# flash-sync hook keeps the FAT boot partition in step with kernel or
# DTB updates delivered through pacman.
mkdir -p ${INSTALL}/etc/pacman.d/hooks
cp ${PKG_DIR}/sources/pacman-hooks/*.hook ${INSTALL}/etc/pacman.d/hooks
### Install man pages
if [ -d "${PKG_DIR}/sources/man" ]; then
for page in ${PKG_DIR}/sources/man/*.[1-9]; do
@@ -0,0 +1,11 @@
[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Path
Target = usr/lib/kernel-overlays/*/lib/modules/*
[Action]
Description = Rebuilding the kernel module index (full tree)...
When = PostTransaction
Exec = /usr/bin/archr-depmod
+21
View File
@@ -0,0 +1,21 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2026-present ArchR (https://github.com/archr-linux/Arch-R)
#
# Regenerate the module dependency index over the FULL module tree after
# a pacman transaction touches kernel modules. The linux package used to
# ship the modules.dep generated at kernel build time, which predates
# every out-of-tree module (joypad, WiFi drivers); installing it wiped
# them from the index and the console came up with dead input and no
# WiFi. The repo no longer ships those index files, and this hook keeps
# the index honest on the device no matter what changed.
set -u
rc=0
for verdir in /usr/lib/kernel-overlays/*/lib/modules/*/; do
[ -d "${verdir}kernel" ] || continue
base="${verdir%/lib/modules/*}"
ver="$(basename "${verdir}")"
echo "archr-depmod: indexing ${ver} under ${base}"
depmod -a -b "${base}" "${ver}" || rc=1
done
exit ${rc}
@@ -18,7 +18,13 @@
. /etc/profile
BRANCH="$(get_setting updates.branch 2>/dev/null)"
BRANCH="${BRANCH:-stable}"
# Anything that is not a real channel falls back to stable: the ES
# settings screen historically stored values like "auto" here, which
# would point the mirrorlist at a repo tag that does not exist.
case "${BRANCH}" in
stable|next|dev) ;;
*) BRANCH="stable" ;;
esac
# Channel is reflected by a single line in mirrorlist; rewrite it on
# the fly so the user can switch channels by changing the setting.
@@ -45,8 +51,28 @@ Channel is configured via system.cfg "updates.branch" (stable|next|dev).
EOF
}
# A freshly flashed image carries no pacman local db, so pacman has no
# installed list to compare against and every check reports "no
# updates". Seed it once from the repo (gen-pacman-repo publishes the
# matching archr-localdb.tar.gz next to the packages).
seed_local_db() {
[ -n "$(pacman -Q 2>/dev/null | head -1)" ] && return 0
echo "Seeding package database (first update on this install)..."
mkdir -p /var/lib/pacman
if curl -fsSL -o /tmp/archr-localdb.tar.gz \
"https://github.com/archr-linux/archr-repo/releases/download/repo-${BRANCH}/archr-localdb.tar.gz"; then
tar -xzf /tmp/archr-localdb.tar.gz -C /var/lib/pacman
rm -f /tmp/archr-localdb.tar.gz
echo "Seeded $(pacman -Q 2>/dev/null | wc -l) package entries."
else
echo "Could not download the database seed. Check network."
return 1
fi
}
cmd_check() {
write_mirrorlist
seed_local_db || return 1
pacman -Sy --noconfirm >/dev/null 2>&1 || {
echo "Failed to sync repo metadata. Check network."
return 1
@@ -62,6 +88,7 @@ cmd_check() {
cmd_update() {
write_mirrorlist
seed_local_db || return 1
pacman -Syu --noconfirm
}
@@ -2,8 +2,8 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="quirks"
PKG_VERSION=""
PKG_REV="2"
PKG_VERSION="2.1"
PKG_REV="1"
PKG_LICENSE="GPLv2"
PKG_SITE=""
PKG_URL=""
@@ -0,0 +1,28 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2026-present ArchR (https://github.com/archr-linux/Arch-R)
PKG_NAME="RTL8852AU"
PKG_VERSION="865ab0fa91471d595c283d2f3db323f7f15455f5"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/lwfinger/rtl8852au"
PKG_URL="${PKG_SITE}.git"
PKG_LONGDESC="Realtek RTL8852AU USB WiFi 6 driver. Out of tree because mainline has no USB glue for this chip on 6.12; the in-kernel rtw89 only gains 8852AU USB support past 6.17. NOTE: does not build against 6.12 yet (rtw_pwrctrl API break); kept out of ADDITIONAL_DRIVERS until ported."
PKG_TOOLCHAIN="make"
PKG_IS_KERNEL_PKG="yes"
pre_make_target() {
unset LDFLAGS
}
make_target() {
make V=1 \
ARCH=${TARGET_KERNEL_ARCH} \
KSRC=$(kernel_path) \
CROSS_COMPILE=${TARGET_KERNEL_PREFIX} \
CONFIG_POWER_SAVING=y
}
makeinstall_target() {
mkdir -p ${INSTALL}/$(get_full_module_dir)/kernel/drivers/net/wireless/
cp *.ko ${INSTALL}/$(get_full_module_dir)/kernel/drivers/net/wireless/
}
@@ -0,0 +1,28 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2026-present ArchR (https://github.com/archr-linux/Arch-R)
PKG_NAME="RTL8852BU"
PKG_VERSION="59a5918e3dc188bb9055e9ba4690623c434e0e11"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/morrownr/rtl8852bu-20250826"
PKG_URL="${PKG_SITE}.git"
PKG_LONGDESC="Realtek RTL8852BU USB WiFi 6 driver. Out of tree because mainline has no USB glue for this chip on 6.12; the in-kernel rtw89 only gains 8852BU USB support in 6.17."
PKG_TOOLCHAIN="make"
PKG_IS_KERNEL_PKG="yes"
pre_make_target() {
unset LDFLAGS
}
make_target() {
make V=1 \
ARCH=${TARGET_KERNEL_ARCH} \
KSRC=$(kernel_path) \
CROSS_COMPILE=${TARGET_KERNEL_PREFIX} \
CONFIG_POWER_SAVING=y
}
makeinstall_target() {
mkdir -p ${INSTALL}/$(get_full_module_dir)/kernel/drivers/net/wireless/
cp *.ko ${INSTALL}/$(get_full_module_dir)/kernel/drivers/net/wireless/
}
@@ -0,0 +1,28 @@
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2026-present ArchR (https://github.com/archr-linux/Arch-R)
PKG_NAME="RTL8852CU"
PKG_VERSION="1530c38e5b1be6d1e96a31cf4f3602a9c23f2465"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/morrownr/rtl8852cu-20251113"
PKG_URL="${PKG_SITE}.git"
PKG_LONGDESC="Realtek RTL8852CU USB WiFi 6 driver. Out of tree because mainline has no USB glue for this chip on 6.12; the in-kernel rtw89 only gains 8852CU USB support past 6.17."
PKG_TOOLCHAIN="make"
PKG_IS_KERNEL_PKG="yes"
pre_make_target() {
unset LDFLAGS
}
make_target() {
make V=1 \
ARCH=${TARGET_KERNEL_ARCH} \
KSRC=$(kernel_path) \
CROSS_COMPILE=${TARGET_KERNEL_PREFIX} \
CONFIG_POWER_SAVING=y
}
makeinstall_target() {
mkdir -p ${INSTALL}/$(get_full_module_dir)/kernel/drivers/net/wireless/
cp *.ko ${INSTALL}/$(get_full_module_dir)/kernel/drivers/net/wireless/
}
@@ -14,6 +14,8 @@ mt7601u.bin
mt7662*.bin
mediatek/mt7662u*.bin
mediatek/mt7610u.bin
mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin
mediatek/WIFI_RAM_CODE_MT7961_1.bin
ath6k/AR6004/hw1.?/bdata.bin
ath9k_htc/*
@@ -2,6 +2,7 @@
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="kernel-firmware"
PKG_REV="2"
PKG_VERSION="20260110"
PKG_LICENSE="other"
PKG_SITE="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/"
+1
View File
@@ -3,6 +3,7 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="linux"
PKG_REV="3"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kernel.org"
PKG_DEPENDS_HOST="ccache:host openssl:host"
@@ -2,8 +2,8 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="sleep"
PKG_VERSION=""
PKG_REV="2"
PKG_VERSION="2.1"
PKG_REV="1"
PKG_LICENSE="OSS"
PKG_DEPENDS_TARGET="systemd"
PKG_SITE=""
@@ -1,8 +1,8 @@
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
PKG_NAME="system-utils"
PKG_VERSION=""
PKG_REV="2"
PKG_VERSION="2.1"
PKG_REV="1"
PKG_LICENSE="mix"
PKG_DEPENDS_TARGET="toolchain sleep"
PKG_SITE=""
+26 -3
View File
@@ -144,7 +144,25 @@ EOF
# /.image on every kernel update for nothing.
find . -mindepth 1 -maxdepth 1 -not -name '.PKGINFO' -not -name '.image' -printf '%P\n'
} > "${filelist}"
tar --zstd -cf "${outfile}" --owner=0 --group=0 -T "${filelist}"
# The depmod-generated indexes are stale by construction inside a
# package (the kernel builds them before any out-of-tree module
# exists); shipping them wiped the joypad and WiFi drivers from
# modules.dep on every linux update. The device rebuilds them via
# the archr-depmod hook; modules.builtin*/order stay (kernel-owned
# depmod inputs).
tar --zstd -cf "${outfile}" --owner=0 --group=0 \
--exclude='*/modules/*/modules.dep' \
--exclude='*/modules/*/modules.dep.bin' \
--exclude='*/modules/*/modules.alias' \
--exclude='*/modules/*/modules.alias.bin' \
--exclude='*/modules/*/modules.symbols' \
--exclude='*/modules/*/modules.symbols.bin' \
--exclude='*/modules/*/modules.devname' \
--exclude='*/modules/*/modules.softdep' \
--exclude='*/modules/*/modules.weakdep' \
--exclude='*/modules/*/modules.builtin.bin' \
--exclude='*/modules/*/modules.builtin.alias.bin' \
-T "${filelist}"
rm -f "${filelist}"
)
rm -f "${pkginfo}"
@@ -194,9 +212,14 @@ fi
echo "gen-pacman-repo: seeding installed (local) db..."
seed_dbpath="${OUT_DIR}/.seed-dbpath"
rm -rf "${seed_dbpath}" "${OUT_DIR}/.seed-root"
mkdir -p "${seed_dbpath}/local" "${seed_dbpath}/sync"
mkdir -p "${seed_dbpath}/local" "${seed_dbpath}/sync" "${OUT_DIR}/.seed-root"
cp "${local_db}" "${seed_dbpath}/sync/${REPO_NAME}.db"
if fakeroot pacman -U --dbonly --noconfirm \
# The host pacman runs with the host architecture and signature policy,
# which rejects our unsigned aarch64 payload; give it a minimal config
# scoped to this seed operation.
seed_conf="${seed_dbpath}/pacman.conf"
printf '[options]\nArchitecture = aarch64\nSigLevel = Never\n' > "${seed_conf}"
if fakeroot pacman -U --dbonly --noconfirm --config "${seed_conf}" \
--root "${OUT_DIR}/.seed-root" --dbpath "${seed_dbpath}" \
--cachedir "${OUT_DIR}" \
"${OUT_DIR}"/*.pkg.tar.zst >/dev/null 2>&1; then