Failing to detect chip (stm32f303 target and 1173 cwlite)

Hi all, I’m trying to get started with the ChipWhisperer, however I keep getting the following whenever I run

%%bash
cd ../hardware/victims/firmware/simpleserial-base/
make PLATFORM=CWLITEARM CRYPTO_TARGET=NONE
fw = “../hardware/victims/firmware/simpleserial-base/simpleserial-base-CWLITEARM.hex”cw.program_target(scope, cw.programmers.STM32FProgrammer, fw)

Failed to detect chip. Check following: 1. Connections and device power. 2. Device has valid clock (or remove clock entirely for internal osc). 3. On Rev -02 CW308T-STM32Fx boards, BOOT0 is routed to PDIC.

I’m unsure what I’m currently doing wrong. I’m on windows and am using VirtualBox. The ChipWhisperer is also under the Universal Serial Box devices on device manager.

Thank you so much!

A few questions:

  1. Did you purchase a 2-part CW Lite (aka with the target board separated as shown), or did you separate it from a 1-part CW Lite
  2. Have you tried using the Windows installer to connect to your ChipWhisperer directly from Windows? The USB connection from things like virtualbox can sometimes be a bit flaky.
  3. Are you running through a premade notebook? If so, which one, and have you run all of the preceeding steps in the notebook? If not, what code are you using to connect?

