micropython / micropython

MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
https://micropython.org
Other
19.51k stars 7.81k forks source link

[PYDFU] Not working on OSX anymore #4293

Closed rolandvs closed 6 years ago

rolandvs commented 6 years ago

It seems that using USE_PYDFU=1 breaks on OSX, using dfu-util (USE_PYDFU=0) still works. Does anyone experience the same problem?

Installed:

python 3.7.0
pyusb 1.0.2
libusb 1.0.22b1

Output, target chip STM32H743

  b'DfuSe' v1, image size: 412421, targets: 1
    b'Target' 0, alt setting: 0, name: "ST...", size: 412136, elements: 2
      0, address: 0x08000000, size: 15032
      1, address: 0x08020000, size: 397088
    usb: 0483:df11, device: 0x0000, dfu: 0x011a, b'UFD', 16, 0x9996929d
Writing memory...
0x08000000   15032 [                         ]   0% Traceback (most recent call last):
  File "../../tools/pydfu.py", line 551, in <module>
    main()
  File "../../tools/pydfu.py", line 542, in main
    write_elements(elements, args.mass_erase, progress=cli_progress)
  File "../../tools/pydfu.py", line 467, in write_elements
    page_erase(page_addr)
  File "../../tools/pydfu.py", line 133, in page_erase
    __dev.ctrl_transfer(0x21, __DFU_DNLOAD, 0, __DFU_INTERFACE, buf, __TIMEOUT)
  File "/usr/local/lib/python3.7/site-packages/usb/core.py", line 1043, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python3.7/site-packages/usb/backend/libusb1.py", line 883, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python3.7/site-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
make: *** [deploy] Error 1
dpgeorge commented 6 years ago

This is actually an issue with pydfu.py + STM32H7xx MCUs, on any system (not just OSX). It should be fixed by 4f25a8b6a4f7761078678876e259674d736768a5

rolandvs commented 6 years ago

:-) !