Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

native: definitive audio diagnostics — IKCONFIG + ac-native stderr to USB

Still silent after the pinctrl dedup. Three diagnostic additions so the
next boot tells us exactly where the failure actually is:

- IKCONFIG=y + IKCONFIG_PROC=y so /proc/config.gz is queryable. init
greps it for PINCTRL_JASPERLAKE, GPIOLIB, GPIO_ACPI, I2C_DESIGNWARE,
SND_SOC_MAX98357A, SND_SOC_INTEL_SOF_RT5682 — that answers "is the
driver actually compiled in" with zero ambiguity.
- init dump expanded: kallsyms greps for jsl_pinctrl / max98357 /
jasperlake_ prefixes; GPIO chip listing; scan of /sys/bus/platform
for MX98360A and friends to see whether the driver bound and what
resources came through; amixer contents; DAPM Speaker widget state.
- ac-native stdout/stderr now redirect straight to
/mnt/ac-native-{stdout,stderr}.log instead of /tmp. Previously the
ALSA init trace (which device opened, mixer enumeration, volume
settings) only reached USB on clean exit — useless when the user
yanks the stick to reflash. Vfat buffers the writes but the file is
there and readable after reboot.

Still need to actually fix the audio — this commit just makes the next
iteration one-shot-diagnosable instead of building + flashing + guessing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+44 -6
+42 -5
fedac/native/initramfs/init
··· 228 228 cat /sys/kernel/debug/asoc/dais 2>/dev/null | head -20 >> $LOG 229 229 echo "Loaded audio modules/built-in symbols:" >> $LOG 230 230 cat /proc/modules 2>/dev/null | grep -iE "sof|snd|rt5682|max98" >> $LOG 231 - # Even built-in drivers show as symbols in /proc/kallsyms — search for the 232 - # sof_rt5682 driver struct to confirm it was compiled in and initialized. 233 - grep -E " sof_rt5682| snd_sof_" /proc/kallsyms 2>/dev/null | head -5 >> $LOG 231 + # Even built-in drivers show as symbols in /proc/kallsyms — confirms which 232 + # drivers linked into this kernel image. Broadened to also detect whether 233 + # PINCTRL_JASPERLAKE actually took effect (its symbols show up with 234 + # jsl_pinctrl_/pinctrl_jsl_ / jasperlake_ prefixes). 235 + grep -E " sof_rt5682| snd_sof_| jsl_pinctrl| pinctrl_jsl| jasperlake_| max98357" /proc/kallsyms 2>/dev/null | head -20 >> $LOG 236 + # Running kernel .config (IKCONFIG_PROC=y) — grep for our critical audio 237 + # symbols so we can definitively see whether olddefconfig accepted them. 238 + if [ -r /proc/config.gz ]; then 239 + echo "Running kernel config (audio+gpio):" >> $LOG 240 + zcat /proc/config.gz 2>/dev/null | grep -E "^CONFIG_(PINCTRL_JASPERLAKE|PINCTRL_INTEL|PINCTRL_METEORLAKE|GPIOLIB|GPIO_ACPI|I2C_DESIGNWARE|SND_SOC_MAX98357A|SND_SOC_INTEL_SOF_RT5682)=" >> $LOG 241 + fi 242 + echo "GPIO chips:" >> $LOG 243 + ls /sys/bus/gpio/devices/ 2>/dev/null >> $LOG 244 + for chip in /sys/class/gpio/*; do 245 + [ -d "$chip" ] && echo " $(basename $chip)" >> $LOG 246 + done 247 + # MAX98357A amp state — if the driver is bound but SD_MODE GPIO isn't 248 + # assigned, the amp stays in power-down mode and speakers are silent even 249 + # though the sound card registers cleanly. Dump its device dir so we see 250 + # what resources actually came through. 251 + echo "MAX98357A (speaker amp) state:" >> $LOG 252 + for d in /sys/bus/platform/devices/*; do 253 + name=$(basename "$d") 254 + case "$name" in MX98360A*|MAX98357A*|MAX98360A*|i2c-MX98*) 255 + echo " ${name}:" >> $LOG 256 + ls -la "$d" 2>/dev/null | head -20 >> $LOG 257 + [ -L "$d/driver" ] && echo " driver=$(basename $(readlink $d/driver))" >> $LOG 258 + ;; 259 + esac 260 + done 261 + echo "ALSA mixer (card 0):" >> $LOG 262 + if command -v amixer >/dev/null 2>&1; then 263 + amixer -c 0 contents 2>/dev/null | head -60 >> $LOG 264 + else 265 + echo " amixer not in initramfs (add to bundling if needed)" >> $LOG 266 + fi 267 + echo "DAPM widgets (speaker path):" >> $LOG 268 + for d in /sys/kernel/debug/asoc/sof-rt5682/dapm/Speaker /sys/kernel/debug/asoc/card0/dapm/Speaker; do 269 + [ -r "$d" ] && { echo " $d:"; cat "$d"; } >> $LOG 2>&1 270 + done 234 271 echo "=== CPUINFO ===" >> $LOG 235 272 head -30 /proc/cpuinfo >> $LOG 2>&1 236 273 echo "=== CMDLINE ===" >> $LOG ··· 255 292 if [ "$SDL_ENABLED" = "1" ]; then 256 293 echo "[init] launching ac-native (SDL3 GPU enabled)..." > /dev/tty0 2>/dev/null 257 294 LD_LIBRARY_PATH="/lib64" LIBGL_DRIVERS_PATH="/lib64/dri" GBM_DRIVERS_PATH="/lib64/dri" MESA_LOADER_DRIVER_OVERRIDE=iris \ 258 - /ac-native /piece.mjs 2>/tmp/ac-native-stderr.log & 295 + /ac-native /piece.mjs >>/mnt/ac-native-stdout.log 2>>/mnt/ac-native-stderr.log & 259 296 else 260 297 echo "[init] launching ac-native (DRM only)..." > /dev/tty0 2>/dev/null 261 298 LD_LIBRARY_PATH="/lib64" AC_NO_SDL=1 \ 262 - /ac-native /piece.mjs 2>/tmp/ac-native-stderr.log & 299 + /ac-native /piece.mjs >>/mnt/ac-native-stdout.log 2>>/mnt/ac-native-stderr.log & 263 300 fi 264 301 CHILD_PID=$! 265 302 wait $CHILD_PID
+2 -1
fedac/native/kernel/config-minimal
··· 155 155 CONFIG_RCU_NEED_SEGCBLIST=y 156 156 # end of RCU Subsystem 157 157 158 - # CONFIG_IKCONFIG is not set 158 + CONFIG_IKCONFIG=y 159 + CONFIG_IKCONFIG_PROC=y 159 160 # CONFIG_IKHEADERS is not set 160 161 CONFIG_LOG_BUF_SHIFT=17 161 162 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12