I shared it because I was addicted to playing with the keymap of my own keyboard (ErgoDash mini) after a long time. Not limited to ErgoDash mini, this is an event that can occur when handling a self-made keyboard using Pro Micro (rather, all devices using Arduino compatible boards) in a Linux environment.
As an event, when I tried to write a keymap with the following command in the cloned directory of QMK Firmware,
$ sudo make ergodash/mini:[Keymap directory]:avrdude
Writing failed with the following error.
avrdude: Error: butterfly programmer uses avr_write_page() but does not
provide a cmd() method.
The environmental information at the time of occurrence is as follows.
$ uname -vrpm
4.15.0-76-generic #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 x86_64
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
The keymap write failed due to a Linux ModemManager interrupt. After stopping ModemManager as shown below, re-execution of writing was successful. ** * Be sure to confirm that you are not using Modem Manager before executing. If you have a mobile broadband connection, it's suspicious, so let's stop. ** **
$ sudo systemctl stop ModemManager.service
ModemManager controls the connection with [Mobile Broadband](https://ja.wikipedia.org/wiki/Mobile Broadband). It is a daemon that will help you. Many modems used for mobile broadband connection are connected via USB. So, of course, Modem Manager can open a USB port. The USB port to which the keyboard (or rather Pro Micro) is connected is no exception, and if an interrupt by ModemManager occurs during the keymap writing process, the process will fail.
It seems to be a well-known issue, and an issue has been drafted to address it in the QMK Firmware repository. Apparently, the workaround seems to be something like "If ModemManager is running when executing flash processing, a warning will be issued", so it seems that there is no change in what you have to do.
If you do not use the stopped Modem Manager, you can leave it as it is. If you never use it, you can disable the automatic start setting with the following command.
$ sudo systemctl disable ModemManager.service
If you say, "That said, it was started, so I want to restore it ...", you can restart it.
$ sudo systemctl start ModemManager.service
Assembled Helix Keyboard Kit --FOHTE.NET avrdude: Error: butterfly programmer uses avr_write_page() but does not provide a cmd() method - Stack Exchange #877024 modemmanager should ask before messing with serial ports - Debian Bug report logs
Recommended Posts