OTA



  • lowsync calls home to us to sign the low.js code. That just means the code gets a watermark so it cannot be copied to another device. Normally this should not matter and just work.



  • @neoniousTR when I use OTA - is there also some signing process under the hood?



  • The signing is done to create the firmware file which can be flashed directly or via OTA.



  • I’m very sorry, Thomas. I can’t understand this. Is anywhere detailed description?
    What are the differences between basic and professional low.js?
    Is this signing process only professional Lowjs related?
    Are flashing images option supported only by lowjs professional?
    I intend to use lowjs for IoT devices. There is, among others, the task to update firmware over the air. So the question is - what would be appropriate workflow and licensing for this? Is it possible to make one, signed image and then OTA flash it to ten thousand of devices? Is signing process kinda protection from unlicensed usage of lowjs professional?



    • low.js Professional adds the following features to Basic:

    On-board web-based IDE with full featured debugger for rapid prototyping
    Add C/C++ low-level code with low.js native API
    Over-The-Air Updating of low.js and custom firmware

    • So, custom firmware works with low.js Basic, but not reflashing new firmware (OTA)

    • Signing is with any flashing, Basic and Pro, and happens at the moment of the flashing. The signing binds the image to your microcontroller, you cannot just copy the image to another microcontroller.

    • You can flash to ten thousand devices. Right now there is no limit in signing. Just without license you have no protection that we might add a limit later. If you use low.js for that many devices, you will want a contract with us to be sure that low.js will work for you long term..and then you have the protection that we will allow you to flash that ften.

    That is the reason for the signing.. To have control over this



  • @neoniousTR Thank you. It becames clearer. So when I use lowsync, it performs signing logic. But who is on duty when we use OTA. For ex, we first make lowsync build with "ota_update_support": true, then lowsync flash. So at this stage our image got watermarked. Then we make lowsync build again. At this stage image has not got watermarked yet. And then we OTA update with this image. Suppose client and device are both in one local network without internet access. As a result, I got working device w/o watermark. Is it right?
    Why don't you sign the image at build stage?



  • low.js on the device signs itself in this case. So still, after this, the image will not run on a different microcontroller.

    Everything else till then you figured out completly correctly, even with the bad documentation! Thank you for showing me that we have to improve here. Will do so soon.

    Thomas



  • To sum it up, in total, the only thing which all of this has an effect on normal usage: low.js flash image needs internet access. That is all.



  • Thank you, Thomas.
    If there is possibility to selfsigning - why isn't it the default option? Because you want to track lowjs usage?
    Is there some checking process while OTA? What if image would be corrupted while transferring? It would brick the device?



  • As I see, lowjs upgrade for neonious one for now has to options - either by IDE or by esptool (like it is described in HackingTool reflashing process). Is that right?



  • If I would use

    createFirmwareStream()
    

    in neonious one, what it expect on input? Entire image with all the components (lowjs files, IDE files, static files(if used) and so on)? By what means I could make this image?



  • @neoniousTR Your documentation isn't bad, trust me 👍 It's obviously made with consumer in mind. Thank you very much for this great job


Log in to reply