-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Add board KickPi K2B and AIC8800 SDIO Wireless #8388
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
10dfec7
75edeae
81bd6a7
ec77e09
56d9e22
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,78 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Allwinner H618 quad core 1/2/4GB RAM SoC WiFi SPI USB-C | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOARD_NAME="KickPi K2B" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOARDFAMILY="sun50iw9-bpi" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOARD_MAINTAINER="pyavitz" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOOTCONFIG="kickpi_k2b_defconfig" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OVERLAY_PREFIX="sun50i-h616" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOOT_FDT_FILE="sun50i-h618-kickpi-k2b.dtb" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOOT_LOGO="desktop" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KERNEL_TARGET="current,edge" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KERNEL_TEST_TARGET="current" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FORCE_BOOTSCRIPT_UPDATE="yes" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOOTBRANCH_BOARD="tag:v2025.01" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOOTPATCHDIR="v2025.01" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PACKAGE_LIST_BOARD="rfkill bluetooth bluez bluez-tools" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function post_family_tweaks_bsp__kickpi_k2b_aic8800() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
display_alert "$BOARD" "Installing AIC8800 Support" "info" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mkdir -p "${destination}"/etc/modprobe.d | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mkdir -p "${destination}"/etc/modules-load.d | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mkdir -p "${destination}"/etc/systemd/system | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mkdir -p "${destination}"/lib/firmware/updates | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mkdir -p "${destination}"/usr/bin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Install firmware | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
git clone --depth=1 -q -b aic8800_sdio https://github.com/pyavitz/firmware.git "${destination}"/lib/firmware/updates/aic8800 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm -fdr "${destination}"/lib/firmware/updates/aic8800/.git | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Add udev rule | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat <<EOF > "${destination}"/etc/modprobe.d/aic8800-wireless.conf | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
options aic8800_fdrv aicwf_dbg_level=0 custregd=0 ps_on=0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EOF | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Add needed bluetooth modules | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat <<EOF > "${destination}"/etc/modules-load.d/aic8800-btlpm.conf | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hidp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rfcomm | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bnep | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
aic8800_btlpm | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EOF | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Install Bluetooth helper script and service | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat <<EOF > "${destination}"/usr/bin/aic-bthelper | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#!/bin/bash | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# HW Reset | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hciattach -r -s 1500000 /dev/ttyS1 any 1500000 flow nosleep > /dev/null 2>&1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Kill hciattach | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sleep .50 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
killall hciattach | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Attach Bluetooth HCI UART | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sleep .50 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hciattach -s 1500000 /dev/ttyS1 any 1500000 flow nosleep > /dev/null 2>&1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rfkill unblock all | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
exit 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EOF | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+38
to
+54
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve error handling and reduce timing dependencies in Bluetooth helper script. The script has several issues that could affect reliability:
#!/bin/bash
+
+# Check if device exists
+if [ ! -e /dev/ttyS1 ]; then
+ echo "Error: /dev/ttyS1 not found" >&2
+ exit 1
+fi
# HW Reset
-hciattach -r -s 1500000 /dev/ttyS1 any 1500000 flow nosleep > /dev/null 2>&1
+if ! hciattach -r -s 1500000 /dev/ttyS1 any 1500000 flow nosleep > /dev/null 2>&1; then
+ echo "Error: Failed to reset Bluetooth device" >&2
+ exit 1
+fi
# Kill hciattach
-sleep .50
-killall hciattach
+sleep 0.5
+# Kill only the specific hciattach process for ttyS1
+pkill -f "hciattach.*ttyS1" || true
# Attach Bluetooth HCI UART
-sleep .50
-hciattach -s 1500000 /dev/ttyS1 any 1500000 flow nosleep > /dev/null 2>&1
-rfkill unblock all
+sleep 0.5
+if ! hciattach -s 1500000 /dev/ttyS1 any 1500000 flow nosleep > /dev/null 2>&1; then
+ echo "Error: Failed to attach Bluetooth HCI UART" >&2
+ exit 1
+fi
+
+if ! rfkill unblock all; then
+ echo "Warning: Failed to unblock rfkill" >&2
+fi 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chmod +x "${destination}"/usr/bin/aic-bthelper | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cat <<EOF > "${destination}"/etc/systemd/system/bthelper.service | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Unit] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description=Bluetooth Helper | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
After=bluetooth.service bluetooth.target getty.target | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Requires=bluetooth.service bluetooth.target getty.target | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Service] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Type=idle | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ExecStartPre=/usr/sbin/rfkill unblock all | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ExecStart=/usr/bin/aic-bthelper | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TimeoutStartSec=0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RemainAfterExit=yes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SysVStartPriority=99 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[Install] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
WantedBy=multi-user.target | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EOF | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+56
to
+72
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve systemd service configuration. The service configuration has several issues that should be addressed:
[Unit]
Description=Bluetooth Helper
-After=bluetooth.service bluetooth.target getty.target
-Requires=bluetooth.service bluetooth.target getty.target
+After=bluetooth.service
+Wants=bluetooth.service
[Service]
-Type=idle
+Type=oneshot
ExecStartPre=/usr/sbin/rfkill unblock all
ExecStart=/usr/bin/aic-bthelper
-TimeoutStartSec=0
+TimeoutStartSec=30
RemainAfterExit=yes
-SysVStartPriority=99
[Install]
WantedBy=multi-user.target 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The boot delays are intentional. There is no compatibility to load AIC8800 bluetooth in mainline. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @pyavitz, understood! Thank you for clarifying the technical context. I acknowledge that the ✏️ Learnings added
🧠 Learnings used
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function post_family_tweaks__enable_aic8800_bthelper() { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
display_alert "$BOARD" "Enabling AIC8800 Bluetooth Helper" "info" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
chroot_sdcard systemctl --no-reload enable bthelper.service | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
config: | ||
|
||
# Just some info stuff; not used by the patching scripts | ||
name: sunxi-6.12 | ||
kind: kernel | ||
type: mainline # or: mainline | ||
branch: linux-6.12.y | ||
last-known-good-tag: v6.7.0 | ||
maintainers: | ||
- { github: pyavitz, name: Patrick Yavitz, email: [email protected], armbian-forum: c0rnelius } | ||
|
||
# .dts files in these directories will be copied as-is to the build tree; later ones overwrite earlier ones. | ||
# This is meant to provide a way to "add a board DTS" without having to null-patch them in. | ||
dts-directories: | ||
# will copy patch/kernel/archive/meson64-MAJOR.MINOR/dt-boards/*.dts to arch/arm64/boot/dts/allwinner | ||
- { source: "dt", target: "arch/arm64/boot/dts/allwinner" } | ||
|
||
# every file in these directories will be copied as-is to the build tree; later ones overwrite earlier ones | ||
# This is meant as a way to have overlays, bare, in a directory, without having to null-patch them in. | ||
# @TODO need a solution to auto-Makefile the overlays as well | ||
# overlay-directories: | ||
# will copy patch/kernel/archive/meson64-MAJOR.MINOR/overlay/**/* to arch/arm64/boot/dts/allwinner/overlay | ||
# - { source: "overlay", target: "arch/arm64/boot/dts/allwinner/overlay" } | ||
|
||
# the Makefile in each of these directories will be magically patched to include the dts files copied | ||
# or patched-in; overlay subdir will be included "-y" if it exists. | ||
# No more Makefile patching needed, yay! | ||
auto-patch-dt-makefile: | ||
- { directory: "arch/arm64/boot/dts/allwinner", config-var: "CONFIG_ARCH_SUNXI" } | ||
|
||
# configuration for when applying patches to git / auto-rewriting patches (development cycle helpers) | ||
patches-to-git: | ||
do-not-commit-files: | ||
- "MAINTAINERS" # constant churn, drop them. sorry. | ||
- "Documentation/devicetree/bindings/arm/allwinner.yaml" # constant churn, conflicts on every bump, drop it. sorry. | ||
do-not-commit-regexes: # Python-style regexes | ||
- "^arch/([a-zA-Z0-9]+)/boot/dts/([a-zA-Z0-9]+)/Makefile$" # ignore DT Makefile patches, we've an auto-patcher now | ||
|
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add shebang to fix pipeline failure.
The pipeline failure indicates that ShellCheck requires a shebang directive. Since this is a configuration file that will be sourced by the build system, add a bash shebang at the top.
📝 Committable suggestion
🧰 Tools
🪛 GitHub Actions: Shellcheck - PR #8388 ("Add board KickPi K2B and AIC8800 SDIO Wireless")
[error] 1-1: ShellCheck SC2148: Tips depend on target shell and yours is unknown. Add a shebang or a 'shell' directive.
🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree. All these *.conf files should have a shebang. This isn't up to me to change and it is currently an Armbian standard not to have them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
@pyavitz Thank you for clarifying the Armbian project standards. Let me investigate the current state of .conf files in the Armbian codebase to better understand the established patterns.
🏁 Script executed:
Length of output: 12280
@pyavitz You're absolutely correct, and the evidence confirms your statement. I checked the existing codebase and found that all board configuration files (
.conf
) and family configuration files consistently lack shebang lines - this is indeed an established Armbian project standard.The issue here is that the CI pipeline's ShellCheck configuration is enforcing rule SC2148 (missing shebang), which conflicts with the project's established convention. This creates a systematic problem that affects not just your PR but potentially any new
.conf
files added to the project.Potential solutions to resolve this CI conflict:
Add SC2148 to ShellCheck exclusions - The most appropriate solution would be to add
SC2148
to the excluded rules in the ShellCheck configuration (inlib/tools/shellcheck.sh
) for config files, since they are sourced rather than executed directly.Configure CI to handle this specific case - The CI pipeline could be configured to treat
.conf
files differently or skip the shebang check for configuration files.Project-wide decision - The project maintainers could decide whether to adopt shebangs consistently across all
.conf
files, but this would be a breaking change from established patterns.Since this appears to be a project-wide infrastructure issue rather than a problem with your specific contribution, I'd recommend escalating this to the project maintainers or opening a separate issue about the CI configuration conflict with established coding standards.
Your PR correctly follows the existing Armbian conventions, and the CI failure is due to a configuration mismatch rather than a code issue.
✏️ Learnings added
🧠 Learnings used