DMR, Digital Mobile Radio...

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
guckrum
Inlägg: 1669
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: DMR, Digital Mobile Radio...

Inlägg av guckrum »

...och kan du spela in andras sändningar så kan du avkoda/analysera dem senare off-line i lugn och ro.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Visst är DMR en knölig standard, men allt finns i dokumenten även om det är väldigt utspritt och svåröverskådligt. Som det är nu så utvinns i stort sett all info ur de PDU's som förekommer på nätet. Det är adesser, en liten textrad och någon gång position, men de flesta saknar eller stänger av denna. Övriga PDU's förekommer inte via internet.

Då är BM's protokoll mycket rörigare. Det syns tydligt att det är ett hopkok och sammanställning saknas. Där har jag problem nu. Med flera TG's upppsatta och det är samtidig trafik i två eller flera så hoppar mastern till att streama en annan i samma stund den som talar släpper PTT. Detta är helt oacceptabelt, särskilt om jag deltar i konversationen. Det måste rimligtvis finnas sätt att hålla kvar samma TG vid växlingarna, men hur? Får installera Windowssk*ten på nytt och sniffa vad denna skickar. Scannade .exe efter kända protokollheaders, men hittade inget. Med lite tur hade allt legat samlat och gett headers att googla på. Ligger kanske som unicode trots det måste sändas 8-bit, det är ju MicroSoft compiler...

För debug skrivs allting ut. Datahastigheten är låg. Varje burst listas som en rad med hextal och sker något avvikande hinner jag markera och spara från xterm. Det har funkat fint för att få ut buggarna.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Har googlat vilt efter en lösning på problemet med att master saknar hold time vid växling mellan vilka TG's den streamar ut. Hittade i ett förslag på "ny" version av protokollet något de kallar exclusive mode. TRMEXL följt av en TG.

Låter som att det är något för att läsa till en viss TG, men ifrågasätter lämpligheten i detta läge. Om lösningen tillämpas av många kommer master att översköljas av kommandon när trafik i en TG påbörjas/avslutas. Känns helt fel även med en liten slumpmäsig delay. Det enda rätta är hålltid hos master, men det är inte något klienterna har kontroll över.

Sh*t att det är så dåligt dokumenterat. Verkar vara en blandad soppa med många kockar. Unga, oerfarna individualister. Då blir resultatet som det blivit, ett härke som definieras av någon befintlig applikation, utan spec, utan samordning, utan eftertanke.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Det ovan nämnda problemet var inte här. Alla har haft diverse problem. BM verkar ha lite allmän oreda och det har kommit tätt med nya versioner...

Nu till nästa problem här. Skall bli två versioner, en X och en cli. Har precis upptäckt att X inte är thread safe. Min fråga: Hur kan en thread få X mainloop att "släppa" så en textuppdatering kan göras utan risk för crash och tvärlås i main thread?
Bästa hade varit om X kunde generera timerevents med t.ex. 1Hz.

Tillägg: Kanske går att göra något med select så att X inte blockar. Men där skall ju vara direkt respons på X events och ingen vänteloop som vrålkör och slukar cpu. Nog f*n finns där väl en vettig funktion för att synka threads?
sa0azs
Inlägg: 51
Blev medlem: 24 januari 2009, 00:49:39

Re: DMR, Digital Mobile Radio...

Inlägg av sa0azs »

På både mina DMR-apparater och min hotspot (med fem-sex statiska talgrupper) finns det möjlighet till att sätta hålltid, jag vill minnas att jag har tio sekunders hålltid just nu.

Innan jag ställde in det blev det som du säger, när någon släppte PTT:n hoppade den vidare till någon annan talgrupp med trafik, vilket blev förvirrande.
Kan du inte styra hålltiden i din ände?
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Har Du någon uppfattning om vad denna inställning rent konkret gör? Det är ju master som skickar ut det som tas emot och växlar master till att streama en annan TG så blir det ett "hopp". Eller streamas det många TG's till Dig och Din programvara bestämmer vilken av dessa som skall användas?

Har Du möjlighet att sniffa nätet och se om Din hotspot skickar något till master i det ögonblick hålltiden tar slut? Vad skickas i samband med att Din hotspot loggar in, överförs info om önskad hålltid till master?

Protokollspecen är å totalt undermålig att enda sättet att få klarhet verkar vara att analysera datatrafiken mellan master och en korrekt fungerande enhet.
sa0azs
Inlägg: 51
Blev medlem: 24 januari 2009, 00:49:39

Re: DMR, Digital Mobile Radio...

Inlägg av sa0azs »

