0

I have Chinese copy of arduino which uses ATmega16u2 (at least that's what is written on the chip itself). When connected, it is visible in system information under USB section:

Communication Device:

Product ID: 0x0043
Vendor ID: 0x2341
Version: 0.01
Serial Number: 75237333636351600270
Speed: Up to 12 Mb/sec
Manufacturer: Arduino (www.arduino.cc)
Location ID: 0x1a140000 / 6
Current Available (mA): 1000
Current Required (mA): 100
Extra Operating Current (mA): 0
Built-In: Yes

But it doesn't show up in arduino program ports.

I've searched a lot, and it seems that people mostly had problems with arduinos on CH340 chips. I also have one such arduino, but it works properly after installing signed drivers as described here.

Are there any solutions for atmega 16u2 chips?

My system:

  • OS X El Capitan 10.11.2 (15C50) (hackintosh if it changes anything).
  • Arduino Uno R3 (chinese copy)
  • Arduino soft version 1.6.7

Additional info: I've tried connecting Arduino Mega 2560 with Atmega16u2 chip and it also doesn't work

Info I've got using Nick's awesome program:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jan  8 2016 at 21:35:08 with Arduino IDE 10607.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89 
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xFF 
HFuse = 0xD9 
EFuse = 0xF4 
Lock byte = 0xFF 
Clock calibration = 0x56 
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 
3010: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 
3020: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 
...

MD5 sum of bootloader = 0x6A 0xE5 0x9E 0x64 0x85 0x03 0x77 0xEE 0x54 0x70 0xC8 0x54 0x76 0x15 0x51 0xEA 
No bootloader (all 0xFF)

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00 
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00 
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00 
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00 
40: 0x8B 0xC0 0x00 0x00 0x89 0xC0 0x00 0x00 0x87 0xC0 0x00 0x00 0x85 0xC0 0x00 0x00 
50: 0x83 0xC0 0x00 0x00 0x81 0xC0 0x00 0x00 0x7F 0xC0 0x00 0x00 0x02 0xC1 0x00 0x00 
60: 0x7B 0xC0 0x00 0x00 0x79 0xC0 0x00 0x00 0x77 0xC0 0x00 0x00 0x75 0xC0 0x00 0x00 
70: 0x73 0xC0 0x00 0x00 0x71 0xC0 0x00 0x00 0x6F 0xC0 0x00 0x00 0x6D 0xC0 0x00 0x00 
80: 0x6B 0xC0 0x00 0x00 0x69 0xC0 0x00 0x00 0x67 0xC0 0x00 0x00 0x65 0xC0 0x00 0x00 
90: 0x63 0xC0 0x00 0x00 0x61 0xC0 0x00 0x00 0x12 0x01 0x10 0x01 0x02 0x00 0x00 0x08 
A0: 0x41 0x23 0x43 0x00 0x01 0x00 0x01 0x02 0xDC 0x01 0x09 0x02 0x3E 0x00 0x02 0x01 
B0: 0x00 0xC0 0x32 0x09 0x04 0x00 0x00 0x01 0x02 0x02 0x01 0x00 0x05 0x24 0x00 0x01 
C0: 0x10 0x04 0x24 0x02 0x06 0x05 0x24 0x06 0x00 0x01 0x07 0x05 0x82 0x03 0x08 0x00 
D0: 0xFF 0x09 0x04 0x01 0x00 0x02 0x0A 0x00 0x00 0x00 0x07 0x05 0x04 0x02 0x40 0x00 
E0: 0x01 0x07 0x05 0x83 0x02 0x40 0x00 0x01 0x04 0x03 0x09 0x04 0x32 0x03 0x41 0x00 
F0: 0x72 0x00 0x64 0x00 0x75 0x00 0x69 0x00 0x6E 0x00 0x6F 0x00 0x20 0x00 0x28 0x00 

Programming mode off.

Fuses info:

Atmega fuse calculator.
Written by Nick Gammon.
Version 1.10
Compiled on Jan  8 2016 at 22:19:34 with Arduino IDE 10607.
Attempting to enter programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89 
Processor = ATmega16U2
Flash memory size = 16384
LFuse = 0xFF 
HFuse = 0xD9 
EFuse = 0xF4 
Lock byte = 0xFF 
Clock calibration = 0x56 
Hardare Boot Enable..................... [X]
Debug Wire Enable....................... [ ]
External Reset Disable.................. [ ]
Enable Serial (ICSP) Programming........ [X]
Watchdog Timer Always On................ [ ]
Preserve EEPROM through chip erase...... [ ]
Boot into bootloader.................... [ ]
Divide clock by 8....................... [ ]
Clock output............................ [ ]
Bootloader size: 4096 bytes.
Start-up time: SUT0: [ ]  SUT1: [ ] (see datasheet)
Clock source: low-power crystal.
Brownout detection at: 3.0V.
  • Do any other USB devices appear on this machine? Have you tried either Arduino on another machine (unlikely that both are faulty, but...) Do the Arduinos also fail to show up in the /dev/ directory? – JRobert Jan 2 '16 at 13:10
  • Yep, USB is working fine. At the moment, I'm developing with another arduino, that has CH340 usb chip, which works great. Device is not appearing in /dev: ls tty.* tty.Bluetooth-Incoming-Port tty.serial1 – Jaroslav Jan 2 '16 at 14:38
  • The CH340 has a custom driver, while the ATmega16u2 runs off the standard USB stack. It's possible that this is an incompatibility with your hackintosh, so it would be interesting if you could try this on a genuine Mac. (I'm not sure whether an Apple store or dealer would permit you to plug an Arduino into their store Macs, but it can't hurt to ask). – microtherion Jan 3 '16 at 21:27
  • @microtherion I'm working with arduino on my macbook, but it has yosemite, yet, and I'm afraid to update it, because then I will not have the possibility to program my arduinos. PS. It worked on this same hackintosh until it was using yosemite (with chimera), now I installed el capitan (and switched to clover) and this is when problems started :( – Jaroslav Jan 10 '16 at 11:59
3

You can use my Chip detector sketch to confirm (using another Arduino to run the sketch) if the target chip is a Atmega16u2 or not, and if so, what fuses etc. are set.

Wiring would be like this:

Connecting to Atmega16u2

Close-up:

Wiring close-up

ICSP header (from above):

ICSP header

You should see something like this:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jan  3 2016 at 07:34:08 with Arduino IDE 10605.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89 
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xEF 
HFuse = 0xD9 
EFuse = 0xF4 
Lock byte = 0xCF 
Clock calibration = 0x96 
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0x4B 0xC0 0x00 0x00 0x64 0xC0 0x00 0x00 0x62 0xC0 0x00 0x00 0x60 0xC0 0x00 0x00 
3010: 0x5E 0xC0 0x00 0x00 0x5C 0xC0 0x00 0x00 0x5A 0xC0 0x00 0x00 0x58 0xC0 0x00 0x00 
3020: 0x56 0xC0 0x00 0x00 0x54 0xC0 0x00 0x00 0x52 0xC0 0x00 0x00 0xEE 0xC4 0x00 0x00 

...

MD5 sum of bootloader = 0xD8 0x8C 0x70 0x6D 0xFE 0x1F 0xDC 0x38 0x82 0x1E 0xCE 0xAE 0x23 0xB2 0xE6 0xE7 
Bootloader name: Arduino-dfu-usbserial-atmega16u2-Uno-Rev3

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00 
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00 
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00 
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00 
40: 0x8B 0xC0 0x00 0x00 0x89 0xC0 0x00 0x00 0x87 0xC0 0x00 0x00 0x85 0xC0 0x00 0x00 
50: 0x83 0xC0 0x00 0x00 0x81 0xC0 0x00 0x00 0x7F 0xC0 0x00 0x00 0x02 0xC1 0x00 0x00 
60: 0x7B 0xC0 0x00 0x00 0x79 0xC0 0x00 0x00 0x77 0xC0 0x00 0x00 0x75 0xC0 0x00 0x00 
70: 0x73 0xC0 0x00 0x00 0x71 0xC0 0x00 0x00 0x6F 0xC0 0x00 0x00 0x6D 0xC0 0x00 0x00 
80: 0x6B 0xC0 0x00 0x00 0x69 0xC0 0x00 0x00 0x67 0xC0 0x00 0x00 0x65 0xC0 0x00 0x00 
90: 0x63 0xC0 0x00 0x00 0x61 0xC0 0x00 0x00 0x12 0x01 0x10 0x01 0x02 0x00 0x00 0x08 
A0: 0x41 0x23 0x43 0x00 0x01 0x00 0x01 0x02 0xDC 0x01 0x09 0x02 0x3E 0x00 0x02 0x01 
B0: 0x00 0xC0 0x32 0x09 0x04 0x00 0x00 0x01 0x02 0x02 0x01 0x00 0x05 0x24 0x00 0x01 
C0: 0x10 0x04 0x24 0x02 0x06 0x05 0x24 0x06 0x00 0x01 0x07 0x05 0x82 0x03 0x08 0x00 
D0: 0xFF 0x09 0x04 0x01 0x00 0x02 0x0A 0x00 0x00 0x00 0x07 0x05 0x04 0x02 0x40 0x00 
E0: 0x01 0x07 0x05 0x83 0x02 0x40 0x00 0x01 0x04 0x03 0x09 0x04 0x32 0x03 0x41 0x00 
F0: 0x72 0x00 0x64 0x00 0x75 0x00 0x69 0x00 0x6E 0x00 0x6F 0x00 0x20 0x00 0x28 0x00 

Programming mode off.

On my genuine Uno I get these settings from OS/X:

  Product ID:   0x0043
  Vendor ID:    0x2341
  Version:   0.01
  Serial Number:    74134373733351300000
  Speed:    Up to 12 Mb/sec
  Manufacturer: Arduino (www.arduino.cc)
  Location ID:  0xfd130000 / 8
  Current Available (mA):   500
  Current Required (mA):    100

I haven't had any problems using the Uno with OS/X however I don't remember whether or not I had to install a device driver for it.


Info I've got using Nick's awesome program:

...
Signature = 0x1E 0x94 0x89 
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xFF 
HFuse = 0xD9 
EFuse = 0xF4 
...
Bootloader:

3000: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 
....

MD5 sum of bootloader = 0x6A 0xE5 0x9E 0x64 0x85 0x03 0x77 0xEE 0x54 0x70 0xC8 0x54 0x76 0x15 0x51 0xEA 
No bootloader (all 0xFF)

It is interesting that they are shipping without a bootloader on the ATmega16U2. Whilst that chip doesn't need one (and it is disabled by the fuses in mine) clearly there are some differences. I checked the "first 256 bytes" of the code between your board and mine and they are the same, so possibly the main code is identical.

I would try to plug your Arduino into another Mac, if possible. It may be that your "hackintosh" has enough differences in its loaded software that it doesn't recognize that USB interface.

  • Thanks for the answer. I have checked your link, and as far as I understood, if I'll connect it like shown on the pictures, I'll get info about Atmega328p chip. How should I connect it to get info from the chip for working with usb (Atmega16u2)? PS. On older Mac OS X versions, it worked flawlessly and without any drivers, – Jaroslav Jan 3 '16 at 16:23
  • See images in amended reply. – Nick Gammon Jan 3 '16 at 20:44
  • I've made a cable today, and here is what I found out: the chip is ATmega16U2, but it's configured slightly different. Here is what I got. Maybe You can say something from the log? I've added in my question. – Jaroslav Jan 8 '16 at 19:47
  • See amended reply. – Nick Gammon Jan 8 '16 at 20:32
  • It works on my macbook, but it's using Yosemite (10.10), and not El capitan. And now I can't upgrade it, because if the problem is in El capitan, then I'll be left without the possibility to program my arduinos :( – Jaroslav Jan 9 '16 at 16:30
0

After two months I finally found a solution. The problem was with USB drivers for my hackintosh. Few days ago new Multibeast 8.1 was released with new USB drivers. After installing El Capitan 10.11.4 update and then installing USB drivers from Multibeast my Arduinos magically starter working again!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.