Skip to main content

ArborXR Field Provisioning Tools

Reason this release was yanked:

Broken

Project description

ArborXR Field Provisioning Tools

This project is a collection of tools to help provision and recover Android devices on ArborXR's XRDM. The provisioning tools can be used interactively on a computer, or deployed onto the ArborXR Field Provisioning Device (FPD). The tools are intended to be used without the need for network connectivity to the ArborXR XRDM backend.

Features

  • Provision new Android devices (XR, Phone, Tablet) with an XRDM configuration package.
  • Re-provision existing devices with a configuration package.
  • Replace an XRDM client with an older or newer version.

Table of Contents

Field Provisioning Device (FPD)

The ArborXR Field Provisioning Device is a headless computer which can deploy XRDM1 Configuration Packages without the need for internet access.

Hardware Information

Currently supported hardware is currently a Raspberry Pi Zero 2 W running RBPI OS 64-bit. There are custom modifications made to the base image to support the dual mode USB (host/gadget). The image customizations are currenly not well documented, and in the future should be captured in code to be able to apply to a fresh RBPI OS image.

device_start.sh - This is a specific script which is launched by systemd to automatically start the provisioning tool on the FPD. There is a check to see if a certain GPIO is set to check for "Setup" or "Provision" mode is set.

Setup Mode

When the FPD selector switch is in "Setup" Mode, the device can be connected to any computer and will show up as a "Mass Storage Device". This is where the user can place XRDM Configuration Packages and/or an alternate client build.

You must follow a specific directory structure:

/configuration-packages

Place XRDM configuration packages here. Currently undetermined behavior if you place multiple configuration packages which apply to the same device. We don't have logic which can select the "best" package. Make sure you only place one per device type

/client

(Optional) You can place an alternate client to use instead of what's included in the configuration package. This can be used when needing to downgrade the client version to recover a device.

field-provisioning-tools-update.zip

This is the update package. It will be read as soon as the device boots into "Provision" mode. It will automatically be deleted as soon as its applied.

Provision Mode

When the FPD selector switch is in "Provision" Mode, the device can be connected to any Android device which USB debugging is enabled, and it will automatically start provisioning the device with any available configuration package that matches the device model connected.

This all happens in a headless manner, but once the device is provisioned the FPD will stop, and wont start another provisioning run until a new device is detected.

Currently XR devices require USB power injection due to the FPD HW not being able to supply enough current. Please use the included wall outlet and connector.

Development Environment Setup

Python 3.x is required.

  1. Clone the repository:

  2. Create and activate a virtual environment:

    python3 -m venv venv
    source venv/bin/activate  # On Windows use `venv\Scripts\activate`
    
  3. Install the dependencies:

    pip install -r requirements.txt
    

Running the Provisioning Tool

To run the provisioning tool, use the following command to install it into the path:

install.sh

Then it can be run using

abxr-provision

On non-Linux systems (MacOS/Windows) will start the provisioner in "single shot mode". It loads with the default options:

  • Searches for configuration packages in $HOME/abxr/configuration-packages
  • Searches for any special client APK overrides in $HOME/abxr/client

You can override the base path by setting the ABXR_ARCHIVE_PATH environment variable before starting the provisioning tool.

You can also pass arguments to the application which allow to specify exact locations of the configuration packages, client, or specific device serial numbers to match. This is useful when using the application in a multi-device environment

abxr-provision --config-package <path-to-config-packages> --client <path-to-client-for-override> --device-serial <specific-device-to-target> --force-upgrade

All of the command line switches are optional, and can be used interchangably. The force upgrade option will always reinstall the client even if the versions match.

Building a update package for the provisioning hardware

build_update_package.sh

This will package the project into a zip archive called field-provisioning-tools-update.zip that can be placed in the root directory of the HW provisioning device when mounted in "Setup Mode". When the device is booted back in provisioning mode, the update will automatically be applied.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abxrfpt-0.4.0.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abxrfpt-0.4.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file abxrfpt-0.4.0.tar.gz.

File metadata

  • Download URL: abxrfpt-0.4.0.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for abxrfpt-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d42b0c05020d69f4009aab00662cc06ec24101b79997fb93f5821304ae083ae8
MD5 16f55e1c1e75873d7300294ed627308f
BLAKE2b-256 f658da5b82e8c81224083d5a7f89130ed66778c0908a93534f753ee305bf954b

See more details on using hashes here.

File details

Details for the file abxrfpt-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: abxrfpt-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.22

File hashes

Hashes for abxrfpt-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64a8be12d1534498b2bb70b93d56bff8e8bcd315ca6f9c8fa0d8ccff9e77e49c
MD5 95b1020e6c6fa9fe2351e6bc21296c8a
BLAKE2b-256 6a18e9d239b2704dd04630c7d92f52c95a597038a18291ebf7790c6d630983d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page