Add full support for Luckfox Pico boards - #11
Open
rgrizzell wants to merge 19 commits into
Open
Conversation
…V110x boards Adds boot chain and image pipeline support for the 15 Luckfox Pico board variants that were missing or broken: rkbin/Makefile: - Add rv1106-nand TFA variant (RV1106MINIALL_SPI_NAND_TB.ini) for Pro/Max/Pro Max - Add rv1106-emmc TFA variant (RV1106MINIALL_EMMC_TB.ini) for Ultra/Pi/86Panel/Zero - Both generate idblock.img and stage the shared USB download loader uboot-luckfox/Makefile: - Extend rv1106-sd BUILD_DEVICES to cover luckfox_pico, pico-plus, pico-webbee - Extend rv1103-nand BUILD_DEVICES to cover pico-plus-nand, pico-webbee-nand - Add rv1106-nand U-Boot variant (luckfox_rv1106_spi_nand_tb defconfig) - Add rv1106-emmc U-Boot variant (luckfox_rv1106_uboot_emmc_tb defconfig) dts/: - Add rv1106g-luckfox-pico-zero.dts ported from vendor SDK; removed IPC-specific includes and memory-region-ecsd (ThunderBoot-only) cortexa7.mk: - Fix luckfox_pico-max: correct DEVICE_DTS and SUPPORTED_DEVICES (was pointing at pro-max DTS and using wrong compatible string) - Fix luckfox_pico: switch from Default-emmc to Default-sdcard, fix image pipeline macro (env-sd-img -> env-rv1106-sd-img) - Add 12 new device recipes: pico-plus (SD+NAND), pico-webbee (SD+NAND), pico-pro, pico-pro-max, pico-ultra, pico-ultra-w, pico-pi, pico-pi-w, pico-86panel, pico-zero All 18 board image pipelines build-verified. Hardware testing pending. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ivers Add CONFIG_DRM_ROCKCHIP, CONFIG_ROCKCHIP_VOP, CONFIG_ROCKCHIP_RGB, CONFIG_ROCKCHIP_IOMMU, and CONFIG_TOUCHSCREEN_GOODIX to config-6.6 for RV1106 display pipeline support. The 86Panel DTS already contains a complete display config (VOP, RGB666, 720×720 simple-panel, PWM backlight, GT911 I2C3 touchscreen) via rv1106-luckfox-pico-86panel-ipc.dtsi. ROCKCHIP_IOMMU is required by the DRM_ROCKCHIP Kconfig dependency. 86Panel and 86Panel W images build clean with the new config. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…Pro/Max NAND device trees for Plus and WebBee, Pico Pro/Max split into separate SD and NAND profiles, nand-flash.img recipe, SARADC adc-keys fixes, and gpiod-tools. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Make the eMMC boards (Ultra, Ultra W, Pi, Pi W, 86Panel, 86Panel W, Zero)
boot from eMMC and produce a single flashable image.
- Device/Default-emmc: add an emmc-combined-img macro and emmc-flash.img so
one `rkdeveloptool wl 0` flashes the whole eMMC; expose idblock/uboot/
loader artifacts; switch KERNEL to boot-arm-nand-tb-bin (real load
address 0x208000) since the eMMC Thunderboot SPL loads the kernel
directly and cannot resolve the placeholder address.
- rv1106-uboot.env.emmc.txt: minimal partition layout
(env/idblock/uboot/boot/rootfs), root=/dev/mmcblk0p5, bootcmd=boot_fit.
- eMMC DTS: kernel bootargs in chosen{} (console ttyS2 @1500000, root on
mmcblk0p5) because the TB SPL reads bootargs from the DTB; fiq-debugger
disabled and uart2 enabled as the console.
Verified on Pico Ultra W hardware: boots to OpenWRT, Ethernet works.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add the GT911 capacitive touch controller as a live static node in the 86Panel and Ultra dtsi. The node gives the mainline goodix driver both reset-gpios and irq-gpios so it runs the controlled power-on reset that deterministically latches the I2C address (0x5d) — the vendor left the node out of the static DTS because its older kernel could not handle the auto-addressing reliably. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
uboot-envtools board file for the Luckfox boards, fix placeholder root compatible on 6 boards, and fix fw_env.config persistence plus the SD env device. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…tegration) Port the AIC8800 bsp and fdrv modules to kernel 6.6, build cfg80211 into the kernel, and ship the driver on the W and Pico Zero boards. Integrate WiFi through OpenWrt's native wifi-scripts/netifd using wpad-mbedtls with 11AC/11AX driver support. STA, AP, and concurrent STA+AP verified on hardware. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Enable IOMMU_SUPPORT so DRM_ROCKCHIP/VOP build, add the VOP ahb/dclk resets, rewire the VOP output directly to the panel, switch the panel to the upstream panel-dpi binding, and fix the pwm1 backlight pinctrl and panel enable-gpio. Verified on the Pico Ultra W: /dev/dri/card0 plus modetest SMPTE on the LP40-720720 panel with backlight on. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
rgrizzell
force-pushed
the
rv110x_24.10-luckfox
branch
from
May 29, 2026 05:33
f09cd1f to
d6575b6
Compare
rgrizzell
marked this pull request as ready for review
May 29, 2026 05:52
Author
Luckfox Pico Support MatrixLegend
Board Support
Feature Support — Kernel DriverIs the kernel driver/module enabled and loading?
Feature Support — DTS ConfigIs the feature's device node present and enabled in the board DTS?
Feature Support — OpenWRT SupportAre userspace packages, UCI config, and services working?
|
New aic8800-bt-attach package ships a procd init that runs hciattach to bind the AIC8800DC Bluetooth UART (uart1, generic H4) to the kernel HCI line discipline, creating hci0. The BSP already powers BT on and loads its firmware over SDIO, so no vendor HCI proto or over-HCI patching is needed. Also ship bluez-daemon (bluetoothd + bluetoothctl) on the W boards for adapter control, pairing, and connecting. Verified on the Pico Ultra W: hci0 enumerates and reaches UP RUNNING, and bluetoothctl scans and connects. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Enables the adc-keys input driver, needed by every Luckfox board with a BOOT button on SARADC0 (Mini B, Plus, WebBee, Femtofox). No kmod package exists for this driver. Additive — only probes where a DTS declares an adc-keys node. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The 'work' (Activity) LED in rv1103-luckfox-pico-ipc.dtsi already requests linux,default-trigger = "activity", but CONFIG_LEDS_TRIGGER_ACTIVITY was not enabled — so the trigger was unavailable, the LED fell back to default-state = "on", and stayed solid on every Luckfox board. Enable the trigger so the Activity LED flickers with system activity (quiet when idle, faster when busy) as the DTS intends. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a uci-defaults script setting system.@System[0].ttylogin='1', so the serial console shows a login prompt instead of OpenWRT's default passwordless auto-login as root (login.sh execs 'login -f root' when ttylogin is unset). Runs once on first boot. A root password must be set for the prompt to gate access. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New rv1103g-femtofox.dts derived from the Pico Mini DTS. Enables gmac, USB host, spi0 (LoRa SX1262, CS0 left as GPIO for the userspace LoRa daemon), i2c3 + DS3231, uart4, user LED on GPIO34, and SARADC adc-keys. No Luckfox board or shared dtsi is modified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SD-boot device built on Device/Default-sdcard, rv1103g-femtofox DTS, ships kmod-rtc-ds1307 for the DS3231. Does not touch any Luckfox block. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
kmod-rtc-ds1307 depends on kmod-i2c-core/kmod-regmap-i2c, but this target builds I2C into the kernel (CONFIG_I2C=y), so those module packages are unavailable and defconfig silently drops the kmod — leaving the DS3231 driver out of the image. Build the driver in directly via CONFIG_RTC_DRV_DS1307=y (alongside the existing builtin RTC_DRV_ROCKCHIP) and drop the unusable DEVICE_PACKAGES line. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The spidev@0 child inherited from rv1103-luckfox-pico-ipc.dtsi uses the vendor compatible "rockchip,spidev", which the mainline/plan44 spidev driver does not match — so spi0.0 is created but no driver binds and /dev/spidev0.0 never appears (confirmed on hardware: manual driver_override bind works). Override the child compatible to the canonical "rohm,dh2228fv" spidev string so it binds at boot. Required for the LoRa SX1262. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The SoC saradc node uses compatible "rockchip,rv1106-saradc", which the linux-stable rockchip_saradc driver does not match (its table stops at rk3588) — so the controller never binds, no IIO channel appears, and the BOOT button's adc-keys driver defers forever (confirmed on hardware: ff3c0000.saradc unbound, /sys/bus/iio/devices empty, /dev/input absent). Add a fallback to "rockchip,rk3588-saradc". The vendor rv1106 saradc data uses the v2 start/read path with no power_down callback, matching rk3588_saradc_data exactly (rk3568 is the v1 path). Scoped to the femtofox DTS only; no shared dtsi or Luckfox board touched. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Device/femtofox sets UBOOT_DEVICE_NAME := rv1106-sd, but femtofox was absent from the U-Boot/rv1106-sd BUILD_DEVICES list, so no U-Boot variant claimed the device and u-boot-rv1106-sd was never selected. target/linux/install then failed late, after every package had compiled: cp: cannot stat '.../staging_dir/target-*/image/rv1106-sd-uboot.img' Add femtofox to BUILD_DEVICES so the SD bootloader is built and staged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
CONFIG_NET_CORE was disabled here, making cortexa7 the only target in the tree to do so. In drivers/net/Kconfig, TUN/TAP/VETH/DUMMY/MACVLAN all sit inside "if NET_CORE", so with the gate off CONFIG_TUN was unreachable. The kmod injection itself was correct -- package-metadata.pl wrote CONFIG_TUN=m into both .config.override and .config.set -- but the kernel's own syncconfig then silently dropped it as an unknown symbol. The result was a kmod-tun package with an empty payload that still appeared in the image manifest, so modprobe tun failed on-device with "failed to find a module named tun" and tailscaled could not start. NET_CORE is a bare menu gate that emits no code itself; the sub-symbols pinned as "is not set" stay pinned, so the only symbol that flips is CONFIG_TUN=m. Verified: tun.ko builds, kmod-tun.ipk carries lib/modules/6.6.93/tun.ko plus etc/modules.d/30-tun, and unsquashfs confirms both are present in the femtofox squashfs rootfs image. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds OpenWrt 24.10 support for the Luckfox Pico RV1103/RV1106 board family — image recipes, NAND and eMMC boot, GT911 touch, AIC8800 WiFi via OpenWrt's native wifi-scripts, AIC8800 Bluetooth (hci0 + bluez), and RV1106 VOP/RGB parallel display.
Covered boards: Pico Mini, Plus, Pro, Max, Ultra, 86Panel, WebBee, Zero and their W (WiFi) variants.
Milestones
nand-flash.img, SARADC fixes)Kernel dependency
The display milestone relies on the
drm-rv1106-vopbranch of the linux-stable fork (cloned at build time viaCONFIG_KERNEL_GIT_REF): RV1106 VOP driver, RGB666 dither-down, and the VOP→RGB GRF bypass clear.That kernel work is submitted separately as plan44/linux-stable#5. It should land first or together with this PR, otherwise the display milestone won't build/boot.
Verification
Tested on the Pico Ultra W:
hci0UP RUNNING (HCI handshake clean),bluetoothctlscan and connect./dev/dri/card0,modetestSMPTE color bars on the LP40-720720 panel, backlight on.Other boards build clean for
rockchip/cortexa7but are not all hardware-verified.