Skip to main content Link Menu Expand (external link) Document Search Copy Copied

5.2 SubG-FSK Connection

Endpoints working in SubG-FSK mode shall be synchronized with a Gateway before an uplink or downlink transmission is performed. The synchronization mechanism works by searching for a periodic frame sent by Gateways, namely Beacon frames. Endpoints shall detect eligible Gateways by searching and receiving Beacons. In addition to its role in synchronization, Beacon payload carries basic information about the state of the Gateway, such as the Gateway’s cloud connection status, hopping seed or sequence number. The Beacon payload is not encrypted, allowing discovery and connection initiation by all Amazon Sidewalk devices. For a detailed description of the Beacon frame format and information carried by the Beacon, see section 5.1.3.1.section 5.2.1 describes the Beacon discovery mechanism that Endpoints use in initial synchronization with a Gateway.

section 5.2.2 describes how Endpoints maintain synchronization with a Gateway.

section 5.2.3 describes Endpoints’ data packet transmission scheduling in both directions.

section 5.2.4 describes the mechanism of the channel number calculation.

section 5.2.5 describes the mechanism that reduces/eliminates over the air collision.

5.2.1 Beacon discovery

The procedure of discovering nearby Gateways through their periodic Beacon transmissions is called the Beacon discovery procedure. The Beacon discovery procedure is based on traversing the channel list and performing a preamble detection on each channel. The Beacon discovery procedure is divided into two phases: preamble detection in the currently selected channel and channel change operation. If a preamble is not detected on a channel, then the Endpoint shall switch to the next channel from the list and repeat the operation. If a preamble is detected, then the Endpoint shall receive the PHY frame and check if the received frame is a Beacon frame from a Gateway eligible for connections. The duration of each phase is defined by the following:

  1. tr_det_listening - time period used for preamble detection
  2. ch_change - time period used for switching to the next channel from the list

Note that the Beacon preamble is long enough to ensure detection regardless of the channel on which the Beacon packet is transmitted. The preamble duration is calculated by (nb_channels + 1)*(tr_det_listening + ch_change) and is greater than or equal to prm_dur. The whole PHY frame duration of the Beacon is equal to bcn_dur.

The Beacon discovery algorithm schedule is as follows:

  1. Select channel 0.
  2. Listen to the medium on selected channel for tr_det_listening

    1. if the preamble is detected, start receiving the PHY frame for a maximum duration of bcn_dur time

      1. if the whole PHY frame is not received within bcn_dur time, stop receiving and go to bullet 3
      2. if the whole PHY frame is received within bcn_dur time, then go to (b)
    2. frame is checked against being a Beacon and fitting the Beacon criteria

      1. if the frame is accepted and the Beacon is received, then stop the algorithm
      2. if the frame is not accepted, then go to bullet 3
    3. if traffic is not detected, then go to bullet 3

  3. Switch to the next channel within the ch_change time

    1. if all supported channels are used, then go to bullet 1
    2. if not all supported channels are used, then increment the current channel by 1 and continue from bullet 2

figure 5.45 shows how the algorithm works.

SubG-FSK connection - Beacon Discovery

fig 5.45 SubG-FSK connection - Beacon Discovery

5.2.2 Synchronization maintenance

Based on the channel hopping algorithm, synchronized devices are capable of calculating the channel on which the next Beacon should be transmitted. Additionally, Beacons are broadcast every bcn_interval time interval so a synchronized Endpoint knows the channel and the approximate timing of the next Beacon packet. This leads to less time consumed receiving the Beacon as the synchronized device receives just the tail of the Beacon preamble transmitted by the Gateway. The Endpoint opens a downlink detection slot for each bcn_interval and listens for ongoing transmission for tr_det_listening time. When the transmission is detected, the device starts to receive the whole PHY frame and validate whether the received data is the Beacon.figure 5.46 shows the Beacon reception process on the synchronized Endpoint.

SubG-FSK connection - Beacon reception

fig 5.46 SubG-FSK connection - Beacon reception

