PyGate & Lopy4 - cannot connect via serial after firmware update

  • Hi, I just received my PyGate & Lopy4 - installed Pymakr 1.1.15 into visual studio and confirmed everything worked OK. (I am on a MAC).

    I ran the test code that found somewhere that changed the LED' to different colors and everything was working well.

    Since I read on the website to install the pygate firmware - I ran the Firmware updater to update to the pygate firmware - and access via visual studio stopped. This is all I see - no enter or any key gives me the mikropython prompt.

    (But I do see the LED flashing blue indicating that the board is running OK)

    Searching for PyCom boards on serial...
    Connecting to /dev/tty.usbmodemPy4b69761...

    (If I disconnect the USB I do see

    Previous board is not available anymore
    Failed to connect (Error: Port is not open). Click here to try again

    So I flashed with the pygate-development firmware - and same result - no response to serial input.

    So I flashed with the pybates firmware - again same result - no response to serial input.

    So I thought I might have needed to update the pygate firmware, and did so successfully with DFU:

    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

    And re-tried flashing with the different firmware - and while the flashing appears to be successful, I still cannot connect to the board via serial.

    I also tried putting in a "token" for the pybytes registration, and it only reports None as soon as I paste in the token, but it never appears in pybytes.

    What am I doing wrong? Where do I go from here?


  • I actually have the same problem with my Lopy4 and Pytrack boards.
    I updated the firmware on both and lost serial access.
    By downgrading to 1.20.1 I can get serial back, but upgrading to a version above 1.20.1.r1 (included) breaks serial.
    I did try 1.20.2.x versions, including 1.20.2.r6 and I also tried using development versions (1.20.3.x).
    I also tried with the "Erase during update" option.
    Only downgrading to 1.20.1 has worked so far.

  • @Deon-George I think trying to stay in VS Code or Atom (i.e. Pymakr) and diagnose USB-serial connectivity issues is going to be an uphill struggle. Someone familiar with Mac's should be able to tell you the terminal shell commands that will help you find out what the Mac OS thinks is the status of the connected Pycom hardware.

    E.g. on Linux (Ubuntu 20.04), the lsusb command shows my two connected Pycom boards (Expansion3, Pysense):

    Bus 002 Device 003: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
    ... more entries
    Bus 002 Device 002: ID 2109:8110 VIA Labs, Inc. Hub
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 004: ID 0461:4e22 Primax Electronics, Ltd 
    Bus 001 Device 003: ID 413c:2010 Dell Computer Corp. Keyboard
    Bus 001 Device 032: ID 04d8:ef98 Microchip Technology, Inc. Expansion3
    Bus 001 Device 033: ID 04d8:f012 Microchip Technology, Inc. Pysense
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    ls -l /dev/serial/by-id shows the 'serial' devices:

    total 0
    lrwxrwxrwx 1 root root 13 Nov  1 16:51 usb-Pycom_Expansion3_Pyf6d582-if00 -> ../../ttyACM1
    lrwxrwxrwx 1 root root 13 Nov  1 17:03 usb-Pycom_Pysense_Pya15b33-if00 -> ../../ttyACM0

    udevadm info --query all --name /dev/ttyACM0 shows device data:

    N: ttyACM0
    L: 0
    S: serial/by-id/usb-Pycom_Pysense_Pya15b33-if00
    S: serial/by-path/pci-0000:00:14.0-usb-0:1:1.0
    E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/tty/ttyACM0
    E: DEVNAME=/dev/ttyACM0
    E: MAJOR=166
    E: MINOR=0
    E: SUBSYSTEM=tty
    E: USEC_INITIALIZED=263961387106
    E: ID_BUS=usb
    E: ID_VENDOR_ID=04d8
    E: ID_MODEL_ID=f012
    E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
    E: ID_VENDOR_FROM_DATABASE=Microchip Technology, Inc.
    E: ID_MODEL_FROM_DATABASE=100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller
    E: ID_VENDOR=Pycom
    E: ID_VENDOR_ENC=Pycom
    E: ID_MODEL=Pysense
    E: ID_MODEL_ENC=Pysense
    E: ID_REVISION=0010
    E: ID_SERIAL=Pycom_Pysense_Pya15b33
    E: ID_SERIAL_SHORT=Pya15b33
    E: ID_TYPE=generic
    E: ID_USB_INTERFACES=:020200:0a0000:
    E: ID_USB_DRIVER=cdc_acm
    E: ID_USB_CLASS_FROM_DATABASE=Communications
    E: ID_PATH=pci-0000:00:14.0-usb-0:1:1.0
    E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_0
    E: DEVLINKS=/dev/serial/by-id/usb-Pycom_Pysense_Pya15b33-if00 /dev/serial/by-path/pci-0000:00:14.0-usb-0:1:1.0
    E: TAGS=:systemd:

    From the above (or equivalent for Mac) you get an idea whether the board is connecting ok via USB (it probably is, as the pycom-fwtool is working ok - note this will likely NOT work for the current 1.20.2.r6 firmware unless you do a 'install local file').

    python -m /dev/ttyACM0 115200 tries a basic serial i/o connection to the device (if you don't see the REPL prompt, try Ctrl-C i.e. KeyboardInterrupt):

    --- Miniterm on /dev/ttyACM0  115200,8,N,1 ---
    --- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Traceback (most recent call last):
      File "", line 112, in <module>
    Pycom MicroPython 1.20.2.r4 [v1.11-ffb0e1c] on 2021-01-12; LoPy4 with ESP32
    Pybytes Version: 1.6.1
    Type "help()" for more information.

    With the miniterm connected, you can see what streams out of the serial port when you hit the reset button on the board.

Log in to reply

Pycom on Twitter