Link Search Menu Expand Document


This tool allows for code to be uploaded remotely to Espruino hardware devices from a web browser. The uploader works by fetching a file containing valid espruino code, then writes to a connected espruino device using the UART.js library.

The uploader can write to both flash or RAM storage, and will check code currently stored on the device to prevent redundent writes.

This tool relies upon web bluetooth to work, and as such requires a supported device/browser to work. You can find a list of supported browsers here.

Source code for the uploader is available here


The package can be installed via npm using:

npm i remote-uploader --save

Alternatively, you can include the following script tag:

<script src=""></script>


Creating a connection

To create a new connection:

let connection = new Remote();

Uploading code to the device

To upload code to a connected device. Important to note that the upload function will have a delay before returning whilst code is being written to the device:

connection.upload(url).then(success => {
    } else {

Additionally, you can specify true to upload code directly to flash storage (flash uploading does not work for bangle devices):

connection.upload(url,true).then(success => {
    } else {

Identifying a device

Retrieve device type (e.g. pixl, bangle, puck):

connection.getDeviceType().then(result => {

Reading code from device

You can retrieve code stored on the device using:

connection.dump().then((result) => {

Reset a devices memory

To reset the device (removes all code currently stored on the device):


Disconnecting a device

To disconnect the device from the current webpage:


Calling functions from the device

You can execute methods written to the device using:

where foo is a string representing the function being called on the device. For example, to call foo you would use:"foo();");

Retrieving data from the device

You can retrieve a value from the device using:

connection.eval(foo).then((res => {

Where foo is a string representing the function being called on the device. Returns a promise containing resulting value.