Min uppfattning är att den "hänger kvar" och väntar i den talgrupp där det senast sändes under den hålltid jag ställt in, och om ingen mer trafik förekommer under den tiden så släpper den och börjar lyssna om det är trafik på någon av de övriga talgrupper den är programmerad att lyssna på.
Jag har tänkt att det fungerar som hålltiden man kan ställa in när man scannar analoga kanaler; när signalen försvinner, vänta x sekunder innan scanningen startar igen, så att scanningen inte startar direkt när ena parten släpper PTT:n, och man missar fortsättningen på QSO:et.

Denna inställning gör jag lokalt i radion/hotspoten, som sköter detta.

Vilka talgrupper jag vill ha på min Hotspot (eller repeater) ställer jag in via ett API mot (i mitt fall) Brandmeisters server, som då håller reda på att hotspoten med ett visst ID endast skall få trafik från valda talgrupper.
Jag kan ställa in statiska talgrupper som är alltid aktiva på min repeater/hotspot, jag har Sverige, Distrikt 0, Sweden Tactical och Åland just nu.

Användare kan också starta dynamiska talgrupper, d.v.s. kan be hotspoten/repeatern att tillfälligt öppna en talgrupp, som sedan kopplas bort från repeatern/hotspoten efter en viss tid (15 minuter verkar vara vanligt) eller när användaren väljer att koppla ner den.
Detta sköter alltså Brandmeisters (motsv.) servrar.

På radion väljer jag däremot talgrupp/er lokalt i radion.
I mina burkar (Anytone) kan jag bygga (en eller flera) "receive group call list", och den skall således ignorera trafik radion hör som sker i talgrupper jag inte lagt in där.
Jag kan märka att det pågår trafik på exempelvis en repeater i en talgrupp jag inte har med i min lista, genom signalindikatorn, men högtalaren öppnar inte.
Samma funktion som en subton/tonsquelch med andra ord.

Min hotspot är MMDVM-baserad, styrs av applikationen Pi-Star och är kopplad mot Brandmeisternätet, om det kan hjälpa dig att få fram någon information den vägen.
Kodpluggarna jag har byggt för mina (och några kamraters) radioapparater finns på github.com/sa0azs, om de kan vara till någon nytta för dig.

Jag hoppas att du i alla fall får ut någonting av det jag skrivit, annars får du gärna återkomma.
Jag är ingen kodknackare, så där har jag inte mycket att tillföra, men jag har i alla fall lite koll på system- och användarnivå.

Jag får återkomma om att sniffa nätverkstrafiken, min Kali Linuxburk avled strax före jul, och jag har ingen ersättare till den än. Antar att Wireshark eller liknande borde fungera?
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Tack för Din beskrivning. Den bekräftar att det skall gå att lösa med en sådan uppställning som jag har. Skillnaden mellan en terminal och en hotspot är att terminalen innefattar även en förenklad variant av radions funktioner.

Jag använder även BM's nät, är definitivt det bästa och största. Har satt upp några få statiska tg's via deras websida. Lokalt identifierar den sig med egna ID-strängar och 434.475 som rx/tx. Samma frekvenser där betyder DMO-mode enligt BM's info. Har Du också detta?

Vad som kommer in beror ju på vad master skickar ut. I DMO-mode skickas bara en stream. I repeatermode kan master skicka 2 streams, en för vardera av de två timeslots den kan sända ut.

Har märkt en del egendomligt i nätet. Vissa användare återges ibland med blaj i EMB så mottagen id och tg fladdrar runt med nonsens. Ibland slocknar då mottagningen hos den de pratar med. Min terminal återger allt och voicedata är fortsatt helt OK. Sedan när vederbörande släpper PTT registreras rätt in/tg från terminatorn. Andra är det helt stabilt på och även talker alias kommer igenom perfekt.


Sniffa nätet är lätt, finns många program för det. Vissa klarar protokollanalys, men finns nog inget för BM's HBR. Tyvärr blir det snabbt en hyfsat stor fil om allt sparas.

Utan en hub eller specialkommandon till en kapabel switch måste sniffet ske från den raspberry som kör MMDVM. Bör vara möjligt med en netmount att lägga det på disken i en annan maskin. Det är UDP 62030 som skall avlyssnas.

Tillägg:
Vad heter inställningen för hur länge en viss talgrupp skall hållas kvar? MMDVM är open source och det borde kunna hittas hur de gör, men kräver en startpunkt att söka på.
Senast redigerad av Marta 10 januari 2020, 12:21:45, redigerad totalt 1 gång.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Nu börjar mitt lilla program bli användbart. Enkelhet och tydlighet anser jag är viktigt. Konfig görs i en textfil. Funktionerna är avstängning, passning, sändning, loopback samt välja tg för sändning. Loopback för att testa lokalt så ljudkort och USB-pinne med AMBE-chip fungerar. Övrigt självförklarande.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
vaxfan
Inlägg: 848
Blev medlem: 6 juli 2011, 23:19:14
Ort: Stugun, Jämtland

