(Example)
(Clients known to be working)
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
= YSF Direct Protocol =
 
= YSF Direct Protocol =
  
The target if this protocol is to allow users to connect their SystemFusion YSF-enabled hotspots and repeaters directly to BrandMeister.
+
The target of this protocol is to allow users to connect their SystemFusion YSF-enabled hotspots and repeaters directly to BrandMeister.
  
 
YSF Direct is an extension to existing YSF reflector protocol.
 
YSF Direct is an extension to existing YSF reflector protocol.
Line 10: Line 10:
 
** Configuration option message (YSFO)
 
** Configuration option message (YSFO)
 
** Status messages (YSFACK / YSFNACK)
 
** Status messages (YSFACK / YSFNACK)
 +
 +
Unused characters in callsign field should be filled with NULL or space characters.
  
 
== Login procedure ==
 
== Login procedure ==
  
# User -> Server: "YSFL" <10 characters of hotspot/repeater call-sign>
+
# User -> Server: "YSFL" <10 characters of hotspot/repeater callsign>
# Server -> User:  "YSFACK" <10 characters of server call-sign> <4 bytes of salt>
+
# Server -> User:  "YSFACK" <10 characters of server callsign> <4 bytes of salt>
# User -> Server: "YSFK" <10 characters of hotspot/repeater call-sign> <32 bytes of SHA256(salt + password)>
+
# User -> Server: "YSFK" <10 characters of hotspot/repeater callsign> <32 bytes of SHA256(salt + password)>
# Server -> User:  "YSFACK" <10 characters of server call-sign>
+
# Server -> User:  "YSFACK" <10 characters of server callsign>
  
In case of failure: "YSFNAK" <10 characters of server call-sign> <4 bytes of salt>
+
In case of failure: "YSFNAK" <10 characters of server callsign> <4 bytes of salt>
  
 
== Change assigned talk group ==
 
== Change assigned talk group ==
  
# User -> Server: "YSFO" <10 characters of hotspot/repeater call-sign> "group=" <ASCII string contains a talk group number (NULL-termination is optional)>
+
The message can be sent anytime when hotspot/repeater connected and authenticated. So main purpose for it is to change talk group. We suggest a YSF developers to add it into configuration settings as well to Wires-X menu.
# Server -> User:  "YSFACK" <10 characters of server call-sign>
+
  
In case of failure: "YSFNAK" <10 characters of server call-sign>
+
# User -> Server: "YSFO" <10 characters of hotspot/repeater callsign> "group=" <ASCII string contains a talk group number (NULL-termination is optional)>
 +
# Server -> User:  "YSFACK" <10 characters of server callsign>
 +
 
 +
In case of failure: "YSFNAK" <10 characters of server callsign>
  
 
=== Example ===
 
=== Example ===
Line 34: Line 38:
 
Response:
 
Response:
 
<pre>YSFACKSERVERCALL</pre>
 
<pre>YSFACKSERVERCALL</pre>
 +
<br>
 +
<b>=== Clients known to be working ===</b>
 +
 +
https://github.com/iu5jae/YSFBMGateway
 +
 +
It allows C4FM hotspots and repeaters to connect directly to the Brandmeister Master Server that has the YSF Direct protocol active, logging in with the Callsign and Password set in BM self-care. Allows changing TGs using DTMF, TGs > 5 digits via DG-ID radio, classic connection to YSF rooms via DG-ID.
 +
 +
https://github.com/stefanolande/YSFBMDirect
 +
 +
YSFBMDirect is a software that allows you to access Brandmeister as if it were a YSF reflector. The goal of this software is to build a YSF repeater that can connect to Brandmeister Talk Groups, without losing the possibility to connect to other YSF rooms.

Latest revision as of 21:09, 26 February 2023

YSF Direct Protocol

The target of this protocol is to allow users to connect their SystemFusion YSF-enabled hotspots and repeaters directly to BrandMeister.

YSF Direct is an extension to existing YSF reflector protocol.

  • IPv4 only
  • Standard YSFD and YSFP messages (user has to ping a server)
  • Additional messages (all of them similar to MMDVM DMR's protocol):
    • Login messages (YSFL / YSFK)
    • Configuration option message (YSFO)
    • Status messages (YSFACK / YSFNACK)

Unused characters in callsign field should be filled with NULL or space characters.

Login procedure

  1. User -> Server: "YSFL" <10 characters of hotspot/repeater callsign>
  2. Server -> User: "YSFACK" <10 characters of server callsign> <4 bytes of salt>
  3. User -> Server: "YSFK" <10 characters of hotspot/repeater callsign> <32 bytes of SHA256(salt + password)>
  4. Server -> User: "YSFACK" <10 characters of server callsign>

In case of failure: "YSFNAK" <10 characters of server callsign> <4 bytes of salt>

Change assigned talk group

The message can be sent anytime when hotspot/repeater connected and authenticated. So main purpose for it is to change talk group. We suggest a YSF developers to add it into configuration settings as well to Wires-X menu.

  1. User -> Server: "YSFO" <10 characters of hotspot/repeater callsign> "group=" <ASCII string contains a talk group number (NULL-termination is optional)>
  2. Server -> User: "YSFACK" <10 characters of server callsign>

In case of failure: "YSFNAK" <10 characters of server callsign>

Example

Request:

YSFOMYCALLSIGNgroup=91

Response:

YSFACKSERVERCALL


=== Clients known to be working ===

https://github.com/iu5jae/YSFBMGateway

It allows C4FM hotspots and repeaters to connect directly to the Brandmeister Master Server that has the YSF Direct protocol active, logging in with the Callsign and Password set in BM self-care. Allows changing TGs using DTMF, TGs > 5 digits via DG-ID radio, classic connection to YSF rooms via DG-ID.

https://github.com/stefanolande/YSFBMDirect

YSFBMDirect is a software that allows you to access Brandmeister as if it were a YSF reflector. The goal of this software is to build a YSF repeater that can connect to Brandmeister Talk Groups, without losing the possibility to connect to other YSF rooms.

YSF Direct Protocol[edit]

The target if this protocol is to allow users to connect their SystemFusion YSF-enabled hotspots and repeaters directly to BrandMeister.

YSF Direct is an extension to existing YSF reflector protocol.

Login procedure[edit]

  1. User -> Server: "YSFL" <10 characters of hotspot/repeater call-sign>
  2. Server -> User: "YSFACK" <10 characters of server call-sign> <4 bytes of salt>
  3. User -> Server: "YSFK" <10 characters of hotspot/repeater call-sign> <32 bytes of SHA256(salt + password)>
  4. Server -> User: "YSFACK" <10 characters of server call-sign>

In case of failure: "YSFNAK" <10 characters of server call-sign> <4 bytes of salt>

Change assigned talk group[edit]

  1. User -> Server: "YSFO" <10 characters of hotspot/repeater call-sign> "group=" <ASCII string contains a talk group number (NULL-termination is optional)>
  2. Server -> User: "YSFACK" <10 characters of server call-sign>

In case of failure: "YSFNAK" <10 characters of server call-sign>

Example[edit]

Request:

YSFOMYCALLSIGNgroup=91

Response:

YSFACKSERVERCALL