SlideShare a Scribd company logo
Copyright @ 2018 JFrog, PlatformIO - All rights reserved
Over-The-Air (OTA)
firmware upgrades for
Internet of Things devices
with JFrog Bintray
Dr. Ivan Kravets, CEO at PlatformIO
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
IoT Devices
30 billion devices by 2020 (wiki)
● Smart homes
● Smart cities
● Smart grids
● Virtual power plants
● Intelligent transportation
● ...
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
What’s Inside?
Copyright © 2018 JFrog, PlatformIO. All Rights Reserved
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
● Limited CPU ( ~100MHz )
● Limited RAM ( ~256KB )
● Limited Flash ( ~1MB)
● Limited communication bandwidth
● Limited TLS support
● Limited power supply resources
Average constrained device
Limited processing and storage capabilities
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Flash Map
Fixed User Application (No OTA)
Boot (optional) Application EEPROM SPIFFS
To upgrade the application, you reprogram it
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
● Open source, Apache 2.0 license
● Zero dependency, written in pure Python
● Rich command line interface (CLI)
● Use your favorite IDE or OS
● Multi-platform build system
● Automatic toolchain and library management
● Built-in support for CI / CD
● “1-click” debugging
● Run unit test on a remote IoT device
How to program IoT device?
PlatformIO: an open source ecosystem for IoT development
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Flash Map
Fixed User Application (No OTA)
Boot (optional) Application EEPROM SPIFFS
Upgradable User Application (OTA)
Boot OTA State Application Application* EEPROM SPIFFS
OTA needs 2 partitions to upgrade safely
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
● Free For Open Source
● 100% Automated via REST API
● Custom attributes per release
● Super fast CDN, don’t worry about continents!
● Full Control and Security
● Unlimited number of IoT devices
● Bulk upgrades
● Release provisioning and analytics
How to manage IoT updates?
JFrog Bintray: Universal Distribution Platform
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Flash Map
Fixed User Application (No OTA)
Boot (optional) Application EEPROM SPIFFS
Upgradable User Application (OTA)
Boot OTA State Application Application* EEPROM SPIFFS
Bintray API
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Build
(compile firmware)
Local Test
(native, host OS)
Remote Test
(on a physical remote device)
Delivery
(publish firmware)
CI / CD
Over-The-Air Firmware Upgrades Workflow
Smart homes Smart cities Smart grids Virtual power plants Intelligent transportation
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Demo
Copyright © 2018 JFrog, PlatformIO. All Rights Reserved
https://github.com/platformio/bintray-secure-ota.git
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Secure Bintray Client
C++ open source library by PlatformIO
#include <BintrayClient.h>
const BintrayClient bintray(
BINTRAY_USER,
BINTRAY_REPO,
BINTRAY_PACKAGE
);
const String version = bintray.getLatestVersion();
const String firmwarePath = bintray.getBinaryPath(version);
// download & flash image...
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Initial configuration
platformio.ini
; Please navigate to https://bintray.com/, create an account,
; repository, and add a package where PlatformIO will deploy firmwares
; api_token = Bintray.com > Edit Profile > API Key
[bintray]
user = ivankravets
repository = platformio-ota
package = bintray-secure-ota
api_token = ${env.BINTRAY_API_TOKEN}
; Wi-Fi network settings
[wifi]
ssid = ${env.PIO_WIFI_SSID}
password = ${env.PIO_WIFI_PASSWORD}
[common]
; firmware version, please modify it between releases; positive integer value
release_version = 1
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
Unit Testing
Local & Remote
#include <unity.h>
void test_bintray_binary_path_is_valid(void) {
const String binaryPath = bintray.getBinaryPath(bintray.getLatestVersion());
TEST_ASSERT_TRUE(binaryPath.length() > 0);
TEST_ASSERT_TRUE(binaryPath.endsWith(".bin"));
TEST_ASSERT_TRUE(binaryPath.indexOf(BINTRAY_USER) > 0);
}
// ...
void setup() {
UNITY_BEGIN();
RUN_TEST(test_bintray_client_credentials);
RUN_TEST(test_wifi_connection);
RUN_TEST(test_bintray_binary_path_is_valid);
// ...
UNITY_END();
}
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
CI/CD Pipeline
Automated firmware delivery: any OS, any CI service
install:
- pip install -U platformio
- platformio upgrade --dev
- platformio update
script:
# Check compiler errors
- platformio run
# List remote devices
- platformio remote device list
# Run embedded test on a remote device
- platformio remote test -r
deploy:
provider: script
script: platformio run -e release -t upload
Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP
THANK YOU!

