16 minute read

Geniux logo

Geniux (GNSS-SDR for Embedded GNU/Linux) is a customized GNU/Linux distribution for developing and running GNSS-SDR on embedded devices, based on the Yocto Project. This Operating System includes a specific set of popular tools, libraries, and device drivers tailored for supporting an extended range of Software Defined Radio applications, helping to bring them to production-ready deployments with an approach widely adopted throughout the embedded/IoT industry.

The Geniux distribution comes in different version names, following those of the Yocto Project, being Rocko the oldest supported version. Each version name is tagged with a timestamp, so Geniux versions can evolve in time, but tagged versions can be reproduced at any time in the future. In addition, each version and each time tag can be built for a particular board or machine. This is expressed in the figure below:

Geniux evolution Geniux keeps the pace of the software ecosystem evolution, but older versions are still reproducible. Virtualization technology allows reproducing images regardless of the software stack running at the host system building it.

Those names (Rocko, Sumo, Thud, Warrior, Zeus, etc.) represent major Geniux versions. Then, each named version can have time tags (in the figure above, 20.09 and 20.10). All versions have a latest tag pointing to the latest commit. Each named version with a time tag can be built for different boards or machines (in the figure above, zedboard-zynq7 and rasperrypi3).

Version naming

The Geniux distribution follows the versioning format VERSION_NAME-MANIFEST_DATE.CONF_NUMBER, where:

  • VERSION_NAME follows those of the Yocto Project releases.
    • rocko, sumo, thud, warrior, zeus, dunfell, gatesgarth, hardknott, honister, kirkstone, langdale.
  • MANIFEST_DATE follows the tag names at https://github.com/carlesfernandez/oe-gnss-sdr-manifest. The time tag latest always exists for each version name, and points to the latest release.
    • 20.09, 21.02, …, 21.08, 22.02, 22.06, 23.04, latest.
  • CONF_NUMBER: minor version number.
    • 0, 1, …

Example of version name: rocko-23.04.0.

Generating Geniux images for a specific version, time tag, and machine

The generation of images and SDKs for a given Geniux version, time tag, and machine in a virtualized environment is automated by the yocto-geniux repository. With Docker already installed and running on your system, clone the Git repository and go to its base path:

$ git clone https://github.com/carlesfernandez/yocto-geniux
$ cd yocto-geniux

Now you are ready to build Geniux images for the release you want with a single command, by using the geniux-builder.sh script. Taking a look at its help message:

$ ./geniux-builder.sh --help

You should get:

This script builds and stores Geniux images.

Usage:
./geniux-builder.sh [version] [manifest] [machine] (--image-only / -i)

Options:
 version   Geniux version (from oldest to most recent):
             rocko, sumo, thud, warrior, zeus, dunfell,
             gatesgarth, hardknott, honister, kirkstone, langdale. Default: dunfell
           Check available branches at https://github.com/carlesfernandez/meta-gnss-sdr
 manifest  Geniux version manifest: 21.02, 21.08, 22.02, 22.06, 23.04, latest. Default: latest
           Dated manifests available at https://github.com/carlesfernandez/oe-gnss-sdr-manifest/tags
 machine   Specify your (list of) MACHINE here. By default, zedboard-zynq7 and raspberrypi3 are built.
           If more than one, surround it with quotes, e.g.: "raspberrypi4-64 intel-corei7-64"
 --image-only / -i  (optional) Build the image but do not execute the container.

Environment variables that affect behavior:
 GENIUX_MIRROR_PATH          Base path to local mirror. Only used if set.
                             e.g.: 'export GENIUX_MIRROR_PATH=/home/carlesfernandez/mirror'
                             The mirror is expected to be at '$GENIUX_MIRROR_PATH/sources/$version'
 GENIUX_STORE_PATH           Path in which products will be stored. Only used if set.
                             e.g.: 'export GENIUX_STORE_PATH=/home/carlesfernandez/geniux-releases'
 GENIUX_STORE_REQUIRES_SUDO  If set, the script will ask for super-user privileges to write in the store.
                             You will be asked only once at the beginning. The password will not be revealed.
                             e.g.: 'export GENIUX_STORE_REQUIRES_SUDO=1'

