user manual cover.svg?20

Revision 20.4

1. Help

To request technical assistance, ask questions, or provide feedback on how to improve Skydel or this user manual, please contact Orolia at skydel-support@orolia.com. To stay up to date on the latest Skydel news and information, please visit our website: www.orolia.com↗.

2. About This Manual

The Orolia Skydel User Manual explains how to configure and use Skydel with different hardware setups and operating systems. If you purchased a turnkey solution from Orolia or one of its Value-Added Resellers, you were provided with additional documentation specific to your hardware setup.

This user manual is organized into 4 chapters:

  • Hardware Selection: This section describes the hardware required to run Skydel.

  • Hardware Setup: This section describes how to connect the hardware for different use cases.

  • Software Setup: This section explains how to install firmware, drivers, and Skydel.

  • Using Skydel: This section explains how to operate the Skydel software.

3. List of Acronyms

Acronym Description

BIOS

Built In Operating System

BOM

Bill Of Materials

CPU

Central Processing Unit

CUDA

Compute Unified Device Architecture

DAC

Digital to Analog Converter

DUT

Device Under Test

FPGA

Field Programmable Array

FTP

File Transfer Protocol

GNSS

Global Navigation Satellite System

GPS

Global Positioning System

GPSDO

GPS Disciplined Oscillator

GPU

Graphical Processing Unit

I/Q (IQ)

Amplitude of In-Phase (I) and Quadrature (Q) of carrier

JTAG

Joint Test Action Group

MIMO

Multiple Input Multiple Output

MTU

Maximum Transmission Unit

NI

National Instruments

NMEA

National Marine Electronics Association

OCXO

Oven-Controlled Crystal Oscillator

PC

Personnal Computer

PPS

Pulse Per Second

RAM

Random Access Memory

RF

Radio Frequency

RTK

Real-Time Kinematic

SDR

Software Defined Radio

SFP (SFP+)

Small Form-factor Pluggable

SMA

SubMiniature version A

TX

Transmission

TX/RX

Transmission/Reception

UHD

USRP Hardware Driver

USB

Universal Serial Bus

USRP

Universal Software Radio Peripheral

VCTCXO

Voltage Controlled, Temperature Compensated Oscillator

4. Overview

To run your first successful simulation with Skydel, you don’t need to read this entire manual. You can start by reading the Power Level: Live Sky vs. Simulation section followed by the Hardware Setup, and then jump directly to Running Your First Simulation.

4.1. Power Level: Live Sky vs. Simulation

The main objective of a GNSS simulator is to create a RF signal identical to the “Live Sky” at the GNSS receiver’s RF input connector. The next 2 diagrams depict the difference between the propagation of the real signal and the simulated signal (using a USRP SDR as an example).

propagation live sky.png?20
Propagation of the real GNSS signal from the satellite to the GNSS receiver
propagation simulation.png?20
Propagation of the simulated GNSS signal from Skydel to the GNSS receiver

As you can see in the simulation case, the signal power level can be much higher at the output of the SDR compared to the live sky. We strongly recommend that you:

  1. use attenuators to avoid damaging your GNSS receiver;

  2. use a DC-Block to avoid damaging the SDR due to the DC voltage provided by the GNSS receiver.

In general, when a GNSS receiver is receiving the RF signal from the live sky, the signal power level at the antenna is -130 dBm. The antenna amplifies the RF signal power level to about -110 dBm at the GNSS receiver’s input.

In the default simulation scenario, the GNSS simulator should create a signal with the same power level as the GNSS receiver’s input. Depending on the SDR model used, a different attenuation level may need to be applied to the signal emitted by the SDR.

4.2. Data Flow

  1. Skydel, through a computer setup, generates real-time I/Q samples that represent the GNSS baseband signals;

  2. The I/Q samples are pushed over the transport link (Ethernet or USB);

  3. The I/Q samples are queued in the SDR buffer. The SDR pulls the samples from the buffer at a steady rate and converts them to RF;

  4. When the SDR has more than one output, the signals are combined into a single RF cable;

  5. The RF signal is attenuated before it is sent through a DC Block and reaches the GNSS receiver being tested.

5. Hardware Selection

This section is intended for users who purchased a software-only version of Orolia’s Skydel. Users who own a turnkey solution automatically receive a properly configured and very powerful computer workstation, a Software-Defined Radio, and all required RF accessories.

There are 4 basic components to consider when building your simulator:

If necessary, please contact skydel-support@orolia.com for a detailed BOM to build your own simulator.

5.1. Software-Defined Radio

The first item to select is the Software-Defined Radio. The selection of other components will ultimately depend upon your choice of SDR.

The choice of an SDR model depends on your simulation requirements. Moreover, if you wish to repurpose your SDR for other uses, you should consider other characteristics such as central frequency range, output power level, community support, etc.

The SDR models currently supported by Skydel are as follows:

  1. Ettus N310

  2. Ettus X300/X310 or NI USRP-294xR/295XR

  3. Dektec DAT-2115B

Here’s a quick chart comparing Skydel-supported SDR:

Ettus N310 Ettus X300/X310
NI USRP-294xR/295xR
Dektec DTA-2115B

Number of RF Outputs

4

2

1

Frequency Range

10 to 6000 MHz

UBX: 10 to 6000 MHz

32 to 2186 MHz

Max Bandwidth per Output

100 MHz

160 MHz

72 MHz

Reference Clock

10 MHz

10 MHz

10 MHz

PPS Synchro

Yes

Yes

Yes

MIMO Operation

Yes

Yes

Yes

DAC Resolution

14 bits

16 bits

14 bits

Data Link

10 GbE

10 GbE

PCIe 1x 3.0

Operating System

Linux / Windows

Linux / Windows

Linux / Windows

The frequency range specified here is for the Ettus SDR with UBX daughterboard. Other RF daughterboards have different frequency ranges. See the Ettus website for options and specifications  www.ettus.com/product-categories/rf-daughterboards↗.
Skydel limits the maximum bandwidth to provide 100% reliable streaming. SDR may be capable of higher bandwidth for other applications.

5.1.1. Accessories

5.1.1.1. Requirements for Ettus N310
5.1.1.1.1. 10 GbE Cable

You will need to order a 10 GbE cable, as it’s not provided with the SDR. The cable should be SFP+ terminated on both ends. See www.ettus.com/product/category/Cables↗.

5.1.1.2. Requirements for Ettus X300/X310
5.1.1.2.1. Daughterboards

You will need to order 2 daughterboards for your SDR. Basically, the daughterboards contain the analog components of the SDR. We strongly recommended using Ettus UBX-160 daughterboards, as they include an RF shield and cover a larger range of frequencies. the Ettus website www.ettus.com/product-categories/rf-daughterboards↗ for a complete list of daughterboards from Ettus.

5.1.1.2.2. 10 GbE Cable

You will also need to order a 10 GbE cable, as it’s not provided with the SDR. The cable should be SFP+ terminated on both ends. See www.ettus.com/product/category/Cables↗.

5.1.1.3. Requirements for National Instruments USRP-294xR/USRP-295xR

When ordering SDR from National Instruments, you will receive a device with integrated daughterboards. You only need to order a 10 GbE cable, which is recommended and can be ordered from the National Instruments’ website.

5.1.1.4. Requirements for Dektec DTA-2115B

No extra accessories are required.

5.2. Reference Clock and PPS generator

In order to execute an accurate GNSS simulation, your SDR requires a precise reference clock. This section review various timing options available depending on the SDR model in use. Note that if you require more than one SDR in your simulation scenario (MIMO operation), each SDR will need to share the same 10 MHz reference clock and have a common Pulse Per Second (PPS) signal in order to be synchronized.

Below is a list of external clocks that have been successfully tested with the various SDRs supported by Skydel.

Ettus OctoClock-G NI CDA-2990 Orolia CDM-5
octoclock g.png?20
skydel cdm 5.png?20

Number of ports*

8

5

10 MHz

Yes

Yes

PPS

Yes

Yes

Form Factor

External

PCIe card

Manufacturer Website

www.ettus.com/product/details/OctoClock-G↗

CDM-5 Product Page ↗

  • The number of ports lists the available channels, thus the total number of concurrent SDR in MIMO operation.

5.2.1. Ettus X300/X310; National Instruments USRP-294xR/USRP-295xR

Option 1 - External Reference Clock

You can use any 10 MHz reference clock with a precision of 200 ppb or better. Simply connect it to the REF IN port of your SDR.

Option 2 - Internal GPSDO

You can add an internal 10 MHz reference clock inside the device itself. This add-on board is called the GPSDO Kit and contains a 10 MHz OCXO reference oscillator. www.ettus.com/product/details/GPSDO-MINI↗

NI USRP-295xR devices come out of the box equipped with a GPSDO. However, you must consider option 3 for MIMO operations with this device.
Option 3 - External Clock with Multiple SDR

If your planned setup includes more than one SDR (MIMO operation), you will need an external reference clock with multiple ports, such as this model.

5.2.2. Ettus N310

Option 1 - External Reference Clock

You can use any 10 MHz reference clock with a precision of 200 ppb or better. Simply connect it to the REF IN port of your SDR.

Option 2 - Internal GPSDO

The Ettus N310 includes an internal GPSDO, which hosts a 10 MHz OCXO reference oscillator. www.ettus.com/product/details/GPSDO-MINI↗

Option 3 - External Clock with Multiple SDR

If your planned setup includes more than one SDR (MIMO operation), you will need an external reference clock with multiple ports, such as this model.

5.2.3. Dektec DTA-2115B

An external reference clock is required when using a single DTA-2115B card: the onboard reference clock is not precise enough for GNSS simulation. Orolia’s CDM-5 is a PCIe card that fits alongside the DTA-2115B in a PC. Consult the external reference clock table.

5.2.3.1. Multiple Dektec DTA-2115B cards

If your planned setup includes more than one SDR (MIMO operation), you will need an external reference clock with multiple ports, such as this model.

5.3. RF Accessories

A handful of RF accessories are required in order to connect the SDR to your GNSS receiver (DUT). See Hardware Setup for more information on how these accessories are connected.

5.3.1. Attenuators

attenuator.jpg?20
30 dB SMA Attenuator example from CrossRF
The RF signal power level output by the SDR is much stronger than the real live sky signal would be when it reaches the GNSS receiver’s antenna. Consequently, Orolia strongly recommends using attenuators between the SDR and the GNSS receiver to avoid damaging your GNSS receiver.
Ettus N310 Ettus X300/X310
NI USRP-294xR/295xR
Dektec DTA-2115B

Attenuation Required

40 dB

60 dB

30 dB

5.3.2. DC-Block

dc block.jpg?20
SMA DC-Block example from Mini-Circuits

A DC-Block is a simple component that prevents the DC voltage from travelling back from the GNSS receiver to the SDR. Typically, GNSS receivers will provide DC voltage (5 V to 12 V) to the antenna in order to power the antenna’s amplifier. However, when using a simulator, this DC voltage is useless and could damage the SDR.

We strongly recommend using a DC-Block, even if your GNSS receiver can be configured to stop providing DC at the antenna.

5.3.3. RF Signal Combiner

combiner.jpg?20
2:1 RF signal combiner example, from Mini-Circuits

When your simulation setup has more than 1 RF output, a RF signal combiner is required to combine the RF signals into a single RF cable.

For a 2 RF outputs system, we recommend the ZAPD-2-272-S+ RF signal combiner from Mini-Circuits.

For a 4 RF outputs system, we recommend the ZN4PD-272+ RF signal combiner from Mini-Circuits.

5.4. Computer

While it is important to select a computer based on your GNSS simulation requirements, you may also want to acquire a computer for uses that go beyond the scope of this manual.

5.4.1. Minimal Computer Requirements

The components listed in the following table are required to run a basic simulation: 12 satellites with only a single GNSS signal each. While this kind of simulation scenario is enough to cover most use cases for most users, the following section offers a future-proof list of recommended components.

Component Minimal Requirement

CPU

Intel Core i5, 3rd generation
Minimal PassMark score of 7000 www.cpubenchmark.net↗

RAM

8 GB DDR3

Storage

4 GB free space. We strongly recommend having at least 10% of free space on the O/S drive.

GPU

Nvidia GeForce, Quadro or Tesla
Minimum of 384 CUDA Cores
CUDA compute capability of 2.1

Network Card 1 GbE

Intel PRO/1000 CT Desktop Gigabit
Typically, any onboard Intel, Realtek, or Broadcom card will be sufficient. Other brands are not recommended.

Network Card 10 GbE

Intel X520-DA2 E10G42BTDA
This is the only model supported by Skydel.

The following configuration is recommended for 4-constellation, dual frequency simulation. If you have advanced simulation use cases such as RTK or multi-element antenna, please contact Orolia Canada support for detailed information on an appropriate setup.

Component Recommended Manufacturer and Model

Motherboard

ASUS Prime Z390-P

CPU

Intel Core i7 9700K or better

RAM

16 GB DDR4

Storage

Samsung 960 Evo NVMe PCIe M.2 250 GB

GPU

Nvidia GeForce RTX 2080

Network Card 1 GbE

Intel PRO/1000 CT Desktop Gigabit

Network Card 10 GbE

Intel X520-DA2 E10G42BTDA

6. Hardware Setup

This section describes how to connect the different hardware components that compose the simulator. Different scenarios are shown below, depending upon the SDR available and the simulation’s requirements. For details on how to load FPGA firmware, see Firmware Programming.

6.1. Ettus N310

6.1.1. Single Radio: 1 to 4 RF Outputs

n310 single.jpg?20

Starting from the computer (PC):

  1. Connect the Orolia USB license dongle to any USB port of the computer.

  2. Connect a 10 GbE cable (SFP+ terminated) between the computer’s Intel 10 GbE card (any port) and the SDR’s port 1 (do not use port 0).

  3. Optionally, connect an external 10 MHz reference clock to the EXT REF port of the N310.

  4. Connect the N310 ports “RF 0/1/2/3, TX/RX” to the 4:1 RF combiner with shielded RF cables.

  5. Connect the combiner to the 40 dB attenuators with a shielded RF cable.

  6. Connect the 40 dB attenuators to a DC-Block.

  7. Connect the DC-Block to the antenna port of the GNSS receiver.

6.2. Ettus X300/X310; National Instruments USRP-294xR/USRP-295xR

6.2.1. Single Radio: 1 or 2 RF Outputs

x300 single.png?20

Starting from the computer (PC):

  1. Connect the Orolia USB license dongle to any USB port of the computer.

  2. Connect a 10 GbE cable (SFP+ terminated) between the computer’s Intel 10 GbE card (any port) and the SDR’s port 1 (do not use port 0).

    • If your SDR does not have an internal GPSDO, connect an external 10 MHz reference clock to the EXT REF port of the SDR.

  3. Connect the SDR port “RF A, TX/RX” to the 2:1 RF combiner with a shielded RF cable.

  4. Connect the SDR port “RF B, TX/RX” to the 2:1 RF combiner with a shielded RF cable.

  5. Connect the combiner to the 60 dB attenuators with a shielded RF cable.

  6. Connect the 60 dB attenuators to a DC-Block.

  7. Connect the DC-Block to the antenna port of the GNSS receiver.

6.2.2. Dual Radio: 4 RF Outputs

x300 4RF.png?20

This simulator configuration is required when your GNSS signals combination is not possible on 2 RF Outputs (ex: Simulating GPS L1, L2 and L5).

Starting from the computer (PC):

  1. Connect the Orolia USB license dongle to any USB port of the computer.

  2. Connect the two 10 GbE cables (SFP+ terminated) between the computer’s Intel 10 GbE card and the SDR port 1 (do not use port 0).

  3. For each SDR:

    1. Connect one of the 10 MHz OUT ports of the OctoClock-G to the EXT REF port of the SDR.

    2. Connect one of the PPS OUT ports of the OctoClock-G’s to the PPS IN port of the SDR.

    3. Connect the SDR port “RF A, TX/RX” port to the 4:1 RF combiner, using a shielded RF cable.

    4. Connect the SDR port “RF B, TX/RX” port to the 4:1 RF combiner, using a shielded RF cable.

  4. Connect a shielded RF cable between the combiner and the 60 dB attenuators.

  5. Connect the 60 dB attenuators to a DC-Block.

  6. Connect the DC-Block to the antenna port of the GNSS receiver.

6.2.3. Dual Radio - Multi-instance (RTK)

x300 rtk.png?20

This simulator configuration is required when you want to synchronize the simulated GNSS signals for 2 different antennas connected to 2 different GNSS receivers. With this configuration, each antenna receives the RF signal from a single X300 (1 or 2 RF output) SDR.

Starting from the computer (PC):

  1. For each computer (PC):

    1. Connect the Orolia USB license dongle to any USB port of the computer.

    2. Connect a 10 GbE cable (SFP+ terminated) between the computer’s Intel 10 GbE card (any port) and the SDR’s port 1 (do not use port 0).

  2. For each SDR:

    1. Connect one of the 10 MHz OUT ports of the OctoClock-G’s to the REF IN port of the SDR.

    2. Connect one of the PPS OUT ports of the OctoClock-G’s to the PPS TRIG IN port of the SDR.

    3. Connect a shielded RF cable between the SDR port “RF A, TX/RX” port and a 2:1 RF combiner.

      • Optionally, for each SDR: connect a shielded RF cable between the SDR port “RF B, TX/RX” port and the 2:1 RF combiner.

  3. For each GNSS receiver:

    1. Connect a shielded RF cable between the combiner and the 60 dB attenuators.

    2. Connect the 60 dB attenuators to a DC-Block.

    3. Connect the DC-Block to the antenna port of the GNSS receiver.

It is feasible to use a single computer to control both radios. With the multi-instance option activated, you can run 2 instances of Skydel, one for each radio. Depending on the number of simulated signals, using 2 computers may be necessary.

6.3. GPS Timing Receiver

Skydel makes it possible to synchronize the simulation start time with the live GPS signal by using a GPS timing receiver. In general, this connection is required for users wishing to test anti-spoofing algorithms.

This feature is only available with Ettus or Dektec devices, because the simulation start must be synchronized with a hardware Pulse Per Second (PPS).

6.3.1. OctoClock-G

The Ettus OctoClock-G timing reference and distribution system can be used as a GPS timing receiver.

  1. Connect the GPS ANT INPUT of the OctoClock-G to your GNSS antenna. The GNSS antenna must be positioned to receive the live GPS signal from the sky (either outside, or very close to a window).

  2. Connect the Ethernet port of the OctoClock-G to a 1GbE Ethernet port on the computer (PC).

  3. For each SDR in your system, connect one PPS OUT port on the OctoClock-G to the PPS IN port of the SDR.

The firmware of the OctoClock-G must be recent enough to support Ethernet communication. See Ettus OctoClock and OctoClock-G Firmware to learn how to reprogram it.
To establish the connection between Orolia Skydel and the OctoClock-G, refer to the GPS Timing Receiver section.

6.3.2. Generic GPS Timing Receiver

You can also use any other type of GPS timing receiver, as long as it can:

  • send a PPS pulse to each SDR in your system, and

  • send NMEA data on a serial port (required sentences are "$GPGGA" and "$GPRMC").

Connection steps:

  1. Connect the serial port of the GPS timing receiver to a serial port on the computer (PC). Typically, you can also use a USB port if you have a serial-to-USB cable.

  2. For each SDR in your system, connect the PPS OUT port of the GPS timing receiver to the PPS IN port of the SDR.

To establish the connection between Orolia’s Skydel and your GPS timing receiver, refer to GPS Timing Receiver in the Using Skydel section.

6.4. Dektec DTA-2115B

6.4.1. Single Radio: 1 RF Output

dektec single.png?20

Starting from the computer (PC):

  1. Connect the Orolia USB license dongle to any USB port of the computer.

  2. Connect the reference clock:

    1. Connect one of the 10 MHz OUT ports of the reference clock to the 10M port of the Dektec DTA-2115B.

    2. Connect one of the PPS OUT ports of the reference clock to the 1pps port of the Dektec DTA-2115.

  3. Connect a shielded RF cable between the SDR port “RF” and 30 dB attenuator.

  4. Connect the 30 dB attenuator to a DC-Block.

  5. Connect the DC-Block to the antenna port of the GNSS receiver.

6.4.2. Multiple Radios: Multiple RF Outputs

dektec multiple.png?20

This simulator configuration is required when your GNSS signals combination requires multiple RF Outputs in order to transmit at difference central frequencies (ex: Simulating GPS L1, L2 and L5).

Starting from the computer (PC):

  1. Connect the Orolia USB license dongle to any USB port of the computer.

  2. For each Dektec card:

    1. Connect one of the 10 MHz OUT ports of the reference clock to the 10M port of the Dektec DTA-2115B.

    2. Connect one of the PPS OUT ports of the reference clock to the 1pps port of the Dektec DTA-2115.

    3. Connect shielded RF cables between the Dektec’s port “RF” port and a RF combiner; connect a shielded RF cable between the combiner and the 30 dB attenuator.

  3. Connect the 30 dB attenuators to a DC-Block.

  4. Connect the DC-Block to the antenna port of the GNSS receiver.

6.4.3. Multiple Radios - Multi-instance (RTK)

dektec rtk.png?20

This simulator configuration is required when you want to synchronize the simulated GNSS signals for 2 different antennas connected to 2 different GNSS receivers. This configuration uses a single computer to control all radios. With the multi-instance option activated, you can run 2 instances of Skydel, one for each radio pair.

Starting from the computer (PC):

  1. Connect the Orolia USB license dongle to any USB port of the computer.

  2. For each Dektec card:

    1. Connect one of the 10 MHz OUT ports of the reference clock to the 10M port of the Dektec DTA-2115B.

    2. Connect one of the PPS OUT ports of the reference clock to the 1pps port of the Dektec DTA-2115.

    3. Connect a shielded RF cable between the Dektec DTA-2115B port “RF” port and a combiner.

  3. For each GNSS receiver:

    1. Connect a shielded RF cable between the combiner and the 30 dB attenuator.

    2. Connect the 30 dB attenuators to a DC-Block.

    3. Connect the DC-Block to the antenna port of the GNSS receiver.

7. Software Setup

7.1. Firmware Programming

7.1.1. Ettus N310 Firmware (File system and FPGA image)

Orolia Skydel requires a very specific version of the N310 file system and FPGA (UHD Version 3.13.1.0). Before using Skydel for the first time, you must update your N310 device with this version of File system and FPGA.

7.1.1.1. Programming Under Linux Ubuntu
Step 1: Update the N310’s file system
Step 1a

Power-on the N310

Step 1b

Connect a 10GbE cable between you PC and the N310 SFP+ port 1

Step 1c

Make sure you can ping the N310 at 192.168.20.2

Step 1d

Download N310 File system image file for Mender:

wget http://files.ettus.com/binaries/cache/n3xx/meta-ettus-v3.13.1.0/n3xx_common_mender_default-v3.13.1.0.zip
Step 1e

Copy the file onto the N310:

scp n3xx_common_mender_default-v3.13.1.0.zip root@192.168.20.2:/home/root
Step 1f

