SimpleSerial to SimpleSerial2

Hi all,

I’ve a code based on simpleserial.c that works fine with SimpleSerial and can communicate and get data from/to the Husky with my jupyter notebook.

I’d want to try to switch to SimpleSerial2 (if I am not wrong, this should speed up data transfer and therefore aquisition campain).

To switch I perform the following:

  • change the SS_VER macro when compiling
  • change the callbacks signatures (I’m using the preprocessing suggestion as in the documentation)
  • change the SS_VER variable at the beginning of the jupyter notebook.
    Am I forgetting something?

While I have no errors with SimpleSerial v1 protocol, I get a Trigger not seen error when using SimpleSerial v2 protocol.
(ChipWhisperer Scope WARNING|File _OpenADCInterface.py:730) Timeout in OpenADC capture(), no trigger seen! Trigger forced, data is invalid. Status: 13
(I followed this page: ERROR: “Target did not ack” or “no trigger seen” — ChipWhisperer Documentation but with no success)

Thanks in advance.

Are you connecting to the scope and target by calling %run "../../Setup_Scripts/Setup_Generic.ipynb"?

This is how the target type is set in our notebooks.

Check that type(target) is “SimpleSerial2”.

Hi @jpthibault,∙
thanks for the message.

Yes, I checked and it is correctly set:
<class 'chipwhisperer.capture.targets.SimpleSerial2.SimpleSerial2'>

The whole error is

(ChipWhisperer Scope WARNING|File _OpenADCInterface.py:732) Timeout in OpenADC capture(), no trigger seen! Trigger forced, data is invalid. Status: 13
(ChipWhisperer Scope WARNING|File _OpenADCInterface.py:732) Timeout in OpenADC capture(), no trigger seen! Trigger forced, data is invalid. Status: 12
(ChipWhisperer Scope WARNING|File helper_functions.py:157) Timeout happened during capture

the last one is from this code (I copied from one chipwhisperer source):

      ret = scope.capture(poll_done=True)
      i = 0
      while not target.is_done():
          i += 1
          time.sleep(0.05)
          if i > 100:
              scope_logger.warning("Target did not finish operation")
              return None

      if ret:
          print(ret)
          scope_logger.warning("Timeout happened during capture")
          return None

Ok, sounds like a firmware issue then (cause #5 listed here).

Compare your implementation carefully against ours (e.g. chipwhisperer/firmware/mcu/simpleserial-aes/simpleserial-aes.c at develop · newaetech/chipwhisperer · GitHub) and make sure that you are sending what the target is expecting to receive.