Funciones

Qué funciones tiene cada radio y cuáles omite cada compilación.

Versiones de compilación

Full

Every feature the radio supports.

Omite: Nada

Amateur

For amateur radio. Leaves out business features.

Omite: Basic privacy (Motorola / Anytone BP), Motorola TMS text format, ARS registration, LRRP location, Control station mode (boot as network, PC answers data, fixed link), SNMP v2c agent and traps (USB and over the air)

Commercial

For business and public service radios. Leaves out amateur-only features.

Omite: MMDVM hotspot, APRS: AFSK positions, status, messages; DMR positions; KISS TNC

Personalizada

Personaliza tu propia compilación del software con las funciones que quieras, directamente desde el navegador.

Todas las funciones

FunciónDM-32UVDM-1701DM-1801 ProDB25-D PROMD-380MD-9600MD-UV380
Radio and voice
Analog FM receive and transmit FM

analog FM receive and transmit

Includes its children (tones, VOX, APRS, FM VFO)

Requiere: — · Flash: DM-1701 29,296 B · MD-380 28,056 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
CTCSS / DCS encode and decode SUBTONE

CTCSS / DCS encode and decode (needs FM)

MD-380: software decode (ADC) and PWM encode; CTCSS 100.0 Hz works on air both ways (2026-10-19), DCS not yet checked

Requiere: FM · Flash: DM-1701 904 B · MD-380 3,292* B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
DMR Tier II voice (modem, call stack, AMBE FEC, vocoder) DMR

DMR Tier II voice: modem driver, call stack, AMBE FEC, vocoder hosting

Includes every DMR feature and everything on IP over DMR

Requiere: — · Flash: DM-1701 175,856 B · MD-380 134,308 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Basic privacy (Motorola / Anytone BP) DMR_PRIVACY no está en Amateur

basic privacy (Motorola / Anytone BP) on the voice path (needs DMR)

Requiere: DMR · Flash: DM-1701 1,936 B · MD-380 1,992 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Talker alias receive and send DMR_TALKER_ALIAS

talker alias decode and TX of our radio name (needs DMR)

Requiere: DMR · Flash: DM-1701 984 B · MD-380 1,300 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
ETSI GPS Info in the embedded LC DMR_GPS

ETSI GPS Info in the embedded LC (FLCO 8): the caller's position decoded and shown, ours sent from the APRS position source when the radio-wide setting is on (needs DMR)

Requiere: DMR · Flash: DM-1701 2,208 B · MD-380 2,152 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
CSBK signaling: call alert, radio check DMR_SIGNALING

CSBK signaling: call alert, radio check (needs DMR)

Requiere: DMR · Flash: DM-1701 592 B · MD-380 752 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
DMR emergency (alarm, emergency call, hot mic) DMR_EMERGENCY

