Auto Register¶
This section shows how to enable the lmp-device-auto-register
recipe. This
recipe creates a systemd oneshot service that will automatically register the
device on first boot once it has internet connectivity.
This is done by providing an API Token that has devices:create scope.
Warning
Do not use the API Token in production. The use of an API Token is only intended for usage in a development environment. For more information, read Manufacturing Process for Device Registration. As customers move closer to production, do not hesitate to contact Foundries.io to discuss the best practices to automatically register devices.
The recipe lmp-device-auto-register is provided by meta-lmp and can be added by
customizing your meta-subscriber-overrides.git
.
Prerequisites¶
To follow this section, it is important to have:
- Completed the Getting started until the Flash your Device section.
Creating Token¶
Go to Tokens and create a new Api Token by clicking on + New Token.
Complete with a Description and the Expiration date and select next.
Select the device:create token and select your Factory. You can later revoke this access and set up a new token once you are familiar with the API Access.
Enabling Recipe¶
Clone your meta-subscriber-overrides.git
repo and enter its directory:
git clone -b devel https://source.foundries.io/factories/<factory>/meta-subscriber-overrides.git
cd meta-subscriber-overrides
Edit the recipes-samples/images/lmp-factory-image.bb
file and add the recipe on the CORE_IMAGE_BASE_INSTALL
list:
gedit recipes-samples/images/lmp-factory-image.bb
recipes-samples/images/lmp-factory-image.bb:
diff --git a/recipes-samples/images/lmp-factory-image.bb b/recipes-samples/images/lmp-factory-image.bb
--- a/recipes-samples/images/lmp-factory-image.bb
+++ b/recipes-samples/images/lmp-factory-image.bb
@@ -30,6 +30,7 @@ CORE_IMAGE_BASE_INSTALL += " \
networkmanager-nmcli \
git \
vim \
+ lmp-device-auto-register \
packagegroup-core-full-cmdline-extended \
${@bb.utils.contains('LMP_DISABLE_GPLV3', '1', '', '${CORE_IMAGE_BASE_INSTALL_GPLV3}', d)} \
"
Configuring the LmP Auto Register¶
Create the required directory structure for this recipe:
mkdir -p recipes-support/lmp-device-auto-register/lmp-device-auto-register
Create the api-token
file and replace <YOUR_API_TOKEN>
with the scoped token
created in the previous steps:
gedit recipes-support/lmp-device-auto-register/lmp-device-auto-register/api-token
recipes-support/lmp-device-auto-register/lmp-device-auto-register/api-token:
<YOUR_API_TOKEN>
Create the file lmp-device-auto-register.bbappend
in order to give the recipe
access to the api-token
file.
gedit recipes-support/lmp-device-auto-register/lmp-device-auto-register.bbappend
recipes-support/lmp-device-auto-register/lmp-device-auto-register.bbappend:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
Add the changed files, commit and push:
git add recipes-samples/images/lmp-factory-image.bb git add recipes-support/lmp-device-auto-register/lmp-device-auto-register/api-token git add recipes-support/lmp-device-auto-register/lmp-device-auto-register.bbappend git commit -m "lmp-device-auto-register: Adding recipe" git push
The latest Target named platform-devel
should be the CI job you just created.
When FoundriesFactory CI finishes all jobs, download and flash the image.
Testing Auto Register¶
After booting the new image, if your device is connected to the internet, the device will automatically register to your Factory and should be visible by navigating to the web interface at https://app.foundries.io/factories/, clicking your Factory and selecting the Devices tab.
On your device, use the following command to list the lmp-device-auto-register
service:
systemctl list-unit-files | grep enabled | grep lmp-device-auto-register
Example Output:
lmp-device-auto-register.service enabled enabled
Verify the lmp-device-auto-register
application status:
systemctl status lmp-device-auto-register
Example Output:
lmp-device-auto-register.service - Script to auto-register device into Factory
Loaded: loaded (/usr/lib/systemd/system/lmp-device-auto-register.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2021-09-12 17:34:06 UTC; 5min ago
Process: 774 ExecStart=/usr/bin/lmp-device-auto-register (code=exited, status=0/SUCCESS)
Main PID: 774 (code=exited, status=0/SUCCESS)