{"id":21186673,"url":"https://github.com/geontech/docker-redhawk-ubuntu","last_synced_at":"2025-03-14T20:18:22.972Z","repository":{"id":56206436,"uuid":"94131492","full_name":"Geontech/docker-redhawk-ubuntu","owner":"Geontech","description":"Docker-REDHAWK (https://github.com/GeonTech/docker-redhawk) built on Ubuntu 16.04","archived":false,"fork":false,"pushed_at":"2020-11-20T13:57:59.000Z","size":74,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-21T12:48:46.770Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Geontech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-12T19:12:13.000Z","updated_at":"2020-11-20T13:58:02.000Z","dependencies_parsed_at":"2022-08-15T14:40:39.236Z","dependency_job_id":null,"html_url":"https://github.com/Geontech/docker-redhawk-ubuntu","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-ubuntu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-ubuntu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-ubuntu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geontech%2Fdocker-redhawk-ubuntu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Geontech","download_url":"https://codeload.github.com/Geontech/docker-redhawk-ubuntu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243639557,"owners_count":20323511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T18:25:09.970Z","updated_at":"2025-03-14T20:18:22.949Z","avatar_url":"https://github.com/Geontech.png","language":"Shell","readme":"# Docker-REDHAWK Ubuntu Edition\n\nThis repository builds a series of Docker images and scripts for standing up an installation of REDHAWK SDR as well as several example devices and a web server.  If you're familiar with [Docker-REDHAWK](http://github.com/GeonTech/docker-redhawk), this document will seem very familiar except for this:\n\n \u003e **IMPORTANT NOTE:** This version's Components will not be binary compatible with a CentOS 7 or RPM -based installation.  You cannot deploy Components from one installation type onto the GPP of another.  That said, nothing should limit you from having an Ubuntu -borne Node join a CentOS 7 Domain or vice versa.\n\nFor the USRP image (geontech/redhawk-ubuntu-usrp), the UHD driver is recompiled to a newer version and the USRP_UHD Device is compiled from source against that newer driver.  The result is access to the latest Ettus Research USRPs from the container.\n\n \u003e **DOCKER:** You must be using at least Docker 17.  This was tested using Docker-CE.\n\n## Installing\n\nRun `make` to pull the prebuild images and link the helper scripts.  Depending on your internet connection, this may take several minutes.\n\n## Building\n\nTo build all images, simply type `make build`.  At the command line, you can also specify the variables: `REST_PYTHON` and `REST_PYTHON_BRANCH`, which specifically apply to the `geontech/redhawk-ubuntu-webserver`.\n\nYou will end up with the following images that are meant't to be run individually.\n\n* `geontech/redhawk-ubuntu-base`: This is the repository installation, omni services (non-running), and an `/etc/omniORB.cfg` update script.\n* `geontech/redhawk-ubuntu-runtime`: The typical \"REDHAWK Runtime\" group install.  It is the basis for the `domain` and various device launchers.\n\nThe remaining images are derived and come with helper scripts for deploying your system:\n\n * `geontech/redhawk-ubuntu-omniserver`: Inherits from `geontech/redhawk-ubuntu-base`, it has OmniORB and OmniEvents services wrapped in a single image, intended to be run as a singleton in the network.  If you have an Omni server running elsewhere, you do not need this.\n * `geontech/redhawk-ubuntu-development`: Configured to expose a workspace volume and run the IDE.\n * `geontech/redhawk-ubuntu-domain`: Configured to run as a Domain.\n * `geontech/redhawk-ubuntu-gpp`: Configured to run as a GPP -bearing Node.\n * `geontech/redhawk-ubuntu-rtl2832u`: Configured to run as an RTL2832U -bearing Node. \n * `geontech/redhawk-ubuntu-usrp`: Configured to run as an USRP_UHD -bearing Node.\n * `geontech/redhawk-ubuntu-bu353s4`: Configured to run as a BU353S4 -bearing Node.\n * `geontech/redhawk-ubuntu-webserver`: Instantiates a rest-python web server.\n\n The following scripts will also be linked into the main directory.  Each script supports `-h` and `--help` to learn the usage of the script, and running the script with no arguments provides a status update.\n\n * `login`: Starts a bash shell for the named container (basically a `docker exec` wrapper).\n * `show-log`: Displays a log from a named container.\n * `omniserver`: Manages an instance of the OmniORB services (locally to the Docker host, optional).\n * `domain`: Manages REDHAWK Domain instances.\n * `gpp`: Starts or stops a GPP for the named domain and external OmniServer IP address.\n * `rtl2832u`: Manages [RTL2832U](http://github.com/redhawksdr/RTL2832U) Nodes (USB-attached devices).\n * `usrp`: Manages [USRP_UHD](http://github.com/redhawksdr/USRP_UHD) Nodes (USB- or network-attached devices).\n * `bu353s4`: Manages [BU353S4](http://github.com/geontech/BU353S4) Nodes (USB serial).\n * `volume-manager`: Creates or deletes Docker volumes labeled for use as an SDRROOT or a development (IDE) Workspace.\n * `rhide`: Runs an instance of the REDHAWK IDE with named SDRROOT and workspace (Docker volume or host file system).\n * `webserver`: Manages an instance of a REST-Python server.\n\n## Usage\n\nThe main elements one needs for a REDHAWK system are the naming and event services (OmniORB and OmniEvents), a Domain, and a GPP.  If the scripts are not in the main directory, use `make scripts` to generate the links.  Each scripts supports the `-h` and `--help` that cover usage.  Below is a simplified example.\n\n    ./omniserver\n    ./domain start REDHAWK_DEV1\n\nAt this point you will have a functioning REDHAWK Domain at a host-exposed OmniORB server.  Its container name will be `REDHAWK_DEV`.  Other non-Docker REDHAWK instances can now join this Domain as well as long as your host system's firewall settings expose ports 2809 and 11169.\n\n    ./gpp start GPP1 -d REDHAWK_DEV1\n\nA GPP container launches the node GPP1 on the REDHAWK_DEV1 Domain.  Its container name will be `GPP1-REDHAWK_DEV1`.  You can now launch waveforms.\n\nIf you would like to log into the Domain container, use `login`:\n\n    ./login REDHAWK_DEV1 redhawk\n\nYou will enter a bash shell as the `redhawk` user.  \n\n \u003e **Note:** Not all images have this user defined.  For example, the only user in the `geontech/redhawk-ubuntu-omniserver` image is `root`, the default.\n\n \u003e **Note:** For containers where the name is derived from the Node and Domain names (e.g., GPP), you have to specify the full container name (in this example, `GPP1-REDHAWK_DEV1`).\n\n## Persistent SDRROOT\n\nUse `volume-manager` to create an SDRROOT volume that can be mounted to the Domain and IDE.\n\n    ./volume-manager create sdrroot MY_REDHAWK\n    ./domain start MY_DOMAIN --sdrroot MY_REDHAWK\n\nThe result will be a Domain with a persistent SDRROOT.\n\n## Running the IDE\n\nThe `geontech/redhawk-ubuntu-development` image provides the development libraries necessary to develop components and devices.  Use the `rhide` script to map your SDRROOT volume and workspace (absolute path or volume name):\n\n    ./rhide --sdrroot MY_REDHAWK --workspace /home/me/workspace\n\n## REST-Python Web Server\n\nThe following section contains information about the `geontech/redhawk-ubuntu-webserver` REST-Python server image.\n\n### Running\n\nRunning the REST-Python server via the script is simple:\n\n    ./webserver start\n\nThe host-side port to map can be set using either `-p` or `--port`.  \n\nAdditionally, if an alternate version of REST-Python should be mounted, use `--rest-python` to specify the local absolute file path.  Alternatively, one can build the image with a different version already installed (see [this](#customizing-the-image)).\n\n### Customizing the Image\n\nBuilding the REST-Python `geontech/redhawk-ubuntu-webserver` image has a two options:\n\n * `REST_PYTHON`: URL to a git server where the REST-Python source is located (default is [Geon's](http://github.com/geontech/rest-python)).\n * `REST_PYTHON_BRANCH`: Branch name of the preferred REST-Python source tree (default is master).\n\nSpecifying no options (`make geontech/redhawk-ubuntu-webserver`) bakes in the default REST-Python server and branch.  The above options can be specified by passing the variables at make time:\n\n    make geontech/redhawk-ubuntu-webserver REST_PYTHON=http://my_other_target/repo\n\n## Device Node Controllers\n\nThe following devices have their own images, launching scripts, etc. to facilitate rapid development and integration with hardware.  The included devices are the REDHAWK SDR community's GPP, USRP_UHD and RTL2832U as well as Geon's [BU353S4](http://github.com/geontech/BU353S4).\n\nIn each case, similar to running `./domain` with no arguments, each of these device launchers will also print a status message for all running instances of their respecive images.\n\n### GPP\n\nThe `geontech/redhawk-ubuntu-gpp` image provides a Node running a GPP Device for your system.  The `gpp` script provides only a few options for naming the device, setting the Domain name, etc.  See the `--help` for usage.  Starting with the default domain:\n\n    ./gpp start MyGPP\n\n\n### USRP_UHD\n\nThe `geontech/redhawk-ubuntu-usrp` image compiles the 3.10 version of UHD and then compiles the USRP_UHD from source.  The resulting device is capable of working with many of the latest Ettus Research USRPs like the USB-attached B205mini.  The associated `usrp` script allows you to configure the Device in its Node when starting an instance of it.\n\nFor the B205mini, it identifies as the `b200` type.  With it connected to a powered USB 3.0 port:\n\n    ./usrp start MyB205 --usrptype b200\n\nThis will start a container attached to REDHAWK_DEV (the default Domain).  The container will be mapped to the host's `/dev/usb` bus as a volume so that UHD can locate the device and update it before the node is started.  \n\n \u003e **Note:** Because the container startup is going through that lengthy process, startup may take several seconds.\n\n Other USRP types can be as well.  See the script's `--help` for a list of options.\n\n#### Special notes for USB USRPs\n\nUSB-attached USRPs like the B205mini may need firmware loaded the first time the device is plugged into the computer (or virtual machine).  Otherwise, when you `show-log` the container, you will see CORBA Transient errors when the device fails to initialize quickly enough.  You can stop and restart the container andd the problem will be resolved, or you can run a container first to initialize the device:\n\n    docker run --rm -it \\\n        -v /dev/bus/usb:/dev/bus/usb \\\n        --privileged \\\n        geontech/redhawk-usrp \\\n        bash -lc \"uhd_find_devices \u0026\u0026 uhd_usrp_probe\"\n\nThe result is a one-off container that will configure the firmware and FPGA image.\n\n### RTL2832U\n\nThe `geontech/redhawk-ubuntu-rtl2832u` image provides the RTL2832U Device.  The associated launcher script is `rtl2832u`:\n\n    ./rtl2832u start MyRTL\n\nThis will start a container with the RTL2832U device configured with its defaults.\n\n \u003e **IMPORTANT:** You may need to blacklist the RTL's kernel driver(s) on your host system before starting this container.\n\n #### Black-listing\n\n Methods for temporarily unloading the kernel drivers varies with host operating system distribution.  For example, Ubuntu 16.04 is by way of `modprobe`:\n\n    modprobe -r dvb_usb_rtl28xxu rtl2832\n\nTo make the change permanent, one creates a configuration (`.conf`) file in `/etc/modprobe.d` with these contents:\n\n    blacklist dvb_usb_rtl28xxu\n    blacklist rtl2832\n    blacklist rtl2830\n\n### BU353S4\n\nThe `geontech/redhawk-ubuntu-bu353s4` image provides Geon's BU353S4 FEI 2.0 -compliant USB-attached serial GPS receiver.  Like the Device, it has only one option: the path to the serial device in `/dev`.  The default is `/dev/ttyUSB0`.  Starting an instance on the default REDHAWK_DEV Domain is:\n\n    ./bu353s4 start MyGPS\n\nYou can then attach to the GPS port and pull coordinates, time, etc.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeontech%2Fdocker-redhawk-ubuntu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeontech%2Fdocker-redhawk-ubuntu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeontech%2Fdocker-redhawk-ubuntu/lists"}