Не удалось открыть файл /dev/ttyACM0 (порт занят)

Я пытаюсь работать с (новой) бритвой sparkfun razor IMU 9dof, я написал silple sktetch для калибровки магнитометра:

#include <SparkFunMPU9250-DMP.h> // Include SparkFun MPU-9250-DMP library
#include <Wire.h> // Depending on your Arduino version, you may need to include Wire.h
MPU9250_DMP imu; // Create an instance of the MPU9250_DMP clas
void setup() {
  Serial.begin(115200);

  Serial.println(F("Adafruit 10 DOF Board AHRS Calibration Example")); Serial.println("");

  if (imu.begin() != INV_SUCCESS){
    while (1) {
    Serial.println("Failed to initialize MPU-9250, loop forever");
   }

  }

 imu.setGyroFSR(2000); // Set gyro to 2000 dps

 imu.setAccelFSR(2); // Set accel to +/-2g

 imu.setLPF(5); // Set LPF corner frequency to 5Hz

 imu.setSampleRate(100); // Set sample rate to 10Hz

imu.setCompassSampleRate(100); // Set mag rate to 10Hz
}

void loop(void){
  imu.update();

  // Print the sensor data
  Serial.print("Raw:");
  Serial.print(imu.ax);
  Serial.print(',');
  Serial.print(imu.ay);
  Serial.print(',');
  Serial.print(imu.az);
  Serial.print(',');
  Serial.print(imu.gx);
  Serial.print(',');
  Serial.print(imu.gy);
  Serial.print(',');
  Serial.print(imu.gz);
  Serial.print(',');
  Serial.print(imu.mx);
  Serial.print(',');
  Serial.print(imu.my);
  Serial.print(',');
  Serial.print(imu.mz);
  Serial.println();  

  delay(50);
}

Чтобы убедиться, что Arduino IDE может получить доступ к dev/ttcACM0, я сделал sudo chmod 666 /dev/ttyACM0

Я могу dowload успешно, но когда я хочу, чтобы открыть терминал, я получил следующую ошибку:

Erreur d'ouverture du port série « /dev/ttyACM0 ». (Порт занят) (см. прилагаемый скриншот)

Более того, когда я ввел dmesg на консоли, я вижу следующие сообщения:

[   94.133923] usb 3-2: USB disconnect, device number 2
[   94.133978] cdc_acm 3-2:1.1: urb 12 failed submission with -19
[   94.135862] cdc_acm 3-2:1.1: urb 13 failed submission with -19
[   94.136059] cdc_acm 3-2:1.1: urb 14 failed submission with -19
[   94.136257] cdc_acm 3-2:1.1: urb 15 failed submission with -19
[   94.136457] cdc_acm 3-2:1.1: urb 2 failed submission with -19
[   94.136656] cdc_acm 3-2:1.1: urb 3 failed submission with -19
[   94.136852] cdc_acm 3-2:1.1: urb 5 failed submission with -19
[   94.137048] cdc_acm 3-2:1.1: urb 6 failed submission with -19
[   94.138841] xhci_hcd 0000:03:00.0: WARN Cannot submit Set TR Deq Ptr
[   94.138843] xhci_hcd 0000:03:00.0: A Set TR Deq Ptr command is pending.
[   94.931853] usb 3-2: new full-speed USB device number 3 using xhci_hcd
[   95.316578] usb 3-2: New USB device found, idVendor=1b4f, idProduct=9d0f
[   95.316581] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   95.316582] usb 3-2: Product: SFE 9DOF-D21
[   95.316584] usb 3-2: Manufacturer: SparkFun
[   95.320306] cdc_acm 3-2:1.0: ttyACM0: USB ACM device
[  858.774849] usb 3-2: USB disconnect, device number 3
[  904.529058] TCP: wlp1s0: Driver has suspect GRO implementation, TCP performance may be compromised.

Кто-нибудь здесь сталкивался с такой проблемой?

Спасибо за вашу помощь

Фабрис

, 👍2

Обсуждение

Удалите пакет modemmanager., @Majenko

Кроме того, вы должны добавить своего пользователя в группу, которая владеет последовательными устройствами - трюк chmod придется повторять каждый раз, когда вы перезагружаете или заново подключаете плату. Наконец, вы можете использовать lsof | grep ttyACM, чтобы увидеть, какой процесс удерживает порт (возможно, потребуется запустить lsof от имени root, но сначала попробуйте его от себя), @Chris Stratton

Просто сначала выясним простые вещи: закрыли ли вы все последовательные мониторы в других экземплярах?, @Sim Son


4 ответа


5

sudo apt-получить диспетчер режимов очистки Это помогает мне для пользователя Linux и для многих других людей. Теперь я играю со stm32f103, и открытие порта было болезненным. Это было проблемой только для чипа stm32. Arduino nano работал без проблем. Прежде чем мне нужно будет несколько раз открывать порт, чтобы инициировать связь. Это было больно. После нахождения этого решения теперь Arduino ID работает без проблем. Я не уверен, что удаление modemmanager повлияет на мою систему.

,

2

Я решил следующие проблемы, связанные с последовательным портом в ubuntu 18.04 следующим образом:

Проблема 1 : Не удается открыть /dev/ttyACM0: Отказано в разрешении
Решение : Предоставьте разрешения на чтение/запись в последовательный порт с помощью этой терминальной команды ---> > sudo chmod a+rw /dev/ttyACM0 Здесь замените порт tty соответствующим портом ubuntu.

Проблема 2 : Не удалось открыть /dev/ttyACM0 (порт занят) Решение : Эта проблема возникает, когда последовательный порт занят или уже занят. Поэтому убейте занятый последовательный порт с помощью команды ---> > fuser -k /dev/ttyACM0. Здесь замените порт tty соответствующим портом ubuntu.

Проблема 3 : Плата at /dev/ttyACM0 недоступна Решение : В этом случае ваш последовательный порт в меню сервис будет серым. Я много гуглил для этого, но ни одно решение не сработало для меня. Atlast Я попробовал другую плату arduino и USB-разъем, и это сработало для меня. Таким образом, если у вас есть старая плата arduino (может быть решена с помощью необходимых драйверов) или дефектная плата arduino, то возникает только эта проблема.

,

1

Когда у меня возникла эта проблема, я обнаружил, что запуск ps x показывает множество задач, связанных с временными файлами монтирования. Поэтому я закрыл Arduino, запустил sudo rm -rf /tmp/.mount_arduin* и перезапустил Arduino. Устройство успешно подключено.

,

1

Вы должны быть частью группы исходящего вызова. Попробуй это: Наберите «группы», есть ли там «дозвон»? sudo usermod -a -G tty вашеимя пользователя Пример sudo usermod -a -G tty gil

Выйдите из системы и войдите снова, чтобы изменения вступили в силу. У меня это всегда работало, и теперь оно есть в некоторых установочных пакетах Arduino.

,