This article describes how to prepare, deploy, verify, and remove custom BrightScript plugins on BrightSign devices using Device Tasks in the Appspace console.
In this article:
Prerequisites
-
An Appspace account with permission to manage devices.
-
A BrightSign device registered and online in the Appspace console.
-
Appspace for Devices app version 2.94.0 or later.
-
BrightSign custom plugin device task templates (included in the attached .zip file) imported to the Device Tasks extension.
Update Plugins
To update plugins using BrightSign-specific templates, run brightsign_-update-plugins.admpkg to manage custom plugins.
What it does
-
Copies new or updated plugin files into the BrightSign
plugins/directory. -
Overwrites existing files with the same name (used for version updates).
Typical use cases
-
Deploying a new custom plugin to one or more BrightSign devices.
-
Rolling out updated plugin versions.
-
Re‑pushing a clean copy of a plugin when a file is suspected to be corrupted.
Parameters
Plugins download URL - Download URL pointing to a .zip containing the plugin folders and files (Sample zip content: SetupWiFi/main.brs, SetupWiFi/cert.pem, CustomScript/main.brs)
Reboot upon completion - Reboots after executing the device task if value is set to True
Notes
-
Host a
.zipfile containing the plugin files -
The plugin files should be prepared following this guide:
-
Create the custom plugin directory called
CustomScript -
Under the
CustomScriptdirectory, create amain.brsfileFunction CustomScript_Initialize(msgPort As Object, userVariables As Object, bsp as Object)
LogCustomScriptMessage("CustomScript_Initialize - entry")
return NewCustomScript(msgPort, userVariables, bsp)
End Function
Function NewCustomScript(msgPort As Object, userVariables As Object, bsp as Object)
LogCustomScriptMessage(" @@@ CustomScript Plugin Appspace @@@ ")
s = {}
s.msgPort = msgPort
s.userVariables = userVariables
s.bsp = bsp
s.ProcessEvent = CustomScript_ProcessEvent
' START OF CUSTOM SCRIPT ````````
' add your custom script here
LogCustomScriptMessage("Sample custom script executed")
' END OF CUSTOM SCRIPT ``````````
return s
End Function
Function CustomScript_ProcessEvent(event As Object) as boolean
returnValue = false
return returnValue
End Function
Sub LogCustomScriptMessage(message as string)
customScriptSystemLog = createobject("roSystemLog")
customScriptSystemLog.sendline("CustomScript|main.brs: " + message)
End Sub -
Insert custom BrightScript logic only after the
' START OF CUSTOM SCRIPTmarker and save themain.brsfile. -
Add any other files in the
CustomScriptdirectory if necessary. -
To add additional plugins:
-
Repeat step 1 to 4 replacing
CustomScriptwith a new plugin name (eg.SetupWiFi) -
In step 2, replace all
CustomScriptcode with the new plugin name (eg.SetupWiFi). Themain.brsshould look like:Function SetupWiFi_Initialize(msgPort As Object, userVariables As Object, bsp as Object)
LogSetupWiFiMessage("SetupWiFi_Initialize - entry")
return NewSetupWiFi(msgPort, userVariables, bsp)
End Function
Function NewSetupWiFi(msgPort As Object, userVariables As Object, bsp as Object)
LogSetupWiFiMessage(" @@@ SetupWiFi Plugin Appspace @@@ ")
s = {}
s.msgPort = msgPort
s.userVariables = userVariables
s.bsp = bsp
s.ProcessEvent = SetupWiFi_ProcessEvent
' START OF CUSTOM SCRIPT ````````
' add your custom script here
LogSetupWiFiMessage("Sample custom script executed")
' END OF CUSTOM SCRIPT ``````````
return s
End Function
Function SetupWiFi_ProcessEvent(event As Object) as boolean
returnValue = false
return returnValue
End Function
Sub LogSetupWiFiMessage(message as string)
SetupWiFiSystemLog = createobject("roSystemLog")
SetupWiFiSystemLog.sendline("SetupWiFi|main.brs: " + message)
End Sub
-
- Zip the folders containing the plugin files. Please note that it’s important to zip the plugin folders as they will be used to determine the plugin name. When unzipped, the folder structure should look like this:

-
List Plugins
To list plugins using BrightSign-specific templates, run brightsign_-list-plugins.admpkg to view installed custom plugins.
What it does
-
Returns the list of plugin files present in the
plugins/directory on the device.
Typical use cases
-
Verifying which plugins are currently deployed before making changes.
-
Confirming that Update/Delete tasks actually updated the filesystem.
-
Investigating discrepancies between expected and actual plugin sets.
Relink Plugins
To relink plugins using BrightSign-specific templates, run brightsign_-relink-plugins.admpkg to re-establish connections for custom plugins.
What it does
-
Scans the
plugins/directory. -
Regenerates
plugins.brsbased on the actual plugin files currently present. -
Eliminates the need for manual editing of
plugins.brs.
Typical use cases
-
Rectify devices that have the plugin files available but the
plugins.brswas reset
Parameters
Reboot upon completion - Reboots after executing the device task if value is set to True
Delete Plugins
To delete plugins using BrightSign-specific templates, run brightsign_-delete-plugins.admpkg to remove custom plugins.
What it does
-
Removes specific custom plugin directories from the BrightSign
plugins/directory.
Typical use cases
-
Retiring obsolete plugins
-
Removing an erroneous plugins
-
Cleaning up old/unused plugins that might conflict or cause confusion.
Parameters
Plugin names- Case sensitive comma-separated value to specify the plugins to be deleted (Eg. SetupWiFi,CustomScript)
Reboot upon completion - Reboots after executing the device task if value is set to True
For more information on deploying device tasks, refer to the FAQ article “How Do I Deploy an Advanced Device Task?”.
Note
BrightSign custom plugin device task templates are provided in the attached .zip file and can be imported into the Device Tasks extension.