More Related Content

What's hot

DDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt StineDDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
VMware Tanzu
 
Android College Application Project Report
Android College Application Project ReportAndroid College Application Project Report
Android College Application Project Report
stalin george
 
VTU final year project report
VTU final year project reportVTU final year project report
VTU final year project report
athiathi3
 
Flutter UI Framework
Flutter UI FrameworkFlutter UI Framework
Flutter UI Framework
Yuliia Makarenko
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
Bartosz Kosarzycki
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
Thomas Pierrain
 
Food delivery application report
Food delivery application reportFood delivery application report
Food delivery application report
AshwinBicholiya
 
Flutter Intro
Flutter IntroFlutter Intro
Flutter Intro
Vladimir Parfenov
 
What is a Software Module?
What is a Software Module?What is a Software Module?
What is a Software Module?
Syed Ali Raza
 
M2M Day Two
M2M Day TwoM2M Day Two
M2M Day Two
Arief Gunawan
 
JPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal ArchitectureJPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal Architecture
Covenant Ko
 
Android's Multimedia Framework
Android's Multimedia FrameworkAndroid's Multimedia Framework
Android's Multimedia Framework
Opersys inc.
 
Flutter
FlutterFlutter
Flutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaFlutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | Edureka
Edureka!
 
CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...
CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...
CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...
AMD Developer Central
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
Qt
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?
Sergi Martínez
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
rihannakedy
 
Flutter Rennes - #1
Flutter Rennes - #1Flutter Rennes - #1
Flutter Rennes - #1
Aloïs Deniel
 

What's hot (20)

DDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt StineDDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
DDD and Microservices: Like Peanut Butter and Jelly - Matt Stine
 
Android College Application Project Report
Android College Application Project ReportAndroid College Application Project Report
Android College Application Project Report
 
Complete-Mini-Project-Report
Complete-Mini-Project-ReportComplete-Mini-Project-Report
Complete-Mini-Project-Report
 
VTU final year project report
VTU final year project reportVTU final year project report
VTU final year project report
 
Flutter UI Framework
Flutter UI FrameworkFlutter UI Framework
Flutter UI Framework
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 
Food delivery application report
Food delivery application reportFood delivery application report
Food delivery application report
 
Flutter Intro
Flutter IntroFlutter Intro
Flutter Intro
 
What is a Software Module?
What is a Software Module?What is a Software Module?
What is a Software Module?
 
M2M Day Two
M2M Day TwoM2M Day Two
M2M Day Two
 
JPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal ArchitectureJPA Week3 Entity Mapping / Hexagonal Architecture
JPA Week3 Entity Mapping / Hexagonal Architecture
 
Android's Multimedia Framework
Android's Multimedia FrameworkAndroid's Multimedia Framework
Android's Multimedia Framework
 
Flutter
FlutterFlutter
Flutter
 
Flutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaFlutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | Edureka
 
CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...
CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...
CE-4028, Miracast with AMD Wireless Display technology – Kickass gaming and o...
 
Introduction to Qt Creator
Introduction to Qt CreatorIntroduction to Qt Creator
Introduction to Qt Creator
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
 
Flutter Rennes - #1
Flutter Rennes - #1Flutter Rennes - #1
Flutter Rennes - #1
 

