|
| 1 | +# BeagleBadge Texas Instruments AM62L dual core 256MB WiFi BT LoRaWAN OSPI DSI ePaper |
| 2 | + |
| 3 | +BOARD_NAME="BeagleBadge" |
| 4 | +BOARD_VENDOR="beagleboard" |
| 5 | +BOARDFAMILY="k3" |
| 6 | +BOARD_MAINTAINER="Grippy98" |
| 7 | +INTRODUCED="2026" |
| 8 | +BOOT_SOC="am62l" |
| 9 | +BOOTCONFIG="am62lx_badge_defconfig" |
| 10 | +BOOTFS_TYPE="fat" |
| 11 | +BOOT_FDT_FILE="ti/k3-am62l3-badge.dts" |
| 12 | +TIBOOT3_FILE="tiboot3.bin" |
| 13 | +DEFAULT_CONSOLE="serial" |
| 14 | +KERNEL_TARGET="vendor,vendor-rt,vendor-edge" |
| 15 | +KERNEL_TEST_TARGET="vendor" |
| 16 | +SERIALCON="ttyS2" |
| 17 | +ATF_PLAT="k3low" |
| 18 | +ATF_BOARD="am62l3-badge" |
| 19 | +EXTRA_ATF_TARGETS="build/${ATF_PLAT}/${ATF_BOARD}/release/bl1.bin:bl1.bin" |
| 20 | +OPTEE_ARGS="CFG_TEE_CORE_LOG_LEVEL=1" |
| 21 | +OPTEE_PLATFORM="k3-am62lx" |
| 22 | +EXTRA_BOOT_ARGS="BL1=bl1.bin" |
| 23 | +CC33XX_SUPPORT="yes" |
| 24 | +PACKAGE_LIST_BOARD="network-manager bluetooth bluez-tools" |
| 25 | +# TI_PACKAGES+=("badge-launcher") |
| 26 | +enable_extension "lowmem" |
| 27 | + |
| 28 | +# ======================================================================= |
| 29 | +# MEMORY, SERVICES, & KERNEL CONFIGURATION |
| 30 | +# |
| 31 | +# post_customize_image__ hooks run after install_distribution_agnostic(), |
| 32 | +# preventing conflicts with Armbian's standard service enabling |
| 33 | +# |
| 34 | +# pre_umount_final_image__ hooks run after the lowmem extension, allowing |
| 35 | +# beaglebadge-specific overrides |
| 36 | +# ======================================================================= |
| 37 | + |
| 38 | +function pre_umount_final_image__zz_beaglebadge_configure_zram() { |
| 39 | + display_alert "$BOARD" "Configuring ZRAM (overriding lowmem)" "info" |
| 40 | + |
| 41 | + sed -i "s/^#\?\s*SWAP=.*/# SWAP=false/" "${MOUNT}"/etc/default/armbian-zram-config |
| 42 | + sed -i "s/^#\?\s*SWAP_ALGORITHM=.*/SWAP_ALGORITHM=zstd/" "${MOUNT}"/etc/default/armbian-zram-config |
| 43 | + sed -i "s/^#\?\s*SWAP_PRIORITY=.*/SWAP_PRIORITY=100/" "${MOUNT}"/etc/default/armbian-zram-config |
| 44 | + |
| 45 | + display_alert "$BOARD" "ZRAM configured: 50% of physical RAM (zstd, priority 100)" "info" |
| 46 | +} |
| 47 | + |
| 48 | +function post_customize_image__beaglebadge_10_enable_cc33xx_ble() { |
| 49 | + display_alert "$BOARD" "Configuring CC33xx udev rule for BLE" "info" |
| 50 | + |
| 51 | + mkdir -p "${SDCARD}"/etc/udev/rules.d/ |
| 52 | + cat <<-EOF > "${SDCARD}"/etc/udev/rules.d/99-cc33xx-ble.rules |
| 53 | + # Enable BLE when the cc33xx wlan physical interface initializes |
| 54 | + ACTION=="add", SUBSYSTEM=="ieee80211", KERNEL=="phy[0-9]*", DEVPATH=="*cc33xx*", RUN+="/bin/sh -c 'sleep 1; echo 1 > /sys/kernel/debug/ieee80211/%k/cc33xx/ble_enable'" |
| 55 | + EOF |
| 56 | +} |
| 57 | + |
| 58 | +function post_customize_image__beaglebadge_20_configure_apt() { |
| 59 | + display_alert "$BOARD" "Configuring APT" "info" |
| 60 | + |
| 61 | + # Mask APT daily timers and services |
| 62 | + chroot "${SDCARD}" /bin/bash -c "systemctl mask apt-daily.timer apt-daily-upgrade.timer apt-daily.service apt-daily-upgrade.service || true" |
| 63 | + |
| 64 | + # APT autoremove recommends/suggests |
| 65 | + cat <<-EOF > "${SDCARD}"/etc/apt/apt.conf.d/99-beaglebadge |
| 66 | + APT::AutoRemove::RecommendsImportant "0"; |
| 67 | + APT::AutoRemove::SuggestsImportant "0"; |
| 68 | + EOF |
| 69 | +} |
| 70 | + |
| 71 | +function post_customize_image__beaglebadge_30_trim_systemd() { |
| 72 | + display_alert "$BOARD" "Trimming systemd services" "info" |
| 73 | + |
| 74 | + # Services to disable (not mask - let them exist but not start) |
| 75 | + local services_to_disable=( |
| 76 | + "rsyslog.service" |
| 77 | + "systemd-homed.service" |
| 78 | + "systemd-homed-activate.service" |
| 79 | + "armbian-hardware-monitor.service" |
| 80 | + "armbian-hardware-optimize.service" |
| 81 | + ) |
| 82 | + |
| 83 | + for service in "${services_to_disable[@]}"; do |
| 84 | + chroot "${SDCARD}" /bin/bash -c "systemctl disable ${service} || true" |
| 85 | + done |
| 86 | + |
| 87 | + # Timers to mask (these are safe and won't conflict) |
| 88 | + local timers_to_mask=( |
| 89 | + "e2scrub_all.timer" |
| 90 | + ) |
| 91 | + |
| 92 | + for timer in "${timers_to_mask[@]}"; do |
| 93 | + chroot "${SDCARD}" /bin/bash -c "systemctl mask ${timer} || true" |
| 94 | + local service="${timer%.timer}.service" |
| 95 | + chroot "${SDCARD}" /bin/bash -c "systemctl mask ${service} || true" |
| 96 | + done |
| 97 | +} |
| 98 | + |
| 99 | +function post_customize_image__beaglebadge_40_limit_journal() { |
| 100 | + display_alert "$BOARD" "Limiting systemd journal size" "info" |
| 101 | + |
| 102 | + mkdir -p "${SDCARD}"/etc/systemd/journald.conf.d/ |
| 103 | + cat <<-EOF > "${SDCARD}"/etc/systemd/journald.conf.d/zz-beaglebadge-journal.conf |
| 104 | + [Journal] |
| 105 | + SystemMaxFileSize=4M |
| 106 | + RuntimeMaxUse=8M |
| 107 | + RuntimeMaxFileSize=2M |
| 108 | + ForwardToSyslog=no |
| 109 | + ForwardToConsole=no |
| 110 | + ForwardToWall=no |
| 111 | + MaxLevelStore=debug |
| 112 | + Compress=yes |
| 113 | + EOF |
| 114 | +} |
| 115 | + |
| 116 | +function post_customize_image__beaglebadge_50_optimize_systemd_timeouts() { |
| 117 | + display_alert "$BOARD" "Optimizing systemd timeouts" "info" |
| 118 | + |
| 119 | + mkdir -p "${SDCARD}"/etc/systemd/system.conf.d/ |
| 120 | + cat <<-EOF > "${SDCARD}"/etc/systemd/system.conf.d/99-beaglebadge.conf |
| 121 | + [Manager] |
| 122 | + DefaultTimeoutStopSec=30s |
| 123 | + DefaultTimeoutAbortSec=15s |
| 124 | + DefaultDeviceTimeoutSec=30s |
| 125 | + DefaultLimitNOFILE=1024:4096 |
| 126 | + EOF |
| 127 | + |
| 128 | + mkdir -p "${SDCARD}"/etc/systemd/coredump.conf.d/ |
| 129 | + cat <<-EOF > "${SDCARD}"/etc/systemd/coredump.conf.d/beaglebadge.conf |
| 130 | + [Coredump] |
| 131 | + MaxUse=128M |
| 132 | + EOF |
| 133 | +} |
| 134 | + |
| 135 | +function post_customize_image__beaglebadge_60_tune_kernel_params() { |
| 136 | + display_alert "$BOARD" "Tuning kernel parameters" "info" |
| 137 | + |
| 138 | + cat <<-EOF > "${SDCARD}"/etc/sysctl.d/99-beaglebadge.conf |
| 139 | + # Memory management for 256MB system |
| 140 | + vm.swappiness=100 |
| 141 | + vm.page-cluster=0 |
| 142 | + vm.watermark_scale_factor=125 |
| 143 | + vm.compact_memory=1 |
| 144 | + vm.vfs_cache_pressure=150 |
| 145 | + vm.dirty_background_ratio=5 |
| 146 | + vm.dirty_ratio=10 |
| 147 | + vm.min_free_kbytes=8192 |
| 148 | + vm.overcommit_memory=1 |
| 149 | + |
| 150 | + # Minimize network buffers |
| 151 | + net.core.rmem_max=131072 |
| 152 | + net.core.wmem_max=131072 |
| 153 | + net.ipv4.tcp_rmem=4096 65536 262144 |
| 154 | + net.ipv4.tcp_wmem=4096 16384 262144 |
| 155 | + EOF |
| 156 | + |
| 157 | + grep -q '^optargs=' "${SDCARD}"/boot/uEnv.txt \ |
| 158 | + && sed -i "/zswap\.enabled=0/! s/^optargs=.*/& zswap.enabled=0/" "${SDCARD}"/boot/uEnv.txt \ |
| 159 | + || echo "optargs=zswap.enabled=0" >> "${SDCARD}"/boot/uEnv.txt |
| 160 | +} |
0 commit comments