You can find specific examples of how to use this script below. For more advanced usage modes (e.g., an interactive mode that allows you to make changes and experiment), check the instructions here.

The building process takes several hours and requires a powerful host system with at least 120 GB of free space in the hard disk and 32 GB of RAM. When finished, you will get your products in the output/ folder (or wherever the GENIUX_STORE_PATH environment variable points to). Among others:

  • gnss-sdr-demo-image: an image containing gnss-sdr, ready to go. It defines the “root” and “geniux” users, both with default password “geniux”.
  • gnss-sdr-dev-image: a development image with everything required for gnss-sdr, but without gnss-sdr. You can cross-compile the binary and copy it to the target filesystem. No password.
  • Starting from Zeus v21.08, wic.xz and wic.bmap image files ready to de deployed on an SD card.
  • gnss-sdr-dev-docker: a Docker development image archive file for the target architecture.
  • A script that installs a software development kit (SDK) for cross-compiling.

Please note that if the automated building process fails for some reason (failing network connection, misconfiguration, disappeared source repositories, shortage of free hard disk space, RAM memory or CPU resources, etc.) before it finishes, the running container will be deleted and you will lose everything, so you will need to start over again. For a safer procedure, you can use the interactive mode of the Docker image, which allows you to make changes, retry after a failure, build other images, and save your products to /home/geniux/yocto/output/ when done, so outside the Docker container. The container itself will be deleted at exit.

Main features

Geniux Rocko 23.04.0

  • Operating System based on the Yocto Project version 2.4.4.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.15.1, CMake v3.8.2, GCC v7.3.0 (+ libgfortran), make v4.2.1, ninja v1.7.2, Python v2.7.14 and v3.5.3.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.7.13.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.6, Lapack v3.7.0, VOLK v1.4.0.
      • C++ supporting libraries: Boost v1.64.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.4.1, Pugixml v1.11.4.
      • Graphical representation: Gnuplot v5.0.5.
      • Additional Python modules (e.g., Scipy, Matplotlib) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD v3.10.2.0 (+ gr-uhd), gr-osmosdr v0.1.4.1 (+ rtl-sdr, airspy, hackrf, and rfspace), gr-iio v0.3, libiio v2019_R1, libad9361-iio v2019_R1, iio-oscilloscope v2019_R1.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.
  • The meta-gnss-sdr layer is compatible with Xilinx PetaLinux Tools v2018.3.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh rocko 23.04 zedboard-zynq7
$ ./geniux-builder.sh rocko 23.04 zcu102-zynqmp
$ ./geniux-builder.sh rocko 23.04 raspberrypi3
$ ./geniux-builder.sh rocko 23.04 intel-corei7-64
$ ./geniux-builder.sh rocko 23.04 qemuarm

You can replace 23.04 by latest in order to get the latest developments.

Geniux Sumo 23.04.0

  • Operating System based on the Yocto Project version 2.5.3.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.15.1, CMake v3.10.3, GCC v7.3.0 (+ libgfortran), make v4.2.1, ninja v1.8.2, Python v2.7.15 and v3.5.5.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.7.13.5.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.7, Lapack v3.7.0, VOLK v1.5.0.
      • C++ supporting libraries: Boost v1.66.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.5.1, Pugixml v1.11.4.
      • Graphical representation: Gnuplot v5.2.2.
      • Additional Python modules (e.g., Scipy, Matplotlib) can be installed with pip3.
    • Software drivers and tools for RF front-ends: gr-osmosdr v0.1.4.1 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v2019_R1, libad9361-iio v2019_R1, iio-oscilloscope v2019_R1.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh sumo 23.04 zedboard-zynq7