Re: DMR, Digital Mobile Radio...

Inlägg av vaxfan »

:) :tumupp:
guckrum
Inlägg: 1669
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: DMR, Digital Mobile Radio...

Inlägg av guckrum »

Coolt! På med en licensfil och upp på gith... gitlab.com!
sa0azs
Inlägg: 51
Blev medlem: 24 januari 2009, 00:49:39

Re: DMR, Digital Mobile Radio...

Inlägg av sa0azs »

Marta skrev: Jag använder även BM's nät, är definitivt det bästa och största. Har satt upp några få statiska tg's via deras websida. Lokalt identifierar den sig med egna ID-strängar och 434.475 som rx/tx. Samma frekvenser där betyder DMO-mode enligt BM's info. Har Du också detta?
Ja, min sägs också vara "Linked in DMO mode" när jag kollar på statussidan för lokala mastern (http://83.233.234.102/status/list.htm), och det verkar som sagt rimligt då hotspoten bara använder en timeslot (TS2).
Marta skrev:Vad som kommer in beror ju på vad master skickar ut. I DMO-mode skickas bara en stream. I repeatermode kan master skicka 2 streams, en för vardera av de två timeslots den kan sända ut.
Ja, så måste det ju bli.
Marta skrev:Utan en hub eller specialkommandon till en kapabel switch måste sniffet ske från den raspberry som kör MMDVM. Bör vara möjligt med en netmount att lägga det på disken i en annan maskin. Det är UDP 62030 som skall avlyssnas.
Okej, det där känner jag att jag måste läsa på om för att få till.
Marta skrev:Tillägg:
Vad heter inställningen för hur länge en viss talgrupp skall hållas kvar? MMDVM är open source och det borde kunna hittas hur de gör, men kräver en startpunkt att söka på.
På hotspoten finns det två stycken variabler man kan justera i gränssnittet. Den ena heter där RF hangtime och den andra heter Net hangtime.
Tittar jag i den avancerade konfigen, vilket ser ut att vara rena konfigfiler, så är heter inställningarna enligt nedan:
RFTimeout=10 och NetTimeout=10 (jag har satt bägge till 10 sekunder).
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Tack för info.

Har letat i källkoden till MMDVM nu och hittat en del, men inte lyckats hitta något ännu användbart. Det finns en okänd PDU i inloggningsprotokollet, RPTO, som innehåller options. Skulle mycket väl kunna vara där en sådan inställning överförs till master.

Det stärker uppfattningen att det skulle vara till hjälp att få se en inloggning med MMDVM. Kanske någon lokalt här hemmavid skulle kunna göra det, eller låna ut en sådan. I värsta fall får jag köpa en och förhoppningsvis sälja med dräglig förlust.

I övrigt flyter allt utan större problem. Funderar på hur det skulle vara möjligt att ordna en mik med PTT. Undrar om det skulle funka att skicka en ton vid start och en annan vid släpp. Borde kunna vara mycket kort och med några hundra millisekunders buffring kan den avlägsnas. Det svåra är att detektera den.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Håller på och försöker hitta en bättre lösning i config-filen för ljudenheter, men hittar ingen. Finns det något mera lätthanterat alternativ för en .conf i Linux än nedanstående?
Allt på samma rad, # inleder kommentar

MIC alsa_input.pci-0000_00_1b.0.analog-stereo #microphone, if not system default

Förtydligande: Problemet är alltså den förfärande långa ramsa som måste skrivas för att definiera enheten. Någon kortform där det hade räckt att skriva något i stil med "MIC input3" istället för alsa_input... vore mycket lättare att hantera.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6887
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: DMR, Digital Mobile Radio...

Inlägg av Marta »

Det här hör inte till DMR-programmet mer än att det var där problem uppstod, men vill inte kräka threads.

Har precis spillt tid på en variabel som genom magi ändrade sitt värde. Det var en global variabel deklarerad ovanför alla funktioner. Visst, obra, men ibland det mest logiska.

Nu visade det sig finnas en till sådan med samma namn i en annan fil. Ingen av dem deklarerade som extern. Ändå slogs de samman av gcc... :( :( :( Efter att ha deklarerat dem static så lyftes förbannelsen.

Vad är det för mening med extern när variablerna ändå blir som om de deklarerats extern fast de inte är det? Finns det någon switch att lägga till i Makefile så att variabler default håller sig inom filen där de deklarerats?
Skriv svar