ssh onto the N310 (There is no password for root)

ssh root@192.168.20.2
Step 1g

unzip the mender file image

unzip n3xx_common_mender_default-v3.13.1.0.zip
Step 1h

Write the File system on the "other" partition of the N310

mender -rootfs usrp_n3xx_fs.mender
memder automatically finds the "other" partiton.
Step 1i

Find which partition is the "other" partition

findmnt

You see a line similar to this:

/                                /dev/mmcblk0p2 ext4       rw,relatime,data=ordered

If you see "mmcblk0p2", it means the "other" partiton is mmcblk0p3. If you see "mmcblk0p3", it means the "other" partiton is mmcblk0p2.

Step 1j

Mount the "other" partition

mkdir /other
mount /dev/mmcblk0p3 /other
Step 1k

Patch the new file system, so that we can use it with N310 rev 7 edit the file

/other/usr/lib/python3.5/site-packages/usrp_mpm/periph_manager/n3xx.py

At line 118, change the "max_rev" value to 7

Step 1l

Reboot the N310

reboot
Step 1m

After one minute, ssh to the N310, and verify that the new file system is in use:

ssh root@192.168.20.2
cat /etc/mender/artifact_info

You should see:

artifact_name=v3.13.1.0
Step 1n

Make sure the N310 will now always boot on this updated partition

mender -commit
Step 2: Reprogram the N310’s FPGA
Step 2a

ssh to the N310 with the next command (There is no password for root)

ssh root@192.168.20.2
Step 2b

On the N310, execute the following command:

uhd_image_loader --args type=n3xx
Step 2c

exit the ssh seesion

exit
Step 2d

Power-cycle the N310

Your N310 is now ready to be used with Skydel !

7.1.2. Ettus X300/X310; NI USRP-294xR/295xR Firmware (FPGA image)

Orolia Skydel requires a very specific version of the FPGA image for those devices. Before using Skydel for the first time with your device, you must burn this specific image into your device.

If you are not familiar with the reprogramming of this device, Orolia provides a simple “FPGA programming tool” for Windows to perform this task.

Why does Orolia Skydel require this specific version?

GNSS signal simulation has a very important requirement: the RF signal transmission must never be interrupted. The absence of a single I/Q sample will introduce error into the carrier phase, thus making the whole simulation too imprecise for GNSS receiver testing.

To achieve an uninterrupted RF signal, the SDR must have a buffer of I/Q samples. The buffer must be large enough to mitigate interruptions in the I/Q sample transmission between the software and the SDR. Interruptions can have many causes (e.g., O/S scheduler, hardware interrupts, communication link errors, etc.).

To ensure a steady stream of I/Q samples, Orolia Skydel requires a special FPGA image from Ettus that uses the onboard DDR RAM as a streaming buffer; this flavor of FPGA image is called “HG” image. This FPGA image will only work with the corresponding UHD (aka USRP Hardware Driver) included with Skydel. If you want to use or compile this version of UHD on your own, please contact Orolia Canada at skydel-support@orolia.com and we will gladly guide you through the compiling process.

7.1.2.1. Programming Under Windows
Step 1

Download our "FPGA programming tool" from the Skydel Driver/Firmware Page.

Make sure to download the FPGA programming tool for your device. Using the X300 FPGA Tools for a X310 or the X310 FPGA Tools for a X300 will brick your device.

Step 2

Connect your X300 to the computer. You can use either a 1 GbE or 10 GbE Ethernet connection to burn the FPGA image.

  • 1 GbE: Use the SFP adapter to connect a regular Ethernet cable between the device’s port 0 and your computer’s network card. Your network card should have a static IP Address of 192.168.10.1. Once connected, power on the SDR.

  • 10 GbE: Connect a 10GbE cable (SFP+ terminated) between the SDR’s port 1 and your computer’s 10 GbE card. Your network card should have a static IP Address of 192.168.40.1. Once connected, power on the SDR.

Step 4

Verify that you can ping your SDR. Typically, when connecting with 1 GbE, the IP address of the SDR is 192.168.10.2 and when connecting with 10 GbE, the IP address is 192.168.40.2. If you can’t ping your SDR, verify the static IP address of your network card and your cable connections.

C:\Users\Skydel\Downloads\X300-UHD-3.13.1.0>ping 192.168.40.2 -n 4

Pinging 192.168.40.2 with 32 bytes of data:
Reply from 192.168.40.2: bytes=32 time=1ms TTL=32
Reply from 192.168.40.2: bytes=32 time<1ms TTL=32
Reply from 192.168.40.2: bytes=32 time=1ms TTL=32
Reply from 192.168.40.2: bytes=32 time=1ms TTL=32

Ping statistics for 192.168.40.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms
Step 5

Verify the IP address in the FPGA programming tool batch file: edit the file update-x300-fpga.bat file (or the update-x310-fpga.bat file for a X310 model SDR). Make sure that line #2 has the correct IP address of your device.

Step 6

Execute the batch file. Either open a command prompt in the folder where you extracted the FPGA programming tool, or double-click on the update-x300-fpga.bat file. You should see the following:

C:\Users\Skydel\Downloads\X300-UHD-3.13.1.0>update-x300-fpga.bat
Are you Ready to Update X300's FPGA at address: 192.168.40.2 ?
Press any key to continue . . .
WARNING: MAKE SURE YOUR DEVICE IS A ETTUS X300.
WARNING: DO NOT CONTINUE IF YOUR DEVICE IS A ETTUS X310 or NI USRP-294x or USRP-295x.
Press any key to continue . . .
Win32; Microsoft Visual C++ version 12.0; Boost_105500; UHD_003.010.git-89-gb17b440d

Unit: USRP X300 (310EE4A, 192.168.40.2)
FPGA Image: C:\Users\Skydel\Downloads\X300-UHD-3.13.1.0\usrp_x300_fpga_HG.bit
-- Initializing FPGA loading...successful.
-- Loading HG FPGA image: 100% (87/87 sectors)
-- Finalizing image load...successful.
Press any key to continue . . .
Once the programming is complete, you will need to power-cycle your device to enable it to load the new FPGA image.
7.1.2.2. Programming Under Linux Ubuntu
Step 1

Download the FPGA image for Skydel from the Skydel Driver/Firmware Page.

Make sure to download the FPGA programming tool for your device. Using the X300 FPGA Tools for a X310 or the X310 FPGA Tools for a X300 will brick your device.

The tools include libuhd.so.003.013, libuhd.so.003, libuhd.so, usrp_x3xx_fpga_burner and fpga_burner.sh.

Step 2

Connect your X300 to the computer. You can use either a 1 GbE or 10 GbE Ethernet connection to burn the FPGA image.

  • 1 GbE: Use the SFP adapter to connect a regular Ethernet cable between the device’s port 0 and your computer’s network card. Your network card should have a static IP Address of 192.168.10.1. Once connected, power on the SDR.

  • 10 GbE: Connect a 10GbE cable (SFP+ terminated) between the SDR’s port 1 and you computer’s 10 GbE card. Your network card should have a static IP Address of 192.168.40.1. Once connected, power on the SDR.

Step 3

Verify that you can ping your SDR. Typically, when connecting with 1 GbE, the IP address of the SDR is 192.168.10.2; when connecting with 10 GbE, the IP address is 192.168.40.2. If you can’t ping the SDR, verify the static IP address of your network card and your cable connections.

serge@SKYDEL-PROTO-U16:~$ ping 192.168.40.2 -c 4
PING 192.168.40.2 (192.168.40.2) 56(84) bytes of data.
64 bytes from 192.168.40.2: icmp_seq=1 ttl=32 time=0.345 ms
64 bytes from 192.168.40.2: icmp_seq=2 ttl=32 time=1.26 ms
64 bytes from 192.168.40.2: icmp_seq=3 ttl=32 time=0.645 ms
64 bytes from 192.168.40.2: icmp_seq=4 ttl=32 time=0.378 ms

- - - 192.168.40.2 ping statistics - - -
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.345/0.658/1.265/0.369 ms
serge@SKYDEL-PROTO-U16:~$
Step 4

Burn the FPGA image. Go to the folder where you have downloaded the FPGA image, and execute the command sh fpga_burner.sh 192.168.40.2 usrp_x300_fpga_HG.bit. You should see the following:

serge@SKYDEL-PROTO-U16:~$ cd Downloads/
serge@SKYDEL-PROTO-U16:~/Downloads$ sh fpga_burner.sh 192.168.40.2 usrp_x300_fpga_HG.bit
linux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_003.013.git-89-gb17b440d

Attempting to find X3x0 with IP address: 192.168.40.2
Found X300 (HG).

************************************************************************************************
WARNING: This utility will be removed in an upcoming version of UHD. In the future, use this command:

uhd_image_loader --args="type=x300,addr=192.168.40.2,fpga=HG"

************************************************************************************************

Burning image: usrp_x300_fpga_HG.bit

Progress: 100% (87/87 sectors)

Attempting to find device...found!
Successfully burned FPGA image!

Power-cycle the USRP X300 to use the new image.
serge@SKYDEL-PROTO-U16:~/Downloads$
Once the programming is complete, power-cycle your device to load the new FPGA image.
7.1.2.3. Unbricking Procedure

If you accidentally burn the wrong FPGA image to your device, or if the programming of the FPGA image was interrupted, the device will probably be “bricked”. At this point, it will probably be impossible to reprogram the FPGA image via the 1 GbE or 10 GbE connection.

Don’t panic! You can unbrick your device by reprogramming the FPGA image with the JTAG port. Here’s a simple procedure to unbrick your device under Windows.

Step 1

Connect the device JTAG port to the PC with a USB Type B cable.

Step 2

Download Digilent Adept System adept/digilent.adept.system_v2.16.1.exe from the Skydel Driver/Firmware Page.

Step 3

Download our "FPGA programming tool" from the Skydel Driver/Firmware Page.

Make sure to download the FPGA programming tool for your device. Using the X300 FPGA Tools for a X310 or the X310 FPGA Tools for a X300 will brick your device.

Unzip the downloaded file.

Step 4

Install Digilent Adept System.

Step 5

Start Digilent Adept System. You should see the following screen (example shown for the X300):

adept.png?20
Step 6

Select the FPGA image file to program into the FPGA. The FPGA image file is included in the folder downloaded in Step 3.

For Ettus X300 SDR use this file:
usrp_x300_fpga_HG.bit

For Ettus X310 SDR or NI USRP-294xR/295xR use this file:
usrp_x310_fpga_HG.bit

Step 7

Click the Program button.

Step 8

Ping the device. Make sure the device is connected to your PC with an Ethernet cable (1GbE on port 0, or 10GbE on port 1). Open a command prompt, and try to ping the device. Normally, the device should now respond.

For the 1 GbE (port 0), ping 192.168.10.2

For the 10 GbE (port 1), ping 192.168.40.2

Step 9

At this point, the device is using the new FPGA image. However, we still need to write this new FPGA image to a flash memory of the device. In the unzipped FPGA programming tool, you will find a .bat file that you can use to write the image to the device flash memory. For the Ettus X300, execute the update-x300-fpga.bat file. For the Ettus X310 or NI USRP-294xR/295xR, execute the update-x310-fpga.bat file.

7.1.3. Ettus OctoClock and OctoClock-G Firmware

The Ettus OctoClock is used for 2 different use cases within Orolia Skydel:

  1. As a common 10 MHz reference clock and PPS generator when using multiple SDR. In this case, any version of the OctoClock/OctoClock-G firmware can be used. This also means that there is no need to reprogram the OctoClock or OctoClock-G firmware for this use case.

  2. As a GPS Timing receiver, in order to align the simulation’s start time with the live GPS signal. In this case, you absolutely need to use an OctoClock-G device. It is also necessary to install a firmware version that is able to communicate with the computer via Ethernet; only the latest versions of the firmware enable this. See section GPS Timing Receiver to learn how to configure Skydel to communicate with the OctoClock-G. In the case where your OctoClock-G cannot communicate with Skydel, you can find the bootloader/firmware update procedure on the Ettus website at files.ettus.com/manual/page_octoclock.html↗

With the OctoClock device (without an internal GPSDO), you will need to provide an external 10 MHz reference clock and an external PPS generator. Only the OctoClock-G is equipped with an internal GPSDO.
The update procedure for the OctoClock-G will void its warranty. It requires the use of additional hardware (Pocket AVR Programmer) available from a variety of vendors.

Here are a few tips to complete the procedure.

Get an AVR programmer. We recommend using the Sparkfun Pocket AVR programmer, model PGM-09825.

Connect the AVR programmer to the OctoClock-G. Here’s how the Pocket AVR programmer connects to the OctoClock-G’s JTAG connector:

octoclock.png?20
Ensure that power is not being supplied from the Pocket AVR Programmer (make sure that the power DIP switch setting on the Pocket AVR Programmer is OFF).

7.1.4. Computer BIOS

We strongly recommend that you modify the following settings in your BIOS:

  • disable Intel SpeedStep;

  • disable Intel Turbo Boost.

These settings need to be disabled in order to force the CPU to always run at the same frequency. Otherwise, it can cause the communication link between the computer and SDR to become unstable as the CPU frequency changes. This can, in turn, lead to interruptions in the GNSS signal transmission.

7.2. Software Configuration

7.2.1. Linux Ubuntu

Supported versions:

  • Ubuntu 16.04 LTS

  • Ubuntu 18.04 LTS

7.2.1.1. General Parameters
Screen Brightness & Lock

Set “Turn screen off when inactive for” to “Never”. This will avoid interrupting the simulation when there is no user interaction with the computer.

ubuntu params.png?20
Real-Time Priority of Threads

Orolia Skydel uses processing threads that need to run at the “real-time” priority level. In order to use this priority level, the Linux user must have rights to change the thread priorities. With root rights, edit the file /etc/security/limits.conf, and add the following line:

<username>	-	rtprio	99
Dialout Group

Skydel can be connected to a GNSS receiver through a serial port in order to get the NMEA data. To be able to access the serial port, the Linux user needs to be in the dialout Linux group. You can add the user to this group by executing this command in a terminal window:

usermod -a -G dialout $USER
7.2.1.2. Nvidia GPU Driver

The installed Nvidia graphics card driver must support CUDA Runtime API 10.0 or higher. The Nvidia driver version must be 410.48 or higher.

For Ubuntu 18.04 and 16.04, Orolia recommends using the "Nvidia propietary driver", which can be installed from Ubuntu’s "Software & Updates." See below.
7.2.1.2.1. Nvidia GPU Driver for Ubuntu 18.04/16.04 (Automatic)
Step 1

Ensure that your Ubuntu system is connected to the Internet.

Step 2

Add ppa:graphics-drivers/ppa repository to apt. Execute the following commands:

sudo apt-add-repository ppa:graphics-drivers/ppa
sudo apt update
Step 4

Open Ubuntu’s "Software & Updates" window from Ubuntu’s "System Settings". Click on the "Additional Drivers" tab.

nvidia driver ubuntu16.png?20
Step 5

Select "Using NVIDIA binary driver", and click "Apply changes". Once the installing is completed, reboot the computer such that the new driver is used by Ubuntu.

If you previously manually installed a Nvidia driver, you might be unable to select the "Using NVIDIA binary driver". In that case, you can execute the next alternate steps
Alternate Step 5a

Execute the following command:

sudo ubuntu-drivers devices
Alternate Step 5b

From the output of the command, locate a line showing "driver : nvidia-xxx", where xxx is the Nvidia driver version. Then, execute the next command:

sudo apt-get install nvidia-xxx
Alternate Step 5c

Reboot the computer. The nvidia-xxx driver will now be used.

7.2.1.2.2. Nvidia GPU Driver for Ubuntu 16.04 (Automatic)
Step 1

Ensure that your Ubuntu system is connected to the Internet.

Step 2

Open Ubuntu’s "Software & Updates" window from Ubuntu’s "System Settings". Click on the "Additional Drivers" tab.

nvidia driver ubuntu16.png?20
Step 3

Select "Using NVIDIA binary driver", and click "Apply changes". Once the installing is completed, reboot the computer such that the new driver is used by Ubuntu.

If you previously manually installed a Nvidia driver, you might be unable to select the "Using NVIDIA binary driver". In that case, you can execute the next alternate steps
Alternate Step 4a

Execute the following command:

sudo ubuntu-drivers devices
Alternate Step 4b

From the output of the command, locate a line showing "driver : nvidia-xxx", where xxx is the Nvidia driver version. Then, execute the next command:

sudo apt-get install nvidia-xxx
Alternate Step 4c

Reboot the computer. The nvidia-xxx driver will now be used.

7.2.1.3. Network Card Driver: 10 GbE Intel X520-DA2

Only required to operate Ettus X300/X310; NI USRP-294xR/295xR SDR.

Update the Driver

For Ubuntu 16.04 LTS and 18.04 LTS, the driver installed by default is perfectly functional; there is no need to update it.

Configure Network Parameters

Open the Network Configuration Settings window and edit the settings of the network card connected to the USRP device:

  • set the “MTU” size to 9000;

  • in the IPv4 settings, set a static IP address: Address=192.168.40.1; Netmask=255.255.255.0; Gateway=0.0.0.0

  • the computer must be configured to use the maximum socket buffer size: With root rights, edit the /etc/sysctl.conf file, and add the following lines:

net.core.rmem_max=33554432
net.core.wmem_max=33554432
To ensure that changes are applied, perform a logoff/logon of the Ubuntu user.
7.2.1.4. Dektec DTA-2115B Driver

You can find the Dektec DTA-2115B’s driver on Dektec’s web site. www.dektec.com/downloads/SDK↗ The DTA-2115B driver is included in the "Linux SDK" package. Simply follow the instructions included with the download, in order to compile and install the driver.

Please note that if you update the Ubuntu kernel of your system, you will need to re-compile and re-install it again.

7.2.1.5. Orolia Skydel Installation

Before installing Skydel, make sure you remove any previous version(s) by executing the following command:

sudo dpkg -r skydel-sdx

To install the new version of Skydel, execute the following commands (note: rename the .deb file name according to the version that you want to install):

sudo dpkg -i skydel-sdx-YY.MM.X-HHHHHHH.deb
sudo apt-get install -f

The second command will install any missing dependencies required by Skydel. Usually, the missing dependencies are libboost, libblas-common, libblas3, libgfortran3, libgstreamer-plugins-base0.10-0, and libgstreamer0.10-0 liblapack3.

skydel-sdx will be installed in /usr/bin.

All libraries will be installed in /usr/lib/skydel-sdx.

After having started Skydel for the first time, you will find a Skydel-SDX folder inside your Documents folder. See the Skydel-SDX Folder section for a detailed explanation of each folder’s contents.

7.2.2. Microsoft Windows

Microsoft Windows supported versions:

  • Windows 10 Home and Pro.

7.2.2.1. General Parameters
Power Plan

Open the Control Panel, Power Options, and click "Show additional plans".

  • Select the "High Performance" power plan.

  • Click on "Change plan settings", and set "Display turning off time" to "Never".

Monitor

Always leave the monitor turned ON during a GNSS simulation. Windows is able to detect if a monitor is turned ON or OFF. When the monitor is turned OFF, Windows may reduce the GPU’s performance, which can lead to simulation errors (e.g., streaming buffer under-run).

Registry key: FastSendDatagramThreshold

Only required to operate Ettus or NI SDR. Open the Windows Registry with the regedit tool:

  • add or modify the DWORD Registry Key FastSendDatagramThreshold under HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\AFD\Parameters\;

  • make sure the value is 9000 (decimal);

  • reboot, as this is required for changes to take effect.

Notifications (Windows 10)

During GNSS simulation, it is strongly recommended to turn off all Windows notifications to avoid interruptions. To do so, open the Action Center, and turn on "Quiet hours".

7.2.2.2. Nvidia GPU Driver

Make sure your computer is using the latest WHQL-certified Nvidia GPU driver. You can download the latest version at the Nvidia website www.nvidia.com/drivers↗.

7.2.2.3. Network Card Driver: 10 GbE Intel X520-DA2

Only required to operate Ettus X300/X310; NI USRP-294xR/295xR SDR.
Download and install the latest version from Intel’s website.

Jumbo Packets

Open the Control Panel, Networking and Sharing Center, then Change Adapter Settings. Right-click on the adapter connected to the SDR and select Properties. Click on Configure, and look for “Jumbo packets” in the Advanced tab:

  • Enable Jumbo packets, and set the size to the maximum value.

intel driver.png?20
  • In the Performance options, set Transmit Buffers to the maximum value (16384).

intel driver buffers.png?20
Static IP Address

Open the Control Panel, Networking and Sharing Center, Change Adapter Settings. Right-click on the adapter connected to the SDR and select Properties. Double-Click on Internet Protocol Version 4 (TCP/IPv4):

  • select the radio button "Use the following IP address";

  • IP Address: 192.168.40.1

  • subnet mask: 255.255.255.0

7.2.2.4. Dektec DTA-2115B Driver

You can find the Dektec DTA-2115B’s driver on Dektec’s web site. www.dektec.com/downloads/SDK↗ The DTA-2115B driver is included in the "Driver for DTA products" package. Simply follow the instructions included with the download.

7.2.2.5. Orolia Skydel installation

Installing Skydel under Windows is relatively straightforward. Double-click the downloaded executable. This will start the installation program:

  • by default, the application will be installed in the folder C:\Program Files\Skydel;

  • you may select the new Start Menu folder’s name;

  • you may choose to install a desktop icon.

7.2.2.6. Windows Firewall

Skydel needs an exception in Windows Firewall to allow remote computers to connect to it. This is required when Master and Slave are not on the same machine, or when an external software wants to control Skydel through the API.

The first time Skydel is started on a Windows computer, a Windows Security Alert popup should open:

firewall alert.png?20

Ensure that your network type is checked (usually Private) and then click Allow access.

If remote connection still doesn’t work, an exception has to be added manually in the firewall. Open the Windows Firewall with Advanced Security:

firewall advance security.png?20
  • Click on New Rule…​.

  • On the Rule Type step, select Program.

  • On the Program step, select This program path and input Skydel path (by default C:\Program Files\Skydel).

  • On the Action step, select Allow the connection.

  • On the Profile step, check the profiles that match your setup.

  • On the Name step, name this rule skydel-sdx and click Finish.

7.2.3. Skydel-SDX Folder

Once you have started Skydel for the first time, you will find a “Skydel-SDX” folder inside your Documents folder.

You can customize the location of the Skydel-SDX folder in the Preferences.
Folder or File Description

Skydel-SDX/

Orolia Skydel root folder

Skydel-SDX/API/

Remote API open-source libraries and examples

Skydel-SDX/API/Cpp/

Remote API in C++

Skydel-SDX/API/CSharp/

Remote API in C#

Skydel-SDX/API/Python/

Remote API in Python

Skydel-SDX/API/Documentation.txt

Remote API documentation

Skydel-SDX/Automate/

Folder where Skydel scripts (.sdxscript) files are stored

Skydel-SDX/Configurations/