If a synchronized Endpoint fails to receive a Beacon, the Endpoint continues Link Layer operations and attempts to receive the next Beacon while the number of consecutive failures is less than 4. The third consecutive failure triggers the Beacon discovery procedure.

figure 5.47 shows the Beacon timing from the Gateway, synchronized Endpoint and the device detecting the Beacon.

SubG-FSK connection - Beacon operations

fig 5.47 SubG-FSK connection - Beacon operations

An Endpoint in SubG-FSK mode shall send and receive data using Target Transmission Times. Target Transmission Times are separated by the time interval slot_int.

SubG-FSK connection - Opportunities

fig 5.48 SubG-FSK connection - Opportunities

Gateways broadcast Beacons frequently, every bcn_interval. The number of slots can be calculated based on the following equation:

nb_slot = bcn_interval / slot_int

SubG-FSK connection - Opportunities and Beacon

fig 5.49 SubG-FSK connection - Opportunities and Beacon

There is one Target Transmission Time in each slot. Target transmission times can be used for both uplink and downlink. The Gateway further specifies a subset for an uplink, i.e. from an Endpoint to a Gateways, for one or a set of nodes and similarly another subset of slots for downlink transmissions from a Gateway to an Endpoint. The following slots are not used for uplink and downlink slots: 0, 1, 2 and nb_slot - 1. These are reserved for the Beacon broadcasting. Hence, the index of the first and last uplink and downlink opportunities are is 3 and is nb_slot - 2.

The subset of slots assigned for each Endpoint’s uplink and downlink transmissions are characterized by two parameters: offset and periodicity. The offset is the number of slots between slot 0 and the first slot that is scheduled for uplink or downlink. The periodicity is the time interval between subsequent slots that are scheduled for uplink or downlink. The maximum number of slots that may be used for uplink or downlink activity has the value ul_dl_nb_slot. This value can be calculated by the following equation:

ul_dl_nb_slot = nb_slot - 4 (number of slots that shall not be used for uplink and downlink slots)

SubG-FSK connection - DL scheduling

fig 5.50 SubG-FSK connection - DL scheduling

SubG-FSK connection - UL scheduling

fig 5.51 SubG-FSK connection - UL scheduling

The device starting its transmission shall use a contention mechanism to sense whether the medium is free and uplink transmission may be performed.

The Endpoint shall sense the medium for the tr_det_listening duration for each Target Transmission Time and start receiving data if traffic is detected. If traffic is not detected, then the Endpoint may switch off the radio until the next scheduled uplink or downlink Target Transmission Time.

Devices working in SubG-FSK mode shall use a channel hopping mechanism for all network activities.

5.2.4 Channel hopping

The channel hopping mechanism calculates a channel number for each transmit and receive activity. The number of supported channels may differ for different regions and the number of supported channels is nb_channels. Transmission that starts in a selected slot on a channel shall finish on the same channel, even if the transmission spans following slots. The channel calculations for the Beacon broadcasting and Endpoint uplink or downlink transmissions are calculated separately. The result of the calculations is a hopping sequence that contains channel numbers for upcoming transmissions. The Beacon hopping sequence contains nb_bcn_channels elements. The uplink or downlink hopping sequence contains nb_ul_dl_channels. The hopping sequence calculations are described in section 5.2.4.3 and section 5.2.4.4. Both sequences are derived from the channel shuffler. The channel shuffler uses a pseudo random number generator. For further details, see section 5.2.4.1.

5.2.4.1 Pseudorandom number generator

The pseudorandom number generator (PRNG) produces pseudorandom values that are used in an iterative process by the channel shuffler and linear feedback shift register (LFSR) is used for that purpose. The lfsr_value[ n ] is produced by the linear-feedback shift register where n = 0, 1, 2, 3, … , nb_channels-1. LFSR is implemented as a feedback polynomial in the following shape:

x16 + x14 + x13 + x11 + 1

The feedback polynomial is used in an iterative process where output of n-1 step is the base for calculations in step n. The output value of the feedback polynomial can be calculated as follows:

msb = lfsr_value [n-1] XOR

