Edukit ATECC608B & AWS IOT & UiFlow
-
>>> print(ID_0.loadTempKey(64)) True >>> print(ID_0.generatePublicKey()) True >>> print(ID_0.publicKey64Bytes) bytearray(b'\x84\xf8\xda\xf6\xda\x18&r\x1b\xf0\xdbv\x1a\xcc\xf6z\xfd\xe2>\xdcY\xd5l\xf4kk\xb7D\xffI6\x1d\xcfDO\x9f\xc8bv\x80\xa9\xb8\xe75\xc5\x13\xe4\xe91\x9b\xcelg\xeb\x01Q\x18\xd0<\x91\xcb\xd8\xc1\xa1') >>>
Generate and display a key!
-
-
Hello @ajb2k3
thank you for putting together the guide. Unfortunately I cannot get it to work. I do not fully understand the following instructions from your guide.
Now I have the basics after poking away at micropython I import machine and units._ID0
import units from units import _ID ID_0 = unit.get(unit.ID, (21,22))
Using Thonny and ...
... trying toimport units._ID0
results in an error.
... where is_ID
used?
... trying to runID_0 = unit.get(unit.ID, (21,22))
still crashes my M5Core2.Thanks
Felix -
@felmue It will.
You have to run the commands in that exact order or it will crash and restart!If you run help('modules') in Thonny you will find the module units/_ID this took me house to work out.
_ID0 does not exist, the module is _ID
-
Hello @ajb2k3
thank you. I appreciate all your help. Unfortunately for some reason I cannot get it to work on my side. Whatever steps I execute before, every time I try to execute
ID_0 = unit.get(unit.ID, (21,22))
my M5Core2 crashes.Thanks
Felix -
@felmue Sorry, you need to import unit
Then import units then from units import _IDalso the code is
import units import unit from units import _ID ID_0 = unit.get(unit.ID, (21,22))
however you can also use:
import units import unit from units import _ID ATECC = unit.get(unit.ID, (21,22))
I don't know why both unit and units (with an S) must be called but they both do.
-
Hello @ajb2k3
thank you again. I tried both your code sequences - still no luck. M5Core2 still reboots after the last command.
Which UIFlow firmware version is running on your M5Core2?
Thanks
Felix -
@felmue ok, its been working all day and now crashing
1.10.2OK if you make 1 single mistake, you to to disconnect and power down the Core2 to empty the memory
this works.
-
Hello @ajb2k3
at this point I think whether the commands succeed or result in a crash depends on the amount of free memory.
With a freshly rebooted M5Core2 the following commands (sometimes) can be executed w/o crash.>>> import unit >>> ID_0 = unit.get(unit.ID, (21,22)) >>> print(ID_0.wakeup()) True >>> print(ID_0.readConfigZone()) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "units/_ID.py", line 186, in readConfigZone File "units/_ID.py", line 363, in read File "units/_ID.py", line 377, in read_output File "units/_ID.py", line 161, in idle_mode File "i2c_bus.py", line 100, in write_list OSError: I2C bus error (110) >>> print(ID_0.readConfigZone()) True >>> print(ID_0.revisionNumber) bytearray(b'\x00\x00`\x03')
Note: The commands need to be executed manually one by one.
Note: I don't need theimport units
nor thefrom units import _ID
commands.Thanks
Felix -
@felmue said in Edukit ATECC608B & AWS IOT & UiFlow:
Hello @ajb2k3
at this point I think whether the commands succeed or result in a crash depends on the amount of free memory.
With a freshly rebooted M5Core2 the following commands (sometimes) can be executed w/o crash.>>> import unit >>> ID_0 = unit.get(unit.ID, (21,22)) >>> print(ID_0.wakeup()) True >>> print(ID_0.readConfigZone()) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "units/_ID.py", line 186, in readConfigZone File "units/_ID.py", line 363, in read File "units/_ID.py", line 377, in read_output File "units/_ID.py", line 161, in idle_mode File "i2c_bus.py", line 100, in write_list OSError: I2C bus error (110) >>> print(ID_0.readConfigZone()) True >>> print(ID_0.revisionNumber) bytearray(b'\x00\x00`\x03')
Note: The commands need to be executed manually one by one.
Note: I don't need theimport units
nor thefrom units import _ID
commands.Thanks
Felix
Agreed, once the error occurs then memory gets filled requiring hard reset.
You didn’t need unit or the from? I will try again later.
I have spent all weekend writing up the atecc for my av2 book including logging the MP modules. I’ll try without those two line tonight. -
The issue of found was that the basic unit functions are in the unit module with unit.ID being empty but the ATecc function are all in units._ID
-
@felmue try adding the following before defining ID_0
From esp import gc
gc.collect.This should help clean up some memory.
Nope that was wrong. the min code I can get running is
import unit import units from units import _ID import gc ATECC = unit.get(unit.ID, (21,22)) gc.collect()
Oh cool, I got import units._ID to work.
-
@gabrielgc75 @felmue I now present to you the configuration loaded from the ATECC608b in my Core2 AWS
-
Hello @ajb2k3
thank you. I've tried to add the
gc.collect()
command. The result is still not 100% persistent. From time to time I still get a crash.Thanks
Felix -
@felmue thanks for letting me know. It’s been stable for the testing but I’m yet to move beyond. I tried looking at provisioning for vets and codes but my brain is not taking it in hence the low level MP stuff.
I’m sure there will s an issue with MP but I don’t deal directly and not getting feedback from @m5stack or @IAMLIUBO