Ubuntu won't recognize Leonardo.

I have a genuine Leonardo and run Ubuntu. When I try either version of the IDE it'll show 2 serial ports like /dev/ttys0 and 1 but no /dev/ACM0 or similar port. So, I start investigating. I try good ol' "lsusb" and it finds theWIFI fob just fine, and each of the USB fittings, but no mention of a "mystery" adapter at all, let alone show Leonardo. I try another command, "usb-devices" and no dice again.

Looking at the read before posting file and it says to try running the IDE as root. I try "sudo -i arduino" and try the Leonardo again to no avail. The document suggested to make a symbolic link between ACM0 and something else but found no /dev/ACM0 in the /dev directory even with an UNO plugged in.

With the IDE (either 1.0.3 or 1.5.6) I tried both of the /dev/ttys ports and it'll show a successful upload but the test LED wasn't changed after changing the blink time. It's like it got uploaded into a black hole. Anyone have an idea why it won't "just work"? It's a lot farther than I ever got with the RFduino attempt. THAT was such a debacle that I'm going to end up putting the RFduino on eBay and let it become like a Christmas fruitcake that's regifted indefinitely until destroyed.

With the Leonardo there has to be one little trick I don't know as opposed to a non-existent Linux library like the RFduino.

Which version of Ubuntu ? I can try my Leonardo if you want to. Arduino 1.0.3 is old. Use either 1.0.5 or 1.5.7 BETA.

Ubuntu 13.04 and the IDEs are 1.0.5 and 1.5.6-r2.

Fresh installed Ubuntu 14.04 64-bit. Downloaded Arduino IDE 1.5.7 BETA 64-bit and unpacked into a folder. Java is no longer default installed in Ubuntu, so I installed package "default-jre". Connecting Leonardo added a serial port : /dev/ttyACM0 Arduino IDE and gtkterm can not access it. Add your name to the 'dialout' group: sudo adduser $USER dialout Disconnect Leonardo. Log out and log in. Connect Leonard, and start Arduino IDE.

If your Leonardo does not connect at all, there might be something wrong with the hardware.

I’m new to the subject, I recently bought a Arduino GSM Shield, I’m doing the arduino examples provided. I made the code as it is written like this there. and when I try to type the phone number for the serial port does nothing more, I need your help to see if there is an error in the code. Thank you.

link: http://arduino.cc/en/Reference/GSMSMSEndSMS?action=sourceblock&num=1

#include <GSM.h>

#define PINNUMBER “”

// initialize the library instance
GSM gsmAccess; // include a ‘true’ parameter for debug enabled
GSM_SMS sms;

void setup()
{
// initialize serial communications
Serial.begin(9600);

Serial.println(“SMS Messages Sender”);

// connection state
boolean notConnected = true;

// Start GSM shield
// If your SIM has PIN, pass it as a parameter of begin() in quotes
while(notConnected)
{
if(gsmAccess.begin(PINNUMBER)==GSM_READY)
notConnected = false;
else
{
Serial.println(“Not connected”);
delay(1000);
}
}

Serial.println(“GSM initialized”);
}

void loop()
{

Serial.print("Enter a mobile number: ");
char remoteNumber[20]; // telephone number to send sms
readSerial(remoteNumber);
Serial.println(remoteNumber);

// sms text
Serial.print("Now, enter SMS content: ");
char txtMsg[200];
readSerial(txtMsg);
Serial.println(“SENDING”);
Serial.println();
Serial.println(“Message:”);
Serial.println(txtMsg);

// send the message
sms.beginSMS(remoteNumber);
sms.print(txtMsg);
sms.endSMS();
Serial.println("\nCOMPLETE!\n");
}

/*
Read input serial
*/
int readSerial(char result)
{
int i = 0;
while(1)
{
while (Serial.available() > 0)
{
char inChar = Serial.read();
if (inChar == ‘\n’)
{
result = ‘\0’;

  • Serial.flush();*
  • return 0;*
  • }*
  • if(inChar!=’\r’)*
  • {*
    _ result = inChar;_
    * i++;*
    * }*
    * }*
    * }*
    }

If I plug in the UNO, the /dev/ttyACM0 shows up but with the Leonardo plugged in, the ttyACM0 port dematerializes. With an UNO (or even an UNO copycat) the IDE works fine. It's that the Leonardo doesn't register with the OS itself. With an UNO, the serial monitor works fine also.

If you have a programmer (or use Arduino as ISP), you can try to re-write the bootloader.

pentius: If I plug in the UNO, the /dev/ttyACM0 shows up but with the Leonardo plugged in, the ttyACM0 port dematerializes. With an UNO (or even an UNO copycat) the IDE works fine. It's that the Leonardo doesn't register with the OS itself. With an UNO, the serial monitor works fine also.

Hi pentius, did you fix the udev rules? See this thread

I saw the thread and tried the udev rules shown. First the good news. It didn't ruin the system. The bad news. The Leonardo still isn't seen. I typed in the code as shown in that thread. The Pro Micro he has must have different numbers to ID it my Leonardo so I can't use it as-is. No two Linux boxes are ever alike. Maybe try a Radio Shack Pro Micro copycat card?

pentius:
The Pro Micro he has must have different numbers to ID it my Leonardo so I can’t use it as-is. No two Linux boxes are ever alike.

I have Pro Micros from two different (eBay) suppliers and they have different ID codes to each other. You have to identify which TWO ID codes are used by the Arduino and set up UDEV rules for both.

Having said that, I have upgraded to Ubuntu 14.04 in the last few days. I can’t now find the udev blacklist rules file I created back while I was using Ubuntu 13 (see thread link from last post). Yet (at least one of) my Pro Micros works fine. I uploaded sketches several times today with no problems.

Not sure what else to suggest, sorry.

Paul