Giter Site home page Giter Site logo

Comments (29)

LaneaLucy avatar LaneaLucy commented on May 20, 2024 1

I don't know but i opened a issue on mmdvmhost to find out

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

Hi @LaneaLucy can you please clarify what type of terminals (aka mobile stations, handheld dmr radio, car/vehicle dmr radio, ...) you want to use? Or if you intend to just use the MMDVM/DMR protocols to transfer arbitrary data over MMDVM master (hblink, freedmr, ...) without terminals?

There is sadly no easy and generic way of using the terminals, which is the reason why there are no ready-made examples for such, because usually the protocols implemented in ok-dmrlib are encapsulated by proprietary protocols (of talking to terminals or using their serial interface for the matter)

Best of luck with your endeavours

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

I just want to be able to send data over RF. This could be from one mmdvm directly to another mmdvm, or it could be mmdvm <---RF---> mmdvm <---network---> dmr server <---network---> mmdvm <---RF---> mmdvm
Or anything in between.
The important part is rf

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

not sure what you mean by "mmdvm", in my post i talk about software endpoint implementing Homebrew/MMDVM protocol (by G4KLX and friends).
If you need to pass the data over RF, it must be valid data transmission including header and terminator

I'd suggest you start your study in TransmissionGenerator

and respective tests

Which allows you to generate all bursts necessary to transmit arbitrary data

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

Could you maybe make a small example which uses a mmdvm hotspot to send hello world to another mmdvm hotspot?
Just a small cli program where you can use --tx as argument for the sender how then sends every 3 seconds a hello world message with a increasing counter, like "hello world 1", "hello world 2", ... And with --rx as argument which just receives those hello world messages and prints them to the console.
I bet this would help many people who would like to use this lib

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

Yeah, that wont happen any time soon sorry, i am overloaded. I'll appreciate anything from community, even PoC, i could later clean up and publish.

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

I really need a example how to send for example "hello world" via mmdvm hardware and receive it via mmdvm hardware too.
It can't be that there is no documented library to just send some generic stuff over dmr.
Even with some dmr server in-between mmdvm hardware + mmdvmhost and the example software I would be ok.
But I just need a simple example code.
Anyone can help me with it please?
What about help for a little donation?

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

tl;dr: i'm not sure what kind of "simple example code" could be produced, i never worked low-level with mmdvmhost, maybe if it has CLI interface or something, it could be easier than what I describe below


If it's meant to include on-air transmission, you'll want similar setup

[homebrew client] -> hblink3 -> mmdvmhost -> (air) -> mmdvmhost/radio

Question is what type of protocol you'll use to transfer data, i'd suggest usual Rate 1, 1/2 or 3/4 data transmission.
This kind of transmission might not be visible on radio, but will be delivered over air and you can log/decode it

If you check out the sample bursts needed to deliver SMS here:

