0

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.

6
  • try to install the megaAVR boards package in IDE. it installs drivers too
    – Juraj
    Nov 18, 2023 at 13:06
  • thanks @Juraj, afaik the kernel module 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.
    – hintze
    Nov 21, 2023 at 10:07
  • Just to be really certain, in the case that you are USB-powering the boards, does the power LED light solidly?
    – timemage
    Nov 21, 2023 at 14:21
  • Regarding Juraj's comment, I believe it is significant with respect to your Windows 10 testing, which I'm guessing is all he intended to related to. My memory that Windows requires the Arduino "driver" in some (all?) cases despite being a CDC-ACM interface. There's no driver proper in it though; no .sys file. It's just an .INF file that associates a built-in CDC-ACM .sys driver to the VID:PID/interface of the Arduino. It's just not entirely automatic in Windows as it is in Linux. That said, it need only enumerate on USB (even without "drivers") to at least list in some way in Device Manager.
    – timemage
    Nov 21, 2023 at 14:24
  • Nope, there's no sign of life at all from the boards if USB is connected as described.
    – hintze
    Nov 22, 2023 at 10:10

3 Answers 3

0

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()
3
  • 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
    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 damaged
    – KIIV
    Nov 21, 2023 at 11:48
  • Maybe also check 3V3, it's powering the com chip Nano Every Schematics
    – KIIV
    Nov 21, 2023 at 11:56
0

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.

3
  • 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
    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 into ls -l /lib/modules/$(uname -r), see also kernelconfig.io/config_usb_acm or keil.com/pack/doc/mw/USB/html/…
    – hintze
    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
    Nov 21, 2023 at 13:22
-1

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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