$ ./geniux-builder.sh sumo 23.04 raspberrypi3
$ ./geniux-builder.sh sumo 23.04 intel-corei7-64
$ ./geniux-builder.sh sumo 23.04 qemuarm64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Thud 23.04.0

  • Operating System based on the Yocto Project version 2.6.4.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.1, CMake v3.12.2, GCC v8.2.0 (+ libgfortran), make v4.2.1, ninja v1.8.2, Python v2.7.16 and v3.5.6.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.7.14.0.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.8, Lapack v3.7.0, VOLK v2.2.1.
      • C++ supporting libraries: Boost v1.64.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.6.1, Pugixml v1.11.4.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.2.
      • Additional Python modules (e.g., Scipy, Matplotlib) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD v3.13.0.1 (+ gr-uhd), libiio v2019_R2, libad9361-iio v2019_R2, iio-oscilloscope v2019_R2.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.
    • The meta-xilinx layer points to the rel-v2019.2 branch.
  • The meta-gnss-sdr layer is compatible with Xilinx PetaLinux Tools v2019.2.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh thud 23.04 zedboard-zynq7
$ ./geniux-builder.sh thud 23.04 zcu102-zynqmp
$ ./geniux-builder.sh thud 23.04 raspberrypi3
$ ./geniux-builder.sh thud 23.04 intel-corei7-64
$ ./geniux-builder.sh thud 23.04 qemuarm64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Warrior 23.04.0

  • Operating System based on the Yocto Project version 2.7.4.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.1, CMake v3.14.1, GCC v8.3.0 (+ libgfortran), make v4.2.1, ninja v1.9.0, Python v2.7.18 and v3.7.7.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.8.2.0.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.7.0, VOLK v2.3.0.
      • C++ supporting libraries: Boost v1.69.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.6.1, Pugixml v1.11.4.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.2.
      • Additional Python modules (e.g., Scipy, Matplotlib) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh warrior 23.04 zedboard-zynq7
$ ./geniux-builder.sh warrior 23.04 raspberrypi4-64
$ ./geniux-builder.sh warrior 23.04 intel-corei7-64
$ ./geniux-builder.sh warrior 23.04 qemuarm64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Zeus 23.04.0

  • Operating System based on the Yocto Project version 3.0.4.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.1, CMake v3.15.3, GCC v9.2.0 (+ libgfortran), make v4.2.1, ninja v1.9.0, Python v2.7.18 and v3.7.8.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.8.2.0.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.7.0, VOLK v2.3.0.
      • C++ supporting libraries: Boost v1.71.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.0, Matio v1.5.23, Protocol Buffers v3.9.2, Pugixml v1.11.4.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.2, Matplotlib v3.1.1.
      • Additional Python modules (e.g., Scipy) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.
    • The meta-xilinx layer points to rel-v2020.3 branch.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh zeus 23.04 zedboard-zynq7
$ ./geniux-builder.sh zeus 23.04 raspberrypi4-64
$ ./geniux-builder.sh zeus 23.04 intel-skylake-64
$ ./geniux-builder.sh zeus 23.04 qemuarm64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Dunfell 23.04.0

  • Operating System based on the Yocto Project version 3.1.24 LTS.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.1, CMake v3.16.5, GCC v9.5.0 (+ libgfortran), make v4.3, ninja v1.10.0, Python v3.8.12.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.8.5.0.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.7.0, VOLK v2.4.1.
      • C++ supporting libraries: Boost v1.72.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.11.4, Pugixml v1.11.4.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.8, Matplotlib v3.2.1.
      • Additional Python modules (e.g., Scipy) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh dunfell 23.04 zedboard-zynq7
$ ./geniux-builder.sh dunfell 23.04 raspberrypi4-64
$ ./geniux-builder.sh dunfell 23.04 intel-corei7-64
$ ./geniux-builder.sh dunfell 23.04 qemuarm64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Gatesgarth 23.04.0

  • Operating System based on the Yocto Project version 3.2.4.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.2, CMake v3.18.2, GCC v10.2.0 (+ libgfortran), make v4.3, ninja v1.10.1, Python v3.8.5.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.9.5.0.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, VOLK v2.5.0.
      • C++ supporting libraries: Boost v1.74.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.13.0, Pugixml v1.13.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.8, Matplotlib v3.3.2.
      • Additional Python modules (e.g., Scipy) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.
    • The meta-xilinx layer points to the rel-v2021.2 branch.
    • Use linux-xlnx kernel for zedboard-zynq7 machine, based on Linux kernel 5.10.
    • The meta-gnss-sdr layer is compatible with Xilinx PetaLinux Tools v2021.2.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh gatesgarth 23.04 zedboard-zynq7