There are preambles (might not be needed, usually to clear out traffic and let the radio-hw sync on RX
And bursts after preambles, incl. header, decoded:

> dmrlib-dmr-burst 7abc3520240678e3a3436a8b55bdff57d75df5d55ed179b2304122624d0589a7bc
7abc3520240678e3a3436a8b55bdff57d75df5d55ed179b2304122624d0589a7bc
[BsSourcedData] [DataTypes.DataHeader] [CC: 5]
	[DataPacketFormats.DataPacketUnconfirmed] [SAPIdentifier.UDP_IP_compression] [TARGET IS INDIVIDUAL] [PAD OCTETS: 10] [SOURCE: 2308094] [DESTINATION: 2308092] [FullMessageFlag.FirstTryToCompletePacket] [BTF: 2] [FSN: Unconfirmed data single fragment]

> dmrlib-dmr-burst 430d22106233407c00b0219a55ddff57d75df5d6f1492a46d43d20c20b8291214b
430d22106233407c00b0219a55ddff57d75df5d6f1492a46d43d20c20b8291214b
[BsSourcedData] [DataTypes.Rate12Data] [CC: 5]
	[RATE 1/2 DATA UNCONFIRMED] [DATA(12) d6790062620003bf00070000]

> dmrlib-dmr-burst 008a00da01b401400330180015ddff57d75df5d6f104025802700ae0250010001e
008a00da01b401400330180015ddff57d75df5d6f104025802700ae0250010001e
[BsSourcedData] [DataTypes.Rate12Data] [CC: 5]
	[RATE 1/2 DATA UNCONFIRMED] [DATA(12) 0000000000000000210b9a3d]

In this specific case it carries UDP/IP compressed header and payload (Motorola TMS - Text Messaging Service - Acknowledgment with seq.no. 7)

> dmrlib-dmr-ipudp d6790062620003bf00070000
d6790062620003bf00070000
[IPv4 id: 54905] [IP src: IPAddressIdentifier.RadioNetwork] [IP dst: IPAddressIdentifier.RadioNetwork] [UDP src: UDPPortIdentifier.ManufacturerSpecific (98)] [UDP dst: UDPPortIdentifier.ManufacturerSpecific (98)]  [DATA: 0003bf00070000]

> debug-motorola-tmp 0003bf0007
{'_m_custom_pdu_type': 31,
 'len_address': 0,
 'message_header': {'acknowledgement_required': False,
                    'control_user_bit': True,
                    'extension_bit': True,
                    'pdu_type': 15,
                    'reserved': True},
 'message_size': 3,
 'pdu_content': {'tms_acknowledgement_header_sequence_number': {'has_msb_header': False,
                                                                'header_lsb_bits': 7,
                                                                'header_lsb_reserved': 0}},
 'unparsed_data': b''}

So with the setup i outlined in the beginning, you will need to

  1. establish mmdvm/homebrew protocol link with hblink3 (or similar mmdvm hub)
  2. generate transmission bursts and send them over wrapped within MMDVM DMRD pdus, see https://github.com/OK-DMR/DMR-HAM-Protocols/blob/master/homebrew-2015.md#210-dmr-data-dmrd
  3. receive bursts on the other end and extract data

Or if you talk about using DMO (Direct Mode Operation), eg. without repeater infrastructure, you could even connect two radios (or maybe two mmdvm modems, i never tried that) to single computer. However then you'd talk to the radio using Motorola/Hytera/other proprietary protocol, MMDVM has no support in hardware afaik.

from ok-dmrlib.

alwinhb avatar alwinhb commented on May 20, 2024

@smarek Do you have more such samples

like - 7abc3520240678e3a3436a8b55bdff57d75df5d55ed179b2304122624d0589a7bc

For all the Data PDU's

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

@smarek could you please make a complete example out of it?
Just a Python program that connects to hblink3 and then sends "hello world" and receives it again.
I just need a complete example application to send hello world and receives it again, maybe with src and dst dmr id as input? Don't need to be a argument, some global variables inside the code would be enough for the beginning.
Then I just need to figure out how to link 2 hblink3 over the air

from ok-dmrlib.

alwinhb avatar alwinhb commented on May 20, 2024

@smarek Looking for your help on the above comments

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

@LaneaLucy i can do that, however i don't have much time to invest right now, if you're in hurry, try to work out something, it's always easier for me to help with something existing than making everything from scratch on my own :)

@alwinhb i don't have anything extracted at the moment, you should really try to work with the PCAP data i already linked you and extract the right bursts, the tools are available (ok-dmrlib and dmr-kaitai cli scripts) if they need enhancement, you can try to modify PcapTool or any other, or at least identify "the way i want to use the script and it's not provided". I won't do your work on your behalf, not for free, sorry

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

@smarek i can wait for now, but i really need at least a hello world example of doing just through a dmr server and through mmdvm hardware modems. If i have those for examples (one transmit, one receive, over server and over mmdvm) i can mix them together as i need them and replace the hello world message with my own stuff.

Is there a site where i can for example buy you a coffee?

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

@LaneaLucy thank you for the offer, i have github sponsors set-up for a while now https://github.com/sponsors/smarek
however buymeacoffee.com works for me as well, let me know if you have preference (or will use github sponsors) and i can make myself available on some platform of your choice, or i'll let you know my BIC/IBAN in private if you want to skip the middle men

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

@smarek send you some over GitHub sponsor, i hope this is enough for the beginning.
What do you mean with platform? Do you mean sponsor/donation platform or something with the library?

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

meant sponsor/donation platform, i actually was curious, so now i'm also on https://www.buymeacoffee.com/smarek

anyway, yep, i'll give it some time

actually you only will need single hblink3, because your network model will be: "recipient" and "sender" will be homebrew protocol endpoints emulating dmr terminal(s)

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

So if i understand right, for a standalone rf node i need a local dmr server in the middle for mmdvm to connect to?

from ok-dmrlib.

alwinhb avatar alwinhb commented on May 20, 2024

@smarek Thanks for the quick help, Not looking for the quick help, Whenever you get time you may add the hex samples (Data and Voice)

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

@alwinhb suit yourself, i updated pcaptool to output both description of processed burst and hex form of on-air burst (not raw input wrapped in IPSC/MMDVM/whatever protocol), now you should be able to inspect all the pcap data easily

usage:

> dmrlib-pcap-tool --observe-transmissions HYTERA_IPSC/gw_hytera_mmdvm_2_start_voice_voice_close.pcapng
--output truncated--

[BsSourcedData] [DataTypes.VoiceLCHeader] [CC: 1]
	[FLCOs.GroupVoiceChannelUser] [FeatureSetIDs.StandardizedFID] [SOURCE: 2308155] [GROUP: 111] [SERVICE_OPTIONS: PRIORITY:0]
06e50ae604f020e84af05600046dff57d75df5de32b008303e4038002d813f8317
[BsSourcedVoice]  [VoiceBursts.VoiceBurstA]
e96180454a7ef78accec2c87277755fd7df75f76d8988caade0d842771d99d8a88
[BsSourcedVoice]  [VoiceBursts.VoiceBurstA]
e96180454a7ef78accec2c87277755fd7df75f76d8988caade0d842771d99d8a88
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstB][LCSS.FirstFragmentLC] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ed0ce6210f24786086ce2f867621309000c0c910ed9ccaaaff3ce4704f554824c0
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstC][LCSS.FirstFragmentLC] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ed0ce6210f24786086ce2f867621309000c0c910ed9ccaaaff3ce4704f554824c0
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstD][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
b6a3a3216944e4e20856fb86da1170a0a06057418dceec2ec6e3a2ea07ef0d4086
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstE][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
b6a3a3216944e4e20856fb86da1170a0a06057418dceec2ec6e3a2ea07ef0d4086
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstF][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
9693a3231962d5c20cc1aec0341170f121b097438c2980e6ef3da5553788adcaaa
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstA][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
9693a3231962d5c20cc1aec0341170f121b097438c2980e6ef3da5553788adcaaa
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstB][LCSS.LastFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
a8b2c1314396988aeafc3e7eef615110c170f075959924ea3ab8d9b7706a9ca2e0
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstC][LCSS.LastFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
a8b2c1314396988aeafc3e7eef615110c170f075959924ea3ab8d9b7706a9ca2e0
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstD][LCSS.SingleFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
8949e623042e2dc0aebe6cc2034119c3d1642e25e67a8846ad7ce03767a21daa26
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstE][LCSS.SingleFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
8949e623042e2dc0aebe6cc2034119c3d1642e25e67a8846ad7ce03767a21daa26
[BsSourcedVoice]  [VoiceBursts.VoiceBurstA]
b969e760023e1dc2e83255ce5d0755fd7df75f766c5a08acab49c613275f38a2ca
[BsSourcedVoice]  [VoiceBursts.VoiceBurstA]
b969e760023e1dc2e83255ce5d0755fd7df75f766c5a08acab49c613275f38a2ca
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstB][LCSS.FirstFragmentLC] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
2144ee1b527e1c2cccb959c537613211400179117a6b82ac88027fa907d2a18e4e
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstC][LCSS.FirstFragmentLC] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
2144ee1b527e1c2cccb959c537613211400179117a6b82ac88027fa907d2a18e4e
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstD][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
c8370a934797a32062e528813031703c3410a7442a4064cea16d1ada46f0e0c2cc
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstE][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
c8370a934797a32062e528813031703c3410a7442a4064cea16d1ada46f0e0c2cc
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstF][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ae256aba653be486a0ff55e610017480066a37460a316a28ca73c17021d60022c2
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstA][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ae256aba653be486a0ff55e610017480066a37460a316a28ca73c17021d60022c2
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstB][LCSS.LastFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
bb6ac705433d6b80eebba2c25771509bb1b8d071b2a88c88cc65e553627f416e0e
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstC][LCSS.LastFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
bb6ac705433d6b80eebba2c25771509bb1b8d071b2a88c88cc65e553627f416e0e
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstD][LCSS.SingleFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
87da81261118ad88c4fb611aab4119c3d1642e25da238ec0cf326dd258e246c6e6
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstE][LCSS.SingleFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
87da81261118ad88c4fb611aab4119c3d1642e25da238ec0cf326dd258e246c6e6
[BsSourcedVoice]  [VoiceBursts.VoiceBurstA]
e80118f3ed59bbc4e0ab2d548a7755fd7df75f78352584eeef6815c86da287cca8
[BsSourcedVoice]  [VoiceBursts.VoiceBurstA]
e80118f3ed59bbc4e0ab2d548a7755fd7df75f78352584eeef6815c86da287cca8
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstB][LCSS.FirstFragmentLC] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
fd40535bc6a86b4a00ae776650b1309000c0c91d348c28048c664714ad05ce0826
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstC][LCSS.FirstFragmentLC] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
fd40535bc6a86b4a00ae776650b1309000c0c91d348c28048c664714ad05ce0826
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstD][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ad7444149e56cc2c048c452756f170a0a0605740de48a22a8e762472a1fa58a468
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstE][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ad7444149e56cc2c048c452756f170a0a0605740de48a22a8e762472a1fa58a468
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstF][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
bf644436ec508c2e26ef274170c170f121b0974784fcc0a6f9204670861d88ae28
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstA][LCSS.ContinuationFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
bf644436ec508c2e26ef274170c170f121b0974784fcc0a6f9204670861d88ae28
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstB][LCSS.LastFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ca1467124ae5e44eeada356663515110c170f07ba78468aefe0037e951d9cce222
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstC][LCSS.LastFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
ca1467124ae5e44eeada356663515110c170f07ba78468aefe0037e951d9cce222
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstD][LCSS.SingleFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
fa360bc141b5e5044499666ca25119c3d1642e27ef0140eaab116f8862c5d5ee6c
[EmbeddedSignalling]  [VoiceBursts.VoiceBurstE][LCSS.SingleFragmentLCorCSBK] [PreemptionPowerIndicator.CarriesSameChannelOrNullEmbeddedMessage] [CC: 1]
fa360bc141b5e5044499666ca25119c3d1642e27ef0140eaab116f8862c5d5ee6c
[BsSourcedVoice]  [VoiceBursts.VoiceBurstA]
ab136dab46c796ce4eed0ca4015755fd7df75f70ffed88cc9c5dc16174966b8802

--output truncated--

And you can reverse inspect operation by going

> dmrlib-dmr-burst 068a0a32044020904a8056a004adff57d75df5d967a40b08392034402581268324
068a0a32044020904a8056a004adff57d75df5d967a40b08392034402581268324
[BsSourcedData] [DataTypes.TerminatorWithLC] [CC: 1]
	[FLCOs.GroupVoiceChannelUser] [FeatureSetIDs.StandardizedFID] [SOURCE: 2308155] [GROUP: 111] [SERVICE_OPTIONS: PRIORITY:0]

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

So if i understand right, for a standalone rf node i need a local dmr server in the middle for mmdvm to connect to?

depends on the "standalone rf node" capability, if it's standalone hytera/motorola/... repeater, you don't need anything else, but you'll have to talk to it in proprietary language

if it's mmdvmhost , afaik it expects some kind of upstream (mmdvm dmr server or dmrgateway or alike)

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

if it's mmdvmhost , afaik it expects some kind of upstream (mmdvm dmr server or dmrgateway or alike)

Ok, i can work with this, maybe I find a minimal dmr server for it where no full one is needed.
But how are the examples going?

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

minimal mmdvm server (such as hblink3 without ACL and other features) just takes in dmr bursts wrapped in mmdvm protocol and distributes them to other clients (repeat to all scenario, "what one client sends to hblink3 will be sent to all other clients")

i still don't clearly understand your intended hardware setup, but since you want "mmdvm hardware" then the most simple setup will be "2x mmdvm hotspot (mmdvmhost on rpi or similar)" and hblink3 which will interconnect those two hotspots. Then you can monitor all the DMR traffic and inject traffic by acting as yet another "mmdvm hotspot" connected to the same hblink3

and script-wise

[SENDER SCRIPT]

  1. connect to hblink3 (ip, port, password) using repeater_id=1234
  2. generate data transmission bursts, wrap those in mmdvm protocol and send to hblink3
  3. this will deliver data to all connected terminals

[RECIPIENT SCRIPT]

  1. connect to hblink3 (ip, port, password) using repeater_id=4321
  2. wait for bursts to arrive, decode data transmission and extract contents

does this seem useful to you?

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

forgot to tag you @LaneaLucy

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

@smarek
I want to do: computer --- rf --- computer,
Computer ---- rf --- network --- computer and
Computer --- network --- computer.
I just want to be able to send whatever text messages for the beginning over rf and network over dmr between two or more computer

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

@LaneaLucy
so if hblink connects two computers, you're happy with encoding and decoding the message as dmr data transmission
if it has rf nodes connected, it will transmit over rf and if rf recipient is setup correctly, it will receive valid dmr data transmission. seems like my proposal will work for you, i'll stich that up

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

@smarek
If it wouldn't much more work for you, it would be great if you could tell me, what difference i need to set up for the rf recipient. Thx

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

@LaneaLucy that depends entirely on the hardware you own, i cannot help you im afraid, i assume you can transfer message from pc[mmdvm hotspot + hblink3] to pc[dmr terminal], i don't think you can just use two mmdvmhosts to rf-connect two computers, i think you need dmr terminal at least on one side of the solution. Also the easiest way would be to have two dmr terminals in DMO, but then we'd not be dealing with MMDVM but terminal-specific-protocol (such as hytera HRNP/HDAP) and respective serial interfaces.

Can you diagram your network model with respective hardware you intend to use? Then I'd maybe be able to help more

from ok-dmrlib.

LaneaLucy avatar LaneaLucy commented on May 20, 2024

@smarek rf path would be just mmdvm as hardware if possible, because they are easy to get

from ok-dmrlib.

smarek avatar smarek commented on May 20, 2024

@smarek rf path would be just mmdvm as hardware if possible, because they are easy to get

I dont think its possible to connect two mmdvm modems in DMO. Do you think its possible? Can you link devices and settings/config of mmdvmhost maybe? Id be interested but i dont work with hardware, so i dont know if it can be done

from ok-dmrlib.

Related Issues (6)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.