Model 100 current default firmware might be buggy

Hey.

I just pulled the latest Kaleidoscope, use arduino gui and master branch for the board managers. I select board manager Kaleidoscope Keyboards (GD32) version 2022.5.25204929.

So I tried to upload (just after I start holding prog) my customized firmware and get this:

/home/firstname.lastname/.arduino15/packages/keyboardio/tools/dfu-util/0.10.0-arduino1/dfu-util --device 0x3496:0x0005 -D /tmp/arduino_build_356093/Model100.ino.bin -R 
dfu-util 0.10-dev

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
dfu-util: No DFU capable USB device available
An error occurred while uploading the sketc

If I ask dfu-util to list (just after I start holding prog) the devices I get nothing:

$ sudo dfu-util -l
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

If I hold prog while plugging in the keyboard it does show:

$ sudo dfu-util -l
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Found DFU: [3496:0005] ver=0111, devnum=6, cfg=1, intf=0, path="1-2", alt=0, name="DAPBoot DFU", serial="xxxyyyzzz"

I am then able to upload firmware to the keyboard:

$ sudo dfu-util --device 0x3496:0x0005 -D /tmp/arduino_build_356093/Model100.ino.bin -R
dfu-util 0.11

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2021 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Warning: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release
Opening DFU capable USB device...
Device ID 3496:0005
Device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Interface #0 ...
Determining device status...
DFU state(2) = dfuIDLE, status(0) = No error condition is present
DFU mode device DFU version 0110
Device returned transfer size 1024
Copying data from PC to DFU device
Download	[=========================] 100%       128104 bytes
Download done.
DFU state(7) = dfuMANIFEST, status(0) = No error condition is present
DFU state(2) = dfuIDLE, status(0) = No error condition is present
Done!
Resetting USB to switch back to Run-Time mode

After flashing the issue persists which indicates the firmware on master is still exhibiting the issue.

TLDR: The current firmware for Model 100 (early delivery & on master branch) seems to have an issue; you have to follow the instructions for a bricked Model 01 of holding prog when plugging in the USB in order to flash it.

Hope this bug report helps,
Thanks.

2 Likes

I also see this behavior with my newly arrived general-release M100. Thank you for your post - it at least helped me try out a few things. I’m seeing other connection issues, but I’ll start a new thread for that to not pollute this one. EDIT: cross-link to Issues uploading firmware to Model 100

Can confirm this is still an issue. When trying to upload my sketch in Arduino IDE I would get the same error.

After plugging in the keyboard while holding prog, I was then able to upload my sketch.

The most recent firmware for Model 100 still lacks support for the “1200 baud touch” signal that the Arduino IDE (and arduino-cli) uses to request a device reset, so you’ll have to force bootloader mode by unplugging, then replugging while holding down the PROG key. Chrysalis works around this by issuing a Focus command to request a reset, but Arduino doesn’t know how to do this.

1 Like

I can confirm that “plugging the keyboard in while holding the prog button” solved this issue for me.