Unable to upload games

@smallstorm I’ve gone through and reformatted your ‘error messages’ by putting them in code blocks.

If you need to post any more either do this:

```
Error message goes here
```

Or this:

[code]
Error message goes here
[/code]

This symbol:

`

is the ‘grave’ character.
If it’s on your keyboard it’s usually to the left of the 1 key, above tab.
(If you’re on a phone, I have no clue where it might be.)


This part seems wrong to me.
I could be wrong but I think the second port should end up being a different port to the one earlier.
E.g. it should find COM5 the first time and later COM6 should appear.

Could you go back into the Device Manager and this time click on View > Show hidden devices?
Then if you go to Ports again is should show up all the COM drivers that are installed.
I’m wondering if maybe you’ve only got one of the needed drivers.

Here’s what I get on my Computer:
COM

COM3 is what the Arduboy uses for serial transmission and detecting the upload request,
and then COM4 is the port it switches to for the actual uploading process.

Here’s what I get when I upload a program:

Sketch uses 26730 bytes (93%) of program storage space. Maximum is 28672 bytes.
Global variables use 1588 bytes (62%) of dynamic memory, leaving 972 bytes for local variables. Maximum is 2560 bytes.
Forcing reset using 1200bps open/close on port COM3
PORTS {COM3, } / {} => {}
PORTS {} / {COM4, } => {COM4, }
Found upload port: COM4
I:\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/bin/avrdude -CI:\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM4 -b57600 -D -Uflash:w:I:\Temp\arduino_build_858764/TurtleBridge.ino.hex:i 

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "I:\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino14/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : avr109
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : butterfly
         Description     : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices:
    Device code: 0x44

avrdude: devcode selected: 0x44
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% -0.00s

avrdude: Device signature = 0x1e9587 (probably m32u4)
avrdude: reading input file "I:\Temp\arduino_build_858764/TurtleBridge.ino.hex"
avrdude: writing flash (26730 bytes):

Writing | ################################################## | 100% 2.00s

avrdude: 26730 bytes of flash written
avrdude: verifying flash memory against I:\Temp\arduino_build_858764/TurtleBridge.ino.hex:
avrdude: load data flash data from input file I:\Temp\arduino_build_858764/TurtleBridge.ino.hex:
avrdude: input file I:\Temp\arduino_build_858764/TurtleBridge.ino.hex contains 26730 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.20s

avrdude: verifying ...
avrdude: 26730 bytes of flash verified

avrdude done.  Thank you.

The important bit is this:

Forcing reset using 1200bps open/close on port COM3
PORTS {COM3, } / {} => {}
PORTS {} / {COM4, } => {COM4, }
Found upload port: COM4

Compare it with what’s happening on your Arduboy:

Forcing reset using 1200bps open/close on port COM5
PORTS {COM5, } / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {COM5, } => {COM5, }
Found upload port: COM5

For ages there’s no COM port available and when one does come up it’s COM5 again.
That doesn’t seem right.

Like I say, I could be wrong here, but that looks like the imporant bit to me.

I suspect @Mr.Blinky will have a better idea than me.
He understands the upload process better than I do.

It isn’t but from reading into Arduinos documentation as best as I can understand it “This just happens” sometimes and you need to use the reset button.

It comes from the failure of the system to re-detect the com port after it is reset by starting and stopping the serial port.

According to Arduino this happens due to something potentially messing up the interrupt vectors, but we know this is not the case with Serine.

What I think happened is that Arduino recently updated something on how their upload works on the leonardo and causes fringe cases to fall under this timing/rediscovery window.

I do suspect it is driver related however. And I think uninstalling and reinstalling “might” be a solution.

It’s going to be frustrating as heck, because I suspect when @smallstorm gets a chance to send it in, I’ll test it and it will work just fine. This is the case in 80% of customer returns when there is a problem like this, I plug it in, it works fine and then send it back. the other 20% of the time I have to use the reset button.

I’ve never had to retire an Arduboy from service due to an inability to program. In the beginning times there were some cases where I had to reflash a bootloader, but now that is fixed in the factory.

Thanks for this, I checked the hidden devices and got this:

image

Is there anything I can do to get the same Ports as you?

I followed the instructions from the video and still no luck. I got an error code saying “the programmer is not responding.”

Just to check re posting this to you guys - I live in the UK and purchased it through Pimorini. Shall I take it up with them and return it or am I still to send it to the US?

Hrm, that is strange.
Is the Arduboy the only Arduino board you own?
And have you previously tried to reinstall the Arduino IDE?


In my case I didn’t use the installer, I used the .zip file option and installed the files manually by unzipping the folder and moving the files to where they need to be.
I think the first time I set up the Arduboy I might have had to manually install the drivers but I can’t remember.


Technically that’s an error message. An error code is always a number.
(Though sometimes it’s represented in hexadecimal, so the number has letters in it.)

I know I’m being pedantic, but it’s good to know the difference.


Specifically which documentation?

I think this is an indication that the way the IDE works internally is quite brittle and prone to breaking.

I’m convinced it’s something to do with the installer process because I don’t remember ever having any problems of that nature and I always update using the .zip instead of the installer.

Looks like your Arduboy doesn’t get into bootloader mode. Otherwise there would be a com port named ‘Arduino Leonardo bootloader’

I believe the Sirene game suffers from the magic key issue and prevents Arduboy to enter bootloader mode. (just resets)

Arduboy has a reset button left of the micro USB connector. you can use a tooth pic, sim tool or other small pin like object to press it.

Upload any sketch from the Arduino IDE then when the port info is displayed in the black log window. Press the reset button.

If it fails repeat this once more as the Arduino Leonardo bootloader com port is/was not installed yet.

1 Like

Personally I recommend using a mechanical pencil.
Usually they’re the ideal size and the lead/graphene is probably soft enough to avoid damaging the rubber.
(Or at least less so than something pointed and made out of metal or wood.)

As you say, a sim tool is also a good option because it tends to be quite blunt and is a decent size.

This isn’t right, it only shows “Arduino Leonardo Bootloader” While it is being reset.

Serine should not have this problem, it is the default sketch loaded on all Arduboys being sold.

At this point, I would recommend uninstalling Arduino and reinstalling it.

This is the one we suggest. Is there a chance you might have used the “Windows app” version?

@Mr.Blinky means there should be an Arduino Leonardo bootloader (COM#) in the device manager list.

In my drivers I have Arduino Leonardo bootloader (COM4):

But @smallstorm doesn’t have an Arduino Leonardo bootloader, just 3 copies of Arduino Leonardo:

Normally inactive devices are hidden, but using View > Show hidden devices (as I told @smallstorm to do earlier) shows inactive devices as well.
(Hence why two of the Arduino Leonardo devices are greyed out in the latter screenshot and all of the devices are greyed out in my screenshot - they’re inactive devices.)

The Arduino Leonardo bootloader driver should become active during upload,
like what happens when I upload:

Forcing reset using 1200bps open/close on port COM3
PORTS {COM3, } / {} => {}
PORTS {} / {COM4, } => {COM4, }
Found upload port: COM4

The fact it’s missing on @smallstorm’s computer is probably why this is happening:

Forcing reset using 1200bps open/close on port COM5
PORTS {COM5, } / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {COM5, } => {COM5, }
Found upload port: COM5

What should be happening is this:

Forcing reset using 1200bps open/close on port COM3
PORTS {COM5, } / {} => {}
PORTS {} / {COM6, } => {COM6, }
Found upload port: COM6

But there’s no Arduino Leonardo bootloader (COM6) device,
so instead the upload doesn’t happen, the attempt to upload just times out,
then the Arduboy resets and COM5 becomes available again.

(That’s how I understand it at least. Again, I’m not the expert on this one.)

Those “hidden” ones are devices that the system has enumerated in the past.

The absence of a boot loader hidden view just means the system has never seen it. So I guess you’re partially right in the sense that the system has never triggered the boot loader correctly.

I suppose that it is possible the bootloader has been corrupted ever since it’s first upload but I also doubt that because the factory uploads the first game via USB. I had the factory do it this way so that any device that cannot load games via USB cannot get shipped.

So like I mentioned before, I think Arduino changed something in their most recent update in how it talks to Leonardo somehow. This is just a total guess.

@smallstorm please do write into the contact form, I want to make sure we get this figured out… If you’re overseas then it’s a little more complicated but I want to know what happened!

Also due to this thread and others like it, I’ve made an official troubleshooting guide that is like a choose your own adventure:

You can access it through the quick tool bar:

So I was looking at the solution in this post was to manually uninstall and reinstall the driver:

I’m also tracking this problem here:

Maybe it is just a coincidence, but having 2 users run into the problem where the bootloader cannot be accessed within a few days leads me to believe the issue is with Arduino.

Isn’t Sirena one of those games you have to hold the down button at the title screen to drop the system to bootloader mode. I recall looking it up and having to do that on my first flash upload. Hopefully, that will solve the problem.

Nope, Sirene is the default game that comes with all Arduboys produced after middle of 2017.

It does have flashlight mode available, to hold up while turning it on to enable recovery mode, but it is not required. Normal flashing routine should work on Sirene.

From my investigation on this problem, it seems that it relates to the USB driver environment of the users system preventing the reboot cycle from the Arduboy to operate correctly. For whatever reason, recently either there are just a lot more new Arduboy users so the sample size goes up, or Arduino has made a recent change making it more finicky.

@smallstorm can you try using a game uploader, to rule out Arduino being the problem?

Maybe you could tryone of these and let us know?

But otherwise please use the contact form because I’d like to solve this one, thanks!

I do remember flashlight mode, in that mode, you can hold down to write the magic number to the EEPROM. That did allow me to upload new sketch again on my Arduboy.

Since log messages are being posted, not actual code, it’s better to format it as text.

To do this, you put the word text after the starting three backticks. (Just three backticks defaults to code, but for C++ you can make it explicit by following the backticks with cpp.)

```text
Formatted error messages, logs or other text goes here
```

```cpp
C++ code goes here
```

I find that the syntax highlighting comes in useful because it draws attention to strings and numbers.

But the words that are highlighted as bold or coloured don’t make any sense in context.

No, but that’s a minor issue.
I feel that the benefits outweight the drawbacks.