DMR emergency: the emergency alarm CSBK sent and heard, emergency calls (the LC's emergency service option, hot mic), the receive alert (needs DMR; core/dmr/dmr_emergency.c, docs/spec/dmr-emergency.md)

Requiere: DMR · Flash: DM-1701 3,296 B · MD-380 3,188 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Repeater roaming DMR_ROAMING

DMR repeater roaming: move between the repeater sites of a roaming zone by signal strength (needs DMR; core/radio/roam.c, docs/spec/dmr-roaming.md)

Requiere: DMR · Flash: DM-1701 11,952 B · MD-380 12,380 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
VFO (hand-tuned frequency) VFO

VFO: tune a frequency by hand (off: programmed channels only)

Includes the DMR VFO; VFO and VFO_DMR re-measured 2026-10-17 (DM-1701 plain build, MD-380 with LTO). Copy to VFO (dmr-voice.md 2.2) is on top of that figure, behind the same switch: about 630 B on the DM-1701 and 730 B on the MD-380 (default builds, LTO as each has it), 750 B on the C-SKY radios

Requiere: — · Flash: DM-1701 656 B · MD-380 516 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
FM VFO VFO_FM

analog FM VFO (needs VFO and FM)

Requiere: VFO, FM · Flash: DM-1701 504 B · MD-380 452 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
DMR VFO (color code, slot, talk target typed in; mode change FM / DMR) VFO_DMR

digital DMR VFO: color code, timeslot and talk target typed in, the Mode tile switches it FM / DMR (needs VFO and DMR)

The VFO's mode, color code, slot and talk target are settings of the VFO, kept across power cycles (dmr-voice.md 2.1)

Requiere: VFO, DMR · Flash: DM-1701 144 B · MD-380 104 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Scan, band scan, dual watch, nuisance delete SCAN

channel / zone scan, VFO band scan, dual watch, nuisance delete (docs/spec/radio-features.md)

Requiere: — · Flash: DM-1701 2,576 B · MD-380 3,032 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Dual watch: A and B in any zone or the VFO, PTT on the selected one, its screens, talk back DUAL_WATCH

the dual watch screens: two channels on Home, which one PTT uses and which one a call came in on; the radio core's dual watch across zones and with the VFO, PTT on the selected channel (needs SCAN; docs/ux/dual-watch.md)

Needs SCAN. Without it, only the debug link's dual watch (two channels of one zone). Measured 2026-10-21 on the dual watch branch, default builds

Requiere: SCAN · Flash: DM-1701 10,864 B · MD-380 11,456 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Beeps and alert tones BEEP

beeps and alert tones as PCM through the speaker (needs the board's PCM audio, which some radios have only with DMR)

Requiere: — · Flash: DM-1701 1,552 B · MD-380 1,800 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
FM TX tones: roger beep, 1750 Hz burst FM_TX_TONES

FM transmit tones: roger beep and the 1750 Hz repeater access burst (needs FM)

MD-380: TX tone path not written

Requiere: FM · Flash: DM-1701 568 B

incluidaincluidaincluidaincluidaaún no escrita para esta radioincluidaincluida
DTMF transmit from the keys DTMF

DTMF transmit: keypad digits send touch tones while PTT is held on FM (needs FM; docs/spec/radio-features.md 3.7)

MD-380: TX tone path not written

Requiere: FM · Flash: DM-1701 920 B

incluidaincluidaincluidaincluidaaún no escrita para esta radioincluidaincluida
FM VOX VOX

FM VOX: voice-operated transmit from the microphone level (needs FM; unverified on the bench)

Requiere: FM · Flash: DM-1701 496 B · MD-380 1,064 B

aún no escrita para esta radioincluidaincluidaaún no escrita para esta radioincluidaincluidaincluida
Frequency trim, Settings > Advanced REF_TRIM

reference oscillator trim: Settings > Advanced > Freq trim moves receive and transmit together (needs the board's hal_radio_t.ref_trim; docs/spec/radio-features.md 6.1)

Figures from tools/ci.sh (2026-10-30); the hook on each radio, the page and the setting

Requiere: — · Flash: DM-1701 2,156 B · MD-380 2,232 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Receiver battery saver BATTERY_SAVE

receiver battery saving: FM receiver duty cycling while idle (needs FM)

Requiere: FM · Flash: DM-1701 296 B · MD-380 740 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Vibration alerts (Settings > Sound > Vibrate) VIBRATE

vibration alerts on the board's motor (hal_power_t.vibrate) for messages, call alerts, private calls and emergencies, Settings > Sound > Vibrate (core/radio/vibe.c, docs/spec/radio-features.md 4.1). On for radios with a motor (their config.mk); a board without one shows the setting dimmed

Needs a vibration motor (hal_power_t.vibrate): none of these radios has one RadioFoundry drives. On for the DM-1801 Pro. Measured 2026-10-16 with CONFIG_SNMP=n; 236 B with LTO

Requiere: — · Flash: DM-1701 520* B

omitidano disponible en esta radioincluidano disponible en esta radiono disponible en esta radiono disponible en esta radiono disponible en esta radio
GPS receiver: the module driver and its NMEA input (Settings > Location > GPS) GPS

the GPS receiver: the board's module driver and its NMEA parsing (drivers/gps, platform/*/gps*, CAP_GPS). Off, the radio has no GPS: DMR_GPS, LRRP and APRS keep a fixed position and answer "no fix". Off where the radio has none

Needs a GPS receiver. Off, DMR GPS, LRRP and APRS keep the fixed position and report no fix. MD-380 measured 2026-10-22 (LTO, 58f2cebe). The DM-1701 has none from the factory but listens for an owner-fitted one (1,308 B, LTO)

Requiere: — · Flash: MD-380 1,196 B

incluidaincluidano disponible en esta radioincluidaincluidaincluidaincluida
Air band AM receive (108-137 MHz) AM_RX

air band AM receive: FM channels and the VFO in 108-137 MHz are received in AM, receive only, on radios whose receiver does AM (CAP_AM_RX; needs FM; docs/spec/airband-and-broadcast.md). Off where the receiver can't

Needs a receiver that does AM; DM-32 board glue not written yet, so nothing runs

Requiere: FM · Flash: DM-1701 408* B

incluidano disponible en esta radioincluidano disponible en esta radiono disponible en esta radiono disponible en esta radiono disponible en esta radio
Broadcast FM receiver BCAST_FM

broadcast FM receive: FM channels and the VFO in the broadcast receiver's range play on that second receiver chip, receive only (board.bcast, CAP_BCAST_FM; docs/spec/airband-and-broadcast.md). Off where there is none

Needs a second receiver chip (DM-32's RDA5807M); glue not written yet

Requiere: — · Flash: DM-1701 ~0* B

incluidano disponible en esta radioincluidaaún no escrita para esta radiono disponible en esta radiono disponible en esta radiono disponible en esta radio
Key assignment (Settings > Keys, codeplug) KEY_ASSIGN

key assignment: Settings > Keys and the codeplug's quick-key slots say what the board's programmable keys do (core/input/keyassign.c, docs/spec/ui.md 3.1)

Up to 9 keys. Measured 2026-10-24

Requiere: — · Flash: DM-1701 2,120 B · MD-380 2,188 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Channels list: every channel by number, a channel's settings (hub 5) CHANNEL_LIST

the hub's Channels list: every codeplug channel by number, and a channel's settings (read only; core/ui/ui_menus.c, docs/spec/ui.md 2)

Requiere: — · Flash: DM-1701 1,536 B · MD-380 2,140 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Channel editor: edit a channel, New channel from current settings, text entry CHANNEL_EDIT

editing a channel on the radio, New channel from current settings, keypad text entry (docs/spec/ui.md 2.1): with the Channels list

Needs CHANNEL_LIST. Without it a channel's settings are read only. Measured 2026-10-17

Requiere: CHANNEL_LIST · Flash: DM-1701 4,656 B · MD-380 4,252 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Zone editor: move, add, copy and remove channels in a zone; rename, copy and delete a zone ZONE_EDIT

the zone editor in a zone's list: add, move, copy here, remove channels; rename, copy, delete zones (docs/spec/ui.md 2.2): with the channel editor

Needs CHANNEL_EDIT. Measured 2026-10-24 on the default builds, LTO as each has it; also about 1.3 KB of RAM

Requiere: CHANNEL_EDIT · Flash: DM-1701 6,580 B · MD-380 6,928 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Contact editor: a new contact from Find or a call's actions (name, ID, type, timeslot) CONTACT_EDIT

the contact editor: a new contact from Find, a call's actions or a typed number, its name, ID, type and timeslot (docs/spec/ui.md 2.4): with the channel editor (its text entry) and DMR

Needs CHANNEL_EDIT and DMR. Measured 2026-10-30 on the default builds

Requiere: CHANNEL_EDIT, DMR · Flash: DM-1701 1,580 B · MD-380 1,580 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Volume bar when a knob the MCU reads turns (#354) VOLUME_BAR

the volume bar over the screen when a knob the MCU reads turns (docs/spec/radio-features.md 4.2)

Measured 2026-11-08 on the default builds; shows only on a radio with such a knob. Off, the volume screen keeps the segment drawing it now shares (about 90 bytes)

Requiere: — · Flash: DM-1701 496 B · MD-380 428 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
DMR data
Text messages (ETSI IP text by default) DMR_SMS

DMR text messages (SMS; needs DMR): ETSI IP text and ETSI defined short data, sent and received (docs/spec/dmr-data.md 5)

Includes the TMS format. Individual ETSI IP texts go confirmed ("Delivered to")

Requiere: DMR · Flash: DM-1701 2,640 B · MD-380 5,072 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Motorola TMS text format DMR_TMS no está en Amateur

Motorola TMS format support for text messages: send, receive, the TMS ACK (needs DMR_SMS; docs/spec/dmr-data.md 5.1)

Optional format next to ETSI IP text

Requiere: DMR_SMS · Flash: DM-1701 784 B · MD-380 740 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
ARS registration DMR_ARS no está en Amateur

ARS registration with a presence server (needs DMR; docs/spec/dmr-data.md)

Requiere: DMR · Flash: DM-1701 1,112 B · MD-380 1,324 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
LRRP location DMR_LRRP no está en Amateur

LRRP location request / response (needs DMR; uses GPS where the board has it, else answers "no fix")

Requiere: DMR · Flash: DM-1701 8,548 B · MD-380 2,048 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Zone and channel sharing: send a zone or a channel, import an offered one ZONE_SHARE

zone and channel sharing over DMR data: "Share zone to..." and offers of zones from other radios, imported only when the user accepts (needs DMR; core/dmr/zoneShare*.c, docs/spec/zone-share.md)

Includes its screens and the import; about 4 KB of RAM. Received shares are offered by default, imported only when the user says so (zone-share.md). Measured 2026-10-24 with LTO, on the zone share branch

Requiere: DMR · Flash: DM-1701 12,240 B · MD-380 12,388 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Compressed UDP/IP headers on transmit (SAP 3) DMR_UDP_COMPRESS

compressed UDP/IPv4 headers on transmit (SAP 3, ETSI TS 102 361-3 5.6 / 7.2): UDP packets whose header fits the compression rules go with a 5 to 9 octet header instead of 28 (needs DMR; docs/spec/dmr-data.md 11)

Auto: not for ports 4000-4099 or ETSI IP text

Requiere: DMR · Flash: DM-1701 408 B · MD-380 356 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Single frequency repeater: MMDVM SFR, and the standalone SFR (experimental) SFR

single frequency repeater (needs DMR): the MMDVM hotspot's SFR mode (core/hotspot/hotspotSfr.c, core/dmr/sfrRunner.c) and the standalone repeater and user roles of a channel (core/radio/radio_sfr.c, docs/spec/sfr.md 4)

MD-380: HR_C5000 lacks what the SFR glue uses

Requiere: DMR · Flash: DM-1701 6,884 B

incluidaincluidaincluidaincluidano disponible en esta radioincluidaincluida
Experimental: SFR user receive "dual-path RX": a voice frame whose FEC failed comes from the other copy SFR_DUALPATH_RX

SFR user receive mode "dual-path RX": a voice frame whose FEC failed is taken from the other copy (needs SFR)

Needs SFR. DM-1701 figure with LTO (2026-10-22)

Requiere: SFR · Flash: DM-1701 696 B

incluidaincluidaincluidaincluidano disponible en esta radioincluidaincluida
Experimental: standalone SFR repeater's periodic CW ID (callsign in Morse, FM) SFR_CWID

the standalone SFR repeater's periodic CW ID: its callsign in Morse, in FM on the channel (needs SFR)

Needs SFR. DM-1701 figure with LTO (2026-10-22)

Requiere: SFR · Flash: DM-1701 900 B

incluidaincluidaincluidaincluidano disponible en esta radioincluidaincluida
APRS: AFSK positions, status, messages; DMR positions; KISS TNC APRS no está en Commercial

APRS (core/aprs, docs/spec/aprs.md): position, status and message packets as AX.25 / 1200 baud AFSK on FM, positions over DMR (LRRP / UDT), a KISS TNC on the host port. Transmit stays off until the user turns it on (needs FM)

Includes APRS receive, KISS over TCP and APRS-IS where built. MD-380: AFSK TX needs the tone path (not written), DMR positions work

Requiere: FM · Flash: DM-1701 26,568 B · MD-380 26,628 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
APRS receive: demodulator, station list, digipeater APRS_RX no está en Commercial

APRS receive: the AFSK demodulator, station list, messages to us, digipeater (needs APRS; useful only on boards whose board.afsk can sample received audio)

DM-1701: FM receive audio on the I2S stream, squelch gated (aprs 5.3). MD-380: not written

Requiere: APRS · Flash: DM-1701 8,892 B

incluidaincluidaincluidaaún no escrita para esta radioaún no escrita para esta radioincluidaincluida
APRS iGate rules (with tools/aprs_gate.py) APRS_IGATE no está en Commercial

APRS iGate rules, RF <-> APRS-IS through the host helper tools/aprs_gate.py (needs APRS_RX and HOSTLINK)

Needs APRS receive. DM-1701: off by default

Requiere: APRS_RX, HOSTLINK · Flash: DM-1701 1,820* B

incluidaomitidaincluidaaún no escrita para esta radioaún no escrita para esta radioincluidaomitida
GPS screen: sky plot, signal bars, grid locator (Tools > Position) GPS_SKY no está en Commercial

the GPS status screen: satellites on a sky plot and signal bars, fix quality, grid locator (core/aprs/nmea_sky.c, core/ui/ui_gps.c, docs/spec/aprs.md 7.1). Needs GPS and APRS; off, Tools > Position is a page of text

Needs GPS and APRS. 176 B of RAM. MD-380 measured 2026-10-29 (LTO)

Requiere: GPS, APRS · Flash: MD-380 5,244 B

incluidaincluidano disponible en esta radioincluidaincluidaincluidaincluida
Network (USB network adapter and IP over DMR)
IP over DMR gateway DMR_IP_GATEWAY

IP over DMR packet data through a network link to the host: the USB network adapter or PPP on the serial host port (needs DMR and USB_NETWORK or NET_PPP; core/hostlink/hostlink_net.c)

Includes the radio's own services below

Requiere: DMR, (USB_NETWORK | NET_PPP) · Flash: DM-1701 44,128 B · MD-380 43,220 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Minimal TCP NET_TCP

a minimal TCP for the radio's own services on the USB network link, never over RF (needs DMR_IP_GATEWAY, whose IPv4 layer it uses; core/net, docs/spec/tcp-services.md)

Includes KISS, HTTP, rigctld, APRS-IS. About 4.5 KB RAM

Requiere: DMR, DMR_IP_GATEWAY · Flash: DM-1701 16,240 B · MD-380 15,656 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
KISS over TCP, port 8001 NET_KISS no está en Commercial

KISS over TCP on port 8001, bridged to the APRS KISS TNC (needs NET_TCP and APRS; core/net/kiss_tcp.c)

Requiere: DMR, NET_TCP, APRS · Flash: DM-1701 700 B · MD-380 752 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
HTTP status page and JSON, port 80 NET_HTTP

the HTTP status server on port 80: a page, JSON status and view sections, the screen (needs NET_TCP; core/net/http.c)

Requiere: DMR, NET_TCP · Flash: DM-1701 4,796 B · MD-380 4,860 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
HTTP static files stored and served gzip compressed NET_HTTP_GZIP

the status server's static files (core/net/http_assets) stored gzip compressed at build time and served with Content-Encoding: gzip; off: stored and served as they are (needs NET_HTTP; tools/gen_http_assets.py)

Negative: saves flash, nearly all of it on web control's files. MD-380: web control follows this switch (hardware-md380.md 19)

Requiere: DMR, NET_HTTP · Flash: DM-1701 -19,456 B · MD-380 -18,572 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Web control: the front panel page, keys, status and receive audio over /ws NET_WEBCTL

web control on the status server: /ws (WebSocket) for the radio's front panel page, keys, status and receive audio (needs NET_HTTP; core/net/ws.c, docs/spec/tcp-services.md 5)

The page and the radio's drawing included (about 6 KB gzip compressed); 1 KB RAM (tcp-services.md 5.1)

Requiere: NET_HTTP · Flash: DM-1701 9,620 B · MD-380 9,332 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
rigctld, port 4532 NET_RIGCTL

Hamlib rigctld on port 4532: frequency, mode, PTT, S meter for loggers and SDR programs (needs NET_TCP; core/net/rigctld.c)

Requiere: DMR, NET_TCP · Flash: DM-1701 3,852 B · MD-380 3,728 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
APRS-IS client NET_APRSIS no está en Commercial

the radio's own APRS-IS client through the host: our beacons and the iGate's lines, off until a server is set (needs NET_TCP and APRS; core/net/aprsis.c)

Needs NAT on the host

Requiere: DMR, NET_TCP, APRS · Flash: DM-1701 2,856 B · MD-380 2,720 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Audio linking (USRP over UDP, port 34001) NET_USRP

audio linking for AllStarLink, DVSwitch and bridges (USRP voice over UDP, port 34001): the radio sends what it receives, with the squelch as keyup, and transmits what the computer sends. DMR works both ways on every radio; FM needs the radio's audio paths to the processor, which radios have both ways, DMR only or FM one way (docs/feature-matrix.md) (needs DMR_IP_GATEWAY; core/usbaudio, docs/spec/usb-audio.md)

DM-1701: DMR and FM both ways. MD-380: DMR only (FM audio doesn't reach the processor yet). DM-32UV: DMR only until its board code has the FM audio paths

Requiere: DMR, DMR_IP_GATEWAY · Flash: DM-1701 4,552 B · MD-380 4,888 B

incluidaincluidaincluidaaún no escrita para esta radioincluidaincluidaincluida
mDNS / DNS-SD (rfoundry-<id>.local) MDNS

mDNS / DNS-SD responder on the USB network link: <host>.local and the radio's services (needs DMR_IP_GATEWAY, the IP stack it runs on; core/net/mdns.c, docs/spec/mdns.md)

Requiere: DMR, DMR_IP_GATEWAY · Flash: DM-1701 6,744 B · MD-380 6,504 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
TFTP codeplug read / write TFTP

TFTP server on the USB network link: codeplug.bin read and (staged, checked) written, info.txt (needs DMR_IP_GATEWAY; core/net/tftp.c, docs/spec/tftp.md)

Without the ID database below

Requiere: DMR, DMR_IP_GATEWAY · Flash: DM-1701 6,356 B · MD-380 6,412 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
DMR ID database over TFTP (iddb.bin, combined codeplug.bin) TFTP_IDDB

DMR ID database over TFTP: iddb.bin read and written in place, and the database part of a combined codeplug.bin (needs TFTP; core/net/tftp_iddb.c, docs/spec/tftp.md 5)

Follows TFTP

Requiere: TFTP · Flash: DM-1701 2,184 B · MD-380 2,264 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Compact DMR ID database (format C) read beside format N IDDB_COMPACT

the compact DMR ID database (format C): dictionary-coded names, IDs as gaps, pages with room to grow, read beside format N (needs DMR; core/codeplug/dmr_iddb.c, docs/spec/iddb-compact.md)

Follows DMR (iddb-compact.md)

Requiere: DMR · Flash: DM-1701 988 B · MD-380 992 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Control station mode (boot as network, PC answers data, fixed link) DMR_CONTROL_STATION no está en Amateur

control station mode for PC dispatch software on the USB network link: the PC as the endpoint of the radio's own data ports (passthrough) and a fixed private link address pair (needs DMR_IP_GATEWAY; docs/spec/usb-network.md 5)

Requiere: DMR_IP_GATEWAY · Flash: DM-1701 288 B · MD-380 484 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
SNMP v2c agent and traps (USB and over the air) SNMP no está en Amateur

SNMP agent (SNMPv2c) on UDP 161 of the radio's address, over the USB network and over the air, with notifications (needs DMR_IP_GATEWAY; core/snmp, docs/spec/snmp.md)

Requiere: DMR_IP_GATEWAY · Flash: DM-1701 8,460 B · MD-380 8,036 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
USB network adapter (CDC-NCM) USB_NETWORK

USB network adapter personality (CDC-NCM, switched with the serial one at run time; needs USB)

Includes everything below

Requiere: USB, HOSTLINK · Flash: DM-1701 48,344 B · MD-380 47,468 B

no disponible en esta radioincluidano disponible en esta radiono disponible en esta radioincluidaincluidaincluida
PPP on the serial host port (IPv4 into the gateway) NET_PPP

IPv4 over PPP on the serial host port, into the IP gateway and its services: for radios whose only host link is a USB-serial cable, and a fallback on the USB serial port (needs HOSTLINK and DMR_IP_GATEWAY, which it turns on by default; core/net/ppp.c, core/hostlink/hostlink_ppp.c, docs/spec/ppp.md). On in the config.mk of a radio whose only IP link it is; off on the USB radios (docs/feature-matrix.md)

Interop tested with pppd; checked on the DB25-D PRO and the DM-1801 Pro (docs/spec/ppp.md 8). Fits neither default image as it is when measured (DM-1701 688 B short, MD-380 1,588 B short of its 275 KB then; DM-1701 with LTO: +3,948, fits). DM-32: its only IP link, on by default with the gateway and every service (Whole images, DM-32UV)

Requiere: HOSTLINK, DMR_IP_GATEWAY · Flash: DM-1701 4,368* B · MD-380 3,816* B

incluidaomitidaincluidaincluidaomitidaomitidaomitida
Host link and USB
Task stacks in the debug link view TASK_STACKS

every task's least free stack in the debug link's tasks view: the kernel's task create / delete trace hooks keep a table of the tasks (core/app/task_stack.c, docs/spec/debuglink.md 3.7; needs DEBUGLINK). About 0.6 KB

Each task's least free stack, the tasks view section (debuglink 3.7)

Requiere: DEBUGLINK · Flash: DM-1701 536 B · MD-380 560 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
USB device USB

USB device (CDC serial)

DM-32 has no USB (host link on the programming cable's UART). Includes everything on USB

Requiere: — · Flash: DM-1701 127,300 B · MD-380 87,848 B

no disponible en esta radioincluidano disponible en esta radiono disponible en esta radioincluidaincluidaincluida
MMDVM hotspot HOTSPOT no está en Commercial

MMDVM modem / hotspot mode over the host port (needs DMR and HOSTLINK)

Includes split duplex and MMDVM SFR where built. MD-380: size estimated

Requiere: DMR, HOSTLINK · Flash: DM-1701 34,196 B · MD-380 ~12,400 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Split duplex repeater (two radios, one duplex modem) HOTSPOT_SPLIT no está en Commercial

split duplex repeater: two radios as one duplex MMDVM modem through the hotspot's vendor command 0xD6 (needs HOTSPOT; core/hotspot/hotspotSplit.c, core/dmr/bsOutbound.c, core/dmr/slotEpoch.c, docs/spec/split-duplex.md)

MD-380: HR_C6000-only glue. DM-1701, DM-32UV, DM-1801 Pro: each half checked alone on the SDR bench; one pair (DM-1801 Pro TX, DM-32UV RX) with a subscriber: 29 of 31 calls on the right slot

Requiere: HOTSPOT · Flash: DM-1701 12,584 B

incluidaincluidaincluidaaún no escrita para esta radioaún no escrita para esta radioincluidaincluida
Open-firmware CPS protocol (qdmr) CPS_OPENFW

the open-firmware CPS protocol shim on the host port, so qdmr and the open-firmware CPS can read and write the codeplug (docs/spec/open-firmware-cps.md; needs HOSTLINK)

Requiere: HOSTLINK · Flash: DM-1701 3,064 B · MD-380 3,008 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Fast codeplug protocol (debug link CODEPLUG) CPS_FAST

the fast codeplug protocol on the debug link's framing: blank blocks skipped, CRC-32 compare so only changed blocks move, LZ4 both ways, staged writes with a power-cut safe commit (docs/spec/cps-fast.md; needs CPS_OPENFW, and DEBUGLINK or STUB_ENTRY, whose own listener carries it without the debug link)

Changed 4 KB blocks only, LZ4 both ways, staged commit (cps-fast.md). DM-1701 figure with LTO (2026-10-18)

Requiere: CPS_OPENFW, (DEBUGLINK | STUB_ENTRY) · Flash: DM-1701 3,732 B · MD-380 3,948* B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Loader hand-over (stub entry, command 0x1A) STUB_ENTRY

runtime RAM-monitor entry: command 0x1A on the host port loads the host's flash-access stub into free RAM and jumps to it without a power cycle, so updates need no key combo at power-on (the web flasher, stub/stubtool.py, rfoundry; core/stubentry, docs/spec/stub-entry.md). Its own feature: with the debug link off it answers on its own small listener (PING, VERSION, STUB). Needs HOSTLINK (the task that owns the port) and a platform with hal_system_t.enter_stub: the HR_C7000, and the STM32F4 with an 8 KB staging buffer (docs/spec/stub-stm32f4.md). On wherever the host link is; a board leaves it off in its config.mk only for a stated reason

Updates and backups over the radio's own link without the bootloader key press: the web flasher and stub/stubtool.py. On by default on every radio, with or without the debug link (stub-entry.md); on the STM32 radios a RAM flash stub that also takes 8 KB of RAM (stub-stm32f4.md) (the DM-1701's RAM is 95 % used with it on)

Requiere: HOSTLINK · Flash: DM-1701 768* B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Crash log CRASH_LOG

the crash log: a CPU fault, a task stack overflow, running out of heap or a failed assertion keeps a record (registers, fault status, task, stack words) where a reset doesn't clear it and restarts the radio; the next start shows it (core/crash, docs/spec/crash-log.md). Off: a crash stops the radio until a power cycle, as before. Needs nothing else

A fault, stack overflow, heap exhaustion or failed assertion keeps a record across the restart; the debug link shows it (crash-log.md)

Requiere: — · Flash: DM-1701 1,572 B · MD-380 1,756 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Crash log screen CRASH_SCREEN

the crash log's screen: Settings > Advanced > Crash log, the record's summary and Clear (needs CRASH_LOG). Off, the debug link still shows the record

Settings > Advanced > Crash log: the record's summary and Clear

Requiere: CRASH_LOG · Flash: DM-1701 1,024 B · MD-380 1,408* B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Crash report over DMR CRASH_REPORT

the crash report: the crash log's record, packed (76-124 bytes), as one UDP datagram over DMR packet data to a codeplug contact, from the Crash log screen or after the restart (off / ask / automatic; docs/spec/crash-log.md 5) (needs CRASH_SCREEN and DMR)

Sends the crash record as one UDP datagram to a codeplug contact, from the menu or after the restart (Off, Ask, Auto) (crash-log.md 5). Needs the screen

Requiere: CRASH_SCREEN, DMR · Flash: DM-1701 1,440 B · MD-380 1,712* B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Hardware watchdog WATCHDOG

the hardware watchdog: started in main(), fed by the idle task, so a hang or a starved system of a few seconds resets the chip (the IWDG on the STM32F4, the SoC's watchdog on the HR_C7000; docs/spec/watchdog.md). With the debug link it also has a bench test (command 0x1D). Off: no watchdog runs, as before. Needs nothing else

Fed by the idle task; a hang or a starved system resets the radio. Timeout about 5 s on the STM32 radios, 4 s on the HR_C7000 radios (watchdog.md)

Requiere: — · Flash: DM-1701 932 B · MD-380 856 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Fault trace on the host UART FAULT_TRACE

the fault trace: a CPU fault prints its registers on the host UART, three framed lines a second apart, before the restart (core/crash/crash_trace.c, tools/rfoundry_fault_trace.py; docs/spec/crash-log.md 2.3). Only where the host port is a UART the fault handler can drive polled: the HR_C7000 radios (the STM32 radios' config.mk turn it off: USB only). Off: straight to the record and the restart. Needs nothing else

A CPU fault's registers in three framed lines before the restart, about 600 B (crash-log.md 2.3). The STM32 radios' host port is USB

Requiere: — · Flash: —

incluidano disponible en esta radioincluidaincluidano disponible en esta radiono disponible en esta radiono disponible en esta radio
User interface
Diagnostics page DIAG

the diagnostics page

Requiere: — · Flash: DM-1701 3,752 B · MD-380 3,532 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
16x32 font FONT_XL

16x32 font, only useful on 240 px and wider displays

Only useful at 240 px and wider (MD-380 is 160 px). Anti-aliased on the DM-32 (7.4 KB of glyphs)

Requiere: — · Flash: DM-1701 6,352* B

incluidano disponible en esta radiono disponible en esta radiono disponible en esta radiono disponible en esta radiono disponible en esta radiono disponible en esta radio
Anti-aliased fonts FONT_AA

anti-aliased fonts from 6x12 up (JetBrains Mono Bold, 2 bits a pixel) instead of the bitmap ones: smooth text on color panels. About 5 KB more flash, 12 KB more with FONT_XL; a mono panel draws them as plain ink and gains nothing. On a 4 bpp color panel the edge grays share the 16 palette entries with the screen's colors: some font sizes or colors can be slightly harder to read (docs/spec/ui.md 5)

Smooth text on color panels (measured 2026-10-17); the DM-32's image grew 9.5 KB with it and FONT_XL

Requiere: — · Flash: DM-1701 3,004* B

incluidaomitidaomitidaomitidaomitidano disponible en esta radioomitida
Larger text FONT_BIG

larger text on 240 px and wider color panels: lists, labels and the status strip in a 9x18 font instead of 8x16 (12% larger, 24 characters a line on a 240 px panel instead of 27). About 3 KB more flash (needs FONT_AA)

9x18 lists and labels on 240 px color panels (needs FONT_AA); 3,588 B on the DM-32 (measured 2026-10-17)

Requiere: FONT_AA · Flash: —

incluidaomitidaomitidaomitidaomitidano disponible en esta radioomitida
Spanish on the radio LANG_ES

Spanish on the radio (Settings > Display > Language; core/ui/lang/es.po, docs/dev/translating.md). About 28 KB with the lookup and the accented letters of every font (7.5 KB), which the first language brings; each further one adds its text only (about 17 KB)

The first language brings the lookup and the accented letters of every font (about 7.5 KB); the rest is its text. Measured 2026-10-31

Requiere: — · Flash: DM-1701 28,456 B · MD-380 28,348 B

incluidaincluidaincluidaincluidaincluidaomitidaincluida
Italian on the radio LANG_IT

Italian on the radio (core/ui/lang/it.po): off by default, listed dimmed; the web flasher offers it to Italian browsers. About 17 KB with Spanish on

Off by default; measured with Spanish on (its text, and the hashes of strings Spanish leaves untranslated). Alone it costs about as much as Spanish

Requiere: — · Flash: DM-1701 17,304 B · MD-380 17,304 B

omitidaomitidaomitidaomitidaomitidaomitidaomitida
Start in Spanish LANG_DEFAULT_ES

the language the radio starts in, until the user picks one in Settings > Display > Language: one switch per language, at most one on (with more, the first listed wins), off = English. Needs that language's switch. No flash cost

The language the radio starts in until the user picks one (needs LANG_ES); the web flasher sets it from its Radio language choice

Requiere: LANG_ES · Flash: DM-1701 0 B · MD-380 0 B

omitidaomitidaomitidaomitidaomitidaomitidaomitida
Start in Italian LANG_DEFAULT_IT

As LANG_DEFAULT_ES (needs LANG_IT)

Requiere: LANG_IT · Flash: DM-1701 0 B · MD-380 0 B

omitidaomitidaomitidaomitidaomitidaomitidaomitida
Color screen settings (theme, highlight color, filled status bar) UI_COLOR

color screen settings: theme, highlight color, filled status bar (off: the dark theme only; for radios whose only screen is monochrome)

Off on the DM-1801 Pro (monochrome screen; 628 B there). Measured 2026-10-17; DM-1701 with LTO 612 B

Requiere: — · Flash: DM-1701 672 B · MD-380 608 B

incluidaincluidano disponible en esta radioincluidaincluidano disponible en esta radioincluida
Settings menu on the radio UI_SETTINGS

the Settings menu on the radio (off: settings keep their stored values and are set with qdmr; docs/spec/ui.md)

Requiere: — · Flash: DM-1701 5,304 B · MD-380 5,640 B

incluidaincluidaincluidaincluidaincluidaincluidaincluida
Storage
Settings and codeplug storage on SPI NAND NAND_STORAGE

the core's storage (settings, codeplug) on SPI NAND: the NOR-like 4 KB sector layer over the board's own block range (drivers/flash/nand_sectors, docs/spec/nand-sectors.md). On in the config.mk of radios whose data flash is SPI NAND (docs/feature-matrix.md); off, such a radio runs on the default settings and stores nothing. Radios with SPI NOR don't use it

For radios whose data flash is SPI NAND: on for the DB25-D (about 6.6 KB flash, 1.5 KB RAM), not in these columns. These radios have SPI NOR and don't use it (nand-sectors)

Requiere: — · Flash: —

no disponible en esta radiono disponible en esta radiono disponible en esta radioincluidano disponible en esta radiono disponible en esta radiono disponible en esta radio

● incluida · ○ omitida · … aún no escrita para esta radio · ✕ no disponible en esta radio