📻Ricevi e trasmettiReceive and transmit
Collegamento a BrandMeister, audio in entrambe le direzioni, cambio talkgroup con un tocco o con le rotelle.Link to BrandMeister, audio both ways, talkgroup change with a tap or the wheel keys.
StupiDMR trasforma un telefono Android qualsiasi, o una economica “poc radio”, in un terminale DMR: ti colleghi via Internet a BrandMeister, ascolti i talkgroup e trasmetti con il PTT. Niente hotspot, niente hardware radio. StupiDMR turns any Android phone, or a cheap “PoC radio”, into a DMR terminal: connect over the Internet to BrandMeister, listen to talkgroups and transmit with the PTT. No hotspot, no radio hardware.
Il DMR è un modo digitale di fare radio. Di solito serve una radio o un hotspot; StupiDMR fa tutto con il telefono: parla con il server come farebbe un hotspot, riceve le chiamate del talkgroup che scegli e trasmette con il microfono.
È pensata per le poc radio economiche (schermo piccolo, tasti fisici, vecchio Android) e per i telefoni che non servono più. Funziona da Android 5.0 fino ai telefoni più recenti (provata su Android 16).
DMR is a digital way of doing radio. You usually need a radio or a hotspot; StupiDMR does everything with the phone: it talks to the server like a hotspot would, receives calls of the talkgroup you choose and transmits with the microphone.
It is made for cheap PoC radios (small screen, physical keys, old Android) and for phones you no longer use. It works from Android 5.0 up to the most recent phones (tried on Android 16).
I telefoni e le poc radio con Android vecchio hanno poca potenza, e le app DMR esistenti o richiedono un sistema recente (per esempio DroidStar usa Qt 6.5, incompatibile con Android 5.1) o sono a sorgente chiuso.
StupiDMR vuole essere semplice (poche pagine, riquadri grandi), leggera (Java puro, compatibile con Android 5.0) e libera: è scritta da zero dalle specifiche pubbliche del protocollo, con licenza GPLv3 e un’eccezione di riuso.
Phones and PoC radios running old Android have little power, and existing DMR apps either need a recent system (for example DroidStar uses Qt 6.5, incompatible with Android 5.1) or are closed source.
StupiDMR aims to be simple (few pages, big tiles), light (plain Java, works on Android 5.0) and free: written from scratch from the public protocol specifications, under GPLv3 with a reuse exception.
Ci si muove con uno swipe o con i tasti sinistra/destra della radio. Stile “Metro”: colori pieni, testi grandi, leggibile anche su uno schermo da 2,4 pollici. (Nomi e nominativi nelle immagini sono di fantasia.)Move with a swipe or the radio’s left/right keys. “Metro” style: solid colours, large text, readable even on a 2.4-inch screen. (Names and callsigns in the pictures are made up.)
Collegamento a BrandMeister, audio in entrambe le direzioni, cambio talkgroup con un tocco o con le rotelle.Link to BrandMeister, audio both ways, talkgroup change with a tap or the wheel keys.
PTT fisico, tasti su/giù, tasto per cambiare pagina, riquadri leggibili su schermi minuscoli.Physical PTT, up/down keys, a key to change page, tiles readable on tiny screens.
Audio dall’altoparlante e dal microfono del dispositivo, oppure su auricolare o vivavoce dell’auto, trattato come una chiamata.Audio on the device’s speaker and microphone, or on a headset or car hands-free, handled like a call.
Resta collegata con lo schermo spento o in un’altra app, con una notifica discreta. Lo schermo può restare sempre acceso.Stays linked with the screen off or in another app, with a discreet notification. The screen can stay always on.
Nominativo, nome, città e Paese da una lista utenti, e il nome del talkgroup dall’elenco BrandMeister (le liste si scaricano con un tocco dalle Impostazioni). Registro degli ultimi 20 passaggi.Callsign, name, city and country from a user list, plus the talkgroup name from the BrandMeister list (the lists are downloaded with one tap in the Settings). Log of the last 20 calls.
L’interfaccia parla la lingua del telefono e si cambia con un tocco. Modalità “solo ascolto” per chi vuole solo ascoltare.The interface follows the phone’s language and changes with one tap. A “listen only” mode for those who just want to listen.
StupiDMR non è sul Play Store (è pensata per Android 5, che il Play Store non accetta): si installa dal file APK. Ci vogliono due minuti.StupiDMR is not on the Play Store (it targets Android 5, which the Play Store does not accept): you install it from the APK file. It takes two minutes.
Dal telefono, tocca “Scarica l’APK” qui sotto. Oppure scaricalo dal computer e copialo sul telefono (cavo, scheda SD, cloud).On the phone, tap “Download the APK” below. Or download it on a computer and copy it to the phone (cable, SD card, cloud).
Apri il file: se Android lo chiede, abilita “Installa app sconosciute” (o “Origini sconosciute”) per il browser o il gestore di file che stai usando. Si fa una volta sola, nelle Impostazioni di Android.Open the file: if Android asks, enable “Install unknown apps” (or “Unknown sources”) for the browser or file manager you are using. It is done once, in Android’s Settings.
Può dire “app non verificata”: succede perché l’app non passa dallo store ed è firmata con una chiave di sviluppo. Scegli “Installa comunque” (su qualche telefono bisogna spegnere per un attimo la scansione di Play Protect).It may say “unverified app”: this happens because the app does not come from the store and is signed with a development key. Choose “Install anyway” (on some phones you must switch the Play Protect scan off for a moment).
Apri StupiDMR e segui il “Primo avvio” qui sotto: server, password, nominativo, DMR ID e vocoder.Open StupiDMR and follow “First start” below: server, password, callsign, DMR ID and vocoder.
Scarica il nuovo APK e installalo sopra quello vecchio: le impostazioni e il vocoder restano.Download the new APK and install it over the old one: settings and the vocoder are kept.
adb install -r StupiDMR-release.apk.
PoC radio without a browser? Connect it to a PC with USB debugging on and use adb install -r StupiDMR-release.apk.
Per trasmettere serve la licenza di radioamatore e un DMR ID personale (7 cifre, si richiede su radioid.net). Su BrandMeister serve un account con la password hotspot (Selfcare → password per gli hotspot).
To transmit you need an amateur radio license and a personal DMR ID (7 digits, requested at radioid.net). On BrandMeister you need an account with the hotspot password (Selfcare → hotspot password).
Pagina Impostazioni → Collegamento: Server DMR (per esempio 2222.master.brandmeister.network:62031, il master italiano), Password, Nominativo, DMR ID e ESSID (da 01 a 99). Se usi due dispositivi con lo stesso DMR ID, dai loro ESSID diversi, altrimenti si scollegano a vicenda. L’app non tenta il collegamento finché server, password, nominativo e DMR ID non sono tutti compilati.Settings page → Connection: DMR server (for example 2222.master.brandmeister.network:62031, the Italian master), Password, Callsign, DMR ID and ESSID (01 to 99). If you use two devices with the same DMR ID, give them different ESSIDs, otherwise they disconnect each other. The app does not try to connect until the server, password, callsign and DMR ID are all filled in.
Senza vocoder l’app si collega ma non ha audio. In Sistema → Plugin vocoder il campo parte già con il link giusto per il tuo telefono (32 o 64 bit): tocca la riga, conferma con OK e aspetta che compaia installato. Dettagli nella sezione Vocoder.Without the vocoder the app connects but has no audio. In System → Vocoder plugin the field already starts with the right link for your phone (32 or 64 bit): tap the row, confirm with OK and wait for installed. Details in the Vocoder section.
In Sistema tocca Lista utenti e Nomi TG BrandMeister: ognuna si scarica quando la tocchi (la lista utenti è grande, meglio con il Wi-Fi) e mostra quante righe contiene e quando è stata aggiornata. Non si aggiornano da sole: ripeti il tocco quando vuoi rinfrescarle.In System tap User list and BrandMeister TG names: each one is downloaded when you tap it (the user list is big, better on Wi-Fi) and shows how many lines it holds and when it was updated. They do not update by themselves: tap again whenever you want to refresh them.
Talkgroup → Lista TG: aggiungi i TG che usi. Se la lista è vuota vale il TG 91.Talkgroup → TG list: add the TGs you use. If the list is empty, TG 91 is used.
Premi Indietro: il riquadro in alto diventa blu e dice Connesso. Sei in rete.Press Back: the top tile turns blue and says Connected. You are online.
Connesso / Disconnesso / RX / TX. Tieni premuto 1 secondo per collegare o scollegare.Connected / Disconnected / RX / TX. Press and hold for 1 second to connect or disconnect.
Tocca il riquadro del TG (o usa su/giù) per passare al successivo della lista. Il nome viene dall’elenco dei TG BrandMeister.Tap the TG tile (or use up/down) to go to the next one in your list. The name comes from the BrandMeister TG list.
Nominativo, nome e, in piccolo, città e Paese. Finito il QSO resta l’ultimo chiamante.Callsign, name and, small, city and country. After the QSO the last caller stays.
Tieni premuto per parlare, oppure scegli “a tocco alternato”. Si può usare un tasto fisico della radio (Impostazioni → PTT → Tasto PTT esterno).Hold to talk, or choose “toggle”. You can use a physical key of the radio (Settings → PTT → External PTT key).
Rilascia da solo il PTT dopo il tempo scelto (predefinito 2 minuti), con un beep.Releases the PTT by itself after the chosen time (default 2 minutes), with a beep.
Con “PTT a schermo: Nascosto” il PTT è disattivato; cambiando TG l’app apre il nuovo talkgroup da sola.With “On-screen PTT: Hidden” the PTT is disabled; when you change TG the app opens the new talkgroup by itself.
Tocca la riga: si colora di blu e compaiono due pulsanti < e >. Premili (o usa le frecce su/giù) per cambiare il valore: tenendoli premuti il valore continua a cambiare, ogni 0,2 secondi. Tocca il centro della riga per deselezionarla. Non si aprono finestre: tutto avviene sul posto.
Tap the row: it turns blue and two buttons < and > appear. Press them (or use the up/down arrows) to change the value: hold them and the value keeps changing, every 0.2 seconds. Tap the middle of the row to deselect it. No pop-ups: everything happens in place.
Tre pagine: Impostazioni, Principale (di partenza) e Lista dei passaggi. Swipe orizzontale o tasti sinistra/destra; nelle impostazioni puoi scegliere un tasto che cambia pagina. Indietro dalle impostazioni torna alla principale; dalle altre pagine chiede se chiudere l’app.
Three pages: Settings, Main (the start page) and the Call list. Horizontal swipe or left/right keys; in the settings you can pick a key that changes page. Back from the settings goes to the main page; from the other pages it asks whether to close the app.
| Valore di “Audio”“Audio” value | Cosa sentiWhat you hear | Da dove entra la voceWhere your voice comes in |
|---|---|---|
| Radio (SPK eand MIC) | Altoparlante del telefono o della poc radio, anche se un auricolare è collegatoSpeaker of the phone or PoC radio, even if a headset is connected | Microfono del telefono o della poc radioMicrophone of the phone or PoC radio |
| Bluetooth (SPK eand MIC) | Auricolare o vivavoce dell’auto, come in una telefonata (la radio dell’auto si ferma)Headset or car hands-free, like a phone call (the car stereo stops) | Microfono dell’auricolare o dell’autoMicrophone of the headset or car |
Con il Bluetooth il canale si apre quando c’è un passaggio e si libera dopo 10 secondi senza QSO, così l’autoradio riparte da sola. Se nessun auricolare è collegato, l’audio resta sulla radio. I guadagni (MIC e SPK) sono separati per Radio e Bluetooth.
With Bluetooth the channel opens when there is a call and is released after 10 seconds without QSOs, so the car stereo resumes by itself. If no headset is connected, the audio stays on the radio. The gains (MIC and SPK) are separate for Radio and Bluetooth.
Il DMR trasmette la voce compressa con il codec AMBE+2, coperto da brevetti. Il vocoder è il pezzo che trasforma l’audio del microfono in questi dati (codifica) e i dati ricevuti in audio (decodifica). Per questo il modulo non fa parte dell’APK: è un file a parte, un plugin nativo che l’app carica quando parte, con la stessa interfaccia dei plugin di DroidStar.
L’app non lo scarica da sola: lo installi tu una volta, dalle Impostazioni. Il campo Plugin vocoder parte con un link predefinito scelto in base al telefono (32 o 64 bit), che punta al file messo a disposizione su questo sito. Puoi sostituirlo con il link https di un altro plugin compatibile.
I plugin proposti qui sono costruiti da un progetto che unisce mbelib (decodifica, licenza ISC) e un codificatore IMBE/AMBE (imbe_vocoder, GPL-3.0-or-later). Ognuno verifica licenze e brevetti nel proprio paese prima di usarli.
DMR sends voice compressed with the AMBE+2 codec, which is covered by patents. The vocoder is the piece that turns microphone audio into this data (encoding) and received data back into audio (decoding). That is why the module is not part of the APK: it is a separate file, a native plugin that the app loads at start, with the same interface as DroidStar plugins.
The app does not download it by itself: you install it once, from the Settings. The Vocoder plugin field starts with a default link chosen according to the phone (32 or 64 bit), pointing to the files made available on this site. You can replace it with the https link of another compatible plugin.
The plugins offered here are built from a project that joins mbelib (decoding, ISC license) and an IMBE/AMBE encoder (imbe_vocoder, GPL-3.0-or-later). Everyone checks licenses and patents in their own country before using them.
armeabi-v7a): vocoder_plugin.android.arm.arm64-v8a, anche recente, con pagine di memoria da 4 o da 16 KB): vocoder_plugin.android.arm64.16k.armeabi-v7a): vocoder_plugin.android.arm.arm64-v8a, recent ones too, with 4 or 16 KB memory pages): vocoder_plugin.android.arm64.16k.Questa versione è stata rilasciata per supportare le ultime versioni di Android (telefoni a 64 bit, provata su Android 16), mantenendo la compatibilità con Android 5.0 delle poc radio economiche, dove di solito non si va oltre Android 9.
This version was released to support the latest Android versions (64-bit phones, tried on Android 16), keeping the compatibility with Android 5.0 of cheap PoC radios, which usually do not go beyond Android 9.
L’APK è firmato con una chiave di sviluppo: serve a condividere il file, non per uno store. Android 5.0 o successivo (fino ad Android 16), dispositivi ARM a 32 o 64 bit.The APK is signed with a development key: it is for sharing the file, not for a store. Android 5.0 or later (up to Android 16), 32-bit or 64-bit ARM devices.
Versione sperimentale: ricezione e trasmissione provate con BrandMeister; su Android 16 provata la ricezione; TGIF e HamThings non ancora.Experimental version: receiving and transmitting tried with BrandMeister; on Android 16 receiving is tried; TGIF and HamThings not yet.
Sì, nessun costo e nessuna pubblicità. Il codice è sotto licenza GPLv3 con un’eccezione che permette di riusarne parti in altre applicazioni citando il progetto e l’autore, e verrà reso disponibile non appena sarà rilasciata una versione stabile.Yes, no cost and no ads. The code is under GPLv3 with an exception that allows reusing parts of it in other applications, crediting the project and the author, and it will be made available as soon as a stable version is released.
Per trasmettere su una rete DMR radioamatoriale serve la licenza, l'Autorizzazione Generale e il DMR ID legato al tuo nominativo.To transmit on an amateur DMR network you need the license and the DMR ID tied to your callsign.
Usa il protocollo HomeBrew, comune a molte reti, ma è stata provata solo con BrandMeister.It uses the HomeBrew protocol, common to many networks, but it has only been tried with BrandMeister.
Una poc radio HI-B8 (Android 9), un Galaxy S8 (Android 9), un LG D620 (Android 5.0.2) e un Galaxy A56 (Android 16, 64 bit: provata la ricezione). Con l’auricolare Bluetooth è provata la ricezione; la trasmissione con il microfono Bluetooth e il vivavoce dell’auto non ancora.An HI-B8 PoC radio (Android 9), a Galaxy S8 (Android 9), an LG D620 (Android 5.0.2) and a Galaxy A56 (Android 16, 64-bit: receiving tried). With a Bluetooth headset, receiving is tried; transmitting with the Bluetooth microphone and a car hands-free not yet.
Meglio di no: scaricalo solo da qui e, se vuoi, confronta l’impronta SHA-256 indicata sopra con quella del file che hai.Better not: download it only from here and, if you like, compare the SHA-256 shown above with that of your file.