Re: [riot-devel] OTA meetup 11.2.2015

2015-02-13 Thread Arvid Picciani
Hi, 

please join us on appear.in online. Make sure to use chrome or opera in order 
to receive the slide sharing.

https://appear.in/riot <https://appear.in/riot>

Arvid


> On Feb 13, 2015, at 4:27 PM, Joël Chotard  wrote:
> 
> Hi, which is the Google hangouts address ?
> Regards
> Joel
> 
> Le 11 févr. 2015 22:41, Arvid Picciani  a écrit :
>> 
>> Hi, 
>> 
>> by popular demand, we will be meeting this Friday at 19:00 at the kiwi.ki 
>> office 
>> 
>> KIWI.KI GmbH 
>> Lehrter str. 17 
>> 10557 Berlin, DE 
>> 
>> as well as online over appear.in or google hangouts (whatever i can get 
>> working). 
>> 
>> Attached are the slides i will be presenting for about 15minutes. 
>> Feel free to bring your own slides or notes. Especially for topics not 
>> covered by me. 
>> 
>> see ya there! 
>> 
>> best, 
>> Arvid 
>> 
>> 
>> 
>> 
>> ___ 
>> devel mailing list 
>> devel@riot-os.org 
>> http://lists.riot-os.org/mailman/listinfo/devel 
> ___
> devel mailing list
> devel@riot-os.org
> http://lists.riot-os.org/mailman/listinfo/devel

___
devel mailing list
devel@riot-os.org
http://lists.riot-os.org/mailman/listinfo/devel


[riot-devel] OTA meetup 11.2.2015

2015-02-11 Thread Arvid Picciani
Hi,

by popular demand, we will be meeting this Friday at 19:00 at the kiwi.ki office

KIWI.KI GmbH
Lehrter str. 17
10557 Berlin, DE

as well as online over appear.in or google hangouts (whatever i can get 
working).

Attached are the slides i will be presenting for about 15minutes.
Feel free to bring your own slides or notes. Especially for topics not covered 
by me.

see ya there!

best,
Arvid



 

RIOT OTA (1).pdf
Description: Adobe PDF document
___
devel mailing list
devel@riot-os.org
http://lists.riot-os.org/mailman/listinfo/devel


Re: [riot-devel] Call for OTA (Over the Air Update) Task Force

2015-02-06 Thread Arvid Picciani
Thanks everyone for the input so far, it looks like there is a decent agreement 
on some core concepts,
and there is a strong interest to contribute them. 

I would like to propose to continue with a virtual meeting, to:

- present a summary(!) of the use cases and requirements posted on the ML
- break them down into layers (such as bootloader, flash, etc)
- for each of those layers, get a rough idea about what exists already today,
  or what we can do to help create them.

Since this is a fairly industry-heavy crowd, i would suggest having the meeting 
during central european work hours for 2 hours.

http://doodle.com/mtzr2s9fbdx72sun

I will read all the comments on this doodle and try to adjust accordingly, so 
please also post your preferred time of the day.

best,
Arvid


___
devel mailing list
devel@riot-os.org
http://lists.riot-os.org/mailman/listinfo/devel


Re: [riot-devel] Call for OTA (Over the Air Update) Task Force

2015-01-21 Thread Arvid Picciani
Thanks for your input Frank,

> i'm interested having OTA update capability. At the moment i work on 
> integrate micro-ecc library and flash api into RIOT. These are useful things 
> for OTA updates.

This is great! Indeed i expect that these are the parts everyone will want. 
Keep me updated on both MRs.

> I'm available only in the evening for virtual or physical meeting.

noted. I’m guessing many will have that preference.

>> - Simply over-writing RIOT in flash with a new copy, by keeping the flasher 
>> code external.
> This needs to load flasher code into RAM.

As far as i understood the idea, it would be that the flasher also is on the 
flash itself. It sounds very similar to what you’re proposing later.

>> - Two copies of RIOT on the same flash, with a boot loader selecting the 
>> active one
> Two copies are an good idea but this needs to link an firmware for both 
> possible start addresses. An alternative is receive an firmware image into an 
> free area and then flash it into correct region after checking if all 
> received correctly.

The requirement here was to not have a critical moment where removing power 
will corrupt the main image.

