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:
- 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?
- 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:
- Power off the board and put the jumper on
- Install the FTDIUSBSerialDriver_v...dmg
- 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> - After that, reboot your machine.
- 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 sideIt's confusing for the following reasons:
- 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 fromGND
. - 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 expansionG10
(which is adjacent to LoPy23
) - ...as per the instructions (or my interpretation of them) in the updater app
Once I connected
GND
toG23
it all started working and I'm now updated. Hope this helps anyone else with same issue :)
- 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
-
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.