Folder where Skydel configurations are stored

Skydel-SDX/Output/

Folder where raw data, NMEA and I/Q sample files are written by Skydel

Skydel-SDX/Templates/

Folder where default almanacs and ephemeris are read by Skydel

Skydel-SDX/simulator.log

The Skydel log file. Very useful when requesting assistance from Orolia support.

8. Using Skydel

8.1. What is Skydel

Skydel is a software application that uses GPU-accelerated computing to generate GNSS signals in real-time. Skydel generates signals in the form of I/Q data. This data can be saved to disk for offline analysis, or it can be pushed to a SDR in real-time to transform the I/Q data into RF at the appropriate carrier frequency.

Skydel supports a variety of SDRs. To keep the documentation short, examples in this document section will assume that you are using a hardware setup comprising of a single Ettus X300 radio.

8.2. Launching Skydel

The most common way to use Skydel is to launch a single instance of Skydel. On a Linux system, simply type skydel-sdx in the terminal. In Windows, locate Orolia’s Skydel in the start menu and click on it.

8.2.1. Splash Screen

A splash screen will display licensee information stored in the USB dongle (or license encrypted file if you are not using a dongle).

splash screen.png?20
Splash Screen

Click Continue to open Skydel.

8.2.2. Welcome Screen

After launching Skydel, the welcome screen lets you create a new configuration, open an existing configuration, or reload the last used configuration. You can read the Configurations section of this manual for more details. Click New Configuration to access the Skydel main window.

8.2.3. Main Window

main window with notes.png?20
Main Window

The Skydel main window contains 5 important areas:

Title Bar

The title bar displays information about the Skydel multi-instance id, configuration name, and whether it is saved or not.

Menu Bar

The menu lets you save or load configurations, edit the preferences, undo or redo changes, etc.

Dashboard

The dashboard is the horizontal blue bar that contains the Start and Arm buttons. It also displays the current simulation elapsed time, the simulator state, and the current simulation time in various formats (Gregorian, GPS week/second).

Main Window Tabs

On the left-hand side, there are 5 Main Window Tabs: Settings, Receiver, Map, Automate, and Interference. Clicking on a tab will affect the Main Window Tab Content in the center. *Note: if the Advanced Jammers feature is enabled in your copy of Skydel, the Interference tab will not appear and additional options will appear in the Settings tab.

Main Window Tab Content

The central content area changes according to the Main Window Tab selection.

8.2.4. Main Window Subtabs

The Settings, Receiver, and Map Tabs feature a horizontal divider that allows you to divide the display window according to your preferences. The top portion of the window displays content determined by the choice of Main Window Tab (i.e., map, receiver feed, etc.), while the bottom portion offers 4 subtabs corresponding to views of: Constellations, Deviation, Spectrums, and Status Log.

The subtabs panel can be collapsed or expanded using the arrow button located at the far right of the horizontal divider.

Constellations

This subtab information about the GNSS satellites that are simulated. You can find more detailed information here.

subtab constellations with notes.png?20
Constellations Subtab
If you don’t see satellites in the sky view, it may be because the selected constellation is not included in your scenario. See section Output to add signals to your configuration.
Deviation

This sub-tab displays a graphic, in real-time, showing the deviation between the position generated by the simulator and the position calculated by the receiver under test. This subtab will not display any information unless Skydel is connected to the NMEA serial port of the receiver under test. See section Receiver for more details.

subtab deviation.png?20
Deviation Subtab
Spectrums

This subtab displays the spectrum based on the generated IQ data. It displays an ideal spectrum based on digital data and does not represent the real output at the radio Tx connector. This view should not be used for taking precise measurements. However, it is very useful for visualizing the content of each output.

subtab spectrums.png?20
Spectrums Subtab - Showing GNSS signals on RF A and B

The Spectrums subtab will display the trace only while the simulation is running. The content that is displayed depends on the scenario.

On a slower computer, it may be necessary to disable the Spectrums. You can change this in the Preferences.
Status Log

This subtab is complementary to the dashboard which displays the current state of the simulator. Sometimes, it is not enough to know the simulator’s state. If the simulator is in an error state, or in an incomplete state, the Status Log will display information to provide additional context.

subtab status log.png?20
Status Log Subtab

8.2.5. Simulator State

The simulator state is visible in the dashboard and the status log subtab. Typically, you will see Ready or Running state. However, there are other states you should be aware of.

dashboard.png?20
Dashboard
Ready

Ready means that the simulator is ready to start. Clicking the Start button will begin the simulation. You may get an error if you haven’t selected an Output. In this case, Skydel will simply display a message inviting you to add an output and select signals. Clicking the Arm button will initialize the hardware and stay in the Armed state until the user clicks the Start button.

Initializing

Initializing means that the simulator is preparing the radio for streaming; this happens when you click the Start button. Depending on the selected output, this state may appear for only a fraction of a second or for up to 10 seconds.

Armed

Armed means the hardware is initialized and ready to start. If you clicked the Arm button (instead of the Start button), the simulator will stay in the armed state until you click the Start button. While Skydel is in an armed state, you may change some of the settings. For example, it is possible to move a slider to change the initial power of a satellite before the simulation starts. However, if you are using a timing receiver to synchronize the simulation start time, changes to the settings while in the armed state will be discarded when the simulation starts.

Streaming RF

Streaming RF means that the simulator is running.

Error

Error means that the simulator is in an error state. The simulator will display the Status Log subtab and automatically return to the ready state.

Incomplete

Incomplete means that Skydel is missing the information required to start a simulation. This can happen when a trajectory type such as a track or route hasn’t been created properly. In this case, you will also notice that Skydel does not display the satellites in the sky view. The reason is quite simple: Skydel does not know the receiver position, so it is not able to calculate the elevation and azimuth of the satellites relative to the receiver.

8.2.6. Command Line Options

When starting Skydel, you can add multiple command line arguments and a configuration file name. For example, the following command will launch Skydel, skip the splash screen and automatically load my_config.sdx configuration.

skydel-sdx --skip-splash ~/Documents/Skydel-SDX/Configurations/my_config.sdx

There are many command line arguments. Use the --help command to get the complete list of commands.

skydel-sdx --help
Command Description

skip-splash

Skip the Splash Screen that displays the licensee information.

skip-onboarding

Skip the Welcome Screen dialog box inviting the user to choose between creating a new configuration, loading an existing configuration, or loading the last used configuration.

reset-window

Reset window state and geometry.

width

Set window width in pixels.

height

Set window height in pixels.

instance-id

If your software license allows multiple instance of Skydel to run simultaneously, this command is used to specify the instance id. The instance id is used in the API library to identify which instance of Skydel you want to connect to.

full-screen

Start Skydel in full screen mode (use as much space as possible and hide the title bar).

minimized-window

Start Skydel in minimized window size. Implicitly set skip-splash and skip-onboarding options.

maximized-window

Start Skydel in maximized window size (use as much space as possible but does not hide the window’s title bar).

log-path

Set the folder where the Skydel log should be stored. ex: --log-path=~/archives/

output-path

Set the folder where the Skydel Output repertory should be stored.

skip-release-note

Skip the release notes window.

hil-port

Explicitly set the HIL UDP port.

8.2.7. Launching Multiple Instances of Skydel

You can launch more than one instance of Skydel at a time on the same computer. This enables you to have two configurations running at the same time. This can be used to simulate:

  • multiple vehicles;

  • multiple antennas;

  • spoofing (see also Advanced Spoofing);

  • multiple vehicles with Real-Time-Kinematics (RTK).

If your installation can run multiple instances of Skydel, your current licenses will display a Multi-Instance of 2 or higher.

8.3. Licensing

8.3.1. USB Dongle

Most of the time, the Skydel licenses are delivered on a USB dongle. This USB dongle contains information such as the serial number, licensee name, and a list of enabled features (usually a list of GNSS signals). Users have the flexibility to move the dongle to any computer properly configured to run Skydel.

8.3.2. License Feature List

You can review your current Skydel licenses by following these steps:

  1. open Skydel;

  2. click on the Help tab;

  3. select About Orolia Skydel.

The following information will be displayed:

  • Skydel Version, SHA code, and release date;

  • license dongle serial number;

  • licensee name;

  • the highest version of Skydel that you can upgrade to with the current license;

  • the number of Skydel instances that can run simultaneously (Multi-Instance);

  • a table listing which features are currently enabled with the license.

about.png?20
The SHA code and release date in the official software release is most likely to differ from the image above.

8.3.3. License Update

A new license file will be required if you purchase additional features. In order to update the license, follow the instructions below:

  1. open Skydel;

  2. go to the Help tab;

  3. select Update License;

  4. select the new license file;

  5. click Open;

  6. the license file will update, and Skydel will close.

Reopen Skydel and verify that the new licenses appear correctly in the About screen.

8.4. Preferences

Skydel preferences are global settings that persist across configurations, power cycles, and Skydel instances. These preferences can be accessed from the Edit menu in Skydel.

menu.png?20

8.4.1. General

You can control the location on your hard drive where Skydel will save configurations, logs, and other data.

general.png?20

The Spectrums visible by default option can be unchecked if your computer does not have the processing power to generate FFT in real-time or if you would like to reduce the work load on the CPU/GPU.

The streaming buffer is set to 200 ms by default. This is the amount of buffered data used by Skydel to avoid buffer underrun errors. It is possible to reduce that number to optimize system latency when used in Hardware-In-the-Loop applications. Otherwise, it is preferable to leave it set at 200 ms.

8.4.2. Proxy

If you are behind a firewall, Skydel will be unable to connect to openstreetmap.org↗. This will prevent the street maps from properly loading. Contact your network administrator to obtain the proxy information. You can enter this information into the proxy preferences; this will then enable Skydel to connect to openstreetmap.org↗.

proxy.png?20

8.4.3. Synchronization

These preferences are used to synchronize one or many radios with an external timing receiver that can generate a PPS output, such as the OctoClock-G from Ettus. Detailed timing diagrams can be found here.

sync.png?20
8.4.3.1. PPS OUT Delay

This value controls the delay applied to RF transmission to align the RF with the PPS OUT signal. This preference is used only if both Sync Time Master and Sync Time Slave are unchecked. In this case, the SDR is using its own internal PPS reference. See section Synchronize Simulators for Sync Time settings details.

The value is calibrated for different sampling rates. The user may adjust this value if it is necessary to offset or align the PPS OUT signal of the SDR with the PPS signal of the GNSS receiver under test. In most cases, the value should be left to its default.

PPS OUT Delay applies only for Ettus X300/X310 or NI USRP-294xR/295xR SDR.
8.4.3.2. PPS IN Delay

This value is only effective when Skydel is set as a Master in the Synchronize Simulators screen. It represents a delay between a reference PPS pulse (on the PPS IN port) and the beginning of the RF signal. The Delay value is transmitted by the master Skydel to each connected slave instance of Skydel, such that they will start at the exact same time. The user can adjust this value if it is necessary to adjust the PPS OUT signal of the SDR with the PPS signal of their GNSS receiver.

In most cases, the value should be left to its default.

NOTE 1: PPS IN Delay applies only for Ettus X300/X310, NI USRP-294xR/295xR and Dektec DTA-2115B SDRs. An external PPS must be provided (using an OctoClock-G for example).

NOTE 2: For Dektec DTA-2115B SDR, the effective PPS IN Delay is the setting value minus 2000ms (default value). A modulo 1000ms operation is then applied to the resulting delay. Ex: if the value is 3200ms, the effective PPS In delay is 200ms.

8.4.3.3. Client / Server Settings

To synchronize radios connected to different computers, each computer running Skydel must talk to each other. If the radios are connected to the same computer, but used by different Skydel instances, each instance must talk to each other as well. In any event, one of the Skydel instances must be defined as the server (master) while each of the other Skydel instances are clients (slaves). The client settings control which server the Skydel slaves will try to connect to. The server settings control which port the Skydel master will listen on. You can read more details about this in the Synchronize Simulators section.

8.4.3.4. GPS Timing Receiver

You can synchronize radios to the output of a timing receiver. This can be used to synchronize Skydel to the live sky or some other signal source. The timing receiver can be an OctoClock-G from Ettus or another receiver that supports NMEA messages (required sentences are "$GPGGA" and "$GPRMC"). The accuracy of this type of synchronization is better than 50 ns.

8.4.3.4.1. Generic GPS Timing Receiver

To connect to a generic GPS timing receiver, you must select the Serial Port option and choose your receiver in the Edit dialog. Under Windows, it will typically be "COM4". Under Linux, it will typically be "ttyACM0". See Receiver section for more details.

8.4.3.4.2. Octoclock-G

To connect to an Octoclock-G, you must select the IP Address option and write the Octoclock-G’s IP address in the Edit dialog. Typically, the IP address is "192.168.10.3".

To use the OctoClock-G, connect a GPS signal source (such as live sky) to the GPS antenna port on the front. See section the GPS Timing Receiver section for connection details.

The OctoClock-G supplies 5 volts through the GPS antenna port. Ensure that you are using a 5-volts antenna! If you are not using a 5-volts antenna, use a DC-Block to isolate the GPS antenna port. If you are using a 12-volts antenna, you will have to use the DC-Block and find some other means of powering the antenna.

Allow approximately 15 minutes for the GPS lock light to turn green. The following conditions may prevent the GPS lock light from turning green:

  • poor signal level;

  • bad satellite geometry;

  • poor multipath conditions;

  • poor ground plane conditions;

  • inability to download ionospheric data;

  • “time has gone backwards” issue: you may need to restart the OctoClock if the current time of the signal source jumps backward in time.

Once the OctoClock GPS lock light turns green, you can create a time-synchronized simulation. You can read the Start Time and the Synchronize Simulators **sections for more details.

8.4.4. USRP

You can change the USRP preferences to specify preferred default values when adding USRP radios in the Output settings.

usrp.png?20

The frame size is the actual size of the packets transferred over 10 GbE. The X300 SDR performs best when the frame size is set to 8000 bytes, but not all network adapters can support it. If your network adapter does not support this frame size, you will get “Transmission Sequence Error” messages when starting the simulation. The default value is 4096 bytes and it works for all network adapters.

In all cases, the jumbo packets must be enabled in your network adapter’s driver settings. For Linux, see how to set the MTU size in section Network Card Driver: 10 GbE Intel X520-DA2. For Windows, see how to enable jumbo packets in section Network Card Driver: 10 GbE Intel X520-DA2.

The default IP address setting controls the IP address that will be used by default for any new radio that you add to the Output settings. This setting is only provided for convenience. Skydel will always use the IP address specified in the output settings.

The default clock should be set to GPSDO only if the SDR is equipped with a GPSDO precision clock. GNSS simulation requires a high precision 10 MHz source.

Users have the option to stop the simulation or not when a USRP "Sequence Error" occurs. Usually, a sequence error occurs when there is a problem in the communication link between the computer and the radio. The recommended setting (stop on sequence error) is checked be default.

If you run a long simulation (multiple hours or days), the likelihood of dropping a packet increases. The consequence of dropping a packet is a short period (ms) with no RF signal. Since all packets are timestamped, the RF streaming will resume with the next packet at the appropriate time.

The GPIO refers to the AUX. I/O DB-15 connector on the front panel of the USRP X300 radio. These I/O can be set in real-time by a custom library which can be loaded by Skydel. See section Trigger (USRP X300 AUX I/O) for an example.

The anechoic chamber hardware description file is used only for the Anechoic Chamber scenario and describes the list of connected radios and some low level instructions to leverage the hardware architecture. This file is referenced here, but edited in the Anechoic Chamber Builder software only.

The anechoic chamber preference appears only if the feature is enabled.

8.4.5. Dektec

You can change the mapping between a radio output, identified by its device number, and a Dektec card, identified by its serial number.

preferences dektec.png?20

Radio outputs are by default mapped to Dektec cards in ascending serial number order. This dialog allows you to change this order by selecting a different device number from a drop-down in the left column to associate it with the corresponding card serial number in the right column. If the same device number is used in more than one association, you will get a warning message when trying to navigate to another tab or to quit the Preferences dialog box by clicking on the OK button.

The Dektec tab is only shown if more than one Dektec card is present on the system.

8.5. Configurations

To run simulations with Skydel you need to create, save, open, and modify “Configurations”. Sometimes configurations are called “scenarios”.

Configurations are just like any other type of computer file that is used to save or load. Use the File menu to access these options.

menu file.png?20

When you make changes to settings or interferences, the configuration will be marked as modified and Skydel will indicate Not Saved in the window’s title bar. After saving the configuration, the indication will disappear until you make new changes.

8.5.1. Create New Configuration

To create a new configuration, click New Configuration in the File menu, or use the Ctrl+N shortcut. If the current configuration is modified (not saved), you will be prompted to discard or save it before creating a new configuration. If you cancel, the current configuration will remain and Skydel will not create a new configuration.

By default, a new configuration does not know anything about your hardware setup and you will need to configure the Output first.

8.5.2. Save Configuration

To save your current configuration, open the File menu and click Save or Save As.

By default, each of your configurations is saved in the Skydel-SDX/Configurations folder. Configuration files use the .sdx filename extension.

8.5.3. Open Configuration

To open an existing configuration, open the File menu and click Open Configuration. If the current configuration is modified (not saved), you will be prompted to discard or save it before opening an existing configuration. If you choose to cancel, the current configuration will remain active and Skydel will not open the configuration.

8.5.4. Set as Default Configuration

Use this option to set the current configuration as the one to use when you create a new configuration.

8.5.5. Reset Default Configuration

Use this option to reset the default configuration to the initial default configuration (factory reset). Clicking this option will not change your current configuration.

8.6. Running Your First Simulation

If you are new to Skydel, we recommend that you follow the instructions in this section to create your first configuration. This is a quick walkthrough of the steps required to get a simple GPS simulation up and running. We will also highlight some interesting features along the way. Refer to the Settings section if you would like more details on a particular area.

This section assumes you have a single radio setup using the Ettus X300 SDR.

8.6.1. Create a New Configuration

Click New Configuration in the File menu (or use Ctrl-N shortcut). If you already have a configuration loaded and modified, you will be prompted to save or discard it.

8.6.2. Add a radio

Next, you will need to add a radio. Navigate to Settings - Output.

go to settings output with arrows.png?20
A radio may already be enabled in your Set as Default Configuration. If that is the case, you can click on the Clear button to remove all radios.

Select the X300 SDR in the dropdown list and click the Add button.

add x300 with arrows.png?20

The X300 will be added with the default IP address and clock settings. If the default values are incorrect for your hardware setup, click Edit to make the necessary changes and click OK when done.

x300 added with arrow.png?20

8.6.3. Select GNSS Signals

Click the Edit button for the RF A output of Radio 1.

x300 added edit signals.png?20

Select GPS L1 C/A and click Ok.

You can also select Gaussian Noise. This will reproduce realistic C/No.
select L1CA.png?20
The Signal Selection dialog box enables you to change the output gain. By default, the gain is 80 dB. It means that the signal power level measured at the Tx connector of the X300 is 80 dB stronger than the power level displayed in the simulator. For a receiver on the surface of the Earth, where you would expect power level at -130 dBm, you will actually measure -50 dBm per satellite on the X300 Tx connector.

For more information about signal selection, refer to the Output section.

8.6.4. Select Vehicle Motion

Next, we will configure our vehicle to travel in a circle. Navigate to Settings - Vehicle - Body to change the vehicle motion settings.

go to vehicle menu with arrows.png?20

Next, select Circular from the dropdown list to choose a circular trajectory. Other details, such as location, speed, and radius of the trajectory can be modified by hitting Edit.

select circular with arrows.png?20

To navigate back to the Settings, click the back arrow.

back arrow.png?20

8.6.5. Start the Simulation

Before you begin a simulation with a connected receiver, make sure that you attenuate the RF signal to a proper power level using RF attenuators. See section Reference Power Level for details.

To start the simulation, click the Start button. This action is only available when the status is Ready.

start button with arrow.png?20

The simulator state will change to Initializing for approximately 10 seconds and if there are no issues with the hardware setup, the state will then change to Streaming RF. Now the simulation is running.

running with arrows.png?20

During the simulation run (Streaming RF), you will see the elapsed time advance. The Stop button stops the simulator and RF streaming, while the Pause button will slow the vehicle to a halt while the simulator continues to stream RF. If you click on the Map tab, you will see the vehicle is not moving when you click Pause, and starts moving again when you click Resume.

motion stopped with arrows.png?20

If your GNSS receiver is streaming NMEA to a serial or USB port, you may connect to your receiver to parse and analyze the NMEA data in real-time.

8.7. Settings

When creating and modifying configurations, you will spend the majority of your time in the Settings tab of Skydel. You can access the Settings tab by clicking this button:

settings tab button.png?20

Remember that settings are stored in your Configurations. After making changes to settings, you might want to save them for future use.

You can see the settings tab in the image below.

settings.png?20
Settings Tab

The settings are divided into several categories. To navigate to a specific category, first click the Settings button. Then click on the appropriate settings menu and sub-menu. In this document, we will refer to these sorts of steps by instructing you to navigate Settings - Vehicle - Body (or something similar).

settings menu vehicle body.png?20

As you navigate in the Settings, a visible path builds itself at the top of the menu. To leave a nested settings category, click the back arrow.

back to settings output.png?20

Alternatively, clicking the parent category (underlined) in the path will move you back one level.

At the bottom of the settings tab, you can see the sky view and the power sliders. You can click & drag the horizontal splitter up and down to adjust the sky view’s dimensions. In the sky view, you can uncheck Show All Systems to display only a single type of constellation at a time. The buttons on the left are called the Constellation Selectors and they let you choose which constellation is shown in the sky view and referenced in the power sliders.

The image below shows the GPS constellation only.

select gps.png?20
GPS Constellation

The image below shows the GLONASS constellation only.

select glonass.png?20
GLONASS Constellation

If you place your mouse over a satellite in the sky view, you will see additional information about that particular satellite, such as its elevation and azimuth relative to your receiver.

The sky view does not change as a result of vehicle attitude (yaw, pitch and roll) changes.

The DOP values do not change when you select one constellation in particular. The DOP values always include all satellites from all constellations.

In the upper right corner of the sky view, there is a round button with the letter ‘i’ in it. This button brings up a window with additional information about the sky view.

sky map legend.png?20
Sky View Information

8.7.1. Output

The Output settings are located in the Settings - Output menu.

The Output settings are where you control which RF output will generate which signals. These settings are what bridge the gap between the software simulation and the hardware signal generation. Proper setup of the output settings is a key component of a successful simulation.

You start by selecting the output type for the simulation. The options are:

  • Anechoic Chamber: This option uses up to 16 X300 Software-defined radios to transmit GNSS and jamming signals inside an anechoic chamber. This option is visible only if the Anechoic Chamber feature is enabled.

  • DTA-2115B: Software-defined radio from DekTec.

  • File: The IQ data will be saved to a file on the computer’s hard drive.

  • None: RF is not generated and IQ is not saved, raw logging data is saved.

  • NoneRT: Similar to None but runs in Real Time. Useful when developing automation scripts.

  • X300: Software-defined radio from Ettus Research. Equivalent radios from National Instruments can be used as long as they have the correct firmware. If you have a X310 radio, select X300 in the list.

  • Wavefront Controller: This option requires a special system in order to simulate the behavior of a CRPA. This option is visible only if the Wavefront feature is enabled.

