Datos SSRF
+Planes de canales, repetidores y talkgroups públicos de SSRF-Lite, combinados con capas compartidas o privadas por ID de registro estable.
+From 7697d865a39f49452e028771d5f4d3c9b0c5d511 Mon Sep 17 00:00:00 2001
From: Eric Muehlstein Código abierto · Chicago Offline
+ codeplugger combina datos de RF compartidos con tu perfil bajo
+ control de versiones para compilar un codeplug validado y neutral
+ de radio. Expórtalo, o escríbelo directamente en una radio compatible.
+
+ Los hechos y las preferencias se mantienen separados. Los datos de RF
+ describen lo que existe; un perfil describe lo que quieres en una
+ radio concreta. Todo lo intermedio es determinista y revisable.
+ Planes de canales, repetidores y talkgroups públicos de SSRF-Lite, combinados con capas compartidas o privadas por ID de registro estable. Tu política en YAML: qué asignaciones, en qué orden, en qué zonas, con listas de escaneo, grupos RX, contactos y ajustes de la radio. Los perfiles pueden heredar unos de otros. codeplugger une las entradas y comprueba cada canal contra las capacidades de la radio de destino: bandas, modos, longitud de nombres, límites de zonas y listas, capacidad dependiente del firmware. Exporta CHIRP CSV o qdmr YAML; aplica un perfil a una línea base P4 decodificada para TOML; o usa un backend con confirmación para escribir en una radio compatible.
+ CI los compila a partir de perfiles comunitarios públicos y datos de
+ RF a medida que cambian las fuentes, y luego publica archivos de
+ importación, referencias imprimibles y sumas de verificación SHA-256.
+ No hace falta instalar codeplugger.
+
+ La tabla combina las capacidades de cada radio con los detalles de
+ exportación y verificación en hardware registrados en el repositorio.
+ Su generador comprueba que cada entrada
+
+ hw verificado en una radio física ·
+ compatible hoy ·
+ no aplicable o no implementado
+ Canales FM analógicos y AM de solo recepción en el orden del perfil, comprobados contra los límites de la radio. Importa y carga en CHIRP donde exista un controlador, o usa Codeplug extensible de qdmr con zonas, listas de escaneo, listas de grupos RX, contactos y varios IDs DMR. Los ajustes nativos de la radio pasan a través de Se aplica sobre una línea base de Un plan de canales declarativo para portátiles con protocolo Benshi, que no tienen CPS de escritorio ni controlador CHIRP: la única vía de entrada es Bluetooth. Las zonas se asignan a las regiones de la radio, y las regiones que el plan omite nunca se escriben. Las escrituras requieren confirmación explícita y comprobaciones de seguridad propias de cada backend. La copia de seguridad y la relectura varían según el backend; las operaciones pueden registrarse. Backends: Hecho para quienes mantienen más de una radio coherente y quieren saber exactamente qué entró en cada una. Las mismas entradas siempre producen el mismo codeplug, hasta un SHA-256 estable. Los archivos generados son artefactos desechables, nunca una fuente de datos. Bandas, rangos TX frente a solo RX, modos, ancho de banda, longitud de nombres, límites de zonas y listas, y capacidad de contactos dependiente del firmware, clasificados como aviso / advertencia / crítico, con todos los críticos informados en una sola ejecución. Confirmación explícita, comprobaciones de identidad propias de cada backend y registros de escritura; verificación previa y relectura donde esté disponible. Los talkgroups son hechos SSRF; la pertenencia y el contacto TX, grupo RX y lista de escaneo por asignación son política del perfil, todo aplicado contra los límites de la radio. Comparte un perfil base y deriva variantes con Una instancia de radio puede llevar varios IDs DMR; los perfiles vinculan uno por zona o por asignación y los exportadores emiten solo las identidades realmente usadas. Un registro de instancias asocia radios físicas a perfiles. Ancho de banda a partir del designador de emisión de la UIT, modo AM para asignaciones de banda aérea de solo recepción, nombres de pantalla sobrescritos desde capas. Referencias de canales en HTML y Markdown más registros de operación por instancia de radio, para que lo que hay en la radio esté siempre documentado. Los ajustes nativos de cada exportador viven bajo
+ Los datos de RF públicos y las capas alimentan una compilación basada en perfiles; exporta un archivo o programa una radio compatible.
+ codeplugger se sitúa entre los datos de RF abiertos y las herramientas que ya hablan con las radios. YAML autoritativo y legible para planes de canales, repetidores, estaciones y talkgroups. Explóralo en línea. Canales GMRS y MURS reales de la red comunitaria de Chicago Offline, en capa sobre SSRF-Lite. Perfiles listos para usar que seleccionan la red comunitaria compartida para cada radio compatible. Estudio de RF basado en SDR que valida los registros de SSRF-Lite con observaciones reales: la evidencia detrás de la confianza en cada canal. Programación DMR de código abierto. codeplugger emite su YAML extensible y maneja La interfaz de carga para radios analógicas. codeplugger produce CSV compatible con CHIRP. Comunicaciones resilientes y de propiedad comunitaria para el área de Chicago: radioafición, GMRS/MURS, DMR y malla LoRa. Clona codeplugger y usa Programar una radio debería ser una compilación, no una sesión de CPS.
+
+
Cómo funciona
+ Datos SSRF
+ Perfil
+ Resolver y validar
+ Exportar o programar
+ Codeplugs comunitarios precompilados
+ Radios compatibles
+ radios/*/capabilities.json tenga una fila correspondiente.
+
+
+
+
+
+
+
+
+ Radio
+ Modos
+ CHIRP CSV exportación
+ Importar en qdmr YAML
+ Importar en p64tool TOML
+ Importar en CPS del fabricante archivos propietarios
+ Escritura directa sin interfaz, a la radio
+
+
+ Baofeng DM-32 DM-32UV
+ DMR · FM · AM RX
+ No compatible
+ Compatible
+ No compatible
+ No compatible
+ dmrconfhw
+
+
+ Baofeng DM-1701 DM-1701 / RT84
+ DMR · FM
+ No compatible
+ Compatible
+ No compatible
+ No compatible
+ dmrconfhw
+
+
+ Retevis MateTalk P4 UHF DMR
+ DMR · FM
+ No compatible
+ No compatible
+ Compatible
+ No compatible
+ p64toolhw
+
+
+ Baofeng UV-5R Mini UV-17Pro family
+ FM · AM RX
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Baofeng BF-C50 70 cm, no display
+ FM
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ no CHIRP driver
+
+
+ Baofeng BF-888S UHF, no display
+ FM
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Baofeng BF-1909 UHF, no display
+ FM
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Baofeng W31E UHF, no display
+ FM
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Ailunce HA2 Dual-band analog
+ FM · AM RX
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Retevis C64 Dual-band analog
+ FM
+ hw
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Retevis RT3S (OpenGD77) MD-UV380 family, OpenGD77
+ DMR · FM
+ No compatible
+ Compatible
+ No compatible
+ No compatible
+ dmrconfhw
+
+
+ Baofeng DM-1701 (OpenGD77) MD-UV380 family, OpenGD77
+ DMR · FM
+ No compatible
+ Compatible
+ No compatible
+ No compatible
+ dmrconf
+
+
+ Vero VR-N76 Dual-band, Bluetooth
+ FM · AM RX
+ No compatible
+ No compatible
+ No compatible
+ No compatible
+ benlink
+
+
+ BTECH UV-Pro Dual-band, Bluetooth
+ FM · AM RX
+ No compatible
+ No compatible
+ No compatible
+ No compatible
+ benlink
+
+
+ Yaesu FT-270R 2 m submersible
+ FM
+ as VX-170
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Yaesu FT-270R (MARS/CAP) TX-modded variant
+ FM
+ as VX-170
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Yaesu FT-277R 70 cm submersible
+ FM
+ as VX-177hw
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Yaesu FT-277R (MARS/CAP) TX-modded variant
+ FM
+ as VX-177
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Yaesu FT-2800M 2 m mobile
+ FM
+ hw
+ No compatible
+ No compatible
+ No compatible
+ chirp-writerhw
+
+
+ Yaesu FT-2800M (extended TX) TX-modded variant
+ FM
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ Yaesu VX-6R Tri-band submersible
+ FM · AM RX
+ as VX-6
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ TYT TH-9800 Quad-band mobile
+ FM · AM RX
+ experimental driver
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+ TYT TH-9800 (extended TX) TX-modded variant
+ FM · AM RX
+ experimental driver
+ No compatible
+ No compatible
+ No compatible
+ chirp-writer
+
+
+
+
+ Quansheng UV-K5 (F4HWN) Quansheng UV-K5 (F4HWN)
+ FM · AM RX
+ Compatible
+ No compatible
+ No compatible
+ No compatible
+ chirp-writerhw
+ CHIRP CSV
+ chirp-writer en las radios compatibles.qdmr YAML
+ extensions.qdmr.p64tool TOML
+ p64tool decode para que los ajustes no tocados sobrevivan, y luego se vuelve a codificar para la P4.plan benlink
+ Escritura directa
+ dmrconf, p64tool, chirp-writer y benlink por Bluetooth.Funciones
+ Compilaciones deterministas
+ Validación de capacidades
+ Escrituras con confirmación
+ Zonas, listas de escaneo, grupos RX, contactos
+ Herencia de perfiles
+ extends, zones_only y omit_zones. Un perfil base que no nombra ninguna radio es reutilizable en cualquier radio con capacidad para él. Revisa el resultado combinado con --print-merged-profile.IDs DMR de identidad múltiple
+ Registro de flota y simulación
+ codeplugger-fleet resuelve y valida cada radio e informa de su estado antes de escribir nada.Hechos de canal derivados
+ Artefactos de referencia
+ Extensiones con espacio de nombres
+ extensions.<backend> a nivel de perfil o de asignación, manteniendo el esquema central neutral de radio.Cómo fluyen los datos
+
+flowchart LR
+ rf["📡 rf-survey"] -- "informes de recepción" --> ssrf["🗃 ssrf-lite"]
+ ov["capas · compartidas + privadas"] --> ssrf
+ ssrf -- "datos de RF validados" --> cp["⚙ codeplugger"]
+ prof["👤 perfiles"] --> cp
+ cp -- "exportar: CHIRP CSV · qdmr YAML · P4 TOML · plan benlink" --> files(["archivos de radio"])
+ files --> radios(["📻 radios"])
+ cp -- "escribir: dmrconf · p64tool · chirp-writer · benlink" --> radios
+ click rf "https://chicago-offline.github.io/rf-survey/" _blank
+ click ssrf "https://chicago-offline.github.io/ssrf-lite/" _blank
+ click cp "https://chicago-offline.github.io/codeplugger/" _blank
+ click prof "https://chicago-offline.github.io/chioff-codeplugger-profiles-shared/" _blank
+
+ Ecosistema
+ SSRF-Lite
+ chioff-ssrf-shared
+ chioff-codeplugger-profiles-shared
+ rf-survey
+ qdmr / dmrconf
+ dmrconf para la DM-32.CHIRP
+ Chicago Offline
+ Inicio rápido
+ uv. La instalación trae sus propios datos de RF, así que un caso de uso no necesita nada más; para tus propios perfiles conviene tener ssrf-lite y un repositorio de perfiles clonados al lado.Programar una radio nueva
+
+ # qué es compatible, y qué puede ir en cada radio
+uv run codeplugger radios
+uv run codeplugger use-cases
+
+# compilar, sin tocar el hardware
+uv run codeplugger build \
+ --radio baofeng_bf888s --use-case gmrs
+
+# o los canales de un grupo comunitario, por nombre
+uv run codeplugger build \
+ --radio baofeng_bf888s --profile chioff
+
+# luego escribirlo, con la confirmación del backend
+uv run codeplugger program \
+ --radio baofeng_bf888s --use-case gmrs \
+ --port /dev/cu.usbserial-10 --confirmValidar un perfil
+
+ uv run codeplugger-profile ruta/al/perfil.yml \
+ --ssrf-root ../ssrf-lite/ssrf \
+ --ssrf-root ../chioff-ssrf-shared/ssrfExportar para una radio
+
+ # radios analógicas: importar en CHIRP
+uv run codeplugger-profile perfil.yml \
+ --ssrf-root ../ssrf-lite/ssrf \
+ --output-format chirp-csv > salida.csv
+
+# DM-32: qdmr YAML, luego escribir con dmrconf
+uv run codeplugger-profile perfil.yml \
+ --ssrf-root ../ssrf-lite/ssrf \
+ --output-format qdmr-yaml > codeplug.yamlComprobar toda la flota
+
+ uv run codeplugger-fleet \
+ --instance-registry ../mis-perfiles/instances.yml \
+ --profiles-root ../mis-perfiles/profiles \
+ --ssrf-root ../ssrf-lite/ssrfUn perfil mínimo
+
+ version: "0.1"
+id: "dm32_reference"
+name: "DM-32 reference"
+radio: "baofeng_dm32"
+radio_instance: "dm32_green_01"
+zones:
+ - id: "community"
+ name: "Community"
+ assignments:
+ - "asg_chio_all"
+ - "asg_chio_road"
+ - "asg_chio_repeater""
- f' "
@@ -322,72 +407,84 @@ def render_profile_card(entry: dict) -> str:
f'{esc(label)} '
+ f'{esc(label)} '
f"{esc(blurb)} "
f' '
"{esc(f["sha256"][:16])}…{esc(entry["profile_name"])}
'
f''
''
- " "
+ "".join(rows)
+ "File What it is for SHA-256 "
+ f"{s['file']} {s['purpose']} SHA-256 "
"
{esc(name)}@{esc((rev or 'unknown')[:12])}"
for name, rev in sorted(source["revisions"].items())
)
repo = source.get("repo")
link = (
- f' Profiles ↗'
+ f' {s["profiles_link"]}'
if repo
else ""
)
sections.append(
f'{esc(source.get("description"))}{link}
' + f'{esc(text.get("description"))}{link}
' 'Generated {esc(manifest["generated_at"])}
-{s["generated"]} {esc(manifest["generated_at"])}
+- Prebuilt and validated by CI from public RF data and public profiles. - Download the file for your radio and import it — no clone, no - install. These are build artifacts: they are regenerated from source - on every change, so program your radio from a fresh download rather - than editing one. + {s["lead"]}