( lfsr_value [ n - 1 ] >> 2) XOR

( lfsr_value [ n - 1 ] >> 3 ) XOR

( lfsr_value [ n - 1 ] >> 5 )

lfsr_value [ n ] = ( lfsr_value [ n - 1 ] >> 1 ) OR  ( msb << 15)

The LFSR is initialized with seed and seq_id:

  1. 16 most significant bits of the seed are taken: msb_seed
  2. 16 least significant bits of the seed are taken: lsb_seed
  3. the pseudo-random number generator is initialized as:

    lfsr_init = msb_seed XOR lsb_seed XOR seq_id

The first feedback polynomial value for n = 0 is calculated based on the following:

msb = lfsr_init XOR

( lfsr_init >> 2 ) XOR

( lfsr_init >> 3 ) XOR

( lfsr_init >> 5 )

lfsr_value [ 0 ] = ( lfsr_init >> 1) OR  ( msb << 15 )

The lfsr_value[ 0 ] shall be a non-zero value. In case the lfsr_value[0] value is zero, then 0xACE1 shall be used instead.

5.2.4.2 Channel shuffler

The channel shuffler produces a randomized sequence of nb_channels numbers. The channel shuffler involves a random number generator to randomize the sequence and the randomization algorithm is as follows:

  1. Initialize RNG with seed, seq_id
  2. Initialize the sequence of numbers with values: 0, 1, 2, 3, …, nb_channels-1
  3. Initialize the iteration number n with value 0.
  4. Calculate random value: rng_out_value[ n ] = lfsr_value[ n ] MOD nb_channels
  5. Swap numbers from the sequence pointed out by rng_out_value[n] and n indexes
  6. Increase the iteration number n = n + 1

    1. if n <= nb_channels-1 continue from bullet 4
    2. if n > nb_channels-1 stop the algorithm

The schematic process of the sequence randomization is shown in 5.52.

SubG-FSK connection - Channels randomization process

fig 5.52 SubG-FSK connection - Channels randomization process

5.2.4.3 Beacon hopping sequence calculation

Each subsequent Beacon is transmitted on a different channel. The channel number is taken from the channel hopping sequence that contains nb_channels elements. Values in the channel hopping sequence are calculated by the channel shuffler. The channel shuffler input seed is broadcast by the Beacon and can be found in the field hdr_hop_seed (see section 5.1.3.1). The channel shuffler input seq_id indicates the number of channels sequence and is calculated based on two parameters:

  1. bcn_hop_sequence_num - the value is broadcast in the Beacon section (see 5.1.3.1)
  2. nb_channels - number of supported channels

The equation for the seq_id is as follows:

seq_id = bcn_hop_sequence_num / nb_channels

The index in the numbers sequence that points out the value indicating the channel of the received Beacon is bcn_hop_sequence_num MOD nb_channels while the upcoming Beacon channel value is pointed out by index (bcn_hop_sequence_num +1) MOD nb_channels.

The Beacon channel usage example is shown in figure 5.53. The assumptions for the figure are nb_channels = 69, bcn_hop_sequence_num starts from 0.

SubG-FSK connection - Beacon channels

fig 5.53 SubG-FSK connection - Beacon channels

Subsequent slots that may be used for Endpoint uplink or downlink activity shall have different channels assigned (see section 5.2.3). The channel assignment is defined by the channel hopping sequence list that contains nb_ul_dl_channels elements. Each element indicates the channel number is seen once in the values sequence. Additionally, the channel used by Beacon broadcasting for the current bcn_interval period, channels used for nb_neighb_bcn past and future Beacons shall not be present in the uplink or downlink hopping sequence. The value of nb_ul_dl_channels can be calculated using the following equation:

nb_ul_dl_channels = nb_channels - 2*nb_neighb_bcn - 1

