Mac M1 does not upload to Arduino R3

Hi all,

Happy X-mass to all of you!

I hope you can help me fix the connection between Mac and Arduino...
I use a Mac M1 with Sequoia 15.6.1. It fails to upload to Arduino R3.
It gives:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
bla bla bla.

I use /dev/cu.usbmodem11101. But it often refuses to connect.
The Mac M1 does not have a USB-B connector. So I use a SATECHI dongle to get 2 USB-B connectors out of the USB-C connector.
I use IDE 2.3.6.
This issue has always been there, but sometimes when taking out the USB and putting it in again and selecting another board and switching back, it tends to work. Pretty annoying as I did not find a procedure that is guaranteed to work.
But now, it does not work at all anymore.
I tried with my windows computer from work. Worked instantly. So it is not the board or the cable...

I read on this forum a lot of hints and tips (such as installing other usb drivers). But I am not sure how to install/select these drivers on the Mac (sorry I am not the best at fixing problems on the Mac (partially because the Mac always does what it should do, so there usually is nothing to fix)).

Hope you can give me some hints.

Kind regards,

Koen.

I am also a Mac user, but I don't understand what you are saying. I use a standard Mac USB-C to USB-A adapter and then plug in the standard R3 to USB-A cable. I have no idea what a SATECHI dongle is. Safer to use Apple parts.

I bought the dongle in the apple store.
It was an increadably expensive solution to compensate for a missing usb-b port (I did feel robbed by Apple).
Anyway it starts with usb-c and ends with one usb-c, two usb-b and one hdmi 2.
I also tried a very simple converter. Same problem...
Both work some of the time, but mostly not...
And now,not at all anymore...

I don't know what that dongle does; it may be power only. Here is the adapter I have (actually, maybe 6, I don't keep track of these inexpensive devices)
The main reason I switched from 35 years of Windows to Apple was the constant hassles with Device Manager. I can't remember ever plugging a device into my Mac, and it didn't connect. Not saying it never happened, but I don't recall any. I have only had USB-C or Thunderbolt ports for a long time; I can't remember it's so long. My newest Mac has TB4, and I just did a transfer from a USB-stick using a certified TB-4 cable, and what took hours before took a couple of minutes (40GBps vs 500Kbps). 80,000 times USB-C (latest) is 80,000 times faster. I hope you didn't try to install any drivers, there is no need and doing so could break it and, in fact, cause the problem you are having. Get the proper adapter and let us know. I would post a link but I am in Canada. BTW, SATECHI is NOT Apple.
BTW, did you not notice that the new Arduino-Q specifically states NOT to use Apple USB hub. I suspect Apple adheres to the USB standard 100% while many have a looser interpretation of it BUT that is just my guess.

Belkin has something similar (overpriced) that might be your solution.

A friend needed a not-new Macbook to also have extra ports. (a few days later). We found that one series of Macbook has an internal comm device that works with the dongle, and other Macbooks do not.

The Apple user help sites pointed us toward the conclusion. I think that is why the Belkin was purchased, because it still exists and the other is gone.

The one that works...


I have 2x MacBook Pros and a Mac Mini. I’ve had issues with using USB-C to USB-C leads with some ESP32s and CYDs. I use this adapter with a USB-A to USB-C lead and I’ve never had any issues. It works perfectly with all my ESP32s and CYDs.

I also have to change the upload speeds with different boards. 9600 seems to fail quite a lot so I normally use 115200 or 46800.

Hi xfpd,
How can I find out if my Macbook does or does not have an internel comm that works with the dongle?
Groet, Koen.

I have tried the most simple USB-C to USB-B converter. It powers my Arduino, but does not show up as a Serial port [not connected].
It does show up very fast (and disappears...). As if it is not accepted...
Any hints?

Groet, Koen.

I know SATECHI is not apple... But the Apple Store sells it and did recommend it...
It works for my USB-B backup drive, for my USB-C flash drive, our old USB-B (or maybe USB-A) printer.
And until recently it kinda works with Arduino (basically whenever it liked to do so).
But now it does nothing anymore...
My cheap adapter (that works with the printer) does not work with Arduino...
Really annoying...

I got it connected again... (no idea how and why).
But upload is still not successful.
This is the message:

Sketch uses 8302 bytes (25%) of program storage space. Maximum is 32256 bytes.
Global variables use 662 bytes (32%) of dynamic memory, leaving 1386 bytes for local variables. Maximum is 2048 bytes.

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0xe0
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_cmd(): programmer is out of sync
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding

Another message:

Sketch uses 8302 bytes (25%) of program storage space. Maximum is 32256 bytes.
Global variables use 662 bytes (32%) of dynamic memory, leaving 1386 bytes for local variables. Maximum is 2048 bytes.
avrdude: stk500_set_extended_parms(): protocol error, expect=0x14, resp=0xe0
avrdude: stk500_initialize(): failed
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0xe0
Failed uploading: uploading error: exit status 1

This appeared after I had set the baud rate of the serial monitor to 9600...
Initially it was 921600 (did not work).
Also tried 19200...

At least the Mac now sees the Arduino:


  Product ID:	0x0043
  Vendor ID:	0x2341
  Version:	0.01
  Serial Number:	75735303431351C0A0E1
  Speed:	Up to 12 Mb/s
  Manufacturer:	Arduino (www.arduino.cc)
  Location ID:	0x00110000 / 4
  Current Available (mA):	500
  Current Required (mA):	100
  Extra Operating Current (mA):	0

I forgot the reason for my/our solution. I used a search "how to (this device) with (this apple)" and clicked on the "apple" links until I accumulated enough information for"why not this?" to get the right combination of Macbook version, O.S. version, Mac settings and "dongle." Sorry I did not take notes. I try to stay away from Apple (excellent product, but must use their selected devices and software). I belive the Apple knowledgebase will lead you there.

Hi @build_1971. I'm going to ask you to provide the full verbose output from an upload attempt.


:red_exclamation_mark: This procedure is not intended to solve the problem. The purpose is to gather more information.


Please do this:

  1. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Uncheck the box next to Show verbose output during: compile in the "Preferences" dialog.
  3. Check the box next to Show verbose output during: ☐ upload.
  4. Click the "OK" button.
    The "Preferences" dialog will close.
  5. Attempt an upload, as you did before.
  6. Wait for the upload to fail.
  7. You will see an "Upload error: ..." notification at the bottom right corner of the Arduino IDE window. Click the "COPY ERROR MESSAGES" button on that notification.
  8. Open a reply here on this forum topic by clicking the "Reply" button.
  9. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
  10. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the error output from the upload into the code block.
  11. Move the cursor outside of the code block markup before you add any additional text to your reply.
  12. Click the "Reply" button to publish the post.

Hi @ptillisch,

I decided it would be best to perform a full restart before sharing the upload error here.
And of course: it now works without any problem...
With the cheapest adapter of all.
Hope it stays this way.
Anyway, thanks for the offered help...

Groet, Koen.

1 Like

Great news! I'm glad it is working now.

Regards, Per