Trouble uploading new firmware

I’m having a new problem updating my Keyboard’s firmware. I’ve tried several different things, including wiping Arduino from my system and starting from scratch. When I select my port and a select the Keyboardio board, I am able to compile. I go to upload, and the Prog key turns red when held (and it displays “Found upload port: /dev/cu.usbmodembio01”), but the upload times out. No more red flashing lights on the keyboard, as in the past. I get this error report:

Arduino: 1.8.5 (Mac OS X), Board: “Keyboardio Model 01”

Sketch uses 20712 bytes (72%) of program storage space. Maximum is 28672 bytes.
Global variables use 1794 bytes (70%) of dynamic memory, leaving 766 bytes for local variables. Maximum is 2560 bytes.
Forcing reset using 1200bps open/close on port /dev/cu.usbmodemCDkbio01
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/cu.usbmodemCDkbio01, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, /dev/tty.usbmodemCDkbio01, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/cu.usbmodemCDkbio01, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, /dev/tty.usbmodemCDkbio01, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/cu.usbmodemCDkbio01, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, /dev/tty.usbmodemCDkbio01, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } => {}
PORTS {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, } / {/dev/cu.Bluetooth-Incoming-Port, /dev/cu.JasonsAirPods-Wirelessi-1, /dev/cu.usbmodemkbio01, /dev/tty.Bluetooth-Incoming-Port, /dev/tty.JasonsAirPods-Wirelessi-1, /dev/tty.usbmodemkbio01, } => {/dev/cu.usbmodemkbio01, /dev/tty.usbmodemkbio01, }
Found upload port: /dev/cu.usbmodemkbio01
/Users/Jason/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C/Users/Jason/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -v -patmega32u4 -cavr109 -P/dev/cu.usbmodemkbio01 -b57600 -D -Uflash:w:/var/folders/gl/thjd2mds1959_52fl9v7wb2r0000gn/T/arduino_build_825975/Model01-Firmware.ino.hex:i

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:01:35
Copyright © 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright © 2007-2014 Joerg Wunsch

     System wide configuration file is "/Users/Jason/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf"
     User configuration file is "/Users/Jason/.avrduderc"
     User configuration file does not exist or is not a regular file, skipping

     Using Port                    : /dev/cu.usbmodemkbio01
     Using Programmer              : avr109
     Overriding Baud Rate          : 57600

avrdude: ser_open(): can’t open device “/dev/cu.usbmodemkbio01”: No such file or directory

avrdude done. Thank you.

Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

Any ideas what I’m doing wrong?

I haven’t gotten any replies, and I suspect my initial explanation was unclear. Somewhere in the process of trying to update my Keyboardio firmware to 1.23.0, something has gone wrong. While I used to successfully flash my firmware, my keyboard now appears to freeze after it enters the boot loader. The prog key turns red, and Arduino IDE finds the upload port for the keyboard, but it does not upload the firmware. The process just hangs, and the keyboard moves out of the boot loader. After about a minute, the diagnostic screen displays…

avrdude: ser-open(): can’t open device “/dev/cu/usbmodemCDkbio01”: No such file or directory

I’ve tried several different things:

  • Using the latest default firmware
  • Reverting to firmware 1.22.0
  • Clean install of Arduino IDE
  • Plugging in my keyboard while holding Prog key
  • Using the hard reset button to keep the keyboard in the boot loader
  • Using a different computer (also a Mac) to install Arduino IDE from scratch to update the keyboard’s firmware

No matter what I do, the result seems to be the same. My keyboard doesn’t accept a firmware upload, and the process times out.

Also quick note, my keyboard is working fine! It’s just that when you get used to the ability to tweak the firmware on a regular basis, losing that ability is awful. I am anxious to get up and running again.

Success! I had to flash my firmware using the terminal. Not sure why that worked, but I’m glad it did.

When the keyboard goes into programmable mode, it has a different USB product ID, which may result in it getting a different device filename. The commandline stuff is prepared to follow that, the Arduino IDE may not be. I suspect this might be the case, but I have little clue about the inner workings of MacOS (or the Arduino IDE, for that matter).