Методы исправления ошибки «Linux Arduino Permission Denied» с примерами кода

  1. Добавить пользователя в группу исходящего вызова:

    • Откройте терминал и выполните следующую команду:
      sudo usermod -a -G dialout $USER
    • Выйдите из системы и войдите снова, чтобы изменения вступили в силу.
  2. Установите правильные разрешения для последовательного порта:

    • Определите последовательный порт, связанный с вашим устройством Arduino (например, /dev/ttyUSB0).
    • Выполните следующую команду, чтобы предоставить разрешения на чтение и запись:
      sudo chmod a+rw /dev/ttyUSB0
  3. Использовать правила udev:

    • Создайте новый файл правил udev с помощью текстового редактора:
      sudo nano /etc/udev/rules.d/99-arduino.rules
    • Добавьте в файл следующую строку, заменив /dev/ttyUSB0последовательным портом вашего устройства Arduino:
      KERNEL=="ttyUSB0", MODE="0666"
    • Сохраните файл и выйдите из редактора.
    • Перезагрузите правила udev с помощью команды:
      sudo udevadm control --reload-rules
  4. Запустите Arduino IDE с правами root:

    • Откройте терминал и перейдите в каталог Arduino IDE.
    • Запустите Arduino IDE с правами root с помощью команды:
      sudo ./arduino
  5. Предоставление разрешений с помощью Polkit:

    • Создайте новый файл правил Polkit с помощью текстового редактора:
      sudo nano /etc/polkit-1/rules.d/99-arduino.rules
    • Добавьте в файл следующее содержимое:
      polkit.addRule(function(action, subject) {
      if (action.id == "org.freedesktop.devicekit.disks.filesystem-mount-system" ||
         action.id == "org.freedesktop.devicekit.disks.filesystem-mount") {
       var p = getCallerIdentity().unixUser;
       if (subject.isInGroup("dialout") && p == 0) {
         return polkit.Result.YES;
       }
      }
      });
    • Сохраните файл и выйдите из редактора.
    • Перезагрузите систему.