Similar to swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices with PlatformIO and JFrog Bintray

UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfUC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
Wlamir Molinari
 
Update Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat CosgroveUpdate Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat Cosgrove
Cloud Native Day Tel Aviv
 
OpUtils webinar
OpUtils webinarOpUtils webinar
Breaking Extreme Networks WingOS: How to own millions of devices running on A...
Breaking Extreme Networks WingOS: How to own millions of devices running on A...Breaking Extreme Networks WingOS: How to own millions of devices running on A...
Breaking Extreme Networks WingOS: How to own millions of devices running on A...
Priyanka Aash
 
" Breaking Extreme Networks WingOS: How to own millions of devices running on...
" Breaking Extreme Networks WingOS: How to own millions of devices running on..." Breaking Extreme Networks WingOS: How to own millions of devices running on...
" Breaking Extreme Networks WingOS: How to own millions of devices running on...
PROIDEA
 
The Role of Standards in IoT Security
The Role of Standards in IoT SecurityThe Role of Standards in IoT Security
The Role of Standards in IoT Security
Hannes Tschofenig
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experience
Alexandre Abadie
 
Using Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre AbadieUsing Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre Abadie
Pôle Systematic Paris-Region
 
Free OpUtils Training presentation
Free OpUtils Training presentationFree OpUtils Training presentation
Free OpUtils Training presentation
ManageEngine, Zoho Corporation
 
Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...
Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...
Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...
Amazon Web Services
 
PyCon_India_2017_MicroPython_Ayan
PyCon_India_2017_MicroPython_AyanPyCon_India_2017_MicroPython_Ayan
PyCon_India_2017_MicroPython_Ayan
Ayan Pahwa
 
How to Use Telegraf and Its Plugin Ecosystem
How to Use Telegraf and Its Plugin EcosystemHow to Use Telegraf and Its Plugin Ecosystem
How to Use Telegraf and Its Plugin Ecosystem
InfluxData
 
Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018
Benjamin Cabé
 
IRJET- Wi-Fi based Home & Industry Surveillance Bot using Pi Camera
IRJET-  	  Wi-Fi based Home & Industry Surveillance Bot using Pi CameraIRJET-  	  Wi-Fi based Home & Industry Surveillance Bot using Pi Camera
IRJET- Wi-Fi based Home & Industry Surveillance Bot using Pi Camera
IRJET Journal
 
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
Next Big Thing AG
 
OpUtils Free training
OpUtils Free training OpUtils Free training
OpUtils Free training
ManageEngine, Zoho Corporation
 
IoT Based Advertising System
IoT Based Advertising SystemIoT Based Advertising System
IoT Based Advertising System
IRJET Journal
 
IoT Security by Design
IoT Security by DesignIoT Security by Design
IoT Security by Design
NUS-ISS
 
Micropython for the iot
Micropython for the iotMicropython for the iot
Micropython for the iot
Jacques Supcik
 
Japan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイム
Japan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイムJapan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイム
Japan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイム
Tatsuya Fukuta
 

Similar to swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices with PlatformIO and JFrog Bintray (20)

UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdfUC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
UC18NA-D3D202-Dianomic-IZoratti-Introduction-To-FogLAMP.pdf
 
Update Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat CosgroveUpdate Strategies for the Edge, by Kat Cosgrove
Update Strategies for the Edge, by Kat Cosgrove
 
OpUtils webinar
OpUtils webinarOpUtils webinar
OpUtils webinar
 
Breaking Extreme Networks WingOS: How to own millions of devices running on A...
Breaking Extreme Networks WingOS: How to own millions of devices running on A...Breaking Extreme Networks WingOS: How to own millions of devices running on A...
Breaking Extreme Networks WingOS: How to own millions of devices running on A...
 
" Breaking Extreme Networks WingOS: How to own millions of devices running on...
" Breaking Extreme Networks WingOS: How to own millions of devices running on..." Breaking Extreme Networks WingOS: How to own millions of devices running on...
" Breaking Extreme Networks WingOS: How to own millions of devices running on...
 
