build
build copied to clipboard
Add board Luckfox Nova W
Description
Add initial support for board Luckfox Nova W.
Luckfox Nova W is recently produced board on SoC Rockchip RK3308B: 4 x Cortex-A35 CPU, 512 RAM, 8 GB eMMC.
It also has Ethernet, WIFI & BT, USB-A and USB-C ports, soldered microphone.
Product page: https://www.luckfox.com/Luckfox-Nova?ci=646
But beware: it is very fresh board, has almost no documentation and only buildroot SDK with kernel 5.10 is available from vendor.
Documentation
I decided to create separate directory for vendor kernel patches. This kernel must be the same as rk35xx-vendor-6.1, but this SoC is not RK35XX.
Used U-Boot is mainline.
Instead of DKMS AIC8800 driver I enabled the one from kernel sources, because I needed to apply patches to it. And image builds faster than with DKMS.
UART4 is used for serial console and by proprietary firmware blobs.
How Has This Been Tested?
- [ ] eMMC does not work in mainline kernel,
currentandedge - [x] Boot Noble 24.04 with vendor kernel
rk6.1 - [x] USB host and peripheral is working
- [x] WIFI is working
- [x] SPI May have quirks, though spidev-test appears to be working
- [ ] SPI1-M1 MISO is not receiving data
- [x] SPI2 is working
Checklist:
Please delete options that are not relevant.
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] My changes generate no new warnings
- [x] Any dependent changes have been merged and published in downstream modules
Walkthrough
Adds support for the Luckfox Nova W (Rockchip RK3308B) by introducing a board configuration (config/boards/luckfox-nova-w.csc) that specifies boot/kernel/runtime settings, kernel source/versions, firmware blobs, and board-specific tweaks. Adds a Rockchip64 U-Boot bootscript for ttyS4 (config/bootscripts/boot-rockchip64-ttyS4.cmd) implementing armbianEnv merging, DT overlay/fixup handling, and kernel boot logic. Adds a vendor Linux kernel config (config/kernel/linux-luckfox-nova-w-rk3308-vendor.config) tailored for RK3308 with extensive drivers and options.
Estimated code review effort
๐ฏ 3 (Moderate) | โฑ๏ธ ~20โ30 minutes
Reason: multiple new files with moderate logic density (board config functions and a nontrivial U-Boot bootscript) and a large kernel config file. Changes are heterogeneous (init scripts, shell functions, config content) requiring separate checks per file but limited in file count.
Possibly related PRs
- armbian/build#8047 โ touches RK3308 board configuration and shares boot-related variables (BOOTBRANCH_BOARD, BOOTPATCHDIR, BOOT_SCENARIO).
- armbian/build#8447 โ adds post_family_tweaks/post_family_* logic for AIC8800 wireless firmware handling similar to this PR.
- armbian/build#8272 โ introduces unified rockchip64 bootscript behavior (armbianEnv merging, DT overlays/fixups) related to the new ttyS4 bootscript here.
Suggested labels
BSP
Suggested reviewers
- clee
- joekhoobyar
- brentr
- rpardini
- pyavitz
- leggewie
- igorpecovnik
[!TIP]
๐ Remote MCP (Model Context Protocol) integration is now available!
Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.
๐ Recent review details
Configuration used: CodeRabbit UI Review profile: CHILL Plan: Pro
๐ก Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
๐ฅ Commits
Reviewing files that changed from the base of the PR and between bb9471eab5fc23c904fd5f8ae5eca369e02e63e9 and 2c80e8e55c4de62b9e392f98a00e8b5a9460be4e.
๐ Files selected for processing (2)
config/boards/luckfox-nova-w.csc(1 hunks)config/kernel/linux-luckfox-nova-w-rk3308-vendor.config(1 hunks)
๐ง Files skipped from review as they are similar to previous changes (2)
- config/boards/luckfox-nova-w.csc
- config/kernel/linux-luckfox-nova-w-rk3308-vendor.config
โจ Finishing Touches
๐งช Generate unit tests
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
๐ชง Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
I pushed a fix in commit <commit_id>, please review it.Open a follow-up GitHub issue for this discussion.
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. - PR comments: Tag
@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
Support
Need help? Create a ticket on our support page for assistance with any issues or questions.
CodeRabbit Commands (Invoked using PR/Issue comments)
Type @coderabbitai help to get the list of available commands.
Other keywords and placeholders
- Add
@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - Please see the configuration documentation for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
Status, Documentation and Community
- Visit our Status Page to check the current availability of CodeRabbit.
- Visit our Documentation for detailed information on how to use CodeRabbit.
- Join our Discord Community to get help, request features, and share feedback.
- Follow us on X/Twitter for updates and announcements.
@nikvoid are you still interested to get your work merged?
Yes. I made some of requested changes, but not sure what to do about kernel patch directory. I cannot test patches on other boards, so do I need to rename directory to rk3308-rockchip-something?
config/bootscripts/boot-rockchip64-ttyS4.cmd
Also dedicated bootloader script just for this board is not acceptable. We already have a maintaining nightmare and @djurny is trying to come out with some generic solution. Perhaps he can provide some tips how to address this part. Adding new board should have as minimal impact on common things as possible.
@nikvoid Thank you for your work. As you can see, it is not easy. And supporting a new board can only ever be done if it doesn't break other boards. The onerous is on the new entrant. Keep asking questions and also keep asking for help to get this done. Don't be discouraged.
config/bootscripts/boot-rockchip64-ttyS4.cmdAlso dedicated bootloader script just for this board is not acceptable. We already have a maintaining nightmare and @djurny is trying to come out with some generic solution. Perhaps he can provide some tips how to address this part. Adding new board should have as minimal impact on common things as possible.
A quick look at the bootscript shows only a change in the serial device. Next week I will have the time to take a good look at this.
@nikvoid I've checked out your branch and built this image. It does boot, USB and WiFi work! Congrats! There are lots of evil looking messages in the kernel log from the WiFi driver. and SDcard reader does not seem to work.
Have you gotten any insight as to why the vendor kernel is required to access the board's EMMC? Is that the only reason for we need the vendor kernel?
I just tried all kernel branches and only vendor booted. I did not check SD card so it's surprise for me that it is not working. Maybe some devicetree requires some tuning?
P.S. I'm too busy with other things right now, so probably will be inactive on this PR for some time.