extending the life of your device (firmware updates over lora) - lora amm
TRANSCRIPT
6Warlords
https://expresselevatortohell.files.wordpress.com/2014/01/the-warlords-2007-1.jpg
http://yeinjee.com/wp-content/uploads/2008/07/china-warlords-001.jpg
7https://boygeniusreport.files.wordpress.com/2016/04/iphone-2g-1st-generation-jobs.jpg?quality=98&strip=all
16But... how do we do this?
1. Instruct devices to use a new set of keys (same for everyone)
2. Instruct devices to wake up at the same time.
3. Gateway can transmit to all devices with one message.
Problem: low QoS and uni-directional
19Starting multicast session
Frequency:924.525MHzDatarate:220bytes/sec
Timetostart:812secafterULevent13
ULCounter|RTC----------------15|78114|70413|62312|491...
21Dealing with low Quality of Service
http://www.inference.phy.cam.ac.uk/mackay/gallager/papers/ldpc.pdf
CRChashoffirmware(sentwithdevice'sowncredentials)
OK!
Forward error correction
22Speed
https://www.reddit.com/r/Eyebleach/comments/68r4rt/tortoise_taxi/
220 bytes per second in real world scenario (SF9 @ 125 KHz, 2.5KM range in cities)
100KB Firmware size
Transmission costs 7m30s (ideally) @ 10mA current
25Link layer security is not good enough
Firmware manifest Contains firmware hash
Contains manufacturer and device class ID
Signed with private key
27Delta updates (from Mbed OS 5.5.7 to Mbed OS 5.6.1)
©2017ArmLimited
Full firmware update
Delta update (bsdiff)
Delta update (JojoDiff)
Size
180KB
6.5KB
53KB
Delta update (JojoDiff, gzip'ed) 36KB
Caveats
28
http://www.totalprosports.com/wp-content/uploads/2013/04/first-pitch-fail-baseball-fail-gifs.gif
29Network congestion
Sending a lot of data has negative effect on network
Higher data rate is better
RX sensitivity is useless when someone screams next to you
Spread spectrum helps against narrowband interference
30Gateway selection
Plan updates in advance, reserve slot on the Network Server
Gateway selection strategies, combination possible:
1.Use highest data rate
2.Round-robin between gateways
3.Drive over to site and deploy temporary gateway
31Gateway selection
Use highest data rate
Limits number of devices that gets covered by one gateway
But: higher capacity on gateway (less channel utilization)
And: highest throughput
32Gateway selection
Round-robin between gateways
Define group of devices that are covered by the same set of gateways
Downlink scheduling round robin across gateways
May result in higher packet loss on specific gateway-device links
But: higher capacity per gateway (less channel utilization)
33Gateway selection
Temporary gateway
Dedicated to firmware update
Expensive, but cheaper than replacing the device or performing a manual per-device update through cable (if even available)
34Spectrum regulations in EU
Unlicensed does not mean unregulated
1% duty cycle in 868 MHz band, except at 869.525 MHz
Downside: it's the RX2 channel
36Update Server
• Update scheduling
• Multicast groups
• Fragmentation sessions
• Device status and progress reporting
• Performs binary diff
• Performs forward error correction
• Exposes an API
37Update Server
Performs binary diffs:
• Device registry with current firmware version
• Has access to images of firmwares
• Calculates diff of device’s current firmware and new firmware image using JojoDiff
38Update Server
REST API
Integration with existing update flow (e.g. Arm Mbed Cloud, Eclipse Hawkbit)
Single call to start
Device status and update progress
40Real world example of required network capacity
EU868DR3(SF9,125KHz)
US915DR11(SF9,500KHz)
Totaltime
3m36s
2m09s
Incremental update: 36 KB, no round robin, 10% packet loss
Packets Correction
336
170 25
51
Timep/p
262ms.
559ms.
500 mAh battery, 15 mA RX current = 0.18% of battery per update
42Device side
Multi-Tech xDot (Cortex-M3, 32K RAM)
Application on top of LoRaWAN 1.0.2
Mbed OS 5.5
L-TEK FF1705, available from Nov. 2017
https://os.mbed.com/platforms/L-TEK-FF1705/
43Device side
Device client and bootloader
Open source, Apache 2.0
No security audit!
Requires flash (on-chip or external)
https://github.com/armmbed/fota-lora-radio
44Device side
Forward error correction
C++ library
Uses less than 2K of RAM, flash as storage layer
https://github.com/janjongboom/mbed-lorawan-frag-lib
45Device side
JANPatchPortable C library
Made for embedded devices
Everything in flash (<1K of RAM required)
https://github.com/janjongboom/janpatch
46Network side
Network and update server
Multicast and data block specs
Forward error correction
Network planning
https://github.com/TheThingsNetwork
47Update Server
Open source
MIT License
Available on GitHub
Open API
Designed for scale
Built for The Things Network
49Conclusion
Firmware updates are essential
Possible, even with duty-cycle constraints
Reference implementation available today
For the specs: LoRa Alliance FUOTA WG