Om projektet
Four:C Flex är en privat BREW SwMI (Switching and Management Infrastructure) för att koppla ihop TETRA-basstationer i ett eget nätverk. Systemet hanterar registrering, talgrupper, gruppsamtal, individanrop (CBR), röst (PTT), position (LIP), täckningskarta, SDS, status, callout, remote control, ADAM digital I/O, TTS (talsyntes), SIP-telefonpatch och dispatcher/mobil via webbläsare.
README.md för installation och drift.
Arkitektur
Servern tar emot BREW-anslutningar från basstationer, håller nätverksöversikt (prenumeranter, affiliieringar, aktiva samtal) och vidarekopplar röst mellan celler. Webbklienter ansluter via säker WebSocket till dispatcher-hubben. ADAM-moduler styrs via Modbus TCP; TTS spelas som gruppsamtal från system-ISSI.
| Tjänst | Port | Beskrivning |
|---|---|---|
| HTTPS | 3443 | Webb, admin, dispatcher, mobil (TLS) |
| BREW / app | 3003 | Basstationer och Android-app (HTTP, utan TLS) |
| SIP | 5070 | Inkommande SIP (UDP) + RTP från 40000 |
Inloggning och roller
Startsidan (/) är gemensam inloggning. Efter lyckad inloggning dirigeras du
automatiskt till rätt gränssnitt utifrån din roll.
| Roll | URL | Behörighet |
|---|---|---|
| admin | /admin |
Full konfiguration, övervakning, loggar, användarhantering, ADAM I/O, TTS, SIP |
| dispatcher | /dispatcher |
PTT, karta, täckning, telefon (SIP), meddelanden, TTS, ADAM I/O, DGNA, talgrupper — flikar kan begränsas per konto |
| mobile | /mobile |
Webbmobil: talgrupp, PTT, GPS. Samma konto används i Android-appen |
Användare lagras i users.json (ej i git). Minst en admin krävs.
Inloggningar loggas i data/login-log.jsonl.
Administration
Adminpanelen nås efter inloggning som admin. Överst visas live-räknare för basstationer, Radio ISSI och talgrupper (klicka för att hoppa till rätt flik).
Flikar
Översikt, Användare, ISSI, Dispatchers, Talgrupper, Basstationer, ADAM I/O, TTS, SIP, Trafik och Loggar.
System-ISSI
Systemets egna ISSI (flik Användare) används när servern skickar LIP, status och SDS till radionätet. Måste matcha konfigurationen i radioenheterna.
Användare
Fliken Användare hanterar admin-konton i users.json.
Mobil-inloggning skapas under fliken ISSI, dispatcher under fliken Dispatchers.
Minst en admin krävs.
ISSI (Radio ISSI)
Masterlista för ISSI-whitelist på fliken ISSI. Synkas till TETRA-baserna via BREW (Subscriber.json).
Här hanteras fältradio och mobil. Lägg till/ta bort ISSI manuellt — nya radior läggs inte in automatiskt.
Kolumnen Bas visar vilken basstation ISSI:n är inloggad på (live i accentfärg, annars senast sedd).
TEI (låst) binder ISSI till en specifik radio: tom = endast ISSI-kontroll; ifylld = TEI måste matcha.
Sedd TEI fylls när basen rapporterar U-TEI-PROVIDE (Motorola skickar det ofta inte — läs då 15 hex i radion och klistra in).
Dispatchers finns under egen flik.
Dispatchers
Webbinloggning, SIP-anknytning och kryssrutor för flikar i dispatcher-UI.
Krysset Täckning ger täckningsmätning (GPS + signal). Saknas kryss / alla ikryssade = full åtkomst. Sparas i Subscriber.json.
Talgrupper
Fliken Talgrupper. GSSI och namn måste stämma med programmeringen i radioenheterna. Gruppsamtal routas mellan alla anslutna basstationer.
Grupp kombinering
Samma flik som talgrupper. Kopplar ihop flera talgrupper så att radios på olika GSSI hör varandra. Varje GSSI får bara ingå i en kombinering.
Basstationer (BREW)
Fliken Basstationer. Varje fysisk basstation behöver unikt numeriskt användarnamn och lösenord
(brewUsers i config). Dessa credentials anges i basstationens BREW-konfiguration.
TETRA↔DMR-interop ligger också här — se TETRA ↔ DMR.
Live-översikter
- Anslutna basstationer — BREW-sessioner med IP, user-agent och knapp Uppdatera
- Anslutna IP-enheter — inloggade dispatcher- och mobilklienter med talgrupp och IP
- Prenumeranter — registrerade radios med talgrupper, bas och senast sedd
Uppdatera Fourc Flex (OTA)
I tabellen Anslutna basstationer (flik Översikt) finns knappen Uppdatera per TETRA-bas. Den hämtar senaste Fourc Flex och startar om tjänsten på Pi:n själv — du ska inte starta om Raspberry Pi manuellt.
- v0.5.4 och nyare tar emot kommandot över BREW (fungerar även bakom NAT). GitHub-repot är privat: basen loggar in med sitt BREW-konto mot SwMI som hämtar binären, eller med GitHub-token på basen.
- Äldre versioner startas via basens dashboard. Fyll i webbadress (port
8080) på fliken Basstationer. Bygget på Pi kan ta 10–15 minuter; nyare baser hämtar GitHub-binär på 1–3 minuter. - Statusraden (Pågår… / Hämtar… / Startar om…) sparas i webbläsaren, så F5 nollar den inte. Knappen är låst tills uppdateringen är klar eller timeout.
Android PTT-app
På fliken Android finns nedladdning av APK och en delbar installationslänk
(/install-ptt). Se Android PTT-app.
Trafik och tidsluckor
Visar MCCH/trafikkanaler (TS1–TS4) per basstation, live-tidslinje (senaste 5 min),
historik från data/slot-timeline.jsonl och händelselogg i
data/traffic-log.jsonl. Talgruppsstatistik (aktivitet, rösttid, ramar).
Inloggningslogg
Senaste webbinloggningar med resultat, kanal, roll och IP.
Meddelandelogg
Alla SDS, status och callout som passerar servern — filtrerbart per typ.
Händelselogg
Intern serverlogg (registrering, affiliiering, anslutningar m.m.).
ADAM I/O, TTS och SIP konfigureras i egna sektioner i admin — se ADAM I/O, TTS och SIP.
ISSI och TEI
ISSI är radions nummer i nätet (Individual Short Subscriber Identity). TEI är hårdvaru-ID (TETRA Equipment Identity), 60 bitar skrivet som 15 hexadecimala tecken. Listan under Admin → ISSI är whitelist som synkas till Fourc Flex-baserna via BREW. ISSI som inte finns i listan får inte registrera sig.
- Tom TEI (låst) — endast ISSI kontrolleras. Vilken fysisk radio som helst med det ISSI:t kan logga in.
- Ifylld TEI (låst) — ISSI måste matcha just den radion. Annan TEI avvisas på basen.
- Sedd TEI — basen rapporterar U-TEI-PROVIDE när radion ger det. Motorola skickar det ofta inte; läs då TEI i radion (meny → radioinfo) och klistra in under TEI (låst), eller klicka Använd om en sedd TEI finns.
- Bas — vilken BREW-bas ISSI:n är inloggad på just nu (live) eller senast sedd.
- Mobil — webb-användarnamn/lösen på ISSI-raden ger inloggning till
/mobileoch Android-appen. Fältradio är TETRA-radio utan webbkonto.
System-ISSI (flik Användare) är serverns eget nummer för LIP, status och SDS — det är inte en fältradio. Dispatcher-konton ligger under fliken Dispatchers, inte i Radio ISSI-tabellen.
ADAM I/O
Four:C Flex styr Advantech ADAM-6066 (och liknande ADAM-6000) via Modbus TCP. Konfiguration sker under Admin → ADAM I/O. Flera moduler kan användas parallellt (varsin IP).
Moduler
- IP / port — normalt port
502 - Unit ID — Modbus-enhetsadress (nästan alltid
1) - DI-bas / DO-bas — Modbus-startadress (DI oftast
0, DO oftast16) - Live-status (online/offline, DI/DO) visas i Admin och i Dispatcherns ADAM-flik
Regler
- Status → DO — inkommande status från radio sätter/pulserar en digital utgång (t.ex. öppna dörr). Valfri filter på avsändar-ISSI och mottagare.
- DI → Status — kant på digital ingång skickar förkodad status till vald ISSI.
- DI → TTS — kant på digital ingång spelar fördefinierat TTS-meddelande på talgrupp.
I Dispatchern under fliken ADAM I/O kan operatören manuellt köra status→DO-regler (t.ex. Dörr1) och spela DI→TTS, samt se live HIGH/LOW på konfigurerade ingångar.
TTS — talsyntes
TTS läser upp text som gruppsamtal från system-ISSI på vald talgrupp (GSSI). Motor: Edge neural (om tillgänglig) med fallback till Windows SAPI. Meddelanden och regler konfigureras under Admin → TTS.
- Fördefinierade meddelanden — namn, text, standard-GSSI; kan testas från Admin
- Status → TTS — inkommande status (t.ex. till system-ISSI) triggar ett meddelande; dedupe undviker upprepning vid radio-retry
- DI → TTS — se ADAM I/O
- Dispatcher → TTS — fliken TTS: spela fördefinierat eller fri text på vald talgrupp
SIP — telefon till talgrupp
Four:C Flex kan svara på inkommande SIP-samtal (anknytning) och koppla luren till en TETRA-talgrupp. Codec: G.711 PCMU/PCMA (8 kHz). Konfigureras under Admin → SIP.
- Anknytning → GSSI — varje SIP-användare (t.ex. 600) mappas till en talgrupp och ett ISSI som syns som talare
- VOX-PTT — telefonens tal trycker PTT automatiskt (attack + hangtime). Tystnad släpper PTT. Halv duplex: radio som redan sänder har företräde
- Lyssna — när någon pratar på talgruppen hörs det i telefonen (inte under egen VOX-sändning)
- PBX — antingen trunk/INVITE hit (UDP 5060) eller REGISTER mot registrar med användare/lösenord. Lägg SIP-ISSI i Prenumeranter
Inkommande SIP-samtal kopplas till talgrupp (telefonpatch). Utringning från radio till SIP-nummer finns när utringning är påslagen i Admin → SIP. Media förhandlas med SDP (G.711 PCMU/PCMA).
Dispatcher
Dispatcher är huvudgränssnittet för operatörer. Efter inloggning ansluts webbläsaren till SwMI via WebSocket. Mikrofon och högtalare aktiveras vid första anslutning.
PTT och talgrupp
- Välj aktiv talgrupp i sidopanelen
- Håll ned PTT eller tryck mellanslag för att sända
- Röst kodas till TETRA ACELP (8 kHz) och skickas som STE-ramar till nätet
- Mottaget tal avkodas och spelas upp i webbläsaren
- Header visar talare, ljud-, sändnings- och mottagningsstatus
Karta
- Leaflet-karta med radiopositioner från LIP (Location Information Protocol)
- Online-radios visas med grön markör; offline döljs efter 24 timmar om ingen ny position
- Klicka på markör eller rad i användarlistan för radioinfo
- Högerklicksmeny på kartan (snabbåtgärder)
- Temaval: mörkt, ljust eller färgat (sparas i webbläsaren)
- Lagret Täckning visar runda mätfält från täckningsmätning (GPS + signal). Fälten ligger kvar när radion flyttar sig
- Kryssa i GPS-spår under Täckning i lagerlistan. Rutan visas till höger. Välj de senaste 50, 100 eller 200 positionerna, eller ett datum och klockslag (t.ex. 12:00–21:00) och tryck Visa tid. Följ på kartan håller den senaste punkten i bild
Täckning
Fliken Täckning bygger en geografisk täckningskarta: var mottagningen var dålig eller bra. Varje mätning lämnar ett runt fält (ca 10 m) på den plats där radion stod. Fältet flyttar sig inte med radion.
- Slå på fliken i Admin → Dispatchers (kryssruta Täckning). Tom lista / alla ikryssade = fliken syns
- Välj radio och intervall: 15, 30 eller 60 sekunder, eller 5, 10 eller 15 minuter
- Klicka Starta. Systemet begär GPS och därefter signalstyrka (
AT+GPSPOS?/AT+CSQ?) med valt mellanrum. Stoppa avslutar avfrågningen - Resultatet syns på fliken Karta när lagret Täckning är ikryssat. Färgskala: dålig (blått) → stark (magenta). Klicka på ett fält för radio, tid och signal i dBm
- Mätpunkterna sparas i
data/coverage-cells.jsonoch överlever serveromstart
Samtal (CBR)
Fliken Samtal visar inkommande Call Back Request från radioer. Se detaljer under Samtal (CBR).
Telefon (flik)
Softphone med knappsats. Utgående samtal går via dispatcherns SIP-anknytning (anges i Admin → Dispatchers). Inkommande till anknytningen ringer här — inte på talgruppen. Samtalet är full duplex; PTT pausas under samtal. Se SIP.
Status
Lista inkommande och utgående statusmeddelanden. Skicka status till valfri ISSI.
Fördefinierade koder (CBR, Logon/Logoff, Kvittera m.m.) finns i
status-codes.json. Status 0 = larm.
Se tabellen under Samtal (CBR).
SDS
Short Data Service — korta textmeddelanden (max 140 tecken) till enskild ISSI. Leveransstatus visas (väntar / levererat / misslyckades).
Callout
Skicka callout-meddelanden (test, alert, info, clear) till grupp eller individ med valfri severity och text.
TTS (flik)
Spela fördefinierade TTS-meddelanden eller fri text på en talgrupp. Meddelanden skapas i Admin → TTS. Se TTS.
ADAM I/O (flik)
Operatörsvy för digital I/O: knappar för konfigurerade status→DO-regler (t.ex. dörröppning), live-status på DI, och Spela TTS för DI→TTS-regler. Regler skapas i Admin → ADAM I/O. Se ADAM I/O.
Remote Control
Fjärrkommandon till radio via AT-liknande kommandon:
- AT+CTGS — byt talgrupp (slot + GSSI)
- AT+CTGS? — läs aktuell talgrupp
- AT+GPSPOS? — begär GPS-position
- AT+CSQ? — signalstyrka
- Eget AT-kommando — fritt kommando
Användare (flik)
Översikt över alla kända ISSI med online/offline, senast uppdaterad, talgrupp, position och senaste status. Sortering på namn, ISSI och status. Se avsnittet Närvaro nedan.
Talgrupper (flik)
Dispatcher kan redigera talgrupper utan omstart. Ändringar gäller direkt för alla anslutna klienter och basstationer. Samma lista som Admin → Talgrupper.
Grupp kombinering (flik)
Koppla ihop talgrupper så att radios på olika GSSI hör varandra. Varje GSSI får bara ingå i en kombinering. Samma regler som i Admin.
Flikbehörighet
Vilka dispatcher-flikar en operatör ser styrs i Admin → Dispatchers (kryssrutor per konto, bland annat Täckning). Tom lista / alla ikryssade = full åtkomst.
Nödlarm-banner
Vid detekterat nödlarm visas en röd banner överst. Klicka Kvittera för att dölja den i aktuell session. Se Nödlarm.
Fullskärm
Knappen Fullskärm i header döljer webbläsarens krom för operatörsarbete.
Samtal (CBR — Call Back Request)
När en radio skickar status 39401 (CBR Ind) eller 39402 (CBR Grp) öppnas fliken Samtal automatiskt och en ny rad visas. En röd badge på fliken visar antal öppna (ohanterade) förfrågningar.
Återanrop
- CBR Ind (39401) — klicka på raden för att starta ett individanrop till radioen som skickade status. Radioen ringer; när den svarar kopplas samtalet (full duplex). Använd PTT för att tala. Avsluta med knappen Lägg på.
- CBR Grp (39402) — klicka på raden för att starta ett gruppanrop på den talgrupp radioen är affiliierad till. Dispatchern byter talgrupp och startar PTT. Avsluta sändning med mellanslag eller PTT-släpp.
- Efter återanrop markeras raden som hanterad. Filtrera listan med Öppna / Alla / Hanterade.
Statuskoder (urval)
| Kod | Namn | Användning |
|---|---|---|
0 | Larm | Nödlarm |
39401 | CBR Ind | Call Back Request — begär individanrop |
39402 | CBR Grp | Call Back Request — begär gruppanrop |
39201 | Logoff | Radio utloggad (närvaro offline) |
39202 | Logon | Radio inloggad (närvaro online) |
39203 | Upptagen | Radio upptagen |
39301 | Kvittera | Kvittering |
39302 | Framme | Framme på plats |
39310 | Lämnar | Lämnar plats |
39311 | Klar | Klar / tillgänglig |
Etiketter redigeras i status-codes.json och laddas om vid serverstart.
Mobilklient (webb)
Förenklad webbsida /mobile för fältpersonal. Kontot skapas under Admin → ISSI med roll Mobil (webb-användarnamn och lösen).
- Talgruppsval och PTT (håll ned / mellanslag) — samma röstväg som dispatcher
- GPS skickas till servern när webbläsaren tillåter platsåtkomst (syns på dispatcherkartan)
- Status för ljud, GPS, sändning och mottagning
- Kräver mikrofon i webbläsaren (HTTPS på port 3443). För nativ PTT utan webbläsare, se Android-appen.
Android PTT-app
Four:C Flex PTT är en Android-app (APK) för PTT mot samma mobilkonto som webbklienten. Den installeras sideloadat (inte från Play Store).
Installation
- I Admin → Android: ladda ner APK eller öppna installationssidan
/install-ptti telefonens webbläsare. - Tillåt installation från okänd källa om Android frågar.
- I appen: serveradress
http://<Flex-IP>:3003(HTTP på BREW-porten — använd inte HTTPS 3443, självsignerat cert fungerar dåligt i appen). - Logga in med mobil-kontot från fliken ISSI (samma användarnamn/lösen som
/mobile).
Appen ger talgrupp och PTT mot SwMI. Skapa ISSI och webbkonto först, annars nekas inloggning.
Nödlarm
Nödlarm detekteras automatiskt utan att basen behöver särskild
forward_to_brew-konfiguration (den kan vara ett komplement). Triggers:
- Affiliiering till LarmTG (talgrupp markerad med
alarm: truei config) - Gruppsamtal på larmtalgruppen med nödlarm-prioritet
- LIP till system-ISSI medan radion är affiliierad till LarmTG
- Inkommande status 0 (Larm)
Dispatcher visar banner och kan kvittera. Nytt larm efter kvittering visas igen.
Närvaro och användarlista
Närvaro (online/offline) fungerar olika beroende på enhetstyp:
| Typ | Online när | Offline när |
|---|---|---|
| Dispatcher / mobil | Inloggad och WebSocket aktiv | Utloggad eller frånkopplad |
| Fältradio | Registrerad i nätet (REGISTER/AFFILIATE) eller status 39202 (Logon) | DEREGISTER, status 39201 (Logoff), eller ingen aktivitet på 5 timmar |
Senast uppdateras direkt vid in-/utloggning. Talgrupp visar alla affiliieringar för fältradio (inkl. scanning); dispatcher visar vald TG + LarmTG (+ ev. gruppkombinering).
Meddelanden — översikt
| Typ | Riktning | Användning |
|---|---|---|
| SDS | Individ | Kort text till en ISSI |
| Status | Individ | Fördefinierad statuskod (t.ex. kvittera, framme) |
| Callout | Individ/grupp | Varningar och information till terminal |
| Remote Control | Individ | AT-kommandon (talgrupp, GPS, signal) |
| LIP | Individ → system | GPS-position till karta |
| TTS | Grupp | Talsyntes på talgrupp (Admin, Dispatcher, ADAM DI, status) |
| ADAM I/O | Lokalt | Modbus DI/DO kopplat till status och TTS |
DGNA — dynamisk grupptilldelning
I dispatcher under fliken DGNA kan operatören tilldela en talgrupp till en eller flera radior över luften (Dynamic Group Number Assignment):
- Välj befintlig talgrupp eller skapa tillfällig grupp (nytt GSSI + namn)
- Markera radior i listan och/eller ange extra ISSI (kommaseparerat)
- Klicka Tilldela grupp
Aktiva tilldelningar visas i tabellen och kan tas bort. DGNA skickas via BREW till Fourc Flex-baserna.
TETRA ↔ DMR (interop)
Four:C Flex kan koppla en TETRA-talgrupp till en DMR-bas via BREW.
DMR-sidan körs på en separat Raspberry Pi med MMDVM och
dmr-brew-bridge.py — samma enhet kan inte köra TETRA Fourc Flex och DMR samtidigt.
Arkitektur
- Four:C Flex —
interopBridgesiconfig.json(redigeras under admin → TETRA ↔ DMR) - dmr-brew-bridge — ansluter som BREW-basstation, lyssnar/sänder DMR via MMDVM-Host (UDP)
- MMDVM / MMDVM-Host — RF-modem och DMR-repeaterstack på Pi
- dmr-dashboard (valfritt) — lokal statussida på Pi (port 8080)
Konfiguration i admin
Under TETRA ↔ DMR (interop) skapas en brygga per talgrupp:
- Namn (valfritt)
- TETRA GSSI — talgruppen som ska speglas
- DMR-bas (BREW) —
brewUsers-kontot som bryggan loggar in med - DMR talkgroup — TG på DMR-sidan
- ISSI (DMR→TETRA) — virtuellt ISSI som DMR-trafik syns som i TETRA-nätet
Online-status visas när bryggan är ansluten till BREW-porten (3003).
Installation på Pi
- Skapa BREW-användare för DMR-basen i
config.json/ admin - Kör
scripts/pi/install-dmr-brew-bridge.shpå Pi - Redigera
/etc/dmr-brew-bridge.json(mall:dmr-brew-bridge.json.example) - Starta MMDVM-stacken och
systemctl start dmr-brew-bridge
Viktiga fält i bryggans JSON:
server/port/username/password— BREW mot Four:C FlextetraGssi— måste matcha interop-bryggandmrTalkgroup,mmdvmRepeaterId, UDP-portar mot MMDVM-HostgpsDestId— DMR-ID som radioer skickar GPS till (ofta samma som repeater-ID)
Röst och signalering
- PTT-signalering (samtalsstart/stopp) fungerar TETRA ↔ DMR via BREW GROUP_TX / GROUP_IDLE
- Röst (audio) kräver STE↔AMBE-transkodning på Pi — ännu inte komplett; utan AMBE hörs ingen tal mellan systemen
DMR GPS (Motorola LRRP)
Bryggan kan ta emot privat data / LRRP från Motorola-radioer (ok-dmrlib),
avkoda position och skicka till Four:C Flex som BREW Service 0x41 (DMR-GPS).
Positionerna visas på dispatcher-kartan som övrig LIP.
Radioerna måste vara programmerade att skicka GPS till gpsDestId.
Begränsningar
- Inte BrandMeister / offentligt DMR-nät — lokal interop mot er SwMI
- En brygga per TETRA-GSSI och per DMR-BREW-konto
- Röst mellan TETRA och DMR kräver AMBE-hårdvara/licens på Pi
Konfigurationsfiler
| Fil | Innehåll |
|---|---|
config.json | Portar, TLS, brewUsers, talkgroups, systemIssi, groupCombines, interopBridges, adamIo, tts, sip |
users.json | Webbinloggning (admin/dispatcher/mobile) |
Subscriber.json | ISSI-whitelist, namn, roll och webbinloggning |
status-codes.json | Statuskoder och etiketter |
/etc/dmr-brew-bridge.json | DMR-brygga på Pi (server, GSSI, TG, GPS-dest) |
data/affiliations.json | Beständig affiliiering (överlever omstart) |
data/lip-latest.json | Senaste kända positioner (LIP / DMR-GPS) |
data/coverage-cells.json | Täckningskarta (GPS + signal per mätpunkt) |
data/dmr-positions.json | Senaste DMR-GPS-positioner |
data/login-log.jsonl | Inloggningshistorik |
certs/ | TLS-certifikat (skapas automatiskt) |
Basstation (BREW)
Exempel på BREW-konfiguration i Fourc Flex (peka på SwMI-servern):
På Raspberry Pi kan scripts/pi/basestation-control.py användas som
systemd-tjänst för att hålla BREW-anslutningen.
Mjukvaran på basen uppdateras från Admin med knappen Uppdatera — se Uppdatera Fourc Flex (OTA). Tjänsten startar om själv när filen är klar.
Codec: För dispatcher-ljud krävs ETSI ACELP-binärer —
kör scripts/install-codec.ps1 på servern.
Felsökning
| Problem | Åtgärd |
|---|---|
| Basstation ansluter inte | Kontrollera IP, port 3003, tls = false, brewUsers-uppgifter, brandvägg |
| 401 Unauthorized (BREW) | Fel användarnamn/lösenord i basens config jämfört med config.json |
| Certifikatfel i webbläsare | Godkänn självsignerat cert i lokalt nät, eller installera certs/server.crt |
| Inget ljud i dispatcher | Tillåt mikrofon, kör codec-installation, kontrollera PTT och talgrupp |
| ADAM offline / ingen I/O | Pinga IP, kontrollera Modbus-port 502, Unit ID, DI/DO-basadresser.
Online-status syns i Admin → ADAM I/O. |
| TTS spelas inte | Aktivera TTS i Admin, kontrollera att meddelande och GSSI finns, att basstation är ansluten, och att system-ISSI är korrekt. |
| SIP-samtal kopplas inte / ingen PTT | Aktivera SIP, öppna UDP 5070/RTP, kontrollera anknytning→GSSI, ISSI i Radio ISSI, VOX-tröskel och att PBX skickar PCMU/PCMA. |
| Radio avvisas / TEI-fel | Kontrollera att ISSI finns i whitelist. Om TEI är låst måste den matcha radions 15 hex. Tom låst TEI = endast ISSI. Se händelselogg för TEI-avvisad. |
| Android-appen loggar inte in | Använd http://IP:3003 (inte 3443). Kontot måste vara roll Mobil under ISSI med webb-användarnamn och lösen. Tillåt okänd källa vid APK-install. |
| OTA startar inte / status försvinner | Basen måste vara ansluten. Före v0.5.4 krävs webbadress till dashboard (port 8080). Status efter klick på Uppdatera ligger kvar vid F5 (sparad i webbläsaren). |
| Ingen röst mellan celler | Kontrollera att radios är registrerade och affilierade till samma GSSI |
| Användarlistan uppdateras inte | Ladda om med Ctrl+F5; kontrollera att basen är ansluten till SwMI |
| Nödlarm visas inte | Kontrollera LarmTG (alarm: true) i config och radioaffiliiering |
| DMR-brygga offline | Kontrollera dmr-brew-bridge, BREW-login, interopBridges och att Pi når port 3003 |
| Ingen DMR-GPS på kartan | Kontrollera gpsDestId, att radio skickar till rätt ID, och att ok-dmrlib är installerat på Pi |
| PTT syns men inget DMR-ljud | Förväntat utan AMBE-transkodning — signalering fungerar, röst kräver AMBE på Pi |
| Inga färgfält på täckningskartan | Starta mätning under fliken Täckning. Radion måste svara på GPS och CSQ. Kryssa i lagret Täckning på kartan. Fliken måste vara tillåten i Admin → Dispatchers. |