Production Image

Create a production image of the same OS and hardware to load onto multiple devices during manufacturing. These devices will automatically register when you determine. This method is more complex and recommended for experienced software developers. You can delay registration if desired for a custom device name. Please contact Remote.It Support support @remote.it if you need this option.

This method is supported for any platforms which can install the Device Package and only supports the device to be used as connection endpoints and not as an initiator of connections. If you need outbound connections as well, please contact support @remote.it before proceeding.

  • The device will be registered to the same account

  • The device will be configured with the same services which were defined

  • The Remote.It version will be fixed until you create a new production image

  • The device will register using the HOSTNAME of the device unless custom naming procedures are used (you can rename the device in Remote.It later)

Setup

Using a device which will serve to generate your production image, we will install the device package and test the setup of the device including services and connections. Then you will remove the Remote.It identity files to prepare it for use as a production image.

1. Create the registration file

Create a file in /etc/remoteit called "registration" (no extension) with nothing in it to prevent the device from registering to your account before you are ready. This is essential in case the device is turned on with internet connection to prevent the device from registering with remote.it prematurely. And please make sure no other files in /etc/remoteit when installing the package.

sudo mkdir -p /etc/remoteit
sudo touch /etc/remoteit/registration 

2. Install Remote.It on Your Device for the Production Image

  1. Install Remote.It Using the One-Line Code without the Registration Code

Run the code your production image device.

R3_VERSION="XXX" sh -c "$(curl -L https://downloads.remote.it/remoteit/install_agent.sh)"
Variable Name Option TypeDescription

R3_VERSION

String

(Optional) Device package version to install. If not defined, then latest release is used. (This will be the same for all devices created from your production image)

3. Set the Bulk Identification Code

Write the Product Bulk Identification Code to your registration file which will be used to register the device to your account with services.

echo YOUR-PRODUCT-CODE | sudo tee /etc/remoteit/registration

DO NOT REBOOT. This is the last step before creating your production image. If your device is rebooted after this code is written, it will register to your account and you will need to remove /etc/remoteit/config.json on your production image.

Devices will register with the HOSTNAME. Modify the HOSTNAME prior to first boot with network connection for unique names.

If you want the device to register with a custom name, other processes will be needed contact support@remote.it.

4. Start production

Before creating your image, make sure to remove the device identifier file /etc/remoteit/config.json if it exists. This file cannot be present on your production image.

You are now ready to use this device as an image for the rest of your devices. For example, on a Raspberry Pi you can copy the SD card and insert it into another Raspberry Pi.

When these devices are booted with connection to the internet, they will automatically be registered into the account which created the product definition with the defined services enabled.

Again, custom naming must be in place prior to registration.

Workflows for Updating State and Other Attributes

Sometimes you want to have processes on your backend know about your devices and services. Things like state and potentially update device name or other meta data. In these cases, you can combine this registration flow with webhooks and using our GraphQL API.

It is not recommended to put your access key and secrets on your edge devices since this can be problematic if you need to rotate keys. Instead have your backend system make the API requests.

See the below diagram

Last updated