For the remainder of this section, we will be using the X300 SDR output type. Setting up the other output types is very similar, except for Anechoic Chamber which has a dedicated section. Wavefront has its own section too.

8.7.1.1. Radio Selection

In the Settings - Output, select the X300 SDR in the dropdown list and click Add.

output x300.png?20
If an output is already added, you can click on the Clear button before adding the X300 SDR. You can add multiple outputs, but they must be of the same type. For example, you can add 2 USRP X300 radios, but you can’t add a DTA-2115B after you have added a X300.

When adding a USRP radio such as the X300, the IP address and clock source are preset with default values as defined in the Preferences. If the default values are incorrect for your setup, click Edit under the radio name to edit the radio settings.

edit x300.png?20
Changing the values here will not change the preferences.
8.7.1.2. Signal Selection

Take a moment to look at the front of the USRP X300 radio. You will notice that it has an RF A TX port and an RF B TX port.

x300 photo front highlight.png?20

The markings on the radio correspond to the labels in the Output settings. For example, any signals assigned to RF A in the Output settings will be generated and output by the USRP X300 RF A TX port. To assign signals, click the “Edit” button for the corresponding output.

output x300 RF A highlight.png?20

The Signal Selection dialog box will help you choose the signals that you want to be generated for each output. Start by selecting Upper L-Band (e.g. L1) or Lower L-Band (e.g. L2).

signal selection L1.png?20

If you have the Advanced Jammer option enabled, the Output Type will also include the Interference option.

If Gaussian Noise is checked, Skydel will add noise to reproduce realistic C/No.

Next, select the signals that you would like this output to generate. As you make selections, you will notice that the dialog box will update the Ideal Sampling Rate as well as disable code types that are not compatible with your current selection. For example, when selecting GPS L2 P-Code, the current sampling rate changes to 25 MSps (Mega Samples per second). Also, the Galileo signals are disabled because they are too far away from the P-Code signals to fit within the Max Sample Rate of 60 MSps.

signal selection L2.png?20

You may constrain this output to keep its sample rate low by changing the Max Sample Rate to a lower value. Alternatively, you may constrain the output to remain high by changing the Min Sample Rate to a higher value.

Due to a limitation in the hardware, some SDR models require that all outputs must have the same sampling rate. For example, if the signals selection on RF A requires 25 MSps and the signals selection on RF B requires 12.5 MSps, both outputs will be set to 25 MSps. For SDR models with this constraint, the selected sampling rate is always the highest sampling rate of any available output.

Only signals for which you have an active license will be available for choosing. Y-Code and M-Code will only appear if you have correctly configured encryption preferences.

Galileo E5 AltBOC can be generated if you have an active Galileo E5 license by clicking E5 AltBOC or both E5a and E5b under Signal.

The default gain for the USRP X300 radio is 80 dB. You can change the gain by 1 dB step between 80 dB and 115 dB. See Reference Power Level section below for more details.

Once you have made your signal selection, click the “Ok” button to return to the Output settings. The simulation will not run if you try to assign the same signal to multiple outputs. Once you have completed your signal selection for all outputs, the Output settings should look something like this.

x300 with signals.png?20
Adding radios and selecting signals can be a repetitive task. You can save the current output settings as the default outputs by using Set as Default Configuration.
8.7.1.3. Reference Power Level

Once you have selected a radio, you can click the Reference Power button to get the nominal power at the TX connector.

reference power button.png?20

For the X300, the reference power level is -50 dBm at the TX connector for a single GPS L1C/A signal.

x300 power level.png?20
8.7.1.4. Optimizing Performance

The main concern when configuring the Output settings is staying within the performance limitations of both the CPU and the GPU. Skydel is a software-defined GNSS simulator, so the number of signals that can be simulated is limited by the performance of the software running on the computer (most simulators are limited by the number of hardware channels they have). The number of signals that can be simulated depends on a number of factors:

  • the number of signals being generated (e.g., [C/A + P] x 10 satellites = 20 signals);

  • the sampling rate of those signals (e.g., 50 MSps, 12.5 MSps);

  • the complexity of those signals (some signals are harder to simulate than others).

If you hit the performance limit of your computer, you have 2 options. Option 1 is to reduce any of the items listed above. Option 2 is to increase the performance of the hardware.

When you select signals with different carrier frequencies, Skydel must increase the sample rate to cover both signals and use a carrier frequency in-between the 2 signals. However, if you assign these signals to different RF outputs (RF A vs RF B), Skydel will reduce the sampling rate. This will greatly reduce the workload for the GPU.

You can disable the spectrum subtab in the preferences to reduce the CPU/GPU workload.

Once you have completed the signal selection, you can test the performance of the GPU by clicking the Test GPU Speed button. The GPU Benchmark dialog box will display the signals that you have selected in the Output settings. Signal types that you have not selected will not be part of the test. The benchmark assumes 14 satellites for GPS and 10 satellites for each of the other constellations. If you only expect 10 GPS satellites to be in view, you can lower this value to more accurately reflect the conditions you will observe during your simulation.

gpu benchmark.png?20

Once you are satisfied with your selection, click the Start button to begin the test. Once the test has completed, you will see a score for the GPU. A score higher than 1.00 means the GPU performance is sufficient for this signal selection. However, you don’t want to cut it too close, we recommend a score of 1.10 or higher. A score of less than 1.00 means the GPU doesn’t have enough performance to generate the signals in real time. Try reconfiguring the Output settings to use smaller sample rates, reducing the number of satellites, or reducing the number of signals selected.

gpu benchmark score.png?20
8.7.1.5. IQ Data Files

To save IQ data to a file, select “File” as the output type and click the “Add” button. (If you already have X300s configured, you will have to delete each of them before proceeding).

Skydel will prompt you to name the file that you would like to save the IQ data to. You should consider saving this data on a hard drive with plenty of space and fast writing speed because IQ data files can grow very large over time. You can add multiple IQ data files by clicking the “Add” button. This step is necessary if you want to save both L1 and L2 data. Add signals to each individual IQ file using the Signal Selection dialog box that is used for X300 SDRs. Once you have selected each of the desired signals, your output settings should look something like this:

output file.png?20

When you are ready, start the simulation. Skydel will begin saving data into the specified files.

IQ files can be very large. You will quickly fill up your hard drive if you let the simulation run for too long.

When saving data to IQ Files, your GPU does not need to pass the performance test. Skydel will generate the file as fast as it is able, which, depending upon the performance of your GPU and your hard drive, may be slower or faster than real-time.

When you generate an IQ file with Skydel, you get 2 files per RF output:

IQ File Data Format

The IQ File uses the extension .iq and contains the raw 16-bit IQ samples in binary format. The file has no header. The first 2 bytes is the integer value for I, the following 2 bytes is the integer value for Q. The pattern simply repeat I,Q,I,Q,I,Q, etc. The integer format is in little endian.

IQ.png?20
IQ File Metadata