BTW, it’s probably best not to put devices like this onto surfaces that can generate a lot of static electricity, like bedding.

  1. These two parts were from a 1-part CW Lite (box says: CW-lite 32 bit, 32 bitstm32f303 target, http://cwdocs.com/cw1173) target’s MCU has ARM on it
  2. Unfortunately I was having issues with it compiling (warning: _close is not implemented and will always fail & AttributeError: ‘NoneType’ object has no attribute ‘controlWrite’) so I switched onto VirtualBox and tried on VirtualBox which I believed made things better?
  3. I’m running on the 1-Connecting to Hardware notebook. Code:
    1. import chipwhisperer as cw
      scope = cw.scope()
    2. target = cw.target(scope, cw.targets.SimpleSerial) #cw.targets.SimpleSerial can be omitted
    3. scope.default_setup()
    4. %%bash
      cd ../hardware/victims/firmware/simpleserial-base/
      make PLATFORM=CWLITEARM CRYPTO_TARGET=NONE
      1. output:

        SS_VER set to SS_VER_1_1
        make clean_objs .dep
        make[1]: Entering directory ‘/home/vagrant/work/projects/chipwhisperer/hardware/victims/firmware/simpleserial-base’
        SS_VER set to SS_VER_1_1
        rm -f – simpleserial-base-CWLITEARM.hex
        rm -f – simpleserial-base-CWLITEARM.eep
        rm -f – simpleserial-base-CWLITEARM.cof
        rm -f – simpleserial-base-CWLITEARM.elf
        rm -f – simpleserial-base-CWLITEARM.map
        rm -f – simpleserial-base-CWLITEARM.sym
        rm -f – simpleserial-base-CWLITEARM.lss
        rm -f – objdir-CWLITEARM/.o
        rm -f – objdir-CWLITEARM/
        .lst
        rm -f – simpleserial-base.s simpleserial.s stm32f3_hal.s stm32f3_hal_lowlevel.s stm32f3_sysmem.s
        rm -f – simpleserial-base.d simpleserial.d stm32f3_hal.d stm32f3_hal_lowlevel.d stm32f3_sysmem.d
        rm -f – simpleserial-base.i simpleserial.i stm32f3_hal.i stm32f3_hal_lowlevel.i stm32f3_sysmem.i
        make[1]: ‘.dep’ is up to date.
        make[1]: Leaving directory ‘/home/vagrant/work/projects/chipwhisperer/hardware/victims/firmware/simpleserial-base’
        make begin gccversion build sizeafter fastnote end
        make[1]: Entering directory ‘/home/vagrant/work/projects/chipwhisperer/hardware/victims/firmware/simpleserial-base’
        SS_VER set to SS_VER_1_1
        .
        Welcome to another exciting ChipWhisperer target build!!
        arm-none-eabi-gcc (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027]
        Copyright (C) 2018 Free Software Foundation, Inc.
        This is free software; see the source for copying conditions. There is NO
        warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

        .
        Compiling C: simpleserial-base.c
        arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -mthumb -mfloat-abi=soft -fmessage-length=0 -ffunction-sections -gdwarf-2 -DSS_VER=SS_VER_1_1 -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL_TYPE=HAL_stm32f3 -DPLATFORM=CWLITEARM -DF_CPU=7372800UL -DSS_VER_2_0=2 -DSS_VER_2_1=3 -DSS_VER_1_1=1 -DSS_VER_1_0=0 -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir-CWLITEARM/simpleserial-base.lst -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 -I.././hal/stm32f3/CMSIS -I.././hal/stm32f3/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy -I.././crypto/ -std=gnu99 -MMD -MP -MF .dep/simpleserial-base.o.d simpleserial-base.c -o objdir-CWLITEARM/simpleserial-base.o
        .
        Compiling C: .././simpleserial/simpleserial.c
        arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -mthumb -mfloat-abi=soft -fmessage-length=0 -ffunction-sections -gdwarf-2 -DSS_VER=SS_VER_1_1 -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL_TYPE=HAL_stm32f3 -DPLATFORM=CWLITEARM -DF_CPU=7372800UL -DSS_VER_2_0=2 -DSS_VER_2_1=3 -DSS_VER_1_1=1 -DSS_VER_1_0=0 -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir-CWLITEARM/simpleserial.lst -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 -I.././hal/stm32f3/CMSIS -I.././hal/stm32f3/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy -I.././crypto/ -std=gnu99 -MMD -MP -MF .dep/simpleserial.o.d .././simpleserial/simpleserial.c -o objdir-CWLITEARM/simpleserial.o
        .
        Compiling C: .././hal/stm32f3/stm32f3_hal.c
        arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -mthumb -mfloat-abi=soft -fmessage-length=0 -ffunction-sections -gdwarf-2 -DSS_VER=SS_VER_1_1 -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL_TYPE=HAL_stm32f3 -DPLATFORM=CWLITEARM -DF_CPU=7372800UL -DSS_VER_2_0=2 -DSS_VER_2_1=3 -DSS_VER_1_1=1 -DSS_VER_1_0=0 -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir-CWLITEARM/stm32f3_hal.lst -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 -I.././hal/stm32f3/CMSIS -I.././hal/stm32f3/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy -I.././crypto/ -std=gnu99 -MMD -MP -MF .dep/stm32f3_hal.o.d .././hal/stm32f3/stm32f3_hal.c -o objdir-CWLITEARM/stm32f3_hal.o
        .
        Compiling C: .././hal/stm32f3/stm32f3_hal_lowlevel.c
        arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -mthumb -mfloat-abi=soft -fmessage-length=0 -ffunction-sections -gdwarf-2 -DSS_VER=SS_VER_1_1 -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL_TYPE=HAL_stm32f3 -DPLATFORM=CWLITEARM -DF_CPU=7372800UL -DSS_VER_2_0=2 -DSS_VER_2_1=3 -DSS_VER_1_1=1 -DSS_VER_1_0=0 -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir-CWLITEARM/stm32f3_hal_lowlevel.lst -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 -I.././hal/stm32f3/CMSIS -I.././hal/stm32f3/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy -I.././crypto/ -std=gnu99 -MMD -MP -MF .dep/stm32f3_hal_lowlevel.o.d .././hal/stm32f3/stm32f3_hal_lowlevel.c -o objdir-CWLITEARM/stm32f3_hal_lowlevel.o
        .
        Compiling C: .././hal/stm32f3/stm32f3_sysmem.c
        arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -mthumb -mfloat-abi=soft -fmessage-length=0 -ffunction-sections -gdwarf-2 -DSS_VER=SS_VER_1_1 -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL_TYPE=HAL_stm32f3 -DPLATFORM=CWLITEARM -DF_CPU=7372800UL -DSS_VER_2_0=2 -DSS_VER_2_1=3 -DSS_VER_1_1=1 -DSS_VER_1_0=0 -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir-CWLITEARM/stm32f3_sysmem.lst -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 -I.././hal/stm32f3/CMSIS -I.././hal/stm32f3/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy -I.././crypto/ -std=gnu99 -MMD -MP -MF .dep/stm32f3_sysmem.o.d .././hal/stm32f3/stm32f3_sysmem.c -o objdir-CWLITEARM/stm32f3_sysmem.o
        .
        Assembling: .././hal/stm32f3/stm32f3_startup.S
        arm-none-eabi-gcc -c -mcpu=cortex-m4 -I. -x assembler-with-cpp -mthumb -mfloat-abi=soft -fmessage-length=0 -ffunction-sections -DF_CPU=7372800 -Wa,-gstabs,-adhlns=objdir-CWLITEARM/stm32f3_startup.lst -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 -I.././hal/stm32f3/CMSIS -I.././hal/stm32f3/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy -I.././crypto/ .././hal/stm32f3/stm32f3_startup.S -o objdir-CWLITEARM/stm32f3_startup.o
        .
        Linking: simpleserial-base-CWLITEARM.elf
        arm-none-eabi-gcc -mcpu=cortex-m4 -I. -mthumb -mfloat-abi=soft -fmessage-length=0 -ffunction-sections -gdwarf-2 -DSS_VER=SS_VER_1_1 -DSTM32F303xC -DSTM32F3 -DSTM32 -DDEBUG -DHAL_TYPE=HAL_stm32f3 -DPLATFORM=CWLITEARM -DF_CPU=7372800UL -DSS_VER_2_0=2 -DSS_VER_2_1=3 -DSS_VER_1_1=1 -DSS_VER_1_0=0 -Os -funsigned-char -funsigned-bitfields -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=objdir-CWLITEARM/simpleserial-base.o -I.././simpleserial/ -I.././hal -I.././hal/stm32f3 -I.././hal/stm32f3/CMSIS -I.././hal/stm32f3/CMSIS/core -I.././hal/stm32f3/CMSIS/device -I.././hal/stm32f4/Legacy -I.././crypto/ -std=gnu99 -MMD -MP -MF .dep/simpleserial-base-CWLITEARM.elf.d objdir-CWLITEARM/simpleserial-base.o objdir-CWLITEARM/simpleserial.o objdir-CWLITEARM/stm32f3_hal.o objdir-CWLITEARM/stm32f3_hal_lowlevel.o objdir-CWLITEARM/stm32f3_sysmem.o objdir-CWLITEARM/stm32f3_startup.o --output simpleserial-base-CWLITEARM.elf --specs=nano.specs --specs=nosys.specs -T .././hal/stm32f3/LinkerScript.ld -Wl,–gc-sections -lm -Wl,-Map=simpleserial-base-CWLITEARM.map,–cref -lm
        .
        Creating load file for Flash: simpleserial-base-CWLITEARM.hex
        arm-none-eabi-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature simpleserial-base-CWLITEARM.elf simpleserial-base-CWLITEARM.hex
        .
        Creating load file for Flash: simpleserial-base-CWLITEARM.bin
        arm-none-eabi-objcopy -O binary -R .eeprom -R .fuse -R .lock -R .signature simpleserial-base-CWLITEARM.elf simpleserial-base-CWLITEARM.bin
        .
        Creating load file for EEPROM: simpleserial-base-CWLITEARM.eep
        arm-none-eabi-objcopy -j .eeprom --set-section-flags=.eeprom=“alloc,load”
        –change-section-lma .eeprom=0 --no-change-warnings -O ihex simpleserial-base-CWLITEARM.elf simpleserial-base-CWLITEARM.eep || exit 0
        .
        Creating Extended Listing: simpleserial-base-CWLITEARM.lss
        arm-none-eabi-objdump -h -S -z simpleserial-base-CWLITEARM.elf > simpleserial-base-CWLITEARM.lss
        .
        Creating Symbol Table: simpleserial-base-CWLITEARM.sym
        arm-none-eabi-nm -n simpleserial-base-CWLITEARM.elf > simpleserial-base-CWLITEARM.sym
        Size after:
        text data bss dec hex filename
        5008 8 1432 6448 1930 simpleserial-base-CWLITEARM.elf
        ±-------------------------------------------------------

        • Default target does full rebuild each time.
        • Specify buildtarget == allquick == to avoid full rebuild
          ±-------------------------------------------------------
          ±-------------------------------------------------------
        • Built for platform CW-Lite Arm (STM32F3) with:
        • CRYPTO_TARGET = NONE
        • CRYPTO_OPTIONS = AES128C
          ±-------------------------------------------------------
          make[1]: Leaving directory ‘/home/vagrant/work/projects/chipwhisperer/hardware/victims/firmware/simpleserial-base’
    5. cw.program_target(scope, cw.programmers.STM32FProgrammer, “../hardware/victims/firmware/simpleserial-base/simpleserial-base-CWLITEARM.hex”)
      1. output:
        Failed to detect chip. Check following:

        1. Connections and device power.
        2. Device has valid clock (or remove clock entirely for internal osc).
        3. On Rev -02 CW308T-STM32Fx boards, BOOT0 is routed to PDIC.

        OSError Traceback (most recent call last)
        Input In [5], in <cell line: 2>()
        1 #cw.program_target(scope, cw.programmers.XMEGAProgrammer, “path/to/firmware.hex”)
        ----> 2 cw.program_target(scope, cw.programmers.STM32FProgrammer, “../hardware/victims/firmware/simpleserial-base/simpleserial-base-CWLITEARM.hex”)

        File ~/work/projects/chipwhisperer/software/chipwhisperer/init.py:126, in program_target(scope, prog_type, fw_path, **kwargs)
        124 prog._logging = None
        125 prog.open()
        → 126 prog.find()
        127 prog.erase()
        128 prog.program(fw_path, memtype=“flash”, verify=True)

        File ~/work/projects/chipwhisperer/software/chipwhisperer/capture/api/programmers.py:121, in save_and_restore_pins..func_wrapper(self, *args, **kwargs)
        119 self.scope.io.nrst = ‘high_z’
        120 try:
        → 121 val = func(self, *args, **kwargs)
        122 finally:
        123 target_logger.debug(‘Restoring pdic, pdid, and nrst pin configuration’)

        File ~/work/projects/chipwhisperer/software/chipwhisperer/capture/api/programmers.py:316, in STM32FProgrammer.find(self)
        314 stm32f = self.stm32prog()
        315 stm32f.scope = self.scope
        → 316 sig, chip = stm32f.find()

        File ~/work/projects/chipwhisperer/software/chipwhisperer/hardware/naeusb/programmer_stm32fserial.py:38, in close_on_fail..func_wrapper(self, *args, **kwargs)
        3@wr@wrapswrapsps @wraps(func)
        36 def func_wrapper(self, *args, **kwargs):
        37 try:
        —> 38 return func(self, *args, **kwargs)
        39 except:
        40 self.close_port()

        File ~/work/projects/chipwhisperer/software/chipwhisperer/hardware/naeusb/programmer_stm32fserial.py:174, in STM32FSerial.find(self, logfunc)
        171 logfunc = print_fun
        173 try:
        → 174 self.initChip()
        175 except IOError:
        176 logfunc("Failed to detect chip. Check following: ")

        File ~/work/projects/chipwhisperer/software/chipwhisperer/hardware/naeusb/programmer_stm32fserial.py:38, in close_on_fail..func_wrapper(self, *args, **kwargs)@wraps3@wr@wrapsps @wraps(func)
        36 def func_wrapper(self, *args, **kwargs):
        37 try:
        —> 38 return func(self, *args, **kwargs)
        39 except:
        40 self.close_port()

        File ~/work/projects/chipwhisperer/software/chipwhisperer/hardware/naeusb/programmer_stm32fserial.py:348, in STM32FSerial.initChip(self)
        345 fails += 1
        347 self.releaseChip()
        → 348 raise IOError(“Could not detect STM32F, check connections, BOOT MODE entry setup”)

        OSError: Could not detect STM32F, check connections, BOOT MODE entry setup

Thank you! :slight_smile:

Hi! Are there are new ideas for this issue?