> My Idea is [..]

> boot loader checks an checksum of flash memory. Is the checksum is correct 
> included code is executed. If not boot loader jumps into receive mode for an 
> limited time. [..]

Sounds compatible to all other approaches so far, if you scratch “receive mode” 
and “flash from [insert preferred method of obtaining a buffer]”.
Is it correct that in your case you would implement a network stack in the boot 
loader?

> The update service has to know every device so its possible to send only 
> changed flash blocks.

We are talking about byte-level diff here right, so you don’t need a way to 
flash RIOT and app individually?

> My Questions:
> - Choose frequency/scan for update packages
> - Auto update functionality
> - Compression
> - How acceptable signing keys exchanged? (as part of application firmware?)
> - How to reset boot loader accept any signing key? (button? or press then 
> times reset?)

These sound very much like application specific settings.

> 
>> Open discussion points are wether we need:
>> 
>> - Cryptographically signed OTA updates
> I think this needed to avoid unwanted firmware updates.

ok, so what i’m thinking here, assuming the bootloader method is agreed on, are 
these steps:

1. bootreason=upgrade
make the bootloader stop due to either “bootreason upgrade” or optionally 
from a failed main code checksum

2. download
some app specific method to obtain a buffer with the new image, for example:
- in your case over network into ram
- a second scratch flash region that isnt meant to be booted, just 
downloaded to
- external storage, some other offline ways
- any de-compression method goes here as well

3. integrity
check the new image with
- some RIOT specific header with magic
- some checksum
- signature, which i see as a separate framework here, that can be linked 
into the bootloader if needed

4. flashing
burn the new image to main location,
- possibly relocate addresses?
   is the two-system approach still needed if the new image can just be 
written to flash then copied over in the bootloader?
- note that the bootloader cannot be overwritten ever. I don’t know if 
anyone will need that? In Franks case how do you update a broken cipher?

5. bootreason=normal
reboot and set boot reason back to normal

would this as a rough framework address your use case?
It would also work for some of the other proposals, while not for all of them.

At this point i’d really like more people to jump in here and see if their use 
case is represented.

best,
Arvid

___
devel mailing list
devel@riot-os.org
http://lists.riot-os.org/mailman/listinfo/devel


[riot-devel] Call for OTA (Over the Air Update) Task Force

2015-01-20 Thread Arvid Picciani
As discussed during Hack'n'Ack, let’s organize a task force to address a 
currently hot feature in RIOT: Over the Air Updates.
In Q1 2015 the company I work for is planning to contribute that feature, so i 
would like to call everyone who is planning or interested in the same feature 
to align goals.

- Who is interested in such feature, and what is your approach to OTA?
- When can we meet virtually (or physically in case anyone is in Berlin)?

While “when” and “from which buffer” is totally application specific, there are 
some
common Ideas how to approach OTA in the core os itself that i have collected 
from people so far:

- Simply over-writing RIOT in flash with a new copy, by keeping the flasher 
code external.
- Insert SD cards with a new image and reboot
- Two copies of RIOT on the same flash, with a boot loader selecting the active 
one
- Re-flashing only the application part of RIOT over the air while keeping the 
OS part forever.
- Any relevant concepts missing here?

While I do have a favorite approach, the goal of a first virtual or physical 
meeting would be to figure out a common ground here, so we can focus on 
implementing one set of standard features into the base OS. Independent from 
the actual OTA approach, these are the core features that we appear to need 
from RIOT so far.

- The ability to flash memory regions from a buffer
- Simple hashing (crc?)
- Reducing rom size
- Optimizing stacks
- Converting some statically allocated stacks to dynamic
- Define a common OTA header with at least a magic and the checksum

Open discussion points are wether we need:

- Cryptographically signed OTA updates
- Dynamic loader to support updating only parts of the binary
- A common boot-loader that can chain-boot riot from different memory regions
- Are HW watchdogs necessary to check if the new image boots properly?

Feedback on these lists as well as other input on the requirements for OTA are 
appreciated at this point.

I will collect responses to this mail and summarize the discussion, and/or 
organize a meetup.



___
devel mailing list
devel@riot-os.org
http://lists.riot-os.org/mailman/listinfo/devel