This files uses the extension .xml and is consistent with the GNSS SDR Metadata Standard (http://sdr.ion.org/). It contains multiple fields describing how the .iq file should be read including the sampling rate and center frequency of the signal.

8.7.1.6. Anechoic Chamber

Configuring Orolia’s Skydel for an anechoic chamber is a 4-step process:

  1. Hardware step: where you list and assign all the connected radios and describe the hardware architecture.

  2. Spatial Configuration step: where you select your receiver antenna’s location and you determine the elevation and azimuth of the transmitting antennas relative to this location.

  3. Calibration step: where you perform a calibration to precisely measure power and time offset between antennas.

  4. Scenario step: where you configure Skydel for a specific simulation scenario.

Step 1 is usually performed by an Orolia engineer or qualified personnel. It requires a keen understanding of the computer motherboard and its PCIe bus routing in order to optimize the data transfer between the different peripherals (CPU, GPU, RAM, NIC, etc). Typically, the result of this step is stored in a file named hardware.xml. The path to this file must be properly set in Skydel USRP preferences.

Steps 2 and 3 are done within the Anechoic Chamber Builder software. Once these steps are complete, the software will output the results into an ANEC file.

Step 4 is done in Skydel.

In the Settings - Output, select the Anechoic Chamber in the dropdown list and click Add. Locate your ANEC file and click Open.

anec select output.png?20

The output settings page is divided in 2 parts:

  • The left part shows a tabulated view with GNSS and Interference tabs.

  • The right part shows a sky view depicting the ANEC file.

anec output empty.png?20

The sky view in the Constellations subtab does not show any satellites in view simply because there are no GNSS signals selected in this scenario. Click Select Signals.

anec select signals.png?20

Choose the desired signals and click OK. The main window is updated.

anec output.png?20

The GNSS tab is updated with useful information such as the RF outputs' associations with each signals and satellites. Moving the mouse over a row in the table will highlight in green the corresponding antenna in the sky view on the right (see image below).

anec highlight antenna.png?20

In this example, the row indicates that GPS PRN 15 and 24 are mapped to the same physical output: 1B. The next row also indicates the same output 1B is being used to transmit Galileo PRN 11, 14 and 29.

Below the table you will find a text report listing the angular distance between the GNSS satellite and the physical antenna used for transmission. Skydel will do its best to minimize angular distance, but it is useful to look at this table and validate that the distances are acceptable for your scenario. Here’s a text report example:

Angular
Distance
(degrees)  Constellation   Signal    PRN   Output
-------------------------------------------------
    11.71  GPS             C/A       12      2A
    14.97  GPS             C/A       21      2B
    18.70  GPS             C/A       10      4A
    19.32  GPS             C/A       15      1B
    19.52  GPS             C/A       18      4A
    20.00  GPS             C/A       24      1B
    20.52  GPS             C/A       14      3A
    21.68  Galileo         E1         8      2B
    22.41  GPS             C/A       20      2A
    22.95  Galileo         E1        18      3B
    23.53  Galileo         E1        21      3A
    24.33  Galileo         E1        10*     3B
    24.73  Galileo         E1        11      1B
    25.53  GPS             C/A       32      3B
    27.06  Galileo         E1        14      1B
    27.06  Galileo         E1        29      1B
    29.01  Galileo         E1        24      3A
    29.16  Galileo         E1        13      3B
    29.17  Galileo         E1        28      3B
    29.43  Galileo         E1        19*     2A
    30.99  Galileo         E1        16      4A
    35.99  GPS             C/A       25*     2B

Some PRN are marked with an asterisk, such as number 10*. It means that the PRN 10 is currently below the masking angle and should it be moving above the masking angle during the simulation, it will be transmitted using this physical output.

Keep in mind that the mapping is only done once at the beginning and does not updates during the simulation. Therefore, the angular distance between a GNSS satellite and its transmitting antenna may increase during the simulation.

Some Skydel features are not yet supported with the Anechoic Chamber output:

These constraints are not enforced by Skydel: the user must manually change the receiver trajectory and antenna patterns.

8.7.1.7. Wavefront

Wavefront output can only be used with the GSG Wavefront system. It leverages the multi-instance synchronization feature of the Skydel software to enable simulation scenarios including high-dynamics trajectories (GNSS and non-GNSS).

GSG Wavefront generates phase-synchronized signals in real-time, to realistically simulate the signals received by a CRPA.

You can find a more detailed description of GSG Wavefront in the product manual. Your GSG Wavefront also includes an XML file. This file describes your hardware architecture and its simulation capability.

Your system contains more than one computer:

  • A Wavefront Controller

  • And one or more GSG - Nodes

It is only necessary to change settings on the Wavefront Controller; those settings also control the Nodes. The following instructions only concern the Wavefront Controller.

To view or change the GSG Wavefront settings, navigate to the Settings - Output menu. Select Wavefront Controller in the dropdown list and click Add. Locate the hardware file and click Open.

wavefront selection.png?20

The output settings page will display three tabs.

  • Monitor

  • Signals Selection

  • Antenna

8.7.1.7.1. Monitor

The Monitor tab allows you to observe the state of your GSG Wavefront system.

monitor tab.png?20

Wavefront systems leverage the multi-instance synchronization feature of Skydel. Connection is fully automated and made in two steps:

  1. The Wavefront Controller connects itself to the remote API of all Nodes.

  2. On each Node, it activates the Slave mode through remote API in order to synchronize all Skydel simulators.

The API Link LED will be green if the Wavefront Controller is connected to the API of the Node, and the Master Link LED will display green if the instances on the Nodes are synchronized with the Wavefront Controller. If an LED remains red, you should confirm that the associate GSG Node is on and fully operational and that all required Skydel instances are open.

8.7.1.7.2. Signals Selection

This tab summarizes the signal possibilities and settings within your GSG Wavefront system.

signals selection.png?20

To choose GNSS signals, click the "Edit selection" button in the desired band. As you make selections, you will notice that the dialog box will disable code types that are not compatible with your current selection. The compatibility depends on your system’s hardware.

signal selection dialog.png?20

If your system has the Interference option enabled, you can choose an interference group for each band in the list. To configure the groups, navigate to Settings > Interferences (see the Advanced Jamming section). If you don’t need to use interferences for a band, choose the "None" Group.

select interference group.png?20
8.7.1.7.3. Antenna

This last tab allows you to enter your CRPA information for use by the GSG Wavefront system.

antenna tab.png?20

The "CRPA Offset" refers to the attachment point and attitude of the antenna’s center relative to the vehicle’s body. The "CRPA Offset" are coordinates in the Body Frame, such as the vehicle’s antenna offset.

A CRPA is different from other antennas due to its multi-elements system. Each element represents a fixed location on the antenna. The "CRPA Elements Offset" refers to the attachment point and attitude of each element relative to the antenna’s center. The "CRPA Elements Offset" are coordinates in the Antenna Frame.

antenna tab Element Offset.png?20

For each CRPA element, you can specify a position offset and a model. Models are saved data representing different antenna models. They can be defined in the Settings - Vehicle - Antenna menu and are assigned in this tab.

element model choice.png?20

If you don’t want to simulate all the elements of your config file, you can disable some. Just by clicking the Enable checkbox for the elements you want to disable.

disable element with arrow.png?20

The disabled elements will also be visible in the monitor tab:

disable element in monitor tab.png?20
8.7.1.7.4. Phase Graph

The "Wavefront Phase" tab shows a graphic of the real-time phase corrections applied to each of the simulated antenna elements. The first enabled element is the reference. This graphic is updated in real-time, during both the "WF Init" and the "Running" states. During the "WF Init" state, coarse phase corrections are applied to each element, bringing the phase offsets between elements below the acceptance threshold. Then, during the "Running" state, the phase offset between each elements is constantly monitored and compensated. If, for any reason, any of the phase offsets gets above the threshold value, a warning message will show-up in the "Status Log" tab. As you can see on the image, the graphic has vertical bars, which indicates when the phase calibration process changes from coarse calibration to finer calibration steps.

Note that there is a drop-down menu which permits you to view the phase correction for the different simulated RF bands. You can also view the phase corrections for GNSS or Interferences channels.

wavefront phase tab.png?20

8.7.2. Start Time

The Start Time settings are located in the Settings - Start Time menu.

Controlling the simulation start time is one of the key considerations when testing GNSS receivers. To compare different test runs, it is often critical to have the same start time values to ensure that the GNSS satellites’ geometry is identical for each run.

Some GNSS receivers will refuse to lock on the simulated signal if their internal clocks cause them to believe the time is incorrect. This is one of the many ways a receiver can protect itself against spoofing. It is sometimes necessary to reset the receiver before each simulation to work around this defense mechanism.

It is not necessary to download a RINEX navigation message file matching the simulation start time. Skydel is capable of extrapolating in both the future and the past.

If you want to use a specific RINEX navigation message file as your ephemeris and almanac for the simulation, you will need to import the RINEX file for each constellation.

There are three ways you can control the start time of the simulation:

  • specify a custom time;

  • use the computer system time;

  • use the time from a timing receiver.

When selecting the timing option to use, a preview will be shown to the right.

start time select GPS time with highlight.png?20
8.7.2.1. Custom Time

Setting a Custom Time is the most common method of controlling the start time of the simulation. Every time you run the simulation, it will start at the same time. You can change the custom time by clicking on the time field itself.

start time click custom time with arrow.png?20

You can specify the time with any of the fields provided. The other fields will update to reflect the changes that you have made. For example, you can set the date and time to 7/1/2016 and 07:00:00. The week and second will automatically be updated to 1903 and 457200.

start time dialog.png?20
8.7.2.2. Current Computer Time

If you select Current Computer Time, your simulation will be synchronized to the computer system time to within approximately 10 seconds. This is due to the time it takes to start the streaming process with the radios. Synchronizing in this way can be useful if you want your simulation to be close to true time. However, for tight synchronization with a time reference, it is necessary to use a timing receiver.

8.7.2.3. GPS Timing Receiver Time

If you want to synchronize your simulation with more accuracy, you can select GPS Timing Receiver Time. Ensure that your timing receiver preference is set correctly. Once everything is configured correctly, you will be able to see a preview of the start time.

Skydel will communicate with the timing receiver during the initialization process and ensure that the simulation starts at the specified time. This process happens after the radio initialization, so a precise synchronization can be achieved.

If desirable, you can add an offset to the simulation start time computed by the GPS Timing Receiver. The value must be an integer between -3600 and +3600 seconds.

As indicated in the Simulator State section, it is important to know that when using a GPS Timing Receiver, any changes made to the settings while the simulator is in the "Armed state" will be discarded when the simulation starts.
8.7.2.4. Leap Seconds

You can specify the current leap seconds (LS) value and the date of the next leap seconds future (LSF) event.

leap second.png?20

The LS value is used by the receiver to convert GPS system time to UTC time. NMEA data is marked with UTC timestamps. If the receiver and the simulator use different LS values to compute the UTC time, it will make the NMEA output difficult to compare, especially in the receiver deviation graph.

leap second future dialog.png?20

If you uncheck (disable) the LSF event, Skydel will set the LSF value in the navigation message to the current leap seconds value regardless of the LSF value that you entered.

Leap Seconds (LS) and Leap Seconds Future (LSF) are relative to GPS Epoch. The corresponding LS and LSF for other constallations are adjusted accordingly.

If you enable the LSF event checkbox and the simulation start time is set for after the LSF event date, Skydel will use the LSF value as the current leap seconds value. You should keep in mind that the LSF event occurs at the end of the specified day, at exactly midnight UTC. You can see the effective leap seconds value (LS vs. LSF) in the dashboard.

Skydel allows any date for the leap seconds future event, but usually the date is set to either June 30th or December 31st.

When simulating LSF event for GLONASS, consider the following limitations:

GLONASS supports leap second event only at end of quarters (Mar 31st, June 30th, September 30th or December 31st).

GLONASS does not suppot adding or substracting more than 1 second during the event.

8.7.2.5. Duration

By setting the duration you can choose how long you would like the simulation to run. By default, the duration is set to Unlimited.

Click the dropdown box to select the desired duration. If you would like to specify a duration other than what is listed, select the Other option. You can then specify the amount of days, hours, minutes, and/or seconds you would like the simulation to run.

duration edit.png?20

8.7.3. Global

The Global settings are located in the Settings - Global sub-menu.

The Global sub-menu contains the Atmosphere, Earth Orientation Parameters, Logging, Signal Level and Synchronize Simulators Settings.

8.7.3.1. Atmosphere

The Atmosphere settings are located in the Settings - Global - Atmosphere menu.

The Atmosphere sub-menu contains the Nominal and Errors atmosphere settings.

8.7.3.1.1. Nominal

The Nominal atmosphere settings are located in the Settings - Global - Atmosphere - Nominal menu.

You can use the Nominal atmosphere settings to change the ionospheric and tropospheric models being applied to the simulation.

atmosphere.png?20

The following ionospheric models are available:

  • None;

  • Klobuchar;

  • Spacecraft.

The following tropospheric models are available:

  • None;

  • Saastamoinen;

  • Stanag.

The Spacecraft ionospheric model is meant to be used only for a vehicle in space, above the ionosphere. For the most part, the spacecraft will have a direct line of sight through empty space. However, when the GNSS satellites pass behind the Earth, the line of sight will go through the ionosphere for a short time. During that time, the effect on the GNSS signal is non-negligible.

When you choose the Spacecraft model for the ionosphere, you should also set the tropospheric model to None.
8.7.3.1.2. Errors

The Errors atmosphere settings are located in the Settings - Global - Atmosphere - Errors menu.

You can use these settings to add positive offsets to the current ionospheric model.

"Apply delays to ionospheric model" needs to be checked to enable the errors when the simulation runs.

atmo error preview.png?20

When the errors are enabled, the interactive map shows the current offsets at each Ionospheric Grid Points (IGP) of a ionospheric grid, with either colors or numbers.

Checking "Compensate ionospheric delays in SBAS long term corrections" will add these IGP values in the SBAS long-term corrections (message 26).

You can move and zoom the map to focus on areas of interest. Information related to the point highlighted with the mouse pointer are shown below the map.

The Edit button opens a dialog enabling the modification of the map’s IGP values.

atmo error edit.png?20

In "Select" mode, you can select points and modify their offset values. Selected points appear in blue, and their offset can be incremented/decremented by the value set in the field next to the +/- buttons. Alternatively, selected points can be set to the value indicated in the field next to the "Set" button.

While selecting with the mouse, holding the Shift Key on the keyboard will add to the current selection, while holding the CONTROL (CTRL) key will remove points from the current selection.

The "Clear" button will reset all the values on the map.

Use the "Panning" mode to move and zoom the map. The "Best fit" button will fit the whole points in the current canvas.

You can import or export a grid in CSV format, where each line describes a grid band (0 to 11), an IGP index (1 to 201, depending on the band) and the offset applied (0 to 99 meters).

Click OK to save your changes or click Cancel to revert them.

8.7.3.2. Earth Orientation Parameters

The Earth Orientation Parameters settings are located in the Settings - Global - Earth Orientation Parameters menu.

Default Earth Orientation Paramaters range from January 1st to December 31st of the year of the default simulation start time.

The Import button opens a dialog to import Earth Orientation Parameters from a CSV file.

import eop.png?20

Below are the column descriptions for each Earth Orientation Parameter.

Column Description

MJD

Modified Julian Date.

X PM, Y PM

Coordinates or the pole.

UT1-UTC

Difference between the Universal Time and Coordinated Universal Time.

8.7.3.3. Logging

The Logging settings are located in the Settings - Global - Logging menu.

logging.png?20

Use the Logging settings to control how Skydel logs data during a simulation.

8.7.3.3.1. Raw

Turn on the Raw Logging option to log simulation data such as satellite trajectories, receiver trajectories, and signal power levels. You may also specify the desired update rate at which data is logged.

If you need only raw data without RF signals, set your output to None and Skydel will generate the raw log files much faster than real time.
Raw logging at higher rates can interfere with the simulator’s real-time engine on a slower computer. If you experience underrun problems with a radio, either reduce the logging rate or do not log at all while generating RF.

The logging data can be imported into other tools for analysis purposes. For example, you can use Skydel to generate satellite trajectory data. You can then use this data to model and test the satellite component of your receiver software. This enables you to test your software easily and quickly without the need to use hardware to generate RF signals.

When raw logging is enabled, Skydel will generate:

  • one file for each signal type per PRN

  • one file for each multipath echo

  • one file for each visible dynamic transmitter (if using Advanced Jammer)

  • one file for the receiver

Below are the column descriptions for each raw logging files. Column descriptions for a satellite:

Column Description

Elapsed Time

The elapsed time of the simulation in milliseconds.

ECEF X, Y, Z

ECEF coordinates (meters) of the satellite’s antenna phase center.

Body Azimuth

Satellite’s azimuth, in radians, from the receiver’s body position relative to North.

Body Elevation

Satellite elevation, in radians, from the receiver’s body position relative to the horizon.

Range

Geometrical distance, in meters, between the satellite’s and receiver’s antennas.

PSR

Pseudorange, in meters, between the satellite’s and receiver’s antennas.

ADR

Accumulated Doppler range, in meters, between the satellite and receiver.

Clock Correction

Satellite’s clock correction, in seconds.

Clock Noise

Additional clock error, in meters, not accounted for in navigation message.

Iono Correction

Ionospheric corrections, in meters.

Tropo Correction

Tropospheric corrections, in meters.

PSR Offset

Pseudorange offset, in meters.

Receiver Antenna Azimut

Satellite’s azimuth, in radians, from the receiver’s antenna position.

Receiver Antenna Elevation

Satellite’s elevation, in radians, from the receiver’s antenna position.

Receiver Antenna Gain

Receiver’s antenna gain, in dBi.

SV Antenna Azimut

Receiver’s azimuth, in radians, from the satellite’s antenna position.

SV Antenna Elevation

Receiver’s elevation, in radians, from the satellite’s antenna position.

Relative Power Level

Signal’s relative power level, in dB, corresponding to the sum of the global power offset, the user’s power offset, the receiver’s antenna gain and the satellite’s antenna gain.

Doppler Frequency

Doppler frequence, in Hertz, due to satellites' and receivers' antennas dynamics'.

PSR Change Rate

Pseudorange rate, in meters per second, due to satellites' and receivers' antennas dynamics'.

Echo Power Loss

Multipath power offset, in dB, relative to Line of Sight (LOS) signal. This column appears only in echo log file.

Echo Doppler Offset

Multipath frequency offset, in Hertz, relative to LOS signal. This column appears only in echo log file.

Echo Carrier Phase Offset

Initial phase offset, in radians, in multipath relative to LOS signal. This column appears only in echo log file.

Echo PSR Offset

Multipath pseudorange offset, in meters. This column appears only in echo log file.

GPS TOW

GPS time of week, in seconds.

GPS Week Number

GPS week number.

SBAS t0

SBAS time of the day, in seconds.

Column descriptions for receiver:

Column Description

Elapsed Time

Elapsed time of the simulation, in milliseconds.

ECEF X, Y, Z

ECEF coordinates of the receiver’s antenna, in meters.

Yaw, Pitch, Roll

Sum of vehicles’s body and antenna’s rotation angles, in degrees.

Velocity X, Y, Z

Velocity of vehicle, in meters per second.

Accel. X, Y, Z

Acceleration of vehicle, in meter/seconds.

GPS TOW

GPS time of week, in seconds.

GPS Week Number

GPS week number.

Column descriptions for a transmitter:

Column Description

Elapsed Time

Elapsed time of the simulation, in milliseconds.

ECEF X, Y, Z

ECEF coordinates of the transmitter’s body, in meters.

Yaw, Pitch, Roll

Transmitter’s body rotation angles, in degrees. Does not include antenna rotation.

Transmitter Antenna Gain

Transmitter antenna gain, in dB.

Propagation loss

Power loss, in dB, due to the distance between transmitter and receiver.

Receiver Antenna Gain

Receiver’s antenna gain, in dBi.

Receiver Visibility

True if the transmitter is visible from the receiver, false otherwise.

8.7.3.3.2. NMEA

Skydel can also log NMEA-style data. This data will look like the output of a receiver that has tracked the simulation. This can be useful for testing your post-processing tools, or for connecting Skydel to another device that accepts NMEA data. You may also specify the desired update rate at which data is logged.

Skydel uses GPS time (not UTC) in its NMEA output. Also, the altitude in the GGA sentence is based on the ellipsoid model, not the mean sea level.

It is also possible to log downlink data. The downlink can be logged before message encoding, after, or both. For a message to be logged, the transmitting satellite has to be present.

The downlink format changes depending on the signal type.

For BeiDou D1 and D2, the encoding uses interleaving. Each word uses the following format:

downlink beidou.svg?20

GLONASS encoding uses hamming code. The format is:

downlink glonass.svg?20

For GPS L1 C/A and QZSS L1 C/A, the encoding uses parity. Every data word uses the following format:

downlink gps ca.svg?20

The example below is a sample of L1 C/A downlink log.

Elapsed Time (ms),PRN,GPS TOW,GPS Week Number,Subframe,Page,Navigation Message (Hex),Modified
0,1,370800.000,2006,1,,22D55589 21D2DEA4 3D644032 2AAAAA95 1555556A 2AAAAA95 15557CFB 3F6925EF 3FC0079E 3E17C87C,No

GPS CNAV uses CRC encoding. The format is the following:

downlink gps cnav.svg?20

GPS L1C uses CRC encoding. The format is the following:

downlink gps l1c decoded.svg?20

The L1C message is then encoded using BCH, LDPC and interleaving. The encoded format is the following:

downlink gps l1c encoded.svg?20

BeiDou B1C uses CRC encoding. The format is the following:

downlink beidou b1c decoded.svg?20

The B1C message is then encoded using BCH, LDPC and interleaving. The encoded format is the following:

downlink beidou b1c encoded.svg?20

Galileo FNAV uses CRC & FEC encoding. The format is the following:

downlink galileo fnav.svg?20

Galileo INAV uses CRC & FEC encoding. The format is the following:

downlink galileo inav.svg?20

SBAS uses FEC encoding. The format is the following:

downlink sbas.svg?20

Message modifications are included in the logged data.

Skydel includes a Python library to parse the downlink log. The script will parse every line in the log to extract the data in a more usable format. It also includes an example that will parse a downlink log and generate a human-readable output such as this:

Paramater Name,Range,Binary Value,DecimalValue,Unit
Preamble,[0, 7],10001011,139,
TLM Message,[8, 21],01010101010101,5461,
ISF,[22, 22],1,1,
Reserved,[23, 23],0,0,
Parity 1,[24, 29],001001,9,
Truncated TOW Count,[30, 46],01111000101101001,61801,
AF,[47, 47],0,0,
AS,[48, 48],0,0,
SubFrame ID,[49, 51],001,1,
PC 1,[52, 53],01,1,
Parity 2,[54, 59],100100,36,
WN,[60, 69],1111010110,982,week
Code L2,[70, 71],01,1,
SV Accuracy(URA),[72, 75],0001,1,
SV Health,[76, 81],000000,0,
IODC,[[82, 83], [210, 217]],0000000010,2,
Parity 3,[84, 89],110010,50,
L2P,[90, 90],1,1,
Reserved 1,[91, 113],01010101010101010101010,2796202,
Parity 4,[114, 119],010101,21,
Reserved 2,[120, 143],101010101010101010101010,11184810,
Parity 5,[144, 149],101010,42,
Reserved 3,[150, 173],101010101010101010101010,11184810,
Parity 6,[174, 179],010101,21,
Reserved 4,[180, 195],1010101010101010,43690,
TGD,[196, 203],00001100,5.58793544769e-09,s
Parity 7,[204, 209],111011,59,
t0C,[218, 233],0101101101101000,374400,s
Parity 8,[234, 239],101111,47,
af2,[240, 247],00000000,0.0,s/s^2
af1,[248, 263],1111111111100001,-3.52429196937e-12,s/s
Parity 9,[264, 269],011110,30,
af0,[270, 291],1111100001011111001000,-5.82002103329e-05,s
PC 2,[292, 293],01,1,
Parity 10,[294, 299],111100,60,

For Windows users, the library can be found in the Skydel-SDX/API/Python/downlink_parser folder.

In the current Skydel version, the following signals support downlink data logging:

  • GPS: L1 C/A, L5, M-Code, L1C

  • GLONASS: G1, G2

  • Galileo: E1, E5a, E5b

  • BeiDou: B1

  • QZSS: L1 C/A

  • SBAS: L1

8.7.3.3.4. RINEX

Skydel can log RINEX data. The RINEX file version generated is V3.03 for all constellations. Skydel will generate one file for each active constellation. Currently, you cannot configure the log sampling rate. A first batch of data is logged when simulation start and the following batches will be logged when Time of Ephemeris change.

The data logging sampling rate for RINEX is:

  • GPS: Every 7200 seconds.

  • GLONASS: Every 1800 seconds.

  • Galileo: Every 600 seconds.

  • BeiDou: Every 3600 seconds.

  • QZSS: Every 3600 seconds.

  • SBAS: Just one batch at the start of the simulation.

8.7.3.3.5. HIL Input

When HIL Input Logging is checked, the data received from the HIL interface is logged as is. This is useful to determine what was actually received from a remote computer. This data can be compared with the receiver’s trajectory included in the Raw Logging to determine if the HIL input was properly processed by Skydel. Logging at 1000 Hz will also reveal any HIL input problem that may have occurred during the simulation.

8.7.3.4. Signal Level

The Signal Level settings are located in the Settings - Global - Signal Level menu.

signal level.png?20

You can use the Signal Level settings to control the output power of the satellite signals being generated relative to the nominal value, which depends on your hardware setup. When you configure the output, you can click on the Reference Power button to see the nominal value for your hardware. To adjust the power level of the transmitted signals, you can either change the Global offset or the offset specific to the code type that you are adjusting. By default, Skydel uses a 0 dB global offset, and a realistic offset for all of the other code types. This will correctly model the fact that not all constellations and code types are generated at the same power level. For example, according to the specifications, P-Code should operate at 3 dB less than C/A code.

When using the default settings, the transmit power of a GPS C/A code signal has 80 dB of gain. Typically, for a vehicle on Earth, this will translate into a power level of -50 dBm (measured at the TX port of a X300 radio). When using 60 dB of attenuation, this -50 dBm signal will become -110 dBm. This is the correct power level to simulate a 20 dB LNA. You may refer to the power level section for more details.

To model the noise floor correctly on the X300 Ettus radio, you should use 80 dB of attenuation and a real 20 dB LNA.

There are three ways you can increase or decrease the power level of a signal:

  • global power offset (+10 dB to -50 dB);

  • code-specific power offset (+10 dB to -50 dB);

  • power sliders (+10 dB to -50 dB);

By using any of these three options, you can obtain a +30 dB increase in the power level of a generated signal. However, it is not recommended to push the power levels this high on too many satellites. At some point, it will end up saturating the I/Q data samples. When this happens, Skydel will warn you that I/Q has been saturated.

If you need to increase the global power offset by more than 10 dB, you can remove some of the attenuation instead.

You can enable or disable the “Signal Strength Model” by checking or unchecking the box.

The Signal Strength Model adjusts the transmit power of each satellite by modeling the following effects:

  • power loss due to the distance between the satellite and the receiver;

  • power loss due to the antenna pattern of the satellite itself. Use the Antenna settings to modify patterns.

The power loss due to the antenna pattern of the receiver is not part of the Signal Strength Model. Use the Vehicle Antenna settings to enable or disable receiver antenna modeling.
8.7.3.5. Synchronize Simulators

The Synchronize Simulators settings are located in the Settings - Global - Synchronize Simulators menu.

You can use the Synchronize Simulators settings to specify how Skydel instances connect to each other to perform the synchronization. This setting will be used for both multiple Skydel instances running on the same computer as well as synchronization among multiple computers.

Determine which Skydel instance will be the master. Check the Sync Time (Master) check box on that instance of Skydel. Skydel will then begin listening for incoming connections.

master.png?20

Check the Sync Time (Slave) checkbox on each remaining instance of Skydel. These Skydel instances will then connect to the master instance.

slave.png?20

At this point, all Skydel instances are connected and will synchronize their radios.

Once you start the simulation on the master instance, each Skydel instance should start running automatically. It does not matter whether each Skydel instance are running on the same computer, or separate ones.

If you are using only one instance of Skydel, and only one Ettus radio such as the X300, you might want to check the Sync Time (Master) checkbox. This will force the radio to use the PPS from an external source. This is important if you are planning on using the PPS output to perform time-error analysis.
8.7.3.6. Synchronize configuration between master and slaves

Skydel is capable of pushing a master’s configuration to all of the slaves. To do so, in the master instance of Skydel, go to the Settings - Global - Synchronize Simulators section.

sync config.png?20

Pushing the configuration can be done either manually by clicking the Broadcast now button. It can also be automatically broadcast at every simulation start by checking the Broadcast configuration on simulation start checkbox.

Applying exclusions is used to control which parts of the Slaves' configuration will be retained. For example, if you check the Vehicle Motion filter, after a configuration broadcast all the Slaves will use the master’s configuration, except for the vehicle motion. This can be useful to simulate the same scenario with different vehicles.

When the Skydel Master broadcast a configuration, radios are associated by their names. For example, "Radio 1" on the Master instance will be matched to "Radio 1" on the Slave(s). When excluding Radios only, only the physical radio configuration (IP address and Clock) will be retained by the Slave(s). The output signals configuration will be pushed. To exclude both, check the Outputs and Radios option.

8.7.3.7. Synchronize Simulators with a GPS Timing receiver

It is possible to use the GPS Time from a GPS Timing receiver as the start time of the simulation for all instances of Skydel. For example, this can be very handy when simulating RTK scenarios and you don’t want to reset the GNSS receivers at each simulation.

In this case, only the master instance of Skydel needs to be connected to the GPS Timing Receiver.

For the Master instance: in the "Start Time" settings screen, "GPS Time" must be set to "GPS Timing Receiver Time".

For the Slave instance(s): in the "Start Time" settings screen, "GPS Time" must be set to "Custom Time".

When starting the simulation, the master instance will read the "GPS Timing Receiver" time. This will become the GPS simulation’s start time. The master instance will push this value to each of the slave instances.

In order to have synchronized simulators, each radio must be connected with a common 10 MHz and PPS signal as indicated in the Hardware Setup section.

8.7.4. GPS

The GPS settings are located in the Settings - GPS sub-menu.

GPS settings control the orbits, downlink data, and signals of the GPS satellites. These settings have no effect on other constellations (i.e., GLONASS, Galileo, BeiDou, and QZSS), except SBAS. Some Errors can be corrected with SBAS.

8.7.4.1. General

The General settings are located in the Settings - GPS - General menu.

The General settings control the “Issue of Data” (IODC and IODE) of the downlink data. Disabling the checkbox "Override RINEX IODE" makes Skydel use the IODE values from the RINEX instead of the value indicated in the "Issue of Data" button.

The “almanac first upload” offset controls when the first almanac update will occur after the simulation starts. The update can occur in the middle of a message as illustrated in the image below.

almanac update.png?20

By default, the first update will occur 12 hours (43200 seconds) after the start of the simulation. This setting can be changed independently of the update interval. For example, you could set the first update to occur at 300 seconds and then every 43200 seconds after that first update.

In the general settings, you can also import a RINEX, YUMA or SEM file to set the orbits of the GPS Satellites.

To import a RINEX file, click the Import button in the General settings screen. Skydel will prompt you to confirm your intent. You will then be asked to provide a RINEX-compatible file. Sample files are located in “Skydel-SDX/Templates”. Importing a RINEX file will override each of the current Orbits, Perturbations, Clock & Group Delay and Health settings. Note that ionospheric parameters of the RINEX files are not imported.

RINEX Source

RINEX navigation message files can be found here: ftp://cddis.gsfc.nasa.gov/gnss/data/daily↗

  1. Connect as a Guest.

  2. Select a folder for the year you want.

  3. Select the brdc folder.

  4. Choose the file you want and make a local copy on your computer. If the file is an archive, you have to unzip it.

Files ending with n, as in brdc0030.17n for example, are for GPS. Files ending with g are for GLONASS.

The “signal propagation delay” should always be checked. When unchecked, the propagation delay and the Doppler shift are removed from the simulation. This feature is useful for calibrating the simulator’s PPS with an oscilloscope before measuring or calibrating a timing receiver. If you want to use Skydel to calibrate or verify the calibration of a timing receiver, contact Orolia Canada’s technical support.

8.7.4.2. Message Modification

The Message Modification settings are located in the Settings - GPS - Message Modification menu. In this menu, there are 3 screens:

NAV

Use this screen to modify the navigation message for L1C/A and P-Code on L1 and L2.

CNAV

Use this screen to modify the navigation message for L2C.

CNAV-2

Use this screen to modify the navigation message for L1C.

sub menu.png?20

Message Modification settings let you override the downlink data being transmitted by the GPS satellites.

If the L2C and L1C features are not enabled, the Message Modification menu is replaced with the NAV Message Modification screen.
8.7.4.2.1. NAV

To create a navigation message modification for L1C/A and P-Code, go to Settings - GPS - Message Modification - NAV and click the Add button.

Modifications to NAV message affect all signals using this type of navigation message (L1C/A, P-Code on L1 and P-Code on L2). It is not possible to modify them separately.

When creating a message modification, you may choose the start and end time relative to the start of the simulation. In the example shown below, the message modification will begin 15 minutes into the simulation, and will end 30 minutes into the simulation. You can also control which PRNs, sub-frames, pages, and words are affected by the modification. You may set bits to 0, 1, or X. The X indicates that the bit will be negated (0 becomes 1, and 1 becomes 0). By default, message modifications will re-compute the parity bits so that the message passes parity. You may disable this by unchecking the “Calculate parity” check box. This is considered to be a form of message corruption because the message will no longer pass parity.

nav modification.png?20
The “X” on the first and last bit indicates that they will be negated (0 becomes 1, and 1 becomes 0). Bit negation is disabled by default; enable it by selecting “Enable bit negation”.

The Add button will add the message modification to the list. The dialog box will stay open so that you may easily add a similar message modification. When you are done creating modifications, close the dialog box.

nav table.png?20

To edit a message modification, simply select the desired line in the list and click on the Edit button.

The navigation message sub-frames and pages are aligned with the beginning of the GPS week. When you set the start and stop times for the modification, they are relative to the simulation start time, not GPS time. Changing the simulation start time could make the message modification ineffective because the specified sub-frame and page are no longer transmitted at the specified modification start and stop times.
8.7.4.2.2. CNAV

To create a navigation message modification for L2C, go to Settings - GPS - Message Modification - CNAV and click the Add button.

cnav modification 1.png?20

Similar to NAV message modification, CNAV modifications are defined with conditions and modifications. The modifications (or corruptions) are applied only when each of the conditions are met.

Besides the usual conditions such as start, stop, and PRN, you may specify the message type. You may also specify the message content to match. For example, you may specify that a modification has to be applied only if a portion of the message is matching an expected value. Click the Add button on the Content Match row to enter the expected value.

content match dialog.png?20

Click OK to close the Expected Content dialog box. The content match condition is automatically formatted into a string, becoming in this example: EQUAL(37, 16, 0x8b27)

cnav mods content match.png?20
You can leave the Content Match condition empty.

Because the CNAV message is 300 bits long and it is not subdivided in words like the NAV message, it is impractical to show a dialog box with 300 buttons to specify the modifications. Instead, modifications are defined for portions of the message. To do so, click Add in the Modifications section.

cnav mod dialog.png?20

Similar to NAV message modification, you can force bits to zero or one, or you can invert them (i.e., 0 becomes 1 and 1 becomes 0) using the X symbol. In the example above, the modification 1 - - 0 X X 0 - 1 1 0 1 applies to bits 120 through 131. The table below shows this modification in details.

Bit Modification

120

Set to one

121, 122

Unchanged

123

Set to zero

124, 125

Inverted

126

Set to zero

127

Unchanged

128, 129

Set to one

130

Set to zero

131

Set to one

Click OK to add the modification. You can add as many modifications as you require.

cnav modification 2.png?20

Once you are finished adding modifications, click Add to add the event to the list.

cnav table crop.png?20
8.7.4.2.3. CNAV-2

To create a navigation message modification for L1C, go to Settings - GPS - Message Modification - CNAV-2 and click the Add button.

CNAV-2 modifications are similar to CNAV message modification. The "message type" condition is replaced with a "page" condition.

8.7.4.3. Message Sequence

The Message Sequence settings appear in the menu only if GPS L2C, M-Code and/or L1C features are enabled on your USB Dongle.

If more than one of these features are enabled, the Message Sequence settings are located in the Settings - GPS - Message Sequence menu.

If only one of these features is enabled, the Message Sequence menu is replaced with the appropriate settings screen (L2C Message Sequence, L5 Message Sequence or CNAV-2 Message Sequence).

Use the Message Sequence settings to modify the transmission order of L2C or L5 messages. Once all messages have been transmitted, the satellites will loop back to the beginning of the sequence.

L2C sequence.png?20

Use the Message Sequence settings to modify the different pages of L1C messages. The messages will loop on the enabled pages.

L1C sequence.png?20
8.7.4.4. Pseudorange Offset

The Pseudorange Offset settings are located in the Settings - GPS - Pseudorange Offset menu.

You can use the Pseudorange Offsets settings to create biases and ramps on the pseudoranges being simulated. When you add an offset to a pseudorange, the simulated signal will appear to arrive earlier or later than it normally would. You may use offsets to simulate effects like:

  • clock errors;

  • atmospheric errors;

  • satellite errors;

  • inter-channel bias;

  • spoofing (see also Avanced Spoofing).

Pseudorange offsets can be applied to all PRNs or to a specific PRN. You may also have multiple offsets in effect at the same time. Skydel will add each of the offsets together to determine the appropriate total offset at any given time. This is very convenient when trying to simulate complex scenarios such as a receiver clock error ramp (which affects all PRNs) occurring at the same time as a SV that has a bias in its transmitted signal.

To create a Pseudorange Offset, click the Add button.

Below is an example of creating a pseudorange offset that only affects PRN 4. Starting at fifteen minutes into the simulation, the offset ramps up to 1 meter over the course of 45 minutes. The offset then stays at 1 meter for 30 minutes, and finally ramps down to zero over the course of another 30 minutes. The entire event will last 2 hours. Checking the Stop box is necessary to enable the Stop field.

pseudorange offset dialog.png?20

When you are finished creating the pseudorange offset, click the Add button. This will add the offset to the list. The “Add Pseudorange Offset” dialog box will stay open so that you can quickly add several offsets. When you are finished adding offsets, you can close the dialog box.

pseudorange offset table.png?20

To edit a pseudorange offset, simply select the desired line in the list and click on the Edit button.

8.7.4.5. Orbits

The Orbits settings are located in the Settings - GPS - Orbits menu.

The Orbits settings will be overridden if you import a RINEX file.

You can use the Orbits settings to control the locations of the satellites within the constellation. To make a change to a satellite’s orbit, you must first select the appropriate PRN.

orbits with arrow to PRN.png?20

Click the value of an orbital parameter to modify it. When modifying a parameter, you have the option to replicate this value for all remaining satellites.

orbits edit parameter.png?20

If you want to remove Doppler shift on the satellite, you can uncheck the “Update sat. position during simulation” checkbox. This will violate the laws of physics and suspend the satellite in a fixed location relative to the Earth. This can be useful for certain types of testing.

8.7.4.5.1. Geostationary

You can also put a GPS satellite on a geostationary orbit. To do so, simply check the Geostationary box. You will notice that the orbital parameters are automatically changed to reflect the geostationary orbit. These parameters are read-only when the geostationary box is checked.

make geo with arrow to checkbox.png?20

When the Geostationary box is checked, the satellite longitude can be modified. Click on the button to enter the desired value.

When you uncheck the Geostationary box, the previous orbital parameters are not restored. The values stay the same and match the last geostationary longitude entered.

If your last actions were made in this settings panel and you want to restore the orbital parameters to what they were before you checked the geostationary box, you can use the Undo command (Ctrl+Z) several times until you rollback to the desired settings.

undo.png?20
8.7.4.6. Perturbations

The Perturbations settings are located in the Settings - GPS - Perturbations menu.

The Perturbations settings can be used to modify the harmonic corrections of the satellite’s orbit. To make a change to a satellite’s perturbations, you must first select the appropriate PRN.

perturbations with arrow to PRN.png?20

You can easily clear the perturbations for a satellite by clicking the Clear Sat button. You can clear the perturbations for all satellites by clicking the Clear All Sat button.

The Perturbations settings will be overridden if you import a RINEX file.

8.7.4.7. Clock & Group Delay

The Clock & Group Delay settings are located in the Settings - GPS - Signal Control menu.

You can use the Clock & Group Delay settings to modify the satellite clock errors and inter-signal biases. To make a change to a satellite’s clock and group delay, you must first select the appropriate PRN.

clock with arrow to PRN.png?20

The Clock & Group Delay settings will be overridden if you import a RINEX file.

8.7.4.8. Health

The Health settings are located in the Settings - GPS - Health menu.

Use the Health settings to modify the health bits being broadcast by the satellites. These values will be broadcast in the ephemeris, the almanac, and in the page 25 health message. To make a change to a satellite’s health you first have to select the appropriate PRN.

health with arrow to PRN.png?20

Use the Apply-to-all button to apply the health bits to all satellites.

L1/L2 Signal Health and Data Health are applied to the NAV message for both L1 C/A and P-Code signals. L1, L2 and L5 Health Bits are applied to the CNAV message for L2C signals. L1C Health Bit is applied to the CNAV-2 message for L1C signals. If the health value indicates that the signal is not being transmitted and you want the satellite to stop transmitting the signal, you must manually turn off the RF in the signals screen.

The Health settings will be overridden if you import a RINEX file. Moreover, the selection will be ignored for certain values if the satellite is set as non present in the Signals settings.

8.7.4.9. Multipath

The Multipath settings are located in the Settings - GPS - Multipath menu.

To simulate multipath propagation, each path (or echo) must be entered manually. To replicate a NLOS (Non-Line-of-Sight) scenario, it’s also possible to disable the direct line of sight so that only echoes will reach the receiver antenna. To do so, uncheck the Line of Sight (LoS) Enabled box.

los.png?20

For each echo, you can control 4 fundamental attributes: pseudorange offset, power loss, Doppler shift and carrier phase offset.

echo.png?20
Pseudorange offset

This value indicates the extra distance the echo signal has to travel before reaching the receiver’s antenna. The effect is a time delay between the Line Of Sight signal and the echo signal being added. Note that the time delay is applied to the code and to the carrier of the echo.

Power loss

This value indicates the power loss of the echo signal compared to the Line Of Sight signal. A value of +10dB indicates the echo signal will be 10dB lower than the LoS.

Doppler shift

The Doppler shift of an echo indicates the frequency offset the echo signal has compared to the Line Of Sight signal. The Doppler Shift will only affect the carrier’s phase and frequency. The echoed signal’s code is not affected by the Multipath’s Doppler shift.

Carrier phase offset

The Carrier phase offset is a value added to the echo’s initial carrier phase, compared to the Line Of Sight’s carrier phase. The value has to be set between -180.0 and + 180.0 degrees.

For each satellite, you can add up to 3 echoes per signal. Adding an echo for GPS L1C/A will not automatically add an echo for the other signals on the same satellite: L1P, L2P, L2C, etc. Each of them has to be added individually.

To disable echoes, click on Disable Echoes button. A window will open, letting you specify the echoes that you want to disable.

disable echoes.png?20

Check the Reset echo attributes box if you also want to reset the echo attributes (pseudorange offset, power loss, etc.). Otherwise, the echo will be disabled. However, the attributes will be preserved so that you can enable them in the future with the same values.

Each echo requires as much calculation as the direct line of sight signal calculation. Therefore, adding many echoes can tax the GPU significantly. Make sure your graphic card is suitable for a large number of multipath echoes. The impact on the CPU is marginal.

Click the Summary button to view all multipath echoes in a table format.

summary.png?20
LoS

A value of Yes means the direct line of sight signal reaches the receiver antenna. A value of No means only the echoes (if any) will reach the receiver antenna.

Enabled

Enables or disables the echo. If you set the other parameters, but leave the Enabled flag to No (unchecked), the echo will not be simulated. This attribute has no effect on the direct line of sight signal.

8.7.4.10. Signals

The Signals settings are located in the Settings - GPS - Signals menu.

Use the Signals settings to modify which signals are being broadcast by the satellites. The RF column controls if any signal will be transmitted at all from that satellite. The other columns can turn individual signal types on and off.

If you uncheck the Present flag, it will not transmit any RF and all the other satellites will indicate this satellite as unhealthy.

signals.png?20
8.7.4.11. Errors

The Errors settings are located in the Settings - GPS - Errors menu.

The Errors menu contains two submenus:

Pseudorange Errors

In this submenu, you can inject an error on the pseudorange of each satellite by enabling functions such as Gauss-Markov, Sine Waves and Offset. These errors, unlike Pseudorange Offset, can be compensated in the SBAS fast correction messages (Messages 2-5).

Ephemeris Errors

In this submenu, you can inject track errors and clock errors on each satellite. These errors, unlike Pseudorange Offset, can be compensated in the SBAS long term correction messages (Message 25).

psr errors gauss markov.png?20
Pseudorange Errors (Gauss-Markov function)
eph errors.png?20
Ephemeris Errors
SBAS corrections for Pseudorange Errors and Ephemeris Errors are enabled by default for each satellite.
8.7.4.12. Antenna

The Antenna settings are located in the Settings - GPS - Antenna menu.

You can use the Antenna settings to change how the satellite’s antenna is modeled. Changing the antenna model will affect the power and phase offset of the transmitted signals. Phase offsets are expressed in angles.

This section refers to parameters pertaining to the GNSS satellite’s antenna (transmitter). For the vehicle antenna (receiver), refer to section Vehicle Antenna.
8.7.4.12.1. Models

In this submenu, you can manage the antenna models you will use for the space vehicles. You can use a different antenna gain and phase offset patterns for each band and also add an offset in gain patterns. The Basic Antenna is used by default. It can be changed but cannot be removed.

antenna model.png?20
Antenna Model submenu

The Models screen allows you to:

  • add a new model

  • rename a model from the list

  • copy (duplicate) an existing model

  • import a model (file)

  • export a model (file)

  • delete a model

When selected, review and modify a model’s patterns (right pane).

A Basic Antenna model is always present in the list. You can edit or copy it, but it cannot be deleted or renamed.

Adding a model will create a new "blank" antenna model.

Importing a model will enable you to reuse a model that was exported from another Skydel configuration through the export button. Exported models are saved on the computer as a model definition file.

For each model, the following pattern choices are available:

  • default (patch antenna)

  • none (isotropic)

  • custom

For gain and phase patterns, you can add an offset.

antenna pattern arrow to more.png?20

Clicking the “More” button for a band gain or phase offset brings up a depiction of the antenna model pattern and allows you to import a new pattern from a CSV file.

antenna gain.png?20

The 3D model is illustrated in two dimensions using a graph displaying the gain values with a color gradient, and their position in 3D space using the horizontal coordinate system. The graph axis represent the azimuth (x axis, from -180° to 180°) and the elevation (y axis: -90° to 90°).

You can export the antenna gain pattern to a CSV file, modify it, and import it back into Skydel. CSV files are formatted as follows:

antenna model csv diagram.svg?20
  • Each file is a matrix of values (either gain or phase offset). Skydel will automatically create a linear interpolation between each specified value to create a continuous 3D pattern.

  • Values are dB for gain and radians or degrees for phase offset.

  • Rows represents the elevation range of [-90°, 90°] from top to bottom and columns represents azimuth range of [0°, 360°[ from left to right.

  • The first row always represents an elevation of -90°.

  • The last row always represents an elevation of 90°.

  • Every row positioned in-between will partition the elevation pattern.

  • The first column always represents an azimuth of 0°.

  • Every additional column will partition the 360° azimuth range into smaller range of equal size.

For example, in the following file:

1, 2, 3
4, 5, 6
7, 8, 9
  • There are 3 columns. Therefore, the azimuth step size is 120° (360° / NbCols). The first column is for azimuth 0°, second for azimuth 120° and last column is for -120°. At 180°, the pattern loops back to -180°.

  • There are 3 rows. Therefore, the elevation step size is 90° (180° / (NbRows - 1)). The first row is for elevation -90°, second row for elevation 0° and last row is for 90°.

The default pattern for satellites contains 901 lines: elevation step is 0.2° and azimuth is always the same.

8.7.4.12.2. Assignment

Use this screen to assign antenna models to space vehicle. To assign a model, select one or multiple PRN(s) in the list, then the model desired, and finally click the Assign to Selection button.

antenna assignment.png?20
Antenna Assignment submenu

8.7.5. GLONASS

The GLONASS settings are located in the Settings - GLONASS sub-menu.

The GLONASS settings control the orbits, downlink data, and signals of the GLONASS satellites. These settings have no effect on the other constellations (i.e., GPS, Galileo, BeiDou, and QZSS).

The GLONASS settings are nearly identical in operation to the GPS settings. Refer to the GPS settings section for more information. Only the specifics of GLONASS will be described in this section.

8.7.5.1. General

The General settings are located in the Settings - GLONASS - General menu.

To import a RINEX file, click the Select button in the General settings screen.

general.png?20

Skydel will ask you to provide a RINEX-compatible file. Sample files are located in “Skydel-SDX/Templates”. Importing a RINEX file will override each of the current Orbits, Perturbations, and Clock settings.

When importing the RINEX file, Skydel will compare the leap second from the RINEX and the leap second defined in the Start Time settings. If the values mismatch, Skydel will display this warning:

glonass rinex leap second mismatch.png?20

GLONASS is particularly sensitive to leap second errors because its reference time is attached to the UTC time.

The GLONASS RINEX file does not define orbits using Keplerian elements. Instead it provides absolute positions which must be interpolated. These positions are only valid for the given RINEX observation time and can’t be easily extrapolated in the past or future. Therefore, when you import a RINEX file, you must set the simulation Start Time to the same day as the imported RINEX file.

glonass rinex time mismatch.png?20
8.7.5.2. Leap Seconds

Unlike other constellations, GLONASS system time is relative to UTC time. Whenever a leap second is added (or subtracted), it directly affects the GLONASS system time. When a second is added, it always occurs at the end of a quarter at midnight UTC. The following image illustrates how Skydel realigns the next subframe with the new UTC time after the leap second event.

leap sec add.svg?20

When a second is subtracted, the behaviour is similar, but the first transmitted string after the event is String #2.

leap sec remove.svg?20

Leap seconds future event is configured in the Settings - Start Time menu.

8.7.6. GALILEO

The Galileo settings are located in the Settings - GALILEO sub-menu.

The Galileo settings control the orbits, downlink data, and signals of the Galileo satellites. These settings have no effect on the other constellations (i.e., GPS, GLONASS, BeiDou, and QZSS).

The Galileo settings are nearly identical in operation to the GPS settings. Refer to the GPS settings section for more information. Only the specifics of Galileo will be described in this section.

8.7.6.1. F/NAV Source Diversity

The F/NAV Source Diversity settings are located in the Settings - GALILEO - F/NAV Source Diversity menu.

fnav source diversity.png?20

You can use the F/NAV Source Diversity settings to control which almanacs will be broadcast first for each satellite. In the F/NAV navigation message plan, each Galileo satellite can start broadcasting the almanac with an offset for the PRN value. This offset is known as the k parameter in the Galileo ICD. It is set for each of the active satellites, and enables improvements to almanac transport time by exploiting source diversity.

8.7.7. BEIDOU

The BeiDou settings are located in the Settings - BEIDOU sub-menu.

The BeiDou settings control the orbits, downlink data, and signals of the BeiDou satellites. These settings have no effect on the other constellations (i.e., GPS, GLONASS, Galileo, and QZSS).

The BeiDou settings are nearly identical in operation to the GPS settings. Refer to the GPS settings section for more information.

8.7.8. QZSS

The QZSS settings are located in the Settings - QZSS sub-menu.

The QZSS settings control the orbits, downlink data, and signals of the QZSS satellites. These settings have no effect on the other constellations (i.e., GPS, GLONASS, Galileo, and BeiDou).

The QZSS settings are nearly identical in operation to the GPS settings. Refer to the GPS settings section for more information.

8.7.9. SBAS

The SBAS settings are located in the Settings - SBAS sub-menu.

SBAS settings control the orbits, downlink data, and signals of the SBAS satellites. These settings have no effect on other constellations (i.e., GPS, GLONASS, Galileo, BeiDou, and QZSS).

8.7.9.1. General

The General settings are located in the Settings - SBAS - General menu.

general.png?20

The current Skydel version supports fast corrections for GPS and SBAS and long term corrections for GPS only.

8.7.9.2. Message Sequence

The Message Sequence settings are located in the Settings - SBAS - Message Sequence menu.

message sequence.png?20

Each message type has the same 1-second duration. The message sequence is dynamic and changes during the simulation according to the maximum update interval for each message type.

Fast corrections (message types 2, 3, 4 and 5) have a maximum update interval of 6 seconds. The other message types have longer intervals such as 120 seconds or 300 seconds.

Concerning fast corrections, message type 2 will transmit data sets for the first 13 satellites designated in the PRN mask. Message type 3 contains data sets for the following 13 satellites, and so on. If, for example, there are data sets for only 37 satellites to transmit, message types 2, 3 and 4 will be transmitted, but not message type 5 (it’s not needed since data sets are all empty). In this case, the fast corrections message sequence will be 2, 3, 4, 2, 3, 4, 2, 3, 4, and so on, where the message 2, 3 and 4 update interval must not exceed 6 seconds. This means we can insert 3 other message types before rolling back to fast correction messages.

6s interval.svg?20

The other message types that have longer maximum interval will be transmitted using the time remaining between the transmission of fast corrections. The other messages sequence could be 1, 7, 9, 17 and 25.

6s interval complete.svg?20

The delays given in the message 26 consist of the addition of the delays from the current ionospheric model in Settings - Global - Atmosphere - Nominal and the offsets provided in Settings - Global - Atmosphere - Errors (if enabled).

8.7.9.3. Health

The Health settings are located in the Settings - SBAS - Health menu.

sbas health.png?20

When a check box is checked, it means On. For example, if the Ranging is checked, the Ranging is On which means the corresponding bit in the navigation message is set to zero.

The service provider indicates if the SBAS satellite is assigned to WAAS (0), EGNOS (1), MSAS (2), etc. In the Signal Level settings, you can control the power offset for each service provider.

The default service provider might not be adequate if you import a RINEX file.

Use the Apply-to-all button to apply a health parameter to all the satellites.

8.7.9.4. Ionospheric Masks

The Ionospheric Masks settings are located in the Settings - SBAS - Ionospheric masks menu.

mask preview.png?20

This panel describes the content of the SBAS message 18 as an ionospheric grid, where each IGP tells if the position is monitored by the SBAS satellite of the selected service provider. You can switch service providers with the combo box located below the map.

Information about the highlighted IGP (latitude, longitude, flag(s)) is shown below the map. As some IGP from different bands are located at the same coordinates, it is sometimes normal to have different flags for the same position on the map. The points are either blue (band 0 to 8) or orange (bands 9 and 10). Points present on two bands at once are illustrated with two colored triangles.

You can edit the map by selecting first a service provider and then clicking the Edit button. This will open a dialog containing an editable map.

mask edit.png?20

Each IGP can be selected and set to true or false by lighting them up or off with a click of the mouse, or by dragging an area with the mouse to change the value of many points at once.

Rolling over the map with the mouse will highlight the different bands and display their number. You can select or deselect bands using the controls at the top in order to help with setting the different points' values, for example by including or excluding bands. When you deselect a band, its IGPs can’t be edited, thus preventing unwanted changes.

You can import or export the grid for the current service provider in CSV format, where each line describes a grid band (0 to 11), an IGP index (1 to 201, depending on the band) and the flag applied (0 or 1). A button is provided to revert to the default mask. These are the only actions that change all the bands, whether selected or not.

Click OK to save your changes or click Cancel to revert them.

8.7.9.5. Ionospheric GIVEI

The Ionospheric GIVEI settings are located in the Settings - SBAS - Ionospheric GIVEI menu.

givei preview.png?20

They describe the GIVE Indicators (GIVEI) used in the SBAS message 26 on an ionospheric grid, where each IGP describes a GIVEI value between 0 and 15. Each SBAS service provider has a different GIVEI map. You can switch service providers with the combo box located below the map.

Information about the highlighted IGP (latitude, longitude, GIVEI value) is shown below the map.

The Edit button opens a dialog with an editable version of the map of the selected service provider.

givei edit.png?20

The controls provided for the edition of the GIVEI values operate in similar fashion as the ones for Atmospheric Errors.

You can import or export the grid in a CSV file following this format: [band index],[IGP index],[GIVEI value]

Click OK to save your changes or click Cancel to revert them.

8.7.10. Vehicle

The Vehicle settings are located in the Settings - Vehicle menu.

You can use the Vehicle settings to control the trajectory and antenna properties of the simulated vehicle. This vehicle corresponds to the simulated receiver location.

Skydel users require the EXLI license feature in order to simulate vehicle trajectories with speeds higher than 600m/s.
8.7.10.1. Body

The Body settings are located in the Settings - Vehicle - Body menu.

The Body settings can be used to control the trajectory of the simulated vehicle. To define the vehicle trajectory, select the desired trajectory type and click the Edit button.

select trajectory type.png?20

The map and location search features of the trajectory editors will not work if you are not connected to the internet. Check the Proxy section for more information.

8.7.10.1.1. Six Degrees of Freedom

Skydel uses the Earth-Centered, Earth-Fixed↗ (ECEF) geographic coordinate system. It represents positions as X, Y and Z coordinates. The point (0,0,0) is defined as the center of mass of the Earth. Its axes are aligned with the international reference pole (IRP) and international reference meridian (IRM) that are fixed with respect to the surface of the Earth.

The z-axis is pointing towards the north. The x-axis intersects the sphere of the Earth at 0° latitude (the equator) and 0° longitude (Greenwich). This means the ECEF rotates with the Earth.

ecef.png?20

Skydel also supports the Latitude, Longitude and Altitude (LLA) geographic coordinate system. Internally, Skydel always works in ECEF and will convert LLA using the WGS84↗ ellipsoid model. Skydel assumes the altitude in the LLA coordinate is relative to the ellipsoid surface. It is often confused with mean sea level or the geoid model.

Skydel also supports the Earth-Centered Inertial (ECI) coordinate system. Internally, Skydel always works in ECEF and will convert ECI using the current Earth Orientation Parameters.

Skydel assumes the altitude in the LLA coordinate is relative to the ellipsoid surface. It is often confused with mean sea level or the geoid model.

Skydel uses the Tait-Bryan angles↗, also known as nautical angles. It is the convention normally used for aerospace applications, so that zero degrees elevation represents the horizontal attitude. Among the six possibilities of representing the rotation axes for Tait-Bryan angles, Skydel uses the z-y’-x’’ intrinsic rotation. The rotation angles are yaw, pitch and roll in the NED reference frame. The x axis points north, the y axis points east, and the z axis points towards the center of the Earth. The first rotation is around z axis, the second around y axis and the third around the x axis. This transformation is also known as 3-2-1.

8.7.10.1.2. Fixed

To create a simulation where the receiver never moves, select the Fixed trajectory. This is sometimes referred to as a static trajectory. Click Edit to change the receiver position.

fixed hotel de ville de montreal.png?20

You can specify the latitude, longitude, altitude, yaw, pitch, and roll manually. Alternatively, you can “Use Crosshair Position” or search for a landmark or address. The map will display a preview of the location that you selected.

8.7.10.1.3. Circular

To create a quick trajectory with motion, use the Circular trajectory. A nice feature of the circular trajectory is that it is easy to make it run forever. However, many receivers have difficulty navigating with a perfectly circular trajectory. Radius, speed, and direction are editable parameters.

circular.png?20
8.7.10.1.4. Track Playback

A track is defined as a list of locations with timestamps for each location. A NMEA file is a typical example of track, but it could also be a CSV file. If your CSV file contains speed instead of timestamps, then it is a route, not a track.

If you have trajectory data stored in a file already, use the Track Playback trajectory. You can select your vehicle type to be Ground/Water or Airborne/Spaceborne. This selection will determine the type of interpolation that is used on your trajectory.

track interpolation.png?20

For ground and water interpolation, Skydel will not go through each location defined in the track file. For airborne and spaceborne, Skydel assumes the data points are generated by a simulator where each location is valid. Skydel will use hundreds of points to interpolate and pass through each location with minimal acceleration and jerk.

You can force the yaw, pitch, and roll to zero. This can be useful if you don’t want to model the attitude of the vehicle to affect the signal power of the received signals (due to antenna pattern modeling). Interpolation can be disabled but this is not recommended. Once you have made your selection, click the edit button to define the trajectory.

When importing a trajectory, you can choose between a NMEA file or a CSV file.

create track wizard.png?20

When importing NMEA data, you will be asked to locate a file that contains NMEA strings. Once you have located the file, Skydel will try to import the data and will then display the following report:

import nmea report.png?20

The most common source from such a file is the output of a GPS receiver. Skydel will automatically reject sentences if the fix quality is zero. Occasionally, the NMEA file is generated by a trajectory simulation tool and these tools don’t always correctly set the fix quality. If you know that the fix quality is good and want to ignore this attribute while importing the NMEA, check the “Ignore fix quality in GGA sentences” box.

import nmea wizard.png?20

When importing CSV data, you will be asked to locate a csv file that contains trajectory data. This file doesn’t have to be formatted in a specific way. Many formats are compatible with Skydel.

import csv with timestamps.png?20

Once you have located the file to import, the Import CSV dialog will appear. Using this dialog, you specify the format of your CSV file. Make sure you set the number of header rows correctly, as it’s easy to forget this step. You can choose between ECEF, ECI or LLA. Then, select which column provide X, Y, and Z for ECEF and ECI (or latitude, longitude, and altitude for LLA). You must also specify the correct units for each parameter.

import csv step 1 with highlight.png?20
It is very important to import data with sufficient precision. If the data is truncating too many decimals, the resulting position error will create extreme acceleration and jerk.

Once you are finished with the Position tab, continue with Attitude and Time.

import csv step 2.png?20
When importing in ECI, it’s very important that the simulation start time match to trajectory start time since the conversion to ECEF is strongly bound to Earth Orientation Parameters and time.

The CSV importer will display a preview of the decoded information for the first row at the bottom of the dialog box. If the information is properly decoded, it is most likely that Skydel will be able to import the CSV file successfully. Click OK to import the file.

import csv step 3.png?20

If you are satisfied with the imported trajectory preview, click Finish.

The Attitude tab is optional.
For best results, we recommend that you use trajectory files that are at least 10 Hz for low dynamics and 100 Hz for high dynamics. This will solve many potential issues with interpolation and inconsistencies.
The conversion from ECI to ECEF is done at importation. Changing simulation start time or Earth Orientation Parameters after importation will result in an erroneous trajectory.
8.7.10.1.5. Vehicle Simulation

The Vehicle Simulation trajectory type is a great way to make a fairly realistic trajectory quickly. You can import the data from “Use Street Map” (openstreetmap.org), “Import KML” (Google Earth or earth.google.com), or your own CSV file. The CSV file should contain a list of locations with speed values for each. If your CSV file contains timestamps instead of speed, it is considered to be a track.

For this example, we will select Use Street Map.

use street map.png?20

You can search for locations using the From and To fields. Or you can right-click on the map and select “Direction From/To Here”. The map will display a preview of your selected trajectory.

directorions to here.png?20

Click “Next” when you are ready. You will then be asked to select a vehicle speed.

vehicle speed.png?20
8.7.10.1.6. Hardware-In-the-Loop

Skydel supports Hardware-In-the-Loop (HIL) trajectories. You must use the API to send HIL commands to Skydel in real time.

Skydel users require the HIL license feature in order to use the HIL trajectory type.
8.7.10.1.7. Earth-Orbiting Spacecraft

You can easily create Earth-Orbiting Spacecraft trajectories to test spaceborne receivers.

earth orbiting spacecraft.png?20

When you click Edit, Skydel will ask for the Keplerian parameters that you would like to use for your trajectory.

keplerian parameters.png?20

When using Earth-Orbiting Spacecraft trajectories, you will be warned that some other settings should change. If you click “Tell me more…”, Skydel will offer to make some of the changes for you.

tell me more.png?20

This diagram depicts a Low Earth Orbit (LEO) trajectory. If your trajectory is close to a LEO, you should click “Use LEO Settings” to accept these changes.

leo.png?20

This diagram depicts a Geostationary Earth Orbit (GEO) trajectory. If your trajectory is close to a GEO, you should click “Use GEO Settings” to accept these changes.

geo.png?20

A space receiver will have many more satellites in view than a ground receiver. This will require additional computing demand on the GPU. You can easily see this by looking at the sky view. Satellites with a horizontal line are beneath the receiver. Their elevation angle is less than zero. Satellites with a dot have their back to the receiver. Their main beams are facing away from the receiver; therefore, the received power from these signals will be quite low. The blue circle in the middle represents the Earth.

sky view.png?20

Space receivers are usually not within the main lobe of a given GPS satellite’s main antenna. This results in a very wide range of received power levels. You can see this by looking at the Power Sliders. Notice that weaker satellites each have a dot under their number.

power.png?20
8.7.10.2. Antenna

The Antenna settings are located in the Settings - Vehicle - Antenna menu.

This section refers to parameters pertaining to the vehicle’s antenna (receiver). For the GNSS satellite’s antenna (transmitter), refer to section GPS Antenna Model.
antenna.png?20

You can use the Antenna settings to change how the receiver antenna is modeled. Changing the antenna model will affect the power and phase offset of received signals. Phase offsets are expressed in angles.

You can define one or more antenna models in Models and use the Sequencer to specify antenna model changes to occur during the simulation. By default, Skydel uses the default antenna defined in the Models menu.

8.7.10.2.1. Models

This screen shows a list of antenna models available for your simulation.

The Vehicle Antenna Models interface behave exactly like GPS Antenna Models. Gain and phase offset patterns have the same formats. Please refer to the GPS Antenna Models for a complete description.

The default pattern for a vehicle contains 181 lines: elevation step is 1° and azimuth is always the same.

8.7.10.2.2. Antenna Offset

You can also specify the attachment point and attitude of the antenna relative to the vehicle body. The default attachment point (sometimes referred to as “lever arm”) of X = 0, Y = 0, and Z = 0 meters puts the antenna at the center of the vehicle. The default attitude of yaw = 0, pitch = 0, and roll = 0 orients the antenna so that it faces the zenith (towards the sky) when the vehicle is “flying straight and level”. The following diagram illustrates the relationship between the vehicle and X, Y, Z, roll, pitch, and yaw.

yaw pitch roll.png?20
8.7.10.2.3. Sequencer

With the sequencer, you can plan antenna model changes that will be effective during simulation. If there’s no antenna defined at time=0 of the simulation, the default antenna will be used until another antenna is specified.

antenna sequencer.png?20

Antenna model changes are persistent; e.g., an antenna will remain active until the end of the simulation if there are no other changes.

8.7.10.3. Elevation Mask

The Elevation Mask settings are located in the Settings - Vehicle - Elevation Mask menu.

You can use the Elevation Mask settings to control which satellites will generate signals during the simulation. By default, “Mask Below Elevation Angle” is enabled and set to 10 degrees. This will disable satellites that have an elevation angle below 10 degrees. You can disable this mask completely (uncheck the box) or modify the angle itself by clicking on the value.

elevation mask.png?20

Disabling the “Mask Below Elevation Angle” is not the same as setting it to 0°. When “Mask Below Elevation Angle” is disabled, Skydel will generate signals with any elevation angle, including those below 0°. However, Skydel will still calculate the location of the Earth’s horizon to determine if a satellite’s signals would reach the receiver. In other words, Skydel will never generate a signal that has to pass through the Earth to be received.

You can enable the “Mask Above Elevation Angle” option. This will disable any satellite that is higher than the specified angle. This setting is not used very often and should be avoided unless you are absolutely sure that you know what you are doing.

8.7.11. Advanced Jammer

This section is about the optional Advanced Jammer feature. If you are looking for the basic interference feature, read here.

When the Advanced Jammer feature is enabled, the Basic Interference tab is hidden and replaced with the Interference submenu located in the Settings - Interference menu.

advjam.png?20

There are 2 types of advanced jammers available: Dynamic Transmitter and Simplified Transmitter.

Dynamic Transmitter

A dynamic transmitter is defined with a position or a trajectory. The trajectory may even be defined in real-time using the hardware-in-the-loop API. Different waveforms (or signals) may be combined to create a complex jammer waveform. The power level is defined from the transmitter point of view. During the simulation, Skydel automatically calculates the resulting signal at the receiver antenna in real-time and takes into account the transmitter visibility, the transmitter antenna pattern, the propagation loss and the receiver antenna pattern. The transmitter, like the simulated receiver, has six degrees of freedom.

Simplified Transmitter

A simplified transmitter has no position or trajectory. Different waveforms can be combined to create a complex waveform; however, the power is defined from the receiver point of view and will not change as it moves.

One way to look at it is Dynamic Transmitter have its own trajectory while Simplified Transmitter is attached to the receiver.

Regardless of the transmitter type (dynamic or simplified), each of the parameters can be updated in real-time while the simulation is running. It is also possible to add or remove transmitters during the simulation.

8.7.11.1. Simple dynamic transmitter tutorial

To illustrate how a dynamic jammer works with Skydel, we’ll use a simple scenario where we will create an interference to jam GPS L1 C/A.

The first step is to assign GPS L1 C/A to RF A and then click Edit on RF B.

edit output with arrows.png?20

In the Signal Selection dialog box, choose the Interference output type. By default, the interference group is Group 1 and the central frequency is set to 1575.42 MHz. These values are good for this example; however, we will change the gain to 60 dB and the minimum sampling rate to 12.5 MSps.

select interference with highlight.png?20

Click Ok to close the Signal Selection dialog box. The output configuration should look like this:

interference selected.png?20

As you can see, the gain for RF A is 80 dB and the gain for RF B is 60 dB. Before combining the outputs, RF A must be attenuated by 20 dB. While the difference in gain makes the hardware setup a little more complex, it has the great advantage of offering a much greater jammer-to-signal ratio for testing receivers under extreme conditions.

advjam hw setup.png?20
In the above image, the 60 dB attenuator on the right should actually be slightly less than 60 dB and take into account the signal power loss resulting from the combiner and cables, so that the total attenuation on RF A path is 80dB and the total attenuation on RF B path is 60 dB.
You can remove the LNA and reduce the 60 dB attenuator accordingly. For example, if the LNA has 20 dB of gain, you can remove it and replace the 60 dB attenuator with a 40 dB attenuator. The power level at the GNSS receiver input will remain the same. The signal-to-noise ratio should remain valid if you have enabled the Gaussian noise option in the RF A output.

Now that we have Interference Group 1 mapped to RF B, we must add a transmitter. First, click on the interference submenu.

click menu interference.png?20

You can add Dynamic or Simplified transmitters in the Interference sub-menu.

menu interference.png?20

Click on "Add Dynamic…​" and the “Add Transmitter” dialog box will appear.

add dynamic transmitter.png?20

Here you can change the transmitter name, reference power, etc. Each of these attributes can be changed later, so simply accept the default values for now. You can see the same options (Group 1 to 16) in the Group dropdown list as found in the Signal Selection dialog box. The difference is that it will tell you if the group is assigned to a physical output. In this case, it informs you that Group 1 is assigned to Radio 1 RF B. Click OK to add the dynamic transmitter.

Each time you add a transmitter, a new sub-menu with the transmitter’s name appears in the Interference sub-menu. In this case, the transmitter’s name is "Transmitter 1".

transmitter added with arrow.png?20

To configure the transmitter, click on the "Transmitter 1" sub-menu. The dynamic transmitter sub-menu contains four screens (General, Signal, Trajectory and Antenna) and a Remove button. In the General screen, you will see a message highlighted in yellow about an undefined trajectory.

transmitter submenu.png?20

Click on the trajectory button to bring the trajectory page screen of the transmitter. Set the circular trajectory with the following attributes:

  • Center: 45 degrees north, 73 degrees west, 2 m altitude

  • Radius: 101 m

  • Speed: 1 m/s

  • Motion: Counterclockwise

circular trajectory.png?20

To create an interesting scenario, we will create a receiver trajectory that will cross the transmitter at close range. Set a receiver circular trajectory with the following attributes:

  • Center: 45 degrees north, 73 degrees west, 2 m altitude

  • Radius: 100 m

  • Speed: 1 m/s

  • Motion: Clockwise

Now the transmitter has a trajectory, but it is not transmitting anything. Lets add a Chirp signal.

add chirp.png?20

Change the chirp bandwidth to 10 MHz and the sweep time to 10us. It is possible to add a signal with a different group than the transmitter, this allows a transmitter to jam different groups. To do so, you would have to uncheck "Use Default Group" and then change the signal group. For this example, let "Use Default Group" checked. To add the chirp signal, click Add. You will see the signal added to the list in the main windows. We will not add another chirp signal in this example, so you may click on the Close button.

add chirp dialog.png?20

The power for the chirp is measured in dB. This is relative to the transmitter reference power defined in the General page. Let’s go back in the General screen and reduce the power to -15 dBm. Also, uncheck the Enabled flag. We prefer not to have the jammer enabled when we start the simulation. This will allow some time for the receiver to track and lock on to the GPS signal. We will enable the jammer only after we have a lock on the receiver.

general adjust power with arrow.png?20

Let’s start the simulator now and connect a receiver in order to view the simulator, the receiver, and the transmitter in the map tab. Depending on the performance of your receiver, it may take more or less time to get the receiver’s solution. However, once you have it, the view in the map should look something like this:

transmitter in map.png?20

If you expand the transmitter information panel at the right of the map, you will see that the transmitter is not enabled. This means that the transmitter is not broadcasting RF; however, as you can see in the map, the transmitter is moving on a circular path.

In the information panel, you will also find 2 values for the Reference Power: Tx and Rx. The Reference Power Tx is the power level that you set in the General screen of the transmitter. The Reference Power Rx is the perceived reference power at the receiver including the transmitter and receiver antenna patterns and the propagation loss. If you click on the "plus" button at the right of Reference Power (Rx), you will see more details.

The transmitter can be Visible or not by the receiver. If both receiver and transmitter altitude are inferiors to 100km, Skydel uses radio horizon to determine the transmitter visibility. Else Skydel looks if the transmitter is earth-masked.

In the spectrum subtab, you will see that the GPS signal is being transmitted on RF A; however, the spectrum for RF B should remain empty until you enable the transmitter.

spectrum no transmitter.png?20

Now, go to the transmitter’s General screen and enable the transmitter. You should now see the chirp appearing in the RF B spectrum.

spectrum with chirp.png?20

The simulator and the transmitter are both on a circular path and they will soon cross each others path within 1m range. When that occurs, you will see the spectrum power increase rapidly.

simulator meeting transmitter.png?20

At this point, the receiver should experience some heavy jamming and you should have difficulty tracking the signal, as you can see in the Deviation subtab.

deviation error.png?20

As the simulation proceeds and the transmitter fades away, the deviation quickly improves.

This simple dynamic transmitter tutorial was for a -15 dBm jammer. This is a very weak jammer. We leave it to the user to experiment with stronger jammers to see how the jamming radius increases the effect on the receiver being tested.

When you modify a transmitter while the simulation is running, all changes will be lost when you stop the simulation unless you check the option Preserve Runtime Settings in the transmitter’s General screen. It is often easier to design complex waveforms at runtime in order to see the effect in the Spectrum subtab. While doing so, it is strongly recommended that you disconnect the RF output to protect your receiver.
8.7.11.2. IQ-File Jammer

The "IQ-File" jammer signal type enables the users to inject their own specific jammer waveform.

select iq file montage.png?20

The waveform is stored in a binary file, containing a baseband IQ-Complex waveform. The format of the file is the same as the one described in section IQ Data Files.

For Skydel to correctly use the binary IQ-Samples file (ex: my-waveform.iq), a metadata file respecting the GNSS SDR Metadata Standard (http://sdr.ion.org/) must be found in the same folder (ex: my-waveform.xml). When using this standard, only metadata files with one Lane, System, Block, Chunk, Lump, Stream, Band and File are supported by Skydel.

Futhermore, the metadata must have the following values:

Chunk Key Value

sizeword

2

countwords

2

endian

Little

padding

None

wordshift

Left

Stream Key Value

ratefactor

1

quantization

16

packedbits

32

format

IQ

encoding

INT16

Band Key Value

translatedfreq

0

delaybias

0

Skydel also supports the use of a text file as a metadata file (ex: my-waveform.iq.desc). This metadata file simply contains "Key-Value" pairs to decribe the waveform. Here are the supported keys:

Key Value Unit Requirement

CENTRAL-FREQUENCY

1575420000

Hz

MANDATORY

SAMPLE-RATE

12500000

Samples per sec

MANDATORY

The text file must contain 1 Key/value pair per line. For example:

  • CENTRAL-FREQUENCY=1575420000

  • SAMPLE-RATE=12500000

The waveform selected can have a lower sample rate then the RF output where it will be injected. If so, the waveform selected will be upsampled in real-time during the simulation.

Power Level

The reference power level of the IQ-File signal is -130dBm, when the IQs of the file have a RMS value of 463.

For example, lets say that the IQ-File contains a CW waveform like this: I=463; Q=0; I=463; Q=0; I=463; Q=0; …​

When this file is used as a "IQ-File interference", and the transmitter is set to -130dBm, the output power will be -130dBm. However, it is important to understand that by default, RF outputs of interferences have a gain +40dB. So the actual RF signal power at the radio’s connector will be -90dBm.

8.7.11.3. Multi-band Jammer

It is possible for a single transmitter to jam several bands. By default, all the signals added to a transmitter will jam the signal group defined in the transmitter general menu. To enable multi-band jamming, you have to uncheck "Use Default Group" in a signal "Add" or "Edit" dialog, then you can select the group you want the signal to jam.

multiband chirp.png?20

In the following example, the transmitter is set to jam the group 1, so all its signals will, by default, jam the group 1, but this Chirp signal is set to jam the group 2.

multiband transmitter.png?20

8.7.12. Advanced Spoofing

A spoofing scenario usually looks like this:

advanced spoofer explained.png?20

To summarize and agree on terminology:

  • A receiver receives a truth signal, from which it determines its true position.

  • The receiver will also receive a spoofing signal from a device located at a spoofing transmitter position.

  • The spoofing signal is a GNSS signal as it would be perceived by a receiver located in a spoofed position.

To achieve advanced spoofing in Skydel, at least two instances are required:

  • The truth instance, which manages the truth signal, the true position and the spoofing transmitter position.

  • The spoofing instance, which manages the spoofing signal and the spoofed position.

8.7.12.1. Spoofing instance

To start a spoofing instance, search for the shortcut Skydel Spoofer on your operating system or start the application in a command line shell with the --spoofing argument.

This instance is almost the same as a regular instance, with the following exceptions:

  • There is only one type of output: Spoofer.

  • The Spoofer output is assigned to an interference group that will be used in the main instance.

  • Only GNSS signals can be configured, these are the definition of the spoofing signal.

  • The Vehicle section defines the spoofed position.

spoofing instance.png?20
8.7.12.2. Truth instance

When the Advanced Spoofing feature is activated, you will see a new tab called Spoofers.

spoofer menu.png?20

To add a spoofing transmitter, go into this tab and click on Add Spoofer…​ A spoofing transmitter is very close to a dynamic advanced jammer in its composition. We find the same General, Trajectory and Antenna sections.

In the Signal section, we have a summary of the spoofer’s status. Here we can see and edit the spoofing instance address. The default address can be changed in Skydel’s Preferences. Once connected, a table will show the spoofing signals detail.

signal tab.png?20
When adding a spoofer in wavefront mode, the spoofing instance address must be visible from the nodes.

In the Spoofers menu, next to the spoofer’s name, a LED is showing its status:

  • Red → Connection to the spoofing instance could not be established or no signal is configured.

  • Orange → Only some of the spoofer’s outputs are assigned to an output.

  • Green → Signals are all assigned to an output.

In the Settings menu, the LED next to the Spoofer submenu shows a global status:

  • Gray → The scenario does not contain any spoofer.

  • Red → At least one spoofer’s status LED is red.

  • Orange → At least one spoofer’s status LED is orange, none are red.

  • Green → All spoofer’s status LED are green.

8.8. Receiver

You can access the Receiver tab by clicking this button:

receiver.png?20

Once your simulation is running, you can switch to the Receiver tab to look at the output of an NMEA receiver. Start by clicking the Connect button and choosing your receiver from the list of available ports. It is possible to modify the baud rate, data bits, parity, stop bits and flow control of the serial port used by the receiver.

Linux users must be in the “dialout” group to connect to the receiver. See Dialout Group section.
choose receiver serial port.png?20

Skydel is optimized for NMEA 0183 Version 4.1. Click on the Help button to get further information about which sentences can be decoded. Click OK to close the dialog box and connect with your GNSS receiver. You should then see a stream of NMEA data appear. The receiver’s NMEA data is decoded in real-time and Skydel will display the receiver time, position, DOP, sky view, and C/No for each satellite.

receiver tab with highlight.png?20

When Skydel is connected to a receiver, a new checkbox appears in the Constellation sub-tab enabling you to display the receiver. When this checkbox is checked, the Constellation subtab will split horizontally. The upper half of the subtab will display information about the receiver (as decoded from the NMEA feed): C/No bars and sky view. The lower half of the subtab displays the usual information about the simulator.

The C/No values are displayed for the selected constellation.

The simulator sky view (lower) and the receiver sky view (upper) are not always identical. For example, some satellites below the elevation mask will appear in the receiver sky view only when the receiver has decoded the almanac from the navigation message which can take several minutes.

The Deviation subtab will show traces only if the receiver has a navigation solution. If the receiver does not have a solution, or does not send GGA sentences, Skydel will not display the receiver deviation.

Controls to display the deviation graph are provided on the left-hand side of the sub-tab; deviation graph options can also be accessed by right-clicking the deviation graph to bring up a contextual menu.

deviation graph menu with arrows.png?20

The Display Settings let you change the receiver’s leap seconds. This parameter is very important for accurate calculation of deviations. Skydel runs with GPS time while the receiver sends NMEA data using UTC time. To align the receiver data with the simulated data, the value for the receiver’s leap seconds must match what the receiver is currently using. This value may require adjustment if a Leap Seconds Future (LSF) event occurs during the simulation.

deviation graph display settings.png?20

8.9. Map

You can access the Map tab by clicking this button:

map.png?20

The Map tab contains the map on the left side and the information panel on the right side. It simultaneously displays the simulated position and the receiver’s position. If Skydel is not connected to a receiver, or if the receiver does not have a navigation solution, the receiver position will not appear. If the Advanced Jammer feature is enabled, the transmitters position are displayed as well. The information panel on the right uses accordion styling. You can click on an item to open or collapse the details.

map tab.png?20

Each item in the information panel has a target state button. When clicked, the corresponding position stays centered on the map. If you pan the map, the target button will reset automatically.

target button with arrow.png?20

8.10. Automate

You can access the Automate tab by clicking this button:

automate.png?20

The Automate tab helps you get started using the Skydel API and writing your own scripts to control Skydel.

8.10.1. Application Programming Interface (API)

There are several reasons why you might want to use the Skydel API.

  • More control over the simulation while it runs, such as:

    • changing the value of pseudorange offsets during the simulation;

    • changing the power of interference during the simulation;

    • changing the power of satellites during the simulation;

    • changing the downlink data more frequently.

  • To control Skydel as part of an automated test system

    • no human interaction with Skydel is required when using the API

Skydel provides API clients in the following languages:

  • Python

  • C#

  • C++

The Skydel API is fully featured and provides complete control over the Skydel Engine. In fact, the Skydel GUI communicates with the Skydel Engine using this same API. Therefore, anything that can be done through the Skydel GUI can also be done via the Skydel API.

The Documentation.txt file in the Skydel-SDX/API folder provides a complete list of commands with a short description.

As you make changes to your configuration, a list of commands will be displayed in the Automate tab. For example, in the image below, the line highlighted in blue is for a message modification.

automate tab.png?20

When double-clicking a line, additional information about the command will be displayed.

JSON object.png?20

The JSON Object tab is the command interpreted by Skydel.

documentation.png?20

The Documentation tab describes each parameter for the command.

When you set the message modification in the GUI and click the Add button, the GUI sends a request as a JSON Object to the Skydel command engine to be executed and logged in the Automate page. In computer science, encapsulating a request as an object is called the command design pattern.

The Skydel API client is an external library that will enable you to send requests as JSON objects to Skydel through a TCP/IP connection. It doesn’t matter to Skydel whether a command comes from the GUI or via a remote program.

Some Skydel functionalities could not be implemented using the Command design pattern and will not appear in the Automate tab. For example, creating a vehicle trajectory or using the hardware-in-the-loop will not appear in the Automate list. But that doesn’t mean that you can’t use these functions through the API.

8.10.1.1. Python

When you install Skydel on a Linux system, the skydelsdx library is automatically installed. Python scripts can be run from anywhere.

For Windows users, the library can be found in the Skydel-SDX/API/Python/skydelsdx folder. You may run setup.py to make the library accessible from anywhere. If you choose not to do so, you should save your scripts in the parent folder and execute them from there. The Python interpreter will find the library in the skydelsdx sub-folder.

The Skydel Python API is open source and can be modified, copied, or reused any way that you want. However, Orolia recommends using the API “as is” (as much as possible) so that migration to future releases of Skydel will be easier. Skydel is constantly evolving; Orolia sometimes adds new functions or capabilities that require modifying existing features and the corresponding API. To mitigate impacts to your scripts, each Skydel version comes with release notes that include a list of modified, removed, and added API methods.

You will find several Python script examples in the Skydel-SDX/API/Python folder.

The “Export to Python” feature is, by far, the easiest way to learn how to automate Skydel.

export to python.png?20

When you click the Export to Python button, Skydel will generate a Python script that will replicate the content of the Automate list.

Before you export your Python script, you can delete any lines in the list that you don’t want exported to your script.

The following is an example of a Python script generated by Skydel:

python script.png?20

In the above example, sim is an instance of the RemoteSimulator class. This class offers a high-level API that converts simple function calls into JSON objects. The class handles the transmission of those JSON objects to Skydel and interprets the results for you.

Before you can transmit requests to Skydel, you must first connect. The connect() method accepts 2 parameters: Skydel IP address and instance id. If no values are provided to the method, the defaults are “localhost” and “0”. Skydel is listening on port 4820 + id. If Skydel was started with instance id 2, it would be listening on port 4822. When connected, Skydel will display a robot emoji at the left end of the dashboard.

sim connect.png?20

The connection is followed by a list of calls that you can easily recognize in the Automate list. The first call is to create a new configuration in Skydel.

sim.call(New(True))

The call method is generic. It can send any command: New, SetModulationTarget, etc. The parameter is a command object. This line can be replaced by 2 lines. First you create the command, and then you execute the call.

cmd = New(True)
sim.call(cmd)

It is sometimes useful to proceed this way so that you can interrogate the command object after the call returns. Some commands will be updated as a result of the call method. For example, if you add a message modification without providing a unique identifier, the result will contain a unique identifier assigned by Skydel that you can re-use to update the message modification in the future.

The call method is blocking. This means that it will stop the script execution until Skydel returns a result (pass or fail). This blocking mechanism is referred to as a synchronous call. There is another method called post which is not blocking and this calling mechanism is referred as asynchronous. When using the asynchronous strategy, it is important to synchronize from time to time with the wait method.

cmd = New(True)
sim.post(cmd)
# do something else…
sim.wait(cmd)

Regardless of how the command was sent to Skydel (call or post), it will appear in the Automate tab.

When you run your script for the first time, or if you need to debug it, clear the command list in the Automate tab and monitor the command results.

If you become a heavy API user, you may notice that it takes some time to process hundreds or thousands of commands to change the settings. The reason is that Skydel updates the user interface after every command and redraws the sky view and power bars above the sliders. To avoid this, you can instruct Skydel to hold off GUI updates while it updates the settings.

sim.call(LockGUI())
# Update many settings
sim.call(UnlockGUI())

Skydel will display a message in the title bar to signal when the GUI is locked.

lock gui.png?20

You are encouraged to look into the skydelsdx library to better understand how it works. Also, the examples provided with Skydel will demonstrate how you can define custom vehicle trajectories, send real-time trajectories (hardware-in-the-loop), control interferences, etc.

8.10.1.2. C++

The Skydel C++ API is located in Skydel-SDX/API/Cpp/sdx_api.

The parent folder contains a solution for Visual Studio. It also contains a Code::Blocks workspace and a makefile for Linux. This project contains examples that illustrate the basic concepts of the Skydel C++ API.

The principles of the C++ library are the same as with the Python library. The syntax differences are minor and looking at the various examples should get you started quickly.

8.10.1.3. C#

The Skydel C# API is located in Skydel-SDX/API/CSharp/SdxApi.

The C# examples are located in the parent folder in the SdxExamples.sln solution. This solution is fully compatible with Linux using MonoDevelop.

The principles of the C# library are the same as with the Python library. The syntax differences are minor and looking at the examples should get you started quickly.

8.10.1.4. Vehicle Trajectory

Trajectories can be created through the API. You can create tracks as well as routes. They differ in that tracks are defined with time and position pairs, while routes are defined with speed and position pairs.

For detailed explanations about the geographic coordinate system used in Skydel, please consult the Six Degrees of Freedom section.

8.10.1.4.1. Track

To create a track with the API, use the following command sequence:

sim.call(SetVehicleTrajectory("Track"))
sim.call(SetVehicleType("Ground / Water"))
sim.beginTrackDefinition()
# push time and position pairs
sim.endTrackDefinition()

There are multiple methods that you can use to push time and position pairs:

  • pushTrackEcef: push time and position in ECEF reference system;

  • pushTrackEcefNed: push time, position (ECEF), and attitude (relative to NED local frame);

  • pushTrackLla: push time, latitude, longitude and altitude (ellipsoid);

  • pushTrackLlaNed: push time, latitude, longitude, altitude, and attitude (relative to NED local frame).

Time is the number of milliseconds (ms) into the simulation (elapsed time).

If the attitude is not provided, Skydel will automatically calculate it. The yaw (heading) will go along the route. The pitch will go up and down based on the altitude variation and the roll is fixed to 0°.

8.10.1.4.2. Route

To create a route with the API, use the following command sequence:

sim.call(SetVehicleTrajectory("Route"))
sim.beginRouteDefinition()
# push speed and position pairs
sim.endRouteDefinition()

The route vehicle simulation supports only ground vehicles for the moment. Therefore, you don’t need to specify the vehicle type and you can’t specify the attitude either. The attitude is automatically calculated by Skydel. The yaw (heading) will go along the route. The pitch will go up and down based on the altitude variation and the roll is fixed to 0°.

To push speed and position pairs, you have the choice between two methods:

  • pushRouteEcef

  • pushRouteLla

The speed is expressed in meter per second (m/s).

8.10.1.5. Hardware-In-the-Loop (HIL)

The HIL interface allows you to send vehicle position and attitude in real-time as the simulation progress.

Each position sent to Skydel through the HIL interface must be paired with a timestamp. Skydel will use the timestamp and not the time at which the position arrives to Skydel. This mechanism compensates for the jitter in the transmission link.

Skydel is designed to work with a high update rate (100 - 1000 Hz), but the latency (the delay to see the effect when changing position) is around 200 ms. This 200 ms buffer can accumulate vehicle positions so that any delay and jitter in the transmission will have minimal or no effect on the simulated trajectory.

Please refer to the example_hil.py python script, the runExampleHilRealtime C++ function or the RunExampleHilRealtime C# function for a complete HIL example.

Unlike track playback and vehicle simulation which can use many positions to smooth interpolation and minimize jerk, HIL must work with fewer points, sometimes only one point in advance. For that reason, HIL will only perform linear interpolation. To minimize jerk with HIL simulation, it is important to update Skydel as often as possible. Sending 100 to 1000 positions per second will provide the best performance.

When you begin sending timestamp and position pairs to Skydel, Skydel will accumulate them and start the simulation with a delay of 200 ms. This means that when Skydel starts, your client application is already 200 ms into the scenario. From Skydel’s point of view, it has positions in the future for the next 200 ms. New timestamp and position pairs will be queued and processed when the time comes. As long as Skydel has positions in the future, it will perform a linear interpolation between the given positions. If your application stops sending positions, or positions are not sent in time, Skydel will begin to extrapolate positions. This condition should be avoided as much as possible because, as you will see below, extrapolation will lead to jerk.

Here’s a visual explanation of how vehicle positions are interpolated by Skydel.

P1 Ps P2.png?20

P1 : Previous position at T1 (past)
P2 : Next position at T2 (future)
Ps : Current interpolated position

When Skydel receives a new position P3, it is kept in a queue while the Ps interpolation continues to progress towards P2.

P1 Ps P2 P3.png?20

When Ps reaches P2, it continues towards P3 and P1 is no longer kept in memory.

P2 P3.png?20

If the client application fails to send timestamp and position pairs in the future, Skydel will extrapolate (guess) the vehicle position until it receives new timestamp and position pairs.

P2 P3 Ps.png?20

When the client application finally sends the P4 timestamp and position pair, Skydel immediately corrects the receiver trajectory and snaps the current position to the newly created vector P3-P4.

P3 Ps P4 snap.png?20

If the client is sending P4 late (P4 is already in the past), Skydel immediately corrects the receiver trajectory and extrapolates the newly created vector P3-P4.

P3 P4 Ps snap.png?20

To find out if Skydel is extrapolating HIL positions during the simulation, use the GetLastHilWarning() command as demonstrated in the Skydel-SDX/API/Python/example_hil_circle_warning.py Python example or check for HIL warnings in the simulator.log located in the Skydel-SDX folder.

8.10.1.6. Retrieve vehicle information

It is possible to retrieve information about the vehicle using the remote API. The available information are:

  • The position in the ECEF frame

  • The attitude (Yaw, Pitch, Roll)

  • The speed in km/h

  • The heading

  • The odometer

Please refer to the example_vehicle_info.py python script, the runExampleVehicleInfo C++ function or the RunExampleVehicleInfo C# function for a complete example.

8.11. Skydel Script

Sometimes you require a fast and simple way to automate tasks and you don’t want to use a programming language to do so. Skydel allows you to record commands as a Skydel script from within the GUI and to replay these commands. Let’s take an example to illustrate how it works.

Step 1

Create a new configuration.

Step 2

Switch to the Automate tab and clear the list

automate buttons clear.png?20
Step 3

Switch to the Settings tab and make some changes to the settings such as:

  • Change the simulation start time.

  • Change the ionospheric model. If you switch back to the Automate tab, you should see the changes in the list.

    If you switch back to the Automate tab, you should see the changes in the list.

automate list.png?20
Step 4

Save the script as my_first_script or some other filename that you will remember.

automate buttons save.png?20

By default, your script will be saved in the Skydel-SDX/Automate folder. The extension of the file is .sdxscript.

Step 5

Quit Skydel and restart it. You can also simply create a new configuration and clear the Automate list once again.

Step 6

Switch to the Automate tab and open the script that you just saved (my_first_script).

automate buttons open.png?20

You will notice the Automate list is now showing the list of commands that you saved in my_first_script but the difference is in the Result column: it is empty. That’s because the script is loaded but never executed. At this point, your simulation start time and ionospheric model are unchanged.

Step 7

Run the script

automate buttons run.png?20

The script execution will only last a few milliseconds and you will see the Result column filled with “Success” mentions. You can now check that your simulation start time and ionospheric model are set according to your script.

Scripts can be more complex and can record commands while the simulation is running. Commands executed during the simulation are timestamped and will occur at the exact same time during replay. In the image below, you can see that timestamps are recorded after the simulation starts and continue to be recorded until it stops.

automate with timestamp highlight time.png?20

If you export this list as a Python script, you will see how commands are executed from a Python script while the simulation is running.

As an exercise, you can create a script where you change the satellite power during the simulation (move the power slider up and down). When you will replay this script, you will notice that the slider moves at the same moment.

8.12. Basic Interference

This section is about the basic interference feature. If you are looking for the Advanced Jammer (optional feature), read here.

You can access the Interference tab by clicking this button:

interference.png?20

You can use the Interference tab to add jamming waveforms to the simulation. These jamming signals will be generated and output by the same ports that output the GNSS signals. When saving a configuration, these interference waveforms will be retained in the saved configuration.

To add a waveform, click the Add button on the Interference tab. Select the type of waveform that you would like to add. For this example, we will use Continuous Wave.

add interference.png?20

You can adjust the settings in the dialog box that appears. The start and stop times are in the “hh:mm:ss” format and are relative to simulation time.

add cw 30dB.png?20

The power is relative to the nominal output power (-50 dBm at the TX port for the Ettus X300 SDR, -110 dBm after the 60 dB attenuators). This power level can be thought of as the “jammer to signal” ratio. But this is only true if the global signal level and code specific signal level are both 0 dB.

For example, if the signal levels are configured as shown below and the interference is set to 30 dB, the interference will be 30 dB stronger than the C/A signals, and 33 dB stronger than the P Code signals.

signal level.png?20

If you increase the Global Signal Level to +5 dB, the interference will be 25 dB stronger than the C/A signals. This is because the global offset increases the power level of the signals, but not of the interference.

Once you have added the interference, it will show up in the Interference list.

interference list.png?20

The State column indicates Not Running if the simulation is not running. During the simulation, there are a handful of states that can be indicated for each interference signal:

  • Inactive - The interference is off. The current time is not between the start and end times;

  • Active - The interference is on;

  • Out of Range - The interference is off. The signal doesn’t fit within any of the RF output frequency ranges. There are two options to fix this:

If everything is setup correctly, you should see the interference become active during the assigned times.

When you configure multiple outputs with the same Fc or with overlapping bands, and when the interference is enabled for that Fc, the interference is added to each RF output. When you combine the outputs with the RF combiner, you sum the interferences. The interference wavefronts are not necessarily aligned.

9. Timing

While Skydel can be used with little knowledge of its internal working model, some simulation use cases will benefit from a deeper understanding of its operating principles. For example, if you want to:

  • synchronize RF with external PPS;

  • synchronize multiple simulators;

  • synchronize time with the live sky;

  • control a receiver’s trajectory in real-time (Hardware-in-the-loop);

  • or any combination of the above use cases.

The Skydel simulation engine can be controlled by the user interface (GUI) or a client API. To simplify the documentation, the diagrams in the following sections will refer to the API client setup as pictured below.

client sdx.svg?20
Skydel and Skydel Client

When synchronizing multiple instances of Skydel, we use a Master/Slave terminology. The client usually connects only to the Skydel Master, and the Skydel master connect to the Slave(s). In some circumstances, the client may want to connect to the Slave as well.

client master slave.svg?20
Master/Slave and Skydel Client

To better understand the timing diagrams in the following sections, it can be helpful to refer to the following Skydel state machine diagram.

state machine.svg?20
Skydel state machine

9.1. Single Skydel Setup

This section describes use cases using hardware setups based on Ettus USRP X300 radios (and an OctoClock-G clock distribution module when appropriate).

9.1.1. Normal Start

Normal Start refers to a scenario where Skydel:

The sequence starts when the client API sends the Start command, or when the user clicks the Start button in the Skydel GUI.

timing single.svg?20
Normal start

In this use case, Skydel ignores the external PPS. Instead, it uses its own internal PPS source. The PPS OUT connector on the radio is aligned with the internal PPS. The duration of the start command can change for each run, but the RF signal will always be aligned with a PPS rising edge.

The Start command is blocking until Skydel enters the Streaming RF state.

When Skydel enters the Streaming RF state, it doesn’t mean that it is transmitting RF at the exact same moment. The GNSS RF signal transmission only starts at the next PPS rising edge.

9.1.2. Arm & Start

This use case is similar to Normal Start except that the client API arms the system before starting it. The Arm command returns when the hardware is initialized and ready to start. Once the initialization is completed, the Start command is executed with minimal delay.

timing single arm.svg?20
Arm & Start
Even if you were to arm the system before starting it, Skydel would wait for the next PPS rising edge. This means that even if the command returns after only a few milliseconds, the GNSS RF signal streaming may start up to 1 second later.

9.1.3. HIL Start

This use case is similar to Normal Start except that the vehicle trajectory type is HIL. In this scenario, the client transmits the vehicle’s trajectory in real-time.

timing single hil.svg?20
Start HIL
In this use case, the GNSS RF Signal and the PPS OUT are not synchronized. This is because the simulator starts as soon as it receives the first HIL position. To synchronize the GNSS RF Signal with a PPS while using HIL trajectory, refer to section Master/Slave Sync With PPS.

9.1.4. Sync With External PPS

To synchronize Skydel with an external PPS source, refer to section Master/Slave Normal Start. The difference with Master/Slave scenario described in the other section is that this use case only has a master - there are no slaves. Make sure the setup is properly configured to use external 10 MHz and PPS sources and make sure the master checkbox is set.

9.2. Master/Slave Setup

This section describes use cases with hardware setups based on Ettus USRP X300 radios and an OctoClock-G. In all use cases, the Sync Time (Master) checkbox must be checked for the master and the Sync Time (Slave) checkbox must be checked for the Slave(s).

When checking a Sync Time checkbox (either for the master or the Slave), the Ettus X300 radio must use the external PPS signal source from the OctoClock-G; it should be connected to the PPS TRIG IN connector on the back of the X300.

When the USRP X300 radio is configured to use an external 10 MHz and PPS sources, the USRP PPS OUT is disabled and can not be used.

9.2.1. Master/Slave Normal Start

This use case describes how to synchronize multiple simulators to commence on the same PPS rising edge. The master Skydel instance will automatically select which PPS to use. To manually select the PPS, refer to section Master/Slave Sync With PPS.

In the following timing diagram, the sequence is initiated by the client API when it sends the Start command to the master Skydel instance. This command is blocking until the master enters the Streaming RF state.

timing master auto.svg?20
Master/Slave sync with PPS rising edge

When the Master receives the Start command, it begins a process to initialize itself, as well as each of the Slaves. Once this initialization is completed, the Master monitors the PPS and selects one as the reference PPS. The Master also guarantees that all Slaves are using the same reference PPS. Once the reference PPS has been determined, the Master uses the PPS IN Delay value to program the GNSS RF signal start.

9.2.2. Master/Slave Sync With PPS

You can synchronize multiple simulators (one Master with one or more Slaves) with a specific PPS rising edge.

In the following timing diagram, the sequence is initiated by the client API when it sends the ArmPPS command to the master Skydel instance. This command is blocking until the master enter the Sync PPS Reset state.

timing master pps.svg?20
Master/Slave sync with user-defined PPS rising edge.

When the master receives the ArmPPS command, it automatically forwards the command to the Slave(s) and each Skydel instance commences the hardware initialization process. The Master Skydel instance will complete its own initialization and wait for each of the Slaves to enter Sync state before entering the Sync PPS Reset state.

The initialization may take more or less time depending on the hardware being used. See note 1 in above diagram.

Once the ArmPPS command returns, the client sends the WaitAndResetPPS command to the master Skydel instance. This command is blocking until the Master enters the Sync Start Time state.

When the Master receives the WaitAndResetPPS command (note 2), it waits for the next PPS rising edge (note 3). Immediately after this rising edge, Skydel knows that it has one full second to complete a time-critical process before the next rising edge. During that period of time, it will inform all Slaves to use the next PPS rising edge as the reference PPS. Each Skydel instance resets the PPS counter on the same PPS rising edge. Once that task is completed, the master Skydel instance enters the Sync Start Time state.

Once the WaitAndResetPPS command returns, the client sends the StartPPS command with a delay relative to the reference PPS. This delay is specified in milliseconds.

Between the WaitAndResetPPS command and the StartPPS command, it is possible to change the scenario start time using the SetPps0GpsTime. The start time sent will match the 0th PPS.

The StartPPS command returns 200 ms before the radios actually start transmitting the RF signal (note 4). The 200 ms is defined by the streaming buffer size in the general preferences. The RF signal containing the GNSS signals commences at the exact moment defined in StartPPS command (note 5).

The Master/Slave synchronization also works with HIL trajectories as illustrated in the timing diagram below:

timing master pps hil.svg?20
HIL and Master/Slave sync with user-defined PPS rising edge.

The only difference is that when the StartPPS command returns, the client is expected to begin sending receiver positions for hardware-in-the-loop trajectories. It should start sending position for time=0s; this position corresponds to where the client tells the receiver to be at the precise moment that the RF streaming begins.

Sometimes we need to set the Master checkbox even if there is no Slave(s) connected. This is actually the only way to synchronize a GNSS RF Signal with an external PPS while using the HIL trajectory.

9.3. Timing Receiver Setup

To synchronize with the actual current time, Skydel needs to be connected with a GPS timing receiver, such as the OctoClock-G.

The flow is similar to Master/Slave Normal Start. The difference is that Skydel will go through an additional state called Sync Start Time. In this state, Skydel will poll the timing receiver to retrieve the current time and set the simulation start time to align the GNSS RF Signal with the GPS timing receiver time.

timing real time.svg?20
Sync with timing receiver
The GPS timing reveiver must be configured in the preferences.

9.4. Trigger (USRP X300 AUX I/O)

When using a X300, Skydel can take advantage of its GPIO to emit a trig signal. To do so, download the Orolia GPIO trigger library that matches your operating system from the Skydel Driver/Firmware Page.

This library was made using Orolia’s GPIO API. This API is available as an option, for more information contact skydel-support@orolia.com.

You then need to tell Skydel where to find the previously downloaded library in the preferences.

preference gpio trigger.png?20

As long as this library is set here, the X300 radio will emit the following signals on its GPIO pins:

timing gpio trigger.svg?20

Pin 2 will stay high as long as RF is streaming and Pin 3 will be high only for 100ms.

The library source code is available and can be modified to control the pins with very accurate timing. It could be used to generate a 100 PPS signal of to trig event at specific moment during the simulation. The pins can be controlled in real-time or with a precise time stamp.

For pin numbering, refer to ettus documentation.

10. References

10.1. Orolia Skydel Download Page

Contact Orolia (skydel-support@orolia.com) to get user name and password to access the Skydel download page.

URL

users.skydelsolutions.com↗

10.2. Skydel Driver/Firmware Page

This page contains download links for drivers and firmware, which may be required for Skydel operation.

Contact Orolia (skydel-support@orolia.com) to get a user name and password for access. Note: This is the same user name and password as for the Orolia Skydel Download Page.

URL

users.skydelsolutions.com/drivers-and-firmwares↗


Skydel ™ Version 20.4

© 2020 by Orolia Canada Inc. All rights reserved.
Skydel and the logo of Skydel are trademarks of Orolia.
All other company names and products are trademarks or registered trademarks of their respective companies.