$ ./geniux-builder.sh gatesgarth 23.04 zc706-zynq7
$ ./geniux-builder.sh gatesgarth 23.04 raspberrypi4-64
$ ./geniux-builder.sh gatesgarth 23.04 intel-skylake-64
$ ./geniux-builder.sh gatesgarth 23.04 qemuarm64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Hardknott 23.04.0

  • Operating System based on the Yocto Project version 3.3.6.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.3, CMake v3.19.5, GCC v10.3.0 (+ libgfortran), make v4.3, ninja v1.10.2, Python v3.9.9.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.9.5.0.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, VOLK v2.5.0.
      • C++ supporting libraries: Boost v1.75.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.15.2, Pugixml v1.13.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.2.8, Matplotlib v3.4.1.
      • Additional Python modules (e.g., Scipy) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD v3.15.LTS (+ gr-uhd), gr-osmosdr v0.2.3 (+ rtl-sdr and hackrf), gr-iio v0.3, libiio v0.23, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-raspberrypi, meta-intel, and openembedded-core/meta layers.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh hardknott 23.04 intel-corei7-64
$ ./geniux-builder.sh hardknott 23.04 raspberrypi4-64
$ ./geniux-builder.sh hardknott 23.04 qemuarm64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Honister 23.04.0

  • Operating System based on the Yocto Project version 3.4.4.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.3, CMake v3.21.1, GCC v11.2.0 (+ libgfortran), make v4.3, ninja v1.10.2, Python v3.9.9.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.10.2.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, VOLK v2.5.0.
      • C++ supporting libraries: Boost v1.77.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.18.0, Pugixml v1.13.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.4.1, Matplotlib v3.4.1.
      • Additional Python modules (e.g., Scipy) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD 4.3 (+ gr-uhd), gr-iio, gr-osmosdr v0.2.0 (+ rtl-sdr and hackrf), libiio v0.24, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-xilinx-vendor, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.
    • The meta-xilinx layer points to the rel-v2022.2 branch.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh honister 23.04 intel-corei7-64
$ ./geniux-builder.sh honister 23.04 raspberrypi4-64
$ ./geniux-builder.sh honister 23.04 zedboard-zynq7
$ ./geniux-builder.sh honister 23.04 zc706-zynq7
$ ./geniux-builder.sh honister 23.04 zcu102-zynqmp
$ ./geniux-builder.sh honister 23.04 zcu208-zynqmp

You can replace 23.04 by latest in order to get the latest developments.

Geniux Kirkstone 23.04.0

  • Operating System based on the Yocto Project version 4.0.8 LTS.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.5, CMake v3.22.3, GCC v11.2.0 (+ libgfortran), make v4.3, ninja v1.10.2, Python v3.10.4.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.10.5.0-rc1
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.9, Lapack v3.9.0, VOLK v2.5.2.
      • C++ supporting libraries: Boost v1.77.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.19.4, Pugixml v1.13.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.4.3, Matplotlib v3.5.1.
      • Additional Python modules (e.g., Scipy) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD 4.3 (+ gr-uhd), gr-iio, gr-osmosdr v0.2.0 (+ rtl-sdr and hackrf), libiio v0.24, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-raspberrypi, meta-intel, and openembedded-core/meta layers.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh kirkstone 23.04 intel-corei7-64
$ ./geniux-builder.sh kirkstone 23.04 raspberrypi4-64

You can replace 23.04 by latest in order to get the latest developments.

