I am currently building a DMR stack that could be used with SDR devices like LimeSDR.
Currently this is my setup:
- The gnuradio-companion flow graph demodulate the 4FSK
- The demodulated dibits are transmit by UDP to the software that decode DMR messages.
- The software is able to decode DMR audio and data packets
The global idea is to be able to use my stack to build a DMR dispatcher software (open):
- Receive SMS, Calls, GPS data, …
- Transmit SMS, Calls
All of this without internet, without brandmeister things
Here is the DMR structure:
As you can see, depending if you are mobile station or base stations you are supposed to not necessary transmit the CACH. But in fact chineese radios (like I have: Retevis RT3), transmit the CACH.
(I will have to try with MOTOTRBO / HYTERA radios but i don’t have it…)
For the reception currently i don’t take care on TDMA, because I synchronise with the SYNC and I have the correct number of bytes (cach include)
The “worst” case for RX is when VOICE packets are transmit because you have one SYNC packet and then 5 packets without sync
But this is not a problem because the transmitted byte are correctly received, we don’t loose bytes during the demodulation, there is no synchronisation fails
But now I would like to implement the transmission.
For the transmission there are two cases:
1/ Supporting the TDMA: When we receive something we can transmit only if the “slot where we want to transmit” is idle.
2/ Not supporting TDMA: If you receive something (based on RSSI): you don’t transmit, If you don’t receive: you can transmit
Note in the case of #2: In this case, maybe the most simple is to act like chineese radios: transmit Slot 1 and Slot 2 (with idle slot and empty datas for the idle slot). But of course if you do it, the other will not be able to use “dual slot”.
Example for transmission in slot 1:
- CACH Slot 1
- Data (begin payload - sync - end payload)
- CACH Slot 2 - idle
- EmptyData (but not zeros)
Now my questions:
Is it possible to work with TDMA protocols using SDR devices ? (We are not realy real time)
Is it possible to get timestamp of received packets using gnuradio-companion ? Is it possible to transmit packets at specific timestamps (based on received timestamps) using gnuradio-companion ?
Do you know a good method to use TDMA with SDR devices ? (Using timestamp ? Anything else ?)
Did someone already implement 4FSK modulator/demodulator on LimeSDR FPGA ?
I’m not sure, but i see something like if LMS7002 support 4FSK demod/modulator. Did someone already play with it ? (in this case, the TDMA could be FPGA based)
For the transmission: Is it possible to stop the transmit carrier when i have nothing to send ? (On this forum I found lot of persons looking for a solution to stop the carrier, without reseting the lime… Someone find the “copy” block, but i don’t tried yet.