wireless-regdb: la base regulatoria del WiFi ya no viene en linux-firmware
`firmware-tigerlake` cortaba con «falta regulatory.db», y no era un fallo suyo: upstream sacó ese fichero del tarball de linux-firmware y hoy sólo se publica en su propio proyecto de kernel.org. Comprobado sobre el artefacto sellado de linux-firmware 20260910: `find -name "regulatory*"` no devuelve nada. Lo que pasa sin ella no es «no hay WiFi», que sería fácil de notar: cfg80211 arranca, la tarjeta asocia, y se queda en el dominio `world` —pierde canales de 5 y 6 GHz y emite a la potencia mínima—. Un WiFi que funciona y va mal. La receta NO compila nada: el `make` del proyecto regenera la db y la firma con otra clave, y el kernel valida contra la que lleva compilada, así que regenerarla la rompería. Copia `regulatory.db` y su `.p7s` tal cual, y corta si la firma falta —sin firma, cfg80211 ignora la base y volvemos al dominio world, que es justo lo que veníamos a arreglar—. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
Reference in New Issue
Block a user