Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

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

native: Chromebook hardware support — RTW/MT WiFi + SOF audio

USB logs from a flash to a "Drawcia" Chromebook (Intel Celeron N4500,
Jasper Lake) showed three unrelated gaps:

1. No WiFi interface enumerated — drivers for RTW88 (Realtek 8822CE et
al), RTW89 (Realtek 8852 series), MT7921, and MT7925 were disabled
in the kernel config. Chromebooks commonly ship one of these; iwlwifi
alone isn't enough. Enabling all four driver families built-in so a
single kernel covers ThinkPads, Chromebooks, and budget laptops.

2. No audio — Jasper Lake and every Intel platform from Tiger Lake on
route audio through the DSP via SOF (Sound Open Firmware), not the
legacy HDA codec path. SND_SOC was entirely disabled. Now enabling
SND_SOC + SOF toplevel + per-platform support (Icelake → Lunar Lake)
+ common Chromebook machine drivers (SOF_RT5682, SOF_CS42L42,
SOF_NAU8825, SOF_MAX98357A/360A/373) and the matching codecs.

3. docker-build.sh now bundles rtw88/, rtw89/, mediatek/ wifi firmware
and intel/sof/ + intel/sof-tplg/ audio topology files into the
initramfs. Decompression now walks the whole firmware tree via find
(was hard-coded to / + /i915 only) so files in subdirs get unpacked.

Still TODO from the same USB logs (not in this commit):
- install flow handles /dev/nvme* but Chromebooks use /dev/mmcblk*.
- SDL3 "Can't load EGL/GL library" — ac-native falls back to DRM cleanly.
- Kernel `quiet` cmdline hides early boot errors — diagnostic mode is
a separate config.

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

