I have two original (designed and assembled in Italy) Arduino Nano Every Boards from a German Web Shop. They came sealed in original packaging. When I try to connect them to my PC, they don't power up.
What I've tried so far:
- 6 different USB cables
- 1 Desktop PC with Arch Linux as well as Windows 10, all USB Ports available (front headers, back side motherboard)
- 1 Laptop PC with Arch Linux
- 1 Google Pixel 4 XL using a USB-B to -C adapter
No combination of the USB cables with any of the aforementioned USB Ports / Machines / Operating Systems allow the Arduino Nano Every Boards to boot up (no LEDs flashing).
I tried powering the boards using a 9V battery block on the V_in and GND pins, which works. I also tried powering the boards using a 9V battery block and then connecting the USB, but the aforementioned machines / operating systems do not recognize a new device connected via USB, despite the boards being powered (LEDs flashing).
I also triple-checked the physical connection of the USB cables on both ends to be sure they are inserted properly. I can use the aforementioned USB cables, USB ports, machines, and operating systems to charge other devices or transfer data with other devices (like, e.g., smartphones, e-book readers, USB flash memory sticks, external hard drives, ...).
What should I try next to get the Arduino Nano Every working?
Please let me know which extra information I should provide. Thanks!
Note: As far as I can see, using lsusb
on Linux should always list connected USB devices, regardless of the groups my user's in. Nevertheless, I also loaded the cdc_acm
module and added SUBSYSTEMS=="usb-serial", TAG+="uaccess"
to a udev rule located at /etc/udev/rules.d/01-ttyusb.rules
, and reloaded the udev rules, to no avail.
3 Answers 3
These types of questions often requires considerable trouble shooting until the cause is found. In order to make this useful to as many people as possible, let us compile a list of actions. (Add a comment if any have additional actions to try and I'll add them to the list.)
- "...powering the boards using a 9V battery block on the V_in and GND pins..."
Confirm the 9V supply is connected to VIN. An internal voltage regulator will then provide the necessary 5V and 3V3 to the rest of the Nano-Every. Consider if 9V was accidentally connected to either the 5V or 3V3 pins, parts of the Nano-Every my be damaged.
- "using lsusb on Linux should always list connected USB devices"
Yes, it should. If "lsusb" is typed before and after plugging in the Nano Every there should be an additional USB device listed. If there is no change, there may be something physically wrong (bad cable or incorrect cable (i.e. charging only), bad Nano or burnt out part).
Also, "lsusb" normally does not require root privileges. But consider trying "sudo lsubs" to confirm all USB devices are seen.
Here is an example output of "lsusb" run when an Nano-Every was connected to a Ubuntu computer:
$ lsusb
...
Bus 001 Device 004: ID 2341:0058 Arduino SA Arduino Nano Every
- "I also loaded the cdc_acm module ..."
Inspecting a Ubuntu system that can successfully program a Nano-Every, I see no package with the words cdc_acm in it installed.
(I'm going to have to look into the above. While Ubuntu's package manager does manage cdc-acm.ko, cdc-acm.ko exists.)
- "...and added SUBSYSTEMS=="usb-serial", TAG+="uaccess" to a udev rule located at /etc/udev/rules.d/01-ttyusb.rules"
Be aware that adding a udev rule with a low value such as "01*" is likely to be obscured by any udev rule with a higher number should a match be found. Most developers add udev rules which start with a high number such as "99*" to mitigate this problem.
This said, it is unlikely a modification to udev rules is necessary. Most if not all Linux distributions will handle a USB/CDC type of peripheral adequately with out modifications. Plugging in a Nano-Every into the above mentioned Ubuntu computer generates a new device at /dev/ttyACM0.
- "I tried powering the boards using a 9V battery"
Avoid using PP3 type 9 Volt batteries. They can be problematic when their lower current capacity has been reached. At which point their output voltage may drop. Leading to unexpected results. If such a battery is necessary, pay close attention to current needs adding up all the expected maximum currents. In brief, lower powered processor on Arduino boards built using an LDO (Low DropOut regulator) have the best chance of working as expected. Other Arduino boards may not work as well and high current components such as a motor, solenoid or relay will likely not work.
-
you write: "there may be something physically wrong (bad cable or incorrect cable (i.e. charging only), bad Nano or burnt out part)." Yes, exactly, that's why I tried 2 different arduino nano every boards using 5 different USB cables on 3 different machines using 3 different operating systems, where all of the mentioned items actually work apart from the 2 arduino nano every boards.hintze– hintze2023年11月21日 09:56:23 +00:00Commented Nov 21, 2023 at 9:56
-
the
cdc_acm
is a kernel module that drives devices which support the Communication Device Class Abstract Control Model interface (look intols -l /lib/modules/$(uname -r)
, see also kernelconfig.io/config_usb_acm or keil.com/pack/doc/mw/USB/html/…hintze– hintze2023年11月21日 10:04:58 +00:00Commented Nov 21, 2023 at 10:04 -
I made a somewhat generic list of things to try so others might benefit too. I saw where you tried several cables. I wanted to ask if they were identical (perhaps all charging only) or from different manufactures. I see cdc-acm.ko now. I used "sudo dpkg -l | grep cdc | grep acm" which shows no such package on Ubuntu. I like @KIIV's idea of checking the 5V and 3V3 while supplying power through USB and also after switching to your 9V battery at VIN. That should tell us if the Nano-Every's regulators and power diode is working. Also, avoid using low current PP3 9V batteries.st2000– st20002023年11月21日 13:22:43 +00:00Commented Nov 21, 2023 at 13:22
It's some regression in linux core and 1200baud touch doesn't work properly (it seems it's used switching between updi mode and serial link).
I started using script mentioned in https://github.com/arduino/ArduinoCore-megaavr/issues/124 and i was able to upload it in most cases (but better than mostly failing) when I execute it few seconds before the upload.
For example curiosity nano board with Atmega4809 works perfectly as it's emulating debugger+serial+mass storage (but needs correct VID/PID in udev rules or connecting storage)
Mentioned script:
#!/usr/bin/python3
# Run this script to reset the Arduino Nano Every
# eg. sudo python3 mcu_reset.py
#
# Note: You must install pyserial first; i.e. sudo pip3 pyserial
import serial
import os, sys
# total arguments
n = len(sys.argv)
if n >= 2:
port = sys.argv[1]
else:
port = '/dev/ttyACM0'
print("Port: {}".format(port))
#re-enable hupcl temporarily (necessary for arduino reset using serial port)
os.system('sudo /bin/stty -F {} hupcl'.format(port))
try:
#perform Arduino Nano Every reset "handshake"
ser = serial.Serial()
ser.baudrate = 1200
ser.port = port
ser.open()
ser.close()
except serial.SerialException:
print("Error: serial.SerialException")
exit()
-
Thanks for your answer! Unfortunately, if the Board doesn't even turn on, isn't recognized by
lsusb
, and the USB to serial chip on the board doesn't run - how should setting a baudrate on that serial port help?hintze– hintze2023年11月21日 09:55:55 +00:00Commented Nov 21, 2023 at 9:55 -
And it won't turn on even on USB charger? How about using 5V pin (with 5V input)? If first doesn't work and second works (which probably does as Vin is going through 5V too), then the protection diode between Vusb and +5V might be reversed or destroyed or the USB connector is somehow damagedKIIV– KIIV2023年11月21日 11:48:25 +00:00Commented Nov 21, 2023 at 11:48
-
Maybe also check 3V3, it's powering the com chip Nano Every SchematicsKIIV– KIIV2023年11月21日 11:56:37 +00:00Commented Nov 21, 2023 at 11:56
I've ordered an Arduino Nano (not "Every") from a different web shop now, and it powers up as soon as I connect to USB. Since the Arduino Nano uses mini-USB (the Arduino Nano Every uses micro-USB), I'm using a different cable from the ones I tried on the two Arduino Nano Every boards I have. But given that I tried multiple cables that also work with other devices, I'm confident now that the two boards I have are just broken. I've had bad luck.
Explore related questions
See similar questions with these tags.
cdc_acm
drives devices which support the Communication Device Class Abstract Control Model interface already. Apart from this, since the Arduino Nano Every boards I have do not even start, driver issues are of low probability imho.