An Arduino Leonardo gets detected in Device Manager, but then it gets disconnected.
So, this is what I am doing. Connecting Arduino Leonardo to my laptop. It gets detected in Device Manager (I have updated the driver as well). However, I soon hear a beep and the Leonardo gets uninstalled. If I push the 'Reset' button it gets detected again. However, after a few seconds it gets disconnected again. The Device Manager displays the message
Currently, this hardware device is not connected to the computer. (Code 45)
Note: It was working fine a couple of weeks ago. I am using Windows 7.
It looks like a problem with the soft-reset of the Arduino Leonardo, normally when you connect the Arduino Leonardo, it appears in Device Manager like Ard...bootloader (COMX), for a few seconds and then the Arduino Leonardo appears on a different COM port.
I know, in your case, after that it just disappears.
Try to select that port in the Arduino IDE, and then you have to try to load some sketch, like blink.ino. Press the reset button at the same time, and then when the sketch is beginning to be uploaded, release the reset button. That works for me.
I had exactly the same problem. After pushing Reset my Arduino Micro first got detected normally. Here's the corresponding excerpt from my /var/log/syslog (without the timestamps, etc.):
usb 6-1: new full-speed USB device number 56 using uhci_hcd
usb 6-1: New USB device found, idVendor=2341, idProduct=0037
usb 6-1: New USB device strings: Mfr=2, Product=1, SerialNumber=0
usb 6-1: Product: Arduino Micro
usb 6-1: Manufacturer: Arduino LLC
cdc_acm 6-1:1.0: ttyACM3: USB ACM device
But only a few seconds later it got disconnected:
usb 6-1: USB disconnect, device number 56
After a long search I found how you can recover from this fatal situation:
Connect your Arduino via a USB cable.
Open the Arduino IDE and load the "Blink" example.
Open a shell and enter: tail -f /var/log/syslog. This is for observing which /dev/tty port the Arduino gets associated with.
Now you must be fast: Reset the Arduino, see what /dev/tty port it gets and choose that port in the IDE under menu Tools → Serial Port. You must do this before the Arduino disconnects again or else the correct menu point won't be accessible. You probably need one or two tries before you get it. That was the hard part.
Press "Reset" again on the Arduino, and immediately after, press the Upload button in the Arduino IDE.
Your Arduino should start the blink program shortly after the Upload and is "healed".
After some more investigation I found the reason for the whole misery: In some forgotten source code of some forgotten file there was a main() function (I had written that one for some tests under Linux/g++ some weeks before). The compiler now preferred to use that main() instead of the standard main() from the IDE environment.
The result is that the USB gets disconnected, probably because the original main() does some initialisation which now was missing.
Make sure that nothing, rather than the USB cable, is connected to the Arduino and try again. If the problem persist, try to replace the cable and test it on a different USB port.
Try also to read the post Windows Not recognizing Uno. If you can see the Arduino in the Device Manager for few seconds, try to reinstall the drivers. The drivers are in the Arduino IDE folder.
You may know about those ICSP "mystery" pins.
Take an Arduino Uno and add the needed "Arduino as Programmer" code to it, wire the Leonardo to the Arduino Uno and now you can program the Leonardo - but you'll nuke the Leonardo's bootloader.
In the IDE, go to "file" and move the mouse to "upload using Arduino as programmer" and have your fun. If you resort to this method, do not buy a LilyPad USB as it has the exact same 32U4 chip like a Leonardo and doesn't have the ICSP pins. That is, unless you can solder the pins into the six holes!
Related
I am working with an ESP32-CAM and have run into a bizarre problem with serial communication. I was able to burn the Edge Impulse (https://www.edgeimpulse.com/) firmware onto the ESP32 using a Raspberry Pi and their shell script, which invokes esptool. The firmware appears to write OK. Using esptool to query the chip id seems to work - it returns an id that changes when I swap ESP32 modules. However the Edge Impulse daemon cannot see the ESP32.
This is where it gets really weird. Using screen, I can't see anything on the USB port. I take the ESP32 and cable over to a different computer and I can see the firmware transmitting messages over USB if I use the Arduino serial monitor or the Termite serial program. However if I use Putty I see nothing. No messages, no gobbledygook, nothing at all, even if I reset the ESP32. I have checked (and re-checked) baud, port settings, flow control, local echo, CR/LF. I've tried resetting the ESP32 while watching output from Putty. I've also tried a different PC and gotten the same results.
I'd like to understand what is going on here. Can anyone offer an explanation?
thx
Burned firmware with esptool on Raspberry Pi - works
Queried chip_id with esptool on Raspberry Pi - works
(above shows that serial port, cable and ESP32 are good, I believe)
View USB output with screen and minicom on Raspberry Pi - nothing
View USB output with Arduino serial monitor and Termite from Windows 10 PC - works
View USB output with Putty from Windows 10 PC - nothing
I bought esp8266 with serial wifi wifi card
I connect RX to TX; TX to RX; VCC to VCC; GRD to GRD;
I cant communicate with the board not if program mode and not in UART mode; the reset do nothing.
the red led on the board is on.
I connected the wifi serial to Arduino uno board.
try to upload sketch i got the following error:
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
Any help or guides will help me to solve the issue.
Since I have had numorous of problems with my ESP8266 modules, this is what I generally watch for:
Output is 3.3v
Swap over tx and rx. Some boards have them swapped for some reason (searched for days for this!!)
When uploading the code, first the code compiles, then the code uploads. During the compile process, keep the reset button (or pin) pressed. As soon as you see the "uploading" status message, you can release it.
Make sure the GPIO0 is connected to the ground and (depending on which version you have) the GPIO15 as well.
When grounding the GPIO0 and GPIO15, use a resistor for each (between 2K and 10K will do).
I've spent two nights trying to upload firmware so I'll just repeat what helped me since there's not so many solutions:
First in Serial Monitor make sure that your chip responses to AT commands. There's no point in going further without achieving it. If you fail here then it's time to check your commutation, power source, etc.
While uploading: 1. Ground GPIO-0 pin. 2. In Arduino IDE press Upload button. 3. Code starts compiling. 4. As soon as you see that code starts uploading ground RST pin for just a blink. Before I reseted the chip too early so I had sync failed problem as you did. It took me a while to "catch" this moment for resetting the chip. Still I upload new firmware in 4-5 takes.
Before flashing firmware, please hold FLASH button, and press RST button once. When our firmware download tool released, it will flash firmware automatically and needn't press any button
I have this really weird issue where grounding GPIO 0 didn't work for me, but after a lot of trial and error I managed to upload the sketch connecting directly both gpios to ground in the arduino board and it worked. Really strange.
I had the same issue. In my case, I was uploading while in another terminal program I was checking for serial data. After I closed the serial monitor (and let Arduino IDE use the serial port) the problem was resolved partially.
The other half of the problem involves carefully pressing the button GPIO0 and then RESET.
This helped me achieving that.
I had the same issue, but after I set the Programmer to "AVR ISP" in the Arduino IDE/Tools, after that the upload was successful and it worked fine.
Hope it helps.
First you have to make sure that the Arduino IDE has the ESP8266 libraries installed. To do that, go to file>preferences and under Additional Boards Manager URLS, paste this link:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Then, go to tools>board>boards manager. Scroll until you find the link for ESP, than download it.
Once you select all the info for the board change the programmer to "AVR ISP"
Finally, to download the code, hold down the GPIO0 button and press the reset button once. Finally, hit download!
To use serial monitor, you may need to use the 115200 speed as it is not the default.
Hope this helps!
Please downlode and install these driver as per OS i spent 6 hours today and finally this was the solution.
https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx
Look follow the leads and you will get the proper output as 'OK' in reply to AT command, just search for Arduino15 file in C directory of your computer, it will be in somewhere at C/users/app data and delete it, then set the Arduino to arduino uno board or whatever board you are using and connect the Esp8266 as, UNO --- ESP8266
RX ----- RX
TX ----- TX
GND --- GND
3.3V --- VCC and CH_PD
Once Connected open the Serial Monitor and set "Both NL & CR" and Baud to 9600.
Send "AT" to test. If nothing comes up try different baud rates such as 115200 or 57600 and retest.
If you get "OK" reply then all is working.
I just bought the Wemos D1 and had the same problem: I could not upload my sketches. There were several reasons for this:
1) I did not have the CH340G drivers loaded on my Mac. Both Win and Mac platforms need these drivers. Linux does not. I found my drivers at http://sparks.gogo.co.nz/ch340.html
2) You need to add the board to your Arduino IDE. You can find the steps to do that at http://www.beerandchips.net/2016/01/24/wemos-d1-hands-on-with-the-new-arduino-compatible-esp8266-dev-board/
Once I completed those 2 steps (be sure to select the serial port) everything worked great and I can upload my sketches with no difficulty.
I had (too many/wrong) COM port(s). Find the right one and I't fine.
This worked for me this time in the following way to successfully upload sketch from IDE to esp8266 via arduino:
1) IDE Tools menu: upload speed 115200
2) opt this one in tools menu: Programmer- AVR ISP
3) Keep serial monitor closed. If com port not visible under Tools, disconnect and reconnect USB from laptop
4)Reset Arduino
5)Connect GPIO0 of 8266 to VCC(3.3V) for a blink and remove
6) Connect reset of 8266 to gnd for a blink and remove
7)GPIO0 grounded..keep this one gnded for the upload period
Hope this one works..
My Arduino Uno was all set up and was working fine.
Project: Arduino controls a 9v motor depending on the command given. As the Arduino only provides 5v, I added a 9v battery to it through a transistor
I decided to add new code into the Arduino but when I tried it failed. I have uploaded code thousands of times before (successfully) all of a sudden the IDE keeps giving the following message
avrdude: ser_open(): can't open device ".\COM3": Access is denied.
I have looked up for a lot of solutions on this forum and elsewhere. Here are the things I have tried so far:
Changing the COM port
Disabling all the other devices CONNECTED to COM
Tightening the CONNECTIONS
Re installing all the drivers and the IDE
Rebooting the system
Using another laptop to upload code
All the above have given me the same output for some reason. The built in LED light and the power LED switch on when the board is connected to a power source (my laptop). Could the board have been damaged by any chance? How can I check if the board is spoilt? Should I buy a new board?
this may help;
remove the mcu from the board and connect the board to your PC.
try to open the com port.
if it opens, short TX pin to RX pin.
send some data and check if you are getting the data back. this way you can make sure your usb-ttl is not damaged.
With my verry limited experience with Arduino I've seen that the IDE sometimes resets the saved arduino on startup. Press extra -> Board -> yourboard and try again.
make sure you have the right ports COM1 and COM1
activate it too in arduino
Once it happened to me that a defective USB cable was the culprit. For one board it gave messages like
avrdude: stk500v2_ReceiveMessage(): timeout
But for another board I also got these messages "can't open device - access denied". It's always worth to try another cable.
I am trying to upload this firmware sck_beta_v0_8_6 via Arduino 1.0.5-r2.
I have chosen LilyPad Arduino USB as the board. The device is a Smart Citizen Kit Urban Shield v.1.1.
The upload fails with the following error message:
Found programmer: Id = "BÛR"; type =
Software Version = . ; Hardware Version = .
avrdude: error: buffered memory access not supported. Maybe it isn't
a butterfly/AVR109 but a AVR910 device?
What am I doing wrong?
Sometimes, a different USB cable will make all the difference. There is a wide range in the quality of cables on the market, and sometimes, you get one on the ragged edge of acceptable.
The Arduino lilypad seems to be particularly susceptible to this. Glad this helped.
Press the Reset Button before upload the code, until you hear the "unplug" sound (in windows). Open the IDE and try it again
I had the same error message trying to upload a sketch to an Arduino Leonardo board from a Levovo laptop using Arduino ver 1.0.6. Both Device Manager and Arduino showed the board connected on COM3. Arduino also gave an error message that COM3 was being used by another App. I tried changing USB cables but got the same message. What worked was changing the USB outlet from the top right rear on the Lenovo to the bottom right rear outlet. It connected on COM8 and I was able to upload the sketch. Understand there are speed differences between the two outlets. Now all I need to do is figure out why I cannot upload sketches to the same Leonardo board on my HP laptop with Windows 10 and the most recent Arduino version. Connects on COM6 but hangs up when uploading. (Note: Also had to edit some Arduino library files that worked on ver 1.0.6 but showed compile errors in the latest version.)
I had the same error, but I later found that I had the wrong Arduino type selected, instead of Nano I had Yun.
I had the same issue when trying to upload code into Arduino Micro ( Chinese clone ). Spending hours on Google, flashing new bootloader - still nothing. Physical reset and opening COM port with boundrate 1200 doesn't work. Why?
I HAVE ATMEGA168 INSTEAD OF ATMEGA32u4!
Google is telling, that Arduino Micro got Atmega32u4, but my clone got Atmega168! First of all, check what atmega type do you have by lookup on black soldered chip on Arduino.
So instead of choose "Arduino Micro" on "Board" menu, i choose Arduino Nano and everything works!
I get this same error, avrdude: error: buffered memory access not supported also with garbage-looking output with programmer id # with versions ., when I point avrdude at the serial port of the stock main firmware of my Leonardo-compatible breakout board instead of the serial port offered during the bootloader; it seems that the latter is what avrdude can program?
The normal initial output when actually connecting to the bootloader would be something like:
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
To get to the bootloader you can either
press the reset button (if you don't have a reset button, connecting reset to ground), or
briefly connect to the main firmware's serial port at 1200 bps and disconnect
The bootloader will present a different serial USB device than the main firmware's serial USB device, so it may get assigned a different serial port number in your OS, usually the next available one. For instance in Windows my Leonardo-compatible main firmware was assigned COM3 and the bootloader was assigned COM4.
A python script, courtesy of https://nicholaskell.wordpress.com/tag/leonardo/, for doing this serial 'knock':
reset.py:
#!/usr/bin/env python
import serial, sys
serialPort = sys.argv[1]
ser = serial.Serial(
port=serialPort,
baudrate=1200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
ser.isOpen()
ser.close() # always close port
In Windows land, I have a cmd script for using this in a virtualenv
reset.cmd:
"C:\Program Files (x86)\Python37-32\Scripts\virtualenv.exe" pyreset_virtualenv
pyreset_virtualenv\Scripts\pip.exe install pyserial
pyreset_virtualenv\Scripts\python reset.py COM3
pause
adjust to suit your serial port and python path.
Either way, after getting the bootloader connected, you have a brief window of a couple of seconds where avrdude can connect to the new serial port to start programming before the bootloader will go into the main firmware again, at which point you'll have to do the reset again. So, once you figure out the bootloader serial port, you'll want to prepare the avrdude command line to run in advance, so you can launch it without delay after the reset.
While this answer isn't specific to the lilypad, you need to reset the board to write or read from/to the memory. However, If you are using avrdude in the terminal you must send a specific baudrate(1200 for the Leonardo) then close, wait 2 seconds, and open the port. At that point you can read and write to and from your Arduino. I achieved this using python.
Along the lines of:
Import serial
Import time
Import os
Seri=serial.Serial(yourConnectedPort, specificBaudRate)
Seria.close()
time.sleep(2)
Seri.open()
os.system(your avrdude command)
I have put together a Bareduino which is an ATmega328 on a breadboard. I have a transceiver chip (MAX233) connected to it and to my serial port adapter on my laptop. I haven't been able to upload any sketches yet. What is the bootloader sequence? Does the Arduiono send out a character first or does the IDE? What is it looking for?
I have a manual reset button. The ATmega328 comes with a bootloader and a program already in it to blink an LED on D13 (chip pin 19). The LED is blinking on and off at one second intervals so it appears to be running. I have ordered an FTDI board, but I scrounged up a MAX233 and thought I would give it a try. Sorry, not a coding question, but I am interested in learning about the bootloader sequence.
On bootlup, the Arduino waits for a signal from the IDE, if it doesn't get one, it runs the local program. Are you getting timeouts? Are you selecting the right com port and board type? depending on the boot loader installed on your chip, try duemilanove or uno. do you have the capacitor for auto reset installed?
see http://www.instructables.com/id/The-Embedded-Arduino-building-an-Arduino-into-a-p/