The base for the uplink or downlink channels sequence calculation is the channel shuffler and the Beacon hopping sequence. The channels sequence calculation starts with the channel shuffler that has two parameters: seed and seq_id. The seed value is broadcast by the Beacon and can be found in the field hdr_hop_seed (see section 5.1.3.1). The seq_id shall be calculated based on four parameters:

  1. bcn_hop_sequence_num - the value is broadcasted in the Beacon
  2. nb_ul_dl_channels - number of channels used for uplink or downlink activity
  3. nb_slot - number of slots in bcn_interval
  4. slot_nb - slot number (range is from 0 to nb_slot-1)

The equation for the seq_id is as follows:

seq_id = ((bcn_hop_sequence_num * nb_slot) + slot_nb) / nb_ul_dl_channels

The output of the channel shuffler is the sequence of nb_channels values. The next step is to remove the last three channels used for broadcasting Beacons, nb_neighb_bcn and the next two channels that will be used for broadcasting Beacons, nb_neighb_bcn based on the calculated Beacon hopping sequence returned by the channel shuffler. If the calculation happens during a Beacon slot, that Beacon slot is counted with the last three channels used for broadcasting Beacons. After removing Beacon channels, the final sequence of nb_ul_dl_channels values is the uplink or downlink hopping sequence.

The channel value that shall be used for the uplink or downlink slot is given by hop_seq_index value. The channel value indicates the index in the hopping sequence that corresponds to the channel number. The index value can be calculated based on the following equation:

hop_seq_index = ((bcn_hop_sequence_num * nb_slot) + slot_nb) MOD nb_ul_dl_channels

An example of uplink, downlink and the Beacon channel hopping sequence usage is shown in figure 5.54. The example has the following parameters nb_channels = 69, nb_ul_dl_channels = 64, bcn_interval = 10080 ms, slot_int = 63 ms, nb_slot = 160.

SubG-FSK connection - Channel hopping usage

fig 5.54 SubG-FSK connection - Channel hopping usage

5.2.5 Contention mechanism

The role of the contention mechanism is to prevent a collision when two or more Endpoints start sending data in the same transmission slot. At a random time slightly before the Target Transmission Time, the device shall check whether the medium is free before transmission is started, and for that purpose a listen-before-transmit solution is used. The transmission activity is forbidden if the channel is busy and the device shall defer the transmission to a later Target Transmission Time. The transmission activity is allowed if the channel is free.

The check of medium availability is done in a contention window which precedes the target transmission time. The contention window duration has a value contend_time. The contention window is divided into 6 sub-slots. Each sub-slot has duration sub_slot_time. The number of sub-slots is defined by sub_slot_nb and the duration of each sub-slot is defined by sub_slot_time. The Endpoint has to select one sub-slot randomly. Gateways select deterministically, and always select sub_slot_nb-1. The selected slot is used for the detection of activity from other devices in the network.figure 5.55 shows the timing of contention sub-slots and uplink slots.

SubG-FSK connection - Contention window

fig 5.55 SubG-FSK connection - Contention window

If the device does not detect any activity on the selected sub-slot, the device starts transmission. The transmission shall start in a subsequent sub-slot. All the remaining subsequent sub-slots shall be used for transmission of additional preamble symbols prepended to the Physical Layer frame (see section 5.1.4). If sub-slot 0 is used to detect activity, additional preamble symbols shall not be added. The actual Physical Layer frame can be started at the Target Transmission time. figure 5.56 shows when the device can start sending the data.

SubG-FSK connection - Data transmission - Allowed

fig 5.56 SubG-FSK connection - Data transmission - Allowed

If the device detects activity on the selected sub-slot, then the device shall not start its transmission. The device shall select the next transmission slot randomly from the set of the next 4 subsequent uplink slots. At the next scheduled transmission slot, the channel availability check process needs to be performed again with a new random sub-slot selection. This process can be repeated up to tr_ret_nb times before transmission failure is concluded.figure 5.57 shows the situation when transmission needs to be deferred to a later time.

SubG-FSK connection - Data transmission - Forbidden

fig 5.57 SubG-FSK connection - Data transmission - Forbidden


Back to top

©2023 Amazon.com, Inc. or its affiliates (collectively, “Amazon”). All Rights Reserved.