Skip to content

Add full support for Luckfox Pico boards#11

Open
rgrizzell wants to merge 11 commits into
plan44:rv110x_24.10from
rgrizzell:rv110x_24.10-luckfox
Open

Add full support for Luckfox Pico boards#11
rgrizzell wants to merge 11 commits into
plan44:rv110x_24.10from
rgrizzell:rv110x_24.10-luckfox

Conversation

@rgrizzell

@rgrizzell rgrizzell commented May 29, 2026

Copy link
Copy Markdown

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

  • Image recipes for all RV110x Luckfox Pico boards
  • Enable display (VOP/RGB) and GT911 touch kernel drivers
  • NAND support (Plus/WebBee DTS, Pro/Max SD↔NAND split, nand-flash.img, SARADC fixes)
  • eMMC boot for the RV1106 panel/Ultra boards
  • GT911 capacitive touch on the panel boards
  • uboot-envtools board file and env fixes
  • AIC8800 WiFi (kernel 6.6 driver port + native wifi-scripts/netifd integration)
  • AIC8800 Bluetooth bring-up (hci0 via hciattach + bluez-daemon/bluetoothctl on the W boards)
  • RV1106 VOP/RGB parallel display bring-up (86Panel/Ultra + W)

Kernel dependency

The display milestone relies on the drm-rv1106-vop branch of the linux-stable fork (cloned at build time via CONFIG_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:

  • WiFi: STA, AP, and concurrent STA+AP.
  • Bluetooth: hci0 UP RUNNING (HCI handshake clean), bluetoothctl scan and connect.
  • Display: /dev/dri/card0, modetest SMPTE color bars on the LP40-720720 panel, backlight on.

Other boards build clean for rockchip/cortexa7 but are not all hardware-verified.

rgrizzell and others added 6 commits May 29, 2026 00:30
…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>
@rgrizzell rgrizzell changed the title Rv110x 24.10 luckfox Add full support for Luckfox Pico boards May 29, 2026
rgrizzell and others added 2 commits May 29, 2026 00:31
…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 rgrizzell force-pushed the rv110x_24.10-luckfox branch from f09cd1f to d6575b6 Compare May 29, 2026 05:33
@rgrizzell rgrizzell marked this pull request as ready for review May 29, 2026 05:52
@rgrizzell

rgrizzell commented May 29, 2026

Copy link
Copy Markdown
Author

Luckfox Pico Support Matrix

Legend

Symbol Meaning
Hardware-verified
🔨 Code implemented, not yet verified on hardware
Not started
Not applicable (hardware not present on this board)

Board Support

Board SoC Boot Media Extras Boot Chain DTS / Kernel OpenWRT Image
Pico Mini A RV1103 SD Ethernet (pads)
Pico Mini B (SD boot) RV1103 SD Ethernet (pads)
Pico Mini B (NAND boot) RV1103 SPI NAND Ethernet (pads)
Pico RV1103 SD 🔨 🔨 🔨
Pico Plus (SD boot) RV1103 SD Ethernet 🔨 🔨 🔨
Pico Plus (NAND boot) RV1103 SPI NAND Ethernet 🔨 🔨 🔨
Pico WebBee (SD boot) RV1103 SD Ethernet, 802.15.4
Pico WebBee (NAND boot) RV1103 SPI NAND Ethernet, 802.15.4
Pico Pro (SD boot) RV1106 SD Ethernet 🔨 🔨 🔨
Pico Pro (NAND boot) RV1106 SPI NAND Ethernet 🔨 🔨 🔨
Pico Max (SD boot) RV1106 SD Ethernet
Pico Max (NAND boot) RV1106 SPI NAND Ethernet
Pico Ultra RV1106 eMMC Ethernet 🔨 🔨 🔨
Pico Ultra W RV1106 eMMC + SD Ethernet, WiFi, BT
Pico Pi RV1106 eMMC + SD Ethernet 🔨 🔨 🔨
Pico Pi W RV1106 eMMC + SD Ethernet, WiFi, BT 🔨 🔨 🔨
Pico 86Panel RV1106 eMMC Ethernet, Display 🔨 🔨 🔨
Pico 86Panel W RV1106 eMMC + SD Ethernet, WiFi, BT, Display 🔨 🔨 🔨
Pico Zero RV1106 eMMC + SD WiFi, BT 🔨 🔨 🔨

Feature Support — Kernel Driver

Is the kernel driver/module enabled and loading?

Board Ethernet WiFi BT Display
Pico Mini A
Pico Mini B
Pico
Pico Plus 🔨
Pico WebBee
Pico Pro 🔨
Pico Max
Pico Ultra 🔨 🔨
Pico Ultra W
Pico Pi 🔨
Pico Pi W 🔨 🔨 🔨
Pico 86Panel 🔨 🔨
Pico 86Panel W 🔨 🔨 🔨 🔨
Pico Zero 🔨 🔨

Feature Support — DTS Config

Is the feature's device node present and enabled in the board DTS?

Board Ethernet WiFi BT Display
Pico Mini A
Pico Mini B
Pico
Pico Plus 🔨
Pico WebBee
Pico Pro 🔨
Pico Max
Pico Ultra 🔨 🔨
Pico Ultra W
Pico Pi 🔨
Pico Pi W 🔨 🔨 🔨
Pico 86Panel 🔨 🔨
Pico 86Panel W 🔨 🔨 🔨 🔨
Pico Zero 🔨 🔨

Feature Support — OpenWRT Support

Are userspace packages, UCI config, and services working?

Board Ethernet WiFi BT Display
Pico Mini A 🔨
Pico Mini B 🔨
Pico
Pico Plus 🔨
Pico WebBee
Pico Pro 🔨
Pico Max
Pico Ultra 🔨 🔨
Pico Ultra W
Pico Pi 🔨
Pico Pi W 🔨 🔨 🔨
Pico 86Panel 🔨 🔨
Pico 86Panel W 🔨 🔨 🔨 🔨
Pico Zero 🔨 🔨

rgrizzell and others added 3 commits May 29, 2026 08:29
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant