Problem on updating Expansion board V3.1



  • Hello All,

    I am new to this community and also with Pycom. I'm trying to set up my loppy4 with expansion board 3.1 and followed the instruction. I already downloaded the latest firmware dfuc file (expansion31_0.0.11.dfu). I downloaded Macport and excode also. When I try to run sudo dfu-util -D expansion31_0.0.11.dfu within 7sec after press S1 and plug usb...it results in below...

    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2016 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

    Match vendor ID from file: 04d8
    Match product ID from file: ef99
    Opening DFU capable USB device...
    ID 04d8:ef99
    Run-time device DFU version 0100
    Claiming USB DFU Runtime Interface...
    dfu-util: Cannot set alt interface zero

    Please advise how to solve this. Thank you!



  • @Andrew-Sinclair said in Problem on updating Expansion board V3.1:

    This worked for me on mac catalina
    brew unlink libusb
    brew unlink dfu-util
    brew install libusb --HEAD
    brew install dfu-util --HEAD

    using my old macAir with HighSiera, this solved the problem
    I had to 'brew uninstal'l the packages, unlink was not enough.
    libusb was installed with an extra patch.

    ==> Installing dependencies for libusb: m4, autoconf, automake and libtool
    ==> Installing libusb dependency: m4
    ==> Patching
    ==> Applying secure_snprintf.patch
    patching file lib/vasnprintf.c
    Hunk #1 succeeded at 4858 (offset -11 lines).
    ==> ./configure --prefix=/usr/local/Cellar/m4/1.4.18
    

    libusb: stable 1.0.24, HEAD
    dfu-util installed without problems
    and the result is:

    Rainers-MacBook-Air% dfu-util -D pysense_0.0.8.dfu 
    dfu-util 0.10-dev
    
    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2021 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
    
    Match vendor ID from file: 04d8
    Match product ID from file: f011
    Deducing device DFU version from functional descriptor length
    Opening DFU capable USB device...
    Device ID 04d8:f011
    Device DFU version 0100
    Claiming USB DFU (Run-Time) Interface...
    Setting Alternate Interface zero...
    Determining device status...
    DFU state(2) = dfuIDLE, status(0) = No error condition is present
    dfu-util: WARNING: Device already in DFU mode? (bState=2 dfuIDLE)
    Claiming USB DFU Interface...
    Setting Alternate Interface #0 ...
    Determining device status...
    DFU state(2) = dfuIDLE, status(0) = No error condition is present
    DFU mode device DFU version 0100
    Device returned transfer size 64
    Copying data from PC to DFU device
    Download	[=========================] 100%        16384 bytes
    Download done.
    DFU state(2) = dfuIDLE, status(0) = No error condition is present
    Done!
    


  • This worked for me on mac catalina
    brew unlink libusb
    brew unlink dfu-util
    brew install libusb --HEAD
    brew install dfu-util --HEAD



  • Thanks a lot, @macfreek!



  • Sorry to reply to an older thread. The dfu-util problem was caused by a bug in libusb, that only occurs on macOS in libusb 1.0.23 or 1.0.24. Either downgrade to libusb 1.0.22, or upgrade to 1.0.25 (once that becomes available), or use a different platform (Linux or Windows).



  • As Catalin mentioned, the issue is with MacOS, any other operating system should work fine!



  • Am I missing the solution in this post? I still can't seem to update the board.



  • @hiyasbie quite complex answer



  • @astro @hiyasbie
    I was also able to reproduce on a macOS 10.15.1. Sometimes executing the command with sudo dfu-util -D expansion31_0.0.11.dfu helps.
    Most likely, this due to some new Security & Privacy feature.

    Just to mention, it's not related to Expansion v3.1 manufacturing issues.



  • I have the same issue on a macbook when trying to update the Pytrack module:

    Match vendor ID from file: 04d8
    Match product ID from file: f014
    Opening DFU capable USB device...
    ID 04d8:f014
    Run-time device DFU version 0100
    Claiming USB DFU Runtime Interface...
    dfu-util: Cannot set alt interface zero



  • Hi @hiyasbie, I'm having the same issue on my MacBook Air. Were you able to update your firmware using your MacBook Pro or was your workaround solution just use your friend's laptop w/Window's to update your expansion board?



  • @rskoniec Thank you for checking this out. I am using my macbook pro with the problem. My friends has a laptop (Windows) which he used to update his expansion board successfully. When I tried to update my expansion board on his laptop, it was successful...Would this mean that m expansion board is already updated? can I used it on my macbook? Thank you very much for your reply.





  • The problem is...

    dfu-util: Cannot set alt interface zero

    as per instruction...it should result on below...

    dfu-util 0.9

    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2016 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

    Match vendor ID from file: 04d8
    Match product ID from file: f014
    Opening DFU capable USB device...
    ID 04d8:f014
    Run-time device DFU version 0100
    Claiming USB DFU Runtime Interface...
    Determining device status: state = dfuIDLE, status = 0
    dfu-util: WARNING: Runtime device already in DFU state ?!?
    Claiming USB DFU Interface...
    Setting Alternate Setting #0 ...
    Determining device status: state = dfuIDLE, status = 0
    dfuIDLE, continuing
    DFU mode device DFU version 0100
    Device returned transfer size 64
    Copying data from PC to DFU device
    Download [=========================] 100% 16384 bytes
    Download done.
    state(2) = dfuIDLE, status(0) = No error condition is present
    Done!


Log in to reply
 

Pycom on Twitter