The Role of Standards in IoT Security
The Role of Standards in IoT SecurityThe Role of Standards in IoT Security
The Role of Standards in IoT Security
 
Python for IoT, A return of experience
Python for IoT, A return of experiencePython for IoT, A return of experience
Python for IoT, A return of experience
 
Using Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre AbadieUsing Python for IoT: a return of experience, Alexandre Abadie
Using Python for IoT: a return of experience, Alexandre Abadie
 
Free OpUtils Training presentation
Free OpUtils Training presentationFree OpUtils Training presentation
Free OpUtils Training presentation
 
Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...
Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...
Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing th...
 
PyCon_India_2017_MicroPython_Ayan
PyCon_India_2017_MicroPython_AyanPyCon_India_2017_MicroPython_Ayan
PyCon_India_2017_MicroPython_Ayan
 
How to Use Telegraf and Its Plugin Ecosystem
How to Use Telegraf and Its Plugin EcosystemHow to Use Telegraf and Its Plugin Ecosystem
How to Use Telegraf and Its Plugin Ecosystem
 
Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018Open Source for Industry 4.0 – Open IoT Summit NA 2018
Open Source for Industry 4.0 – Open IoT Summit NA 2018
 
IRJET- Wi-Fi based Home & Industry Surveillance Bot using Pi Camera
IRJET-  	  Wi-Fi based Home & Industry Surveillance Bot using Pi CameraIRJET-  	  Wi-Fi based Home & Industry Surveillance Bot using Pi Camera
IRJET- Wi-Fi based Home & Industry Surveillance Bot using Pi Camera
 
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
The Crucial Component of IoT Products by Aravinth Panchadcharam [ Senior Embe...
 
OpUtils Free training
OpUtils Free training OpUtils Free training
OpUtils Free training
 
IoT Based Advertising System
IoT Based Advertising SystemIoT Based Advertising System
IoT Based Advertising System
 
IoT Security by Design
IoT Security by DesignIoT Security by Design
IoT Security by Design
 
Micropython for the iot
Micropython for the iotMicropython for the iot
Micropython for the iot
 
Japan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイム
Japan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイムJapan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイム
Japan Container Days v18.12 1C5 Kubernetes+ロボット(ROS)アプリの連携パラダイム
 

Recently uploaded

Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
manasideore6
 
Investor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptxInvestor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptx
AmarGB2
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
MdTanvirMahtab2
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
ongomchris
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
AJAYKUMARPUND1
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
Pratik Pawar
 
CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
karthi keyan
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
Jayaprasanna4
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
AhmedHussein950959
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
BrazilAccount1
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
VENKATESHvenky89705
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
Vijay Dialani, PhD
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
gerogepatton
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
TeeVichai
 

Recently uploaded (20)

Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
 
Investor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptxInvestor-Presentation-Q1FY2024 investor presentation document.pptx
Investor-Presentation-Q1FY2024 investor presentation document.pptx
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
 

swampUP: Over-The-Air (OTA) firmware upgrades for Internet of Things devices with PlatformIO and JFrog Bintray

  • 1. Copyright @ 2018 JFrog, PlatformIO - All rights reserved Over-The-Air (OTA) firmware upgrades for Internet of Things devices with JFrog Bintray Dr. Ivan Kravets, CEO at PlatformIO
  • 2. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP IoT Devices 30 billion devices by 2020 (wiki) ● Smart homes ● Smart cities ● Smart grids ● Virtual power plants ● Intelligent transportation ● ...
  • 3. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP What’s Inside? Copyright © 2018 JFrog, PlatformIO. All Rights Reserved
  • 4. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP ● Limited CPU ( ~100MHz ) ● Limited RAM ( ~256KB ) ● Limited Flash ( ~1MB) ● Limited communication bandwidth ● Limited TLS support ● Limited power supply resources Average constrained device Limited processing and storage capabilities
  • 5. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Flash Map Fixed User Application (No OTA) Boot (optional) Application EEPROM SPIFFS To upgrade the application, you reprogram it
  • 6. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP ● Open source, Apache 2.0 license ● Zero dependency, written in pure Python ● Rich command line interface (CLI) ● Use your favorite IDE or OS ● Multi-platform build system ● Automatic toolchain and library management ● Built-in support for CI / CD ● “1-click” debugging ● Run unit test on a remote IoT device How to program IoT device? PlatformIO: an open source ecosystem for IoT development
  • 7. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Flash Map Fixed User Application (No OTA) Boot (optional) Application EEPROM SPIFFS Upgradable User Application (OTA) Boot OTA State Application Application* EEPROM SPIFFS OTA needs 2 partitions to upgrade safely
  • 8. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP ● Free For Open Source ● 100% Automated via REST API ● Custom attributes per release ● Super fast CDN, don’t worry about continents! ● Full Control and Security ● Unlimited number of IoT devices ● Bulk upgrades ● Release provisioning and analytics How to manage IoT updates? JFrog Bintray: Universal Distribution Platform
  • 9. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Flash Map Fixed User Application (No OTA) Boot (optional) Application EEPROM SPIFFS Upgradable User Application (OTA) Boot OTA State Application Application* EEPROM SPIFFS Bintray API
  • 10. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Build (compile firmware) Local Test (native, host OS) Remote Test (on a physical remote device) Delivery (publish firmware) CI / CD Over-The-Air Firmware Upgrades Workflow Smart homes Smart cities Smart grids Virtual power plants Intelligent transportation
  • 11. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Demo Copyright © 2018 JFrog, PlatformIO. All Rights Reserved https://github.com/platformio/bintray-secure-ota.git
  • 12. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Secure Bintray Client C++ open source library by PlatformIO #include <BintrayClient.h> const BintrayClient bintray( BINTRAY_USER, BINTRAY_REPO, BINTRAY_PACKAGE ); const String version = bintray.getLatestVersion(); const String firmwarePath = bintray.getBinaryPath(version); // download & flash image...
  • 13. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Initial configuration platformio.ini ; Please navigate to https://bintray.com/, create an account, ; repository, and add a package where PlatformIO will deploy firmwares ; api_token = Bintray.com > Edit Profile > API Key [bintray] user = ivankravets repository = platformio-ota package = bintray-secure-ota api_token = ${env.BINTRAY_API_TOKEN} ; Wi-Fi network settings [wifi] ssid = ${env.PIO_WIFI_SSID} password = ${env.PIO_WIFI_PASSWORD} [common] ; firmware version, please modify it between releases; positive integer value release_version = 1
  • 14. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP Unit Testing Local & Remote #include <unity.h> void test_bintray_binary_path_is_valid(void) { const String binaryPath = bintray.getBinaryPath(bintray.getLatestVersion()); TEST_ASSERT_TRUE(binaryPath.length() > 0); TEST_ASSERT_TRUE(binaryPath.endsWith(".bin")); TEST_ASSERT_TRUE(binaryPath.indexOf(BINTRAY_USER) > 0); } // ... void setup() { UNITY_BEGIN(); RUN_TEST(test_bintray_client_credentials); RUN_TEST(test_wifi_connection); RUN_TEST(test_bintray_binary_path_is_valid); // ... UNITY_END(); }
  • 15. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP CI/CD Pipeline Automated firmware delivery: any OS, any CI service install: - pip install -U platformio - platformio upgrade --dev - platformio update script: # Check compiler errors - platformio run # List remote devices - platformio remote device list # Run embedded test on a remote device - platformio remote test -r deploy: provider: script script: platformio run -e release -t upload
  • 16. Copyright @ 2018 JFrog, PlatformIO - All rights reserved. Ribbit with us: #swampUP THANK YOU!