SOLVED: Struggling with firmware update



  • Hi,

    Just got my first Pycom product - the LoPy. Plugged it in to expansion board, connected to USB and the blue pixel is flashing once per 4s as described in the documentation.

    Then I tried the firmware update as follows:

    • Unplugged USB (power down device)
    • Connect G23 to GND with patch wire
    • Plugged in USB (power on)
    • Run Mac OS firmware update (downloaded today)
    • Only port it listed is dev/cu.Bluetooth-Incoming-Port
    • After a few seconds of Please wait, reading information ... I get the following error message:
    Connecting.........................
    
    Failure!
    

    Any ideas?


    Also, some feedback as a newbie so far:

    1. The pin labelling on the LoPy differs significantly to the port labelling on the expansion board. This is very confusing - I'm assuming it's a labelling fail on the expansion board?
    2. When the firmware updater fails, it would be nice if I could copy and paste the error message.


  • I spent a great deal of time getting this to work on a Mac:

    1. Power off the board and put the jumper on
    2. Install the FTDIUSBSerialDriver_v...dmg
    3. Run this in the terminal: kextstat -b com.FTDI.driver.FTDIUSBSerialDriver
      you may have to run it a few times to get an output like this:
      Index Refs Address Size Wired Name (Version) UUID <Linked Against>
      91 0 0xffffff7f80e43000 0x7000 0x7000 com.FTDI.driver.FTDIUSBSerialDriver (2.4.2) E16D9540-AF63-36AD-94C4-B1164FBD6078 <90 42 5 4 3 1>
    4. After that, reboot your machine.
    5. Once up, run the Pycom Firmware Update again.
      This time you'll see another port eg. /dev/cu.usbserial-DQ00DQIT
      Select the serial port and click 'continue'
      This time it'll run the whole process to update your firmware.


  • @guy I'm glad you solved your problems. Have fun!



  • Looks like the driver wasn't getting automatically loaded.

    $ kextstat -b com.FTDI.driver.FTDIUSBSerialDriver
    Index Refs Address            Size       Wired      Name (Version) UUID <Linked Against>
    

    So manually loaded it:

    $ sudo kextload -bundle-id com.FTDI.driver.FTDIUSBSerialDriver
    
    $ kextstat -b com.FTDI.driver.FTDIUSBSerialDriver
    Index Refs Address            Size       Wired      Name (Version) UUID <Linked Against>
      155    0 0xffffff7f83aae000 0x7000     0x7000     com.FTDI.driver.FTDIUSBSerialDriver (2.3) ECC3AF36-431D-370D-86F2-5237785E9CF8 <137 42 5 4 3 1>
    

    But was still getting update failure.

    On the 2nd screen of the updater app, it states:

    Notes: Looking at the device with the LED on the top side
    G23 is the 4th pin from the top on the left side
    GND is the 2nd pin from top on the right side

    It's confusing for the following reasons:

    1. When I was first getting confused about the labelling on the LoPy not matching with the labelling on the expansion board, I'd noticed that 23 on the LoPy is 2 pins over from GND.
    2. My brain was assuming (wrongly) that instructions were referring to the LEDs on the expansion board, not the LED on the LoPy (I was attaching the wire on the expansion board, so that framed my interpretation of instructions)

    So, I had this situation:

    • I was holding the expansion board with its LEDs on top (so the LoPy LED was on the left)
    • I connected expansion GND to expansion G10 (which is adjacent to LoPy 23)
    • ...as per the instructions (or my interpretation of them) in the updater app

    Once I connected GND to G23 it all started working and I'm now updated. Hope this helps anyone else with same issue :)



  • Made some progress (seems it was conflicting with a USB microscope), now it's showing up in the list:

    $ ls -l /dev/cu.*
    crw-rw-rw-  1 root  wheel   19,   3 21 Apr 17:50 /dev/cu.Bluetooth-Incoming-Port
    crw-rw-rw-  1 root  wheel   19,   1 21 Apr 17:50 /dev/cu.usbserial-DO0038RI
    

    Still get a failure message when selecting the cu.usbserial-DO0038RI in the updater. I'm as sure as possible that my USB cable is valid as I've used it for dozens of other devices over the past few months.



  • Found a related topic...

    $ kextstat -b com.FTDI.driver.FTDIUSBSerialDriver
    Index Refs Address            Size       Wired      Name (Version) UUID <Linked Against>
      152    0 0xffffff7f83ab5000 0x7000     0x7000     com.FTDI.driver.FTDIUSBSerialDriver (2.3) ECC3AF36-431D-370D-86F2-5237785E9CF8 <137 42 5 4 3 1>
    
    $ ls -l /dev/cu.*
    crw-rw-rw-  1 root  wheel   19,   1 21 Apr 16:37 /dev/cu.Bluetooth-Incoming-Port
    
    $ kextfind -case-insensitive -bundle-id -substring 'FTDI' -print
    /System/Library/Extensions/AppleUSBFTDI.kext
    /Library/Extensions/FTDIUSBSerialDriver.kext
    

    I tried sudo kextload -bundle-id com.FTDI.driver.FTDIUSBSerialDriver but doesn't seem to have changed anything. Will try rebooting, bbiab.



  • @guy As far as I recall, I had not to install a driver on my mac. but in case of, the drivers are here: http://www.ftdichip.com/Drivers/VCP.htm
    In any case, as long as you do not see the proper device in /dev, USB communication will not work. And the only two causes are cable and driver. If you see the driver, it can still fail, if some of the jumpers are missing.
    You can open a terminal window and issue the command:
    ls /dev/cu*
    to tell, whether the board is detected.



  • @robert-hh I've been using the same USB cable with arduino and various other boards so as far as I know it isn't the problem.

    Likewise, as far as I know there is a VCP driver built in to Mac OS (what I've been using to update arduino and various adafruit boards?).

    I'm not sure how to check whether I have the right VCP driver installed or how to install/update to the required VCP driver.



  • @guy You should see a device cu.usbserial-xxxxx. If not, either the VCP device driver is not installed or you have a bad USB cable. Unless you do not see a device of that type, you cannot proceed.


Log in to reply
 

Pycom on Twitter