+147 -14
+43 -7
fedac/native/docker-build.sh
··· 387 387 for fw in "$FWDIR"/i915/*_dmc_*.bin "$FWDIR"/i915/*_dmc_*.bin.zst; do 388 388 [ -f "$fw" ] && cp -L "$fw" "$IROOT/lib/firmware/i915/" 389 389 done 390 + 391 + # Realtek WiFi (rtw88/rtw89) — common in Chromebooks, budget laptops. 392 + # rtl8822b/c/ce/8723de/8821ce/8851be families live under rtw88/, rtl8851b/8852a/b/c/ce under rtw89/. 393 + for subdir in rtw88 rtw89; do 394 + if [ -d "$FWDIR/$subdir" ]; then 395 + mkdir -p "$IROOT/lib/firmware/$subdir" 396 + for fw in "$FWDIR/$subdir"/*.bin "$FWDIR/$subdir"/*.bin.zst "$FWDIR/$subdir"/*.bin.xz; do 397 + [ -f "$fw" ] && cp -L "$fw" "$IROOT/lib/firmware/$subdir/" 398 + done 399 + fi 400 + done 401 + 402 + # MediaTek WiFi (MT7921/MT7925) — common in newer ChromeOS, budget laptops. 403 + if [ -d "$FWDIR/mediatek" ]; then 404 + mkdir -p "$IROOT/lib/firmware/mediatek" 405 + for pattern in WIFI_MT7922_ WIFI_RAM_CODE_MT7922 WIFI_MT7925_ WIFI_RAM_CODE_MT7925 mt7921 mt7925; do 406 + for fw in "$FWDIR/mediatek/${pattern}"* ; do 407 + [ -f "$fw" ] && cp -L "$fw" "$IROOT/lib/firmware/mediatek/" 408 + done 409 + done 410 + fi 411 + 412 + # SOF (Sound Open Firmware) — Intel DSP audio path used by Chromebooks 413 + # (Jasper Lake, Alder Lake, Tiger Lake…) and many modern laptops where 414 + # audio doesn't go through plain HDA. Need the main .ri blob per 415 + # platform plus the matching topology under sof-tplg/. 416 + for subdir in intel/sof intel/sof-tplg intel/sof-ace-tplg; do 417 + src="$FWDIR/$subdir" 418 + if [ -d "$src" ]; then 419 + mkdir -p "$IROOT/lib/firmware/$subdir" 420 + for fw in "$src"/*.ri "$src"/*.tplg "$src"/*.tplg.xz "$src"/*.ri.xz \ 421 + "$src"/*.ri.zst "$src"/*.tplg.zst; do 422 + [ -f "$fw" ] && cp -L "$fw" "$IROOT/lib/firmware/$subdir/" 423 + done 424 + fi 425 + done 390 426 else 391 427 log " WARNING: No firmware directory found!" 392 428 fi 393 - # Decompress any .zst or .xz files 394 - for zst in "$IROOT/lib/firmware/"*.zst "$IROOT/lib/firmware/i915/"*.zst; do 395 - [ -f "$zst" ] && zstd -d --rm "$zst" 2>/dev/null || true 396 - done 397 - for xzf in "$IROOT/lib/firmware/"*.xz "$IROOT/lib/firmware/i915/"*.xz; do 398 - [ -f "$xzf" ] && xz -d "$xzf" 2>/dev/null || true 399 - done 429 + # Decompress any .zst or .xz files across all firmware subdirectories. 430 + while IFS= read -r -d '' zst; do 431 + zstd -d --rm "$zst" 2>/dev/null || true 432 + done < <(find "$IROOT/lib/firmware" -name '*.zst' -print0 2>/dev/null) 433 + while IFS= read -r -d '' xzf; do 434 + xz -d "$xzf" 2>/dev/null || true 435 + done < <(find "$IROOT/lib/firmware" -name '*.xz' -print0 2>/dev/null) 400 436 FW_COUNT=$(find "$IROOT/lib/firmware" -type f | wc -l) 401 437 FW_SIZE=$(du -sh "$IROOT/lib/firmware" | cut -f1) 402 438 log " Firmware: $FW_COUNT files ($FW_SIZE)"
+104 -7
fedac/native/kernel/config-minimal
··· 1749 1749 # CONFIG_MT7615E is not set 1750 1750 # CONFIG_MT7663U is not set 1751 1751 # CONFIG_MT7915E is not set 1752 - # CONFIG_MT7921E is not set 1753 - # CONFIG_MT7921U is not set 1752 + CONFIG_MT76_CORE=y 1753 + CONFIG_MT76_LEDS=y 1754 + CONFIG_MT76_USB=y 1755 + CONFIG_MT76_SDIO=y 1756 + CONFIG_MT76_CONNAC_LIB=y 1757 + CONFIG_MT792x_LIB=y 1758 + CONFIG_MT792x_USB=y 1759 + CONFIG_MT7921_COMMON=y 1760 + CONFIG_MT7921E=y 1761 + CONFIG_MT7921S=y 1762 + CONFIG_MT7921U=y 1763 + CONFIG_MT7925_COMMON=y 1764 + CONFIG_MT7925E=y 1765 + CONFIG_MT7925U=y 1754 1766 # CONFIG_MT7996E is not set 1755 - # CONFIG_MT7925E is not set 1756 - # CONFIG_MT7925U is not set 1757 1767 CONFIG_WLAN_VENDOR_MICROCHIP=y 1758 1768 CONFIG_WLAN_VENDOR_PURELIFI=y 1759 1769 # CONFIG_PLFXLC is not set ··· 1774 1784 # CONFIG_RTL8192CU is not set 1775 1785 # CONFIG_RTL8192DU is not set 1776 1786 # CONFIG_RTL8XXXU is not set 1777 - # CONFIG_RTW88 is not set 1778 - # CONFIG_RTW89 is not set 1787 + CONFIG_RTW88=y 1788 + CONFIG_RTW88_CORE=y 1789 + CONFIG_RTW88_PCI=y 1790 + CONFIG_RTW88_8822B=y 1791 + CONFIG_RTW88_8822C=y 1792 + CONFIG_RTW88_8723D=y 1793 + CONFIG_RTW88_8821C=y 1794 + CONFIG_RTW88_8822BE=y 1795 + CONFIG_RTW88_8822CE=y 1796 + CONFIG_RTW88_8723DE=y 1797 + CONFIG_RTW88_8821CE=y 1798 + CONFIG_RTW88_8851BE=y 1799 + CONFIG_RTW89=y 1800 + CONFIG_RTW89_CORE=y 1801 + CONFIG_RTW89_PCI=y 1802 + CONFIG_RTW89_8851B=y 1803 + CONFIG_RTW89_8851BE=y 1804 + CONFIG_RTW89_8852A=y 1805 + CONFIG_RTW89_8852AE=y 1806 + CONFIG_RTW89_8852B=y 1807 + CONFIG_RTW89_8852BE=y 1808 + CONFIG_RTW89_8852C=y 1809 + CONFIG_RTW89_8852CE=y 1779 1810 CONFIG_WLAN_VENDOR_RSI=y 1780 1811 # CONFIG_RSI_91X is not set 1781 1812 CONFIG_WLAN_VENDOR_SILABS=y ··· 2930 2961 # CONFIG_SND_USB_PODHD is not set 2931 2962 # CONFIG_SND_USB_TONEPORT is not set 2932 2963 # CONFIG_SND_USB_VARIAX is not set 2933 - # CONFIG_SND_SOC is not set 2964 + CONFIG_SND_SOC=y 2965 + CONFIG_SND_SOC_COMPRESS=y 2966 + CONFIG_SND_SOC_TOPOLOGY=y 2967 + CONFIG_SND_SOC_ACPI=y 2968 + CONFIG_SND_SOC_ACPI_INTEL_MATCH=y 2969 + # SOF Intel — needed for Jasper Lake Chromebooks, Alder Lake+, etc. 2970 + # where audio goes through the DSP rather than the legacy HDA codec. 2971 + # Enabling the full matrix so the same kernel works across Jasper Lake 2972 + # (Drawcia), Alder Lake (X1 Nano), Tiger Lake etc. All built-in so no 2973 + # module loader needed at boot. 2974 + CONFIG_SND_SOC_SOF_TOPLEVEL=y 2975 + CONFIG_SND_SOC_SOF_PCI_DEV=y 2976 + CONFIG_SND_SOC_SOF=y 2977 + CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y 2978 + CONFIG_SND_SOC_SOF_IPC3=y 2979 + CONFIG_SND_SOC_SOF_INTEL_IPC4=y 2980 + CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y 2981 + CONFIG_SND_SOC_SOF_INTEL_COMMON=y 2982 + CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=y 2983 + CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=y 2984 + CONFIG_SND_SOC_SOF_INTEL_PCI=y 2985 + CONFIG_SND_SOC_SOF_INTEL_HDA_COMMON=y 2986 + CONFIG_SND_SOC_SOF_HDA_COMMON=y 2987 + CONFIG_SND_SOC_SOF_HDA_MLINK=y 2988 + CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y 2989 + CONFIG_SND_SOC_SOF_HDA_PROBES=y 2990 + CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=y 2991 + CONFIG_SND_SOC_SOF_HDA_LINK=y 2992 + CONFIG_SND_SOC_SOF_HDA=y 2993 + CONFIG_SND_SOC_SOF_ICELAKE=y 2994 + CONFIG_SND_SOC_SOF_COMETLAKE=y 2995 + CONFIG_SND_SOC_SOF_TIGERLAKE=y 2996 + CONFIG_SND_SOC_SOF_ELKHARTLAKE=y 2997 + CONFIG_SND_SOC_SOF_JASPERLAKE=y 2998 + CONFIG_SND_SOC_SOF_ALDERLAKE=y 2999 + CONFIG_SND_SOC_SOF_METEORLAKE=y 3000 + CONFIG_SND_SOC_SOF_LUNARLAKE=y 3001 + # Intel machine drivers (codec + board combos common in Chromebooks) 3002 + CONFIG_SND_SOC_INTEL_MACH=y 3003 + CONFIG_SND_SOC_INTEL_COMMON=y 3004 + CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH=y 3005 + CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=y 3006 + CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=y 3007 + CONFIG_SND_SOC_INTEL_SOF_NAU8825_MACH=y 3008 + CONFIG_SND_SOC_INTEL_SOF_MAX98357A_MACH=y 3009 + CONFIG_SND_SOC_INTEL_SOF_MAX98360A_MACH=y 3010 + CONFIG_SND_SOC_INTEL_SOF_MAX98373_MACH=y 3011 + CONFIG_SND_SOC_INTEL_SOF_DA7219_MACH=y 3012 + CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH=y 3013 + CONFIG_SND_SOC_INTEL_SOF_BOARD_HELPERS=y 3014 + # Codecs commonly paired with Chromebook hardware 3015 + CONFIG_SND_SOC_RT5682=y 3016 + CONFIG_SND_SOC_RT5682_I2C=y 3017 + CONFIG_SND_SOC_RT5682S=y 3018 + CONFIG_SND_SOC_RT1015=y 3019 + CONFIG_SND_SOC_RT1015P=y 3020 + CONFIG_SND_SOC_CS42L42=y 3021 + CONFIG_SND_SOC_NAU8825=y 3022 + CONFIG_SND_SOC_MAX98357A=y 3023 + CONFIG_SND_SOC_MAX98360A=y 3024 + CONFIG_SND_SOC_MAX98373=y 3025 + CONFIG_SND_SOC_MAX98373_I2C=y 3026 + CONFIG_SND_SOC_HDAC_HDMI=y 3027 + CONFIG_SND_SOC_HDAC_HDA=y 3028 + # SoundWire bus (needed by SOF on Alder Lake+) 3029 + CONFIG_SOUNDWIRE=y 3030 + CONFIG_SOUNDWIRE_INTEL=y 2934 3031 CONFIG_SND_X86=y 2935 3032 # CONFIG_HDMI_LPE_AUDIO is not set 2936 3033 CONFIG_HID_SUPPORT=y