Geniux Langdale 23.04.0

  • Operating System based on the Yocto Project version 4.1.3.
  • It brings, among many others, the following software packages:
    • Development tools: Automake v1.16.5, CMake v3.24.0, GCC v12.2.0 (+ libgfortran), make v4.3, ninja v1.11.1, Python v3.10.6.
    • Goodies for signal processing:
      • GNSS-SDR v0.0.18.
      • SDR framework: GNU Radio v3.10.3.
      • Number crunching libraries: Armadillo v10.8.0, FFTW v3.3.10, Lapack v3.10.1, VOLK v2.5.2.
      • C++ supporting libraries: Boost v1.80.0, gflags v2.2.2, glog v0.5.0, googletest v1.12.1, Matio v1.5.23, Protocol Buffers v3.21.5, Pugixml v1.13.
      • Graphical representation: gnss-sdr-monitor v1.0, Gnuplot v5.4.3, Matplotlib v3.5.3.
      • Additional Python modules (e.g., Scipy) can be installed with pip3.
    • Software drivers and tools for RF front-ends: UHD 4.3 (+ gr-uhd), gr-iio, gr-osmosdr v0.2.0 (+ rtl-sdr and hackrf), libiio v0.23, libad9361-iio v0.2, iio-oscilloscope v0.14.
  • It can be built for machines defined by the meta-xilinx-bsp, meta-xilinx-vendor, meta-raspberrypi, meta-intel, and openembedded-core/meta layers.

Examples on how to generate images and the SDK using the yocto-geniux repo:

$ ./geniux-builder.sh langdale 23.04 intel-corei7-64
$ ./geniux-builder.sh langdale 23.04 raspberrypi4-64
$ ./geniux-builder.sh langdale 23.04 zedboard-zynq7
$ ./geniux-builder.sh langdale 23.04 zcu208-zynqmp

You can replace 23.04 by latest in order to get the latest developments.

Flashing images on an SD card

Starting from Geniux Zeus 21.08, the geniux-builder.sh script produces .wic images that can be flashed on an SD card and your device will be ready to go. For image flashing, we recommend using a software tool such as Balena Etcher. Just pick up the gnss-sdr-demo-image-$MACHINE-yyyymmddHHMMSS.rootfs.wic.xz file, flash your SD card, insert it in your device, and it will be ready to boot and run gnss-sdr. Other flashing options here.

Key repositories

All the required information for building a Geniux release is contained in three public repositories:

  • meta-gnss-sdr layer: Yocto layer defining all the packages in the Geniux distribution, including the recipes for downloading and building them, their cryptographic hash, the way to create customized full-system images.
    • URL: https://github.com/carlesfernandez/meta-gnss-sdr
    • Each Geniux version is defined in a different branch: rocko, sumo, thud, warrior, zeus, dunfell, gatesgarth, hardknott, honister, kirkstone, langdale. Those branches are updated as we learn more about the Yocto Project usage, so they evolve in time.
  • oe-gnss-sdr-manifest: Manifest containing the specific commits of all the other Yocto layers required to build Geniux (notably, openembedded-core, meta-openembedded, meta-qt5, meta-sdr, meta-xilinx, meta-raspberrypi, meta-intel, etc.).
    • URL: https://github.com/carlesfernandez/oe-gnss-sdr-manifest
    • Each Geniux version is defined in a different branch: rocko, sumo, thud, warrior, zeus, dunfell, gatesgarth, hardknott, honister, kirkstone, langdale.
    • Tags: each tag corresponds to a version of the manifest in which the meta-gnss-sdr has been pinned to a specific commit. This allows fully-reproducible buildings in the future since it defines a fully-specified software system set. Examples: rocko-20.09, sumo-20.09, thud-20.09, etc.
    • In the above instructions, when MANIFEST_DATE is set to latest, all the layers are pinned to a specific commit but except the meta-gnss-sdr layer, which points to whatever it is in the corresponding branch of that layer at that point of time.
  • yocto-geniux: Tool for the virtualization and automation of the building process.

If you miss any feature on Geniux, or have an idea on how to make it better, pull requests and issues are welcome on those repositories. Their contents are released under the MIT License.

Disclaimer

Yocto Project and all related marks and logos are trademarks of The Linux Foundation. This website is not, in any way, endorsed by the Yocto Project or The Linux Foundation.

 

 

Enjoy Geniux!

Leave a comment