Update and Recovery

ZentriOS is part of a larger sophisticated application framework installed on all ZentriOS devices. The framework provides a hardened bootloader, read/write file system, safemode recovery mechanism, and secure over-the-air (OTA) update capability.

Secure OTA Update

Zentri manages a secure online OTA server that offers each ZentriOS device with the ability to securely update individual files, applications or an entire firmware bundle. The OTA command is used to update device firmware.

The OTA process is secured by industry standard TLS1.0/HTTPS using server and client certificates that forces

HTTPS is the same security your web browser uses to make secure transactions with your bank over the internet. Zentri adds an additional layer of security, since the Zentri OTA server checks the unique security certificate and hardware UUID of each ZentriOS device that requests an update.

If an OTA update fails to complete for some reason, you can resume it later. Rejoin the network and run the ota command again.

Safe Mode

Safe mode operation is guaranteed in the unlikely event the device is configured in a way that causes repeated and/or unexpected reboots. The bootloader automatically switches to safe mode after eight exceptions occur with the offending boot application. Safe mode is indicated by the system.safemode.status variable.

It is easy to return the device to normal operation when the device is in safe mode. Follow the command sequence in the following table and your device will be back to normal in no time.

ZentriOS Commands Description

get system.safemode.status
faults_print
faults_reset
faults_print
reboot

<- Check if the device is in safemode? 0 = no, 1 = yes
<- Print a list of faults (8 faults should print)
<- Reset faults counter
<- Check there are no more faults after reset
<- Reboot the device

In some cases, a misconfigured device may quickly return to safe mode since the device may be inadvertently setup to invoke a fault. If this occurs, we recommend the device is returned to factory reset.

Once in safe mode, the device boots into the kernel. The kernel provides the ability to update the firmware, or switch back to ZentriOS using the faults_reset command and system.boot.image variable.

For a detailed discussion of recovery procedures, see the Recovery from Safemode application note.

Commands and Variables Available in Safe Mode

In safe mode a subset of the commands and variables is available.

Safe Mode Commands

CommandAbbr
factory_resetfac
faults_print faup
faults_reset faur
file_delete fde
format_flash format
get get
ls ls
ota ota
reboot reboot
save save
set set
version ver

Safe Mode Variables

VariableAbbrAccess
bus.data_bus bu dget/set
bus.log_bus bu lget/set
bus.mode bu mget/set
network.tls.ca_cert ne t aget/set
spi.master.active_gpio sp m gget/set
spi.master.active_level sp m lget/set
system.boot.image sy b iget/set
system.cmd.buffered sy c bget/set
system.cmd.echo sy c eget/set
system.cmd.header_enabled sy c hget/set
system.cmd.mode sy c mset
system.cmd.prompt_enabled sy c pget/set
system.cmd.timestamp sy c tget/set
system.print_level sy pget/set
system.safemode.disabled sy dget/set
system.safemode.status sy sget
system.uuid sy uget
system.version sy vget
tcp.client.connect_timeout tc c tget/set
tcp.client.local_port tc c pget/set
tcp.client.retries tc c rget/set
tcp.client.retry_period tc c wget/set
uart.baud ua bget/set
uart.data ua dget/set
uart.flow ua fget/set
uart.parity ua pget/set
uart.stop ua sget/set
wlan.antenna.select wl a sget/set
wlan.dhcp.enabled wl d eget/set
wlan.dhcp.timeout wl d tget/set
wlan.hide_passkey wl hget/set
wlan.join.retries wl j rget/set
wlan.join.timeout wl j tget/set
wlan.mac wl mget
wlan.network.dns wl n dget
wlan.network.gateway wl n gget
wlan.network.ip wl n iget
wlan.network.netmask ne nget
wlan.network.status ne sget
wlan.passkey wl pget/set
wlan.rate.protocol wl r pget/set
wlan.rate.transmit wl r xget/set
wlan.roam.threshold wl r tget/set
wlan.scan.active_dwell wl s aget/set
wlan.scan.channel_mask wl s mget/set
wlan.scan.home_dwell wl s hget/set
wlan.scan.num_probes wl s nget/set
wlan.scan.passive_dwell wl s pget/set
wlan.scan.retries wl s rget/set
wlan.scan.type wl s tget/set
wlan.security wl cget/set
wlan.ssid wl sget/set
wlan.static.dns wl t dget/set
wlan.static.gateway wl t gget/set
wlan.static.ip wl t iget/set
wlan.static.netmask wl t nget/set
wlan.tx_power wl tget/set

Factory Reset

Factory reset returns the device to a known state.

The device may be factory reset by GPIO or by the ZentriOS factory_reset command.

After a successful factory reset, all variables are set to factory defaults and the device reboots.

Factory Reset GPIO

The factory reset GPIO is GPIO 0 on all ZentriOS devices. To perform a factory reset by GPIO:

Note: GPIO 0 always acts as the factory reset GPIO. GPIO 0 may be configured to initialize to another GPIO function, but the factory reset function takes priority over other functions.

Factory Reset with Zentri Evaluation Board Buttons

GPIO 0 is wired to Button 1 on the Zentri Wallaby, Moray and Moray 106 evaluation boards. To manually reset a ZentriOS evaluation board:

Factory Reset Command

Use the factory_reset command to perform a factory reset. To avoid accidental factory reset, the device Wi-Fi MAC address must be provided:

Web App Recovery

In the event that the Web App does not work, due to a damaged file structure or misconfiguration, you can use the Web App Recovery system to regain access to the network and restore the Web App files. See the Web App Recovery application note.