ChipWhisperer Lite XMEGA target communication issues

When running:
msg = bytearray([0]*16) #simpleserial uses bytearrays
target.simpleserial_write(‘p’, msg)
print(target.simpleserial_read(‘r’, 16))
it warning
(ChipWhisperer Target ERROR|File Target did not ack
Warning Traceback (most recent call last)
C:\Users\15593\AppData\Local\Temp\ipykernel_15828\ in
----> 1 print(target.simpleserial_read(‘r’, 16))

c:\users\15593\chipwhisperer5_64\cw\home\portable\chipwhisperer\software\chipwhisperer\capture\targets\ in simpleserial_read(self, cmd, pay_len, end, timeout, ack)
414 if ack:
415 if self.simpleserial_wait_ack(timeout) is None:
→ 416 raise Warning(“Device failed to ack”)
418 return payload

Warning: Device failed to ack

1 Like

Yes I am facing the same issue too.
Let me know if solution is available.

What firmware is running on the XMEGA, and how was it compiled?

I have attached the snip of the error block that’s geting generated.


RIght, but which firmware are you running on the xmega? Are you running one of our Jupyter notebooks?
Also, can you provide the output of print(scope).

Yes im running on the Jupyter notebooks > Connecting to hardware Chipwhisperer Lite
And the output snaps of print(scope) I have attached with this messade


Did you program the target? In the “Building and Uploading Firmware” section, you need to uncomment the appropriate cw.program_target() line (and replace path/to/firmware.hex with the actual .hex file).

If you did, were there any warnings or errors in that step?

1 Like

I need help finding the path to hex file being created in previous step,
I’m getting this error, suspecting due to incorrect path.


The answer is right above; you ran:

cd ../hardware/victims/firmware/simpleserial-base/

and so that’s where the hex file will be found:

thank you jpthibault
I am a beginner and I bought a chipwhisker lite 2-part. I want to use chipWhisper for composite domain against DPA, and I want to change the implementation of sbox by changing the aes. c file in chipwhisperer\hardware\victims\firmware\crypto\tiny-AES128-C, and then proceed with CPA. Is it feasible?

Absolutely! We provide example firmware to help people get started, but we definitely want our users to use ChipWhisperer with their own implementations!

BTW in case you haven’t noticed, there are already a few third-party masked AES implementation here:

I am getting the following error upon giving the path.

I am learning and kind of new to this type of interface, so kindly excuse me,
And It would be really helpful if there would be a youtube playlist made available for setting up using recent architecture and GUI rather than 8 years old one.

Ah sorry I assumed your platform was CW308_STM32F3, since you set the programmer to cw.programmers.STM32Programmer.
Whatever you set PLATFORM to in the make command becomes part of the output file name. So if you did make PLATFORM=CWLITEXMEGA (...), then you should find: ../hardware/victims/firmware/simpleserial-base/simpleserial-base-CWLITEXMEGA.hex.
If you used CWLITEARM, then use that.

We did youtube videos for the old GUI because with a GUI, some things are easier to show in a video. Now that we have the Jupyter-based approach, all the information is contained in the notebooks.

1 Like

Hi Thanks was able to load the firmware
But while running serial communication part in Jupyter notebook came across this and last code block was not printing anything even after running for many times.


hi Samarth you can try
target.simpleserial_write(‘k’, msg)
before the
print(target.simpleserial_wait_ack()) #should return 0

1 Like

thank you jpthibault . I would like to ask how to open this software. I think someone online is using this software. Can you explain the specific usage steps, please
The main difficulty is that currently there is no way to download and open the software

You’ll find all our releases on the github project page: Releases · newaetech/chipwhisperer · GitHub

The GUI went away after version 4. I really don’t recommend that you use the old GUI versions. We don’t support it, and we won’t be making any updates or fixes to it. Learning Jupyter is well worth the effort.

Hi ,
But my question was regarding target.write(‘p’+‘0x01’+‘\n’)
Even after clicking on print(recv_msg) multiple times there is not any output seen.
What must be the expected output.


The message you are sending is too short, that is why the target is not responding to it.
Simpleserial commands have a fixed payload length; in the case of the “p” and “k” commands in this firmware, it’s 16 bytes (if you want to understand how this works under the hood, you can see this here).

So, if you were to send:
target.write('p' + "ff"*16 + "\n")

Then you should get back:

recv_msg +=

> z00