diff --git a/recipes/firmware-tigerlake.toml b/recipes/firmware-tigerlake.toml index 7941e2db..57d92ac1 100644 --- a/recipes/firmware-tigerlake.toml +++ b/recipes/firmware-tigerlake.toml @@ -122,4 +122,8 @@ echo "firmware-tigerlake: $n ficheros (wifi=$wifi i915=$gfx sof=$snd)" ''' [deps] -build = ["linux-firmware", "sof-firmware", "busybox"] +# `wireless-regdb` entró el 2026-09-17: `regulatory.db` **ya no viene en linux-firmware** —upstream +# lo sacó, es un proyecto aparte de kernel.org— y esta receta cortaba con «falta regulatory.db». +# Como las deps se materializan en el mismo `/lib/firmware`, el bucle de copia lo encuentra sin +# tocar una línea del guion. +build = ["linux-firmware", "sof-firmware", "wireless-regdb", "busybox"] diff --git a/recipes/wireless-regdb.toml b/recipes/wireless-regdb.toml new file mode 100644 index 00000000..26dd4e23 --- /dev/null +++ b/recipes/wireless-regdb.toml @@ -0,0 +1,49 @@ +# wireless-regdb — la base de datos regulatoria del WiFi: qué canales y a qué potencia se puede +# emitir en cada país. +# +# ── POR QUÉ EXISTE (2026-09-17) ───────────────────────────────────────────────────────────────── +# `firmware-tigerlake` la pedía de `linux-firmware` y cortaba con «falta regulatory.db». No era un +# fallo suyo: **upstream la sacó del tarball de linux-firmware**. `regulatory.db` es un proyecto +# aparte (`wireless-regdb`, del mismo kernel.org) y hoy sólo se publica ahí. Se comprobó sobre el +# artefacto sellado de linux-firmware 20260910: `find -name "regulatory*"` no devuelve nada. +# +# ── QUÉ PASA SIN ELLA, QUE NO ES «NO HAY WIFI» ───────────────────────────────────────────────── +# `cfg80211` arranca igual y la tarjeta asocia — por eso es fácil no notarlo—, pero se queda en el +# dominio `world`: pierde canales (los de 5 GHz que dependen del país, el UNII-2 con DFS, buena +# parte de 6 GHz) y emite a la potencia mínima. O sea, un WiFi que «funciona» y va mal. +# +# ── NO SE COMPILA: SON DATOS FIRMADOS ────────────────────────────────────────────────────────── +# El tarball ya trae `regulatory.db` y su firma `regulatory.db.p7s`. El `make` de este proyecto sólo +# sirve para REGENERARLA y firmarla con otra clave, y eso rompería la verificación: el kernel valida +# la firma contra la clave que lleva compilada. Así que la receta **copia los dos ficheros tal cual**, +# que es lo único correcto — y lo mismo hace cualquier distro. +name = "wireless-regdb" +version = "2026.09.03" +license = "ISC" + +[source] +tarball = "https://www.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2026.09.03.tar.xz" +sha256 = "b22e0901227b820cd1c280abe681a15b773a5103a5e10dc442e94ebb34cbf58d" + +[build] +compiler = "zig-cc" # no se usa: no hay nada que compilar, pero el campo es obligatorio +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +configure = "echo 'wireless-regdb: nada que configurar — son datos firmados'" +compile = "echo 'wireless-regdb: nada que compilar — regenerar la db la firmaría con otra clave y el kernel la rechazaría'" +install = ''' +set -e +mkdir -p /out/lib/firmware +cp -L regulatory.db /out/lib/firmware/ +[ -f regulatory.db.p7s ] && cp -L regulatory.db.p7s /out/lib/firmware/ +# CLAUDE.md §3: un artefacto presente pero vacío pasa por bueno. Acá el contenido es el punto. +[ -s /out/lib/firmware/regulatory.db ] || { echo "wireless-regdb: regulatory.db vacío o ausente" >&2; exit 1; } +[ -s /out/lib/firmware/regulatory.db.p7s ] || { echo "wireless-regdb: falta la FIRMA regulatory.db.p7s — sin ella cfg80211 ignora la base y el WiFi se queda en el dominio world, que es justo lo que veníamos a arreglar" >&2; exit 1; } +echo "wireless-regdb: $(wc -c < /out/lib/firmware/regulatory.db) bytes de db + firma" +''' + +[deps] +build = ["busybox"]