Inappropriate ioctl for device

Я использую Arduino Uno и Mac и пытаюсь загрузить свой код на плату. Я пытался загрузить программу с разных компьютеров (MacBook Air и Pro), и у меня все еще есть эта проблема.

Как это исправить? Я попытался загрузить драйвер FTDI. Я зашел на сайт, который они предложили, и попытался следовать инструкциям. Я даже следил за другими сообщениями в Stack Exchange, но все равно не могу загрузить код.

ОБНОВЛЕНО

Программатор -> АВРИСП mkll

Я использую кабель для подключения к своему Mac и программное обеспечение Arduino. Кабель, соединяющий USB-порт Arduino и USB-порт Mac.

Я попытался выйти и перезапустить приложение Arduino. Как только он запускается, я просто нажимаю кнопку загрузки, когда мой USB подключен. Мои доступные порты в приложении: /dev/cu.Bluetooth-Incoming-Port и /dev/cu.Bluetooth -Модем

И это ошибка

avrdude: ser_open(): can't open device "/dev/cu.usbmodem1421": No such file or directory
ioctl("TIOCMGET"): Inappropriate ioctl for device

, 👍6

Обсуждение

Пожалуйста, отредактируйте вопрос и добавьте следующую информацию: как Uno подключен к Mac, включая название или номер модели кабеля или что-то еще, и что куда подключается. Программа, которую вы использовали, и команды, которые вы ввели для загрузки кода. Если вы используете arduino ide, какие параметры вы выбрали, например, какой порт, какой программатор, режим программирования. URL «веб-сайта, который они предложили»., @James Waldby - jwpat7

Лучше, но, пожалуйста, добавьте другую запрошенную информацию. Проблема будет в чем-то простом, но если люди не знают, что у вас есть или что вы сделали, то их ответы будут просто догадками. Какие опции вы ставили? Какие кнопки вы нажимали? Что выбрано в Tools/Port? в Tools/Board? К чему подключен каждый конец кабеля для программирования? Что за кабель? (Например, скажем, если это USB A на USB B micro, подключенный к USB-порту на Mac и USB на Uno), @James Waldby - jwpat7

Пробовали запускать Arduino от имени пользователя root?, @Michael

да. Но у меня такая же ошибка, @Dinesh Sekar

Ваш вопрос не ясен. Вы пытаетесь запрограммировать Uno через встроенный USB-интерфейс Uno или вы пытаетесь запрограммировать его через аппаратный программатор?, @Majenko

я не понимаю тебя. Извините, я только начинающий, @Dinesh Sekar

Я думаю, @Majenko спрашивает, используете ли вы обычный USB-кабель или дополнительную плату программатора. Судя по вашему последнему редактированию, вы используете обычный USB-кабель. Я не очень хорошо разбираюсь в Mac, но мне кажется, что настройка порта неверна — Bluetooth совершенно не имеет отношения к этому USB-кабелю. См. [Начало работы с Arduino в Mac OS X] (https://www.arduino.cc/en/Guide/MacOSX#toc8), в котором говорится об использовании порта, такого как /dev/tty.usbmodem или /dev /tty.usbserial, @James Waldby - jwpat7

Также см. [Отсутствуют порты usb-модема для Mac OS X?] (http://forum.arduino.cc/index.php?topic=71577.0), подробное обсуждение тонкостей настройки портов usb-модема для отображения на Mac., @James Waldby - jwpat7

Помог ли какой-либо из ответов решить вашу проблему? Если да, не могли бы вы отметить ответ, который помог вам больше всего, как «принятый»?, @Greenonline


5 ответов


7

Подключите Uno к Mac с помощью заведомо исправного USB-кабеля.

Перейдите в меню Apple -> Об этом Mac -> Дополнительная информация -> Системный отчет

Под выбором USB (слева) проверьте, видите ли вы что-то подобное:

Arduino USB в системном отчете

Вы также можете открыть окно терминала и ввести:

system_profiler SPUSBDataType

Среди прочего вы должны увидеть:

USB:

    USB High-Speed Bus:

      Host Controller Location: Built-in USB
      Host Controller Driver: AppleUSBEHCI
      PCI Device ID: 0x3b34 
      PCI Revision ID: 0x0006 
      PCI Vendor ID: 0x8086 
      Bus Number: 0xfd 

        Hub:

          Product ID: 0x2514
          Vendor ID: 0x0424  (SMSC)
          Version: 0.03
          Speed: Up to 480 Mb/sec
          Location ID: 0xfd100000 / 2
          Current Available (mA): 500
          Current Required (mA): 2

            Communication Device:

              Product ID: 0x0043
              Vendor ID: 0x2341
              Version: 0.01
              Serial Number: 9314036423335121A0B1
              Speed: Up to 12 Mb/sec
              Manufacturer: Arduino (www.arduino.cc)
              Location ID: 0xfd130000 / 8
              Current Available (mA): 500
              Current Required (mA): 100

Обратите внимание на "www.arduino.cc" запись.

В вашей Arduino IDE вы должны увидеть Arduino как tty.usbmodemfd131 (или аналогичный номер).

USB-модем Arduino Uno

Если вы видите все, что должно работать.

Если нет, укажите, чем он отличается.

Программист -> АВРИСП mkll

Инструменты > Выбор меню Programmer используется только при выборе Tools > Записать загрузчик или "Загрузить с помощью программатора. Он полностью игнорируется при выполнении стандартной "Загрузки". Вы должны выполнить "Загрузить" (Command-U), а не "Загрузить с помощью программатора" (Shift+Command+U). Таким образом, абсолютно не имеет значения, что вы выберете в разделе Инструменты > Меню программиста.

,

0

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

,

-2

У меня была эта проблема в дистрибутиве Linux. Для меня это была просто проблема с разрешениями.

sudo ./arduino

из терминала Linux в папку Arduino все работало нормально.

,

Не запускайте Arduino от имени пользователя root — это небезопасно и может оставить беспорядок в виде файлов, которые ваша учетная запись регулятора не сможет очистить., @Chris Stratton


0

Я получил эту ошибку в своей системе Macintosh, и проблема заключалась в том, что мне нужно было выбрать правильный порт на USB. Каким-то образом он автоматически подключился к порту Bluetooth, который был указан в разделе Инструменты->Порт как /dev/cu.Bluetooth-modem и был мобильным телефоном моей дочери. Я выбрал порт с пометкой /dev/cu/wchusbserialfd... и все заработало.

,

1

Я решил эту проблему. Возможно, этот пост поможет другим.

Я сталкивался с этой проблемой пару раз. Я буквально часами искал ответ и в итоге использовал несколько предложений.

Оба сценария, которые я решил, описаны ниже как "Сценарий A" и "Сценарий B":

====================== Сценарий А

Подключил новую плату Arduino Uno R3, успешно скомпилировал стандартный скетч "Blink". Когда я попытался загрузить его на плату, я получил следующее сообщение:

Sketch использует 1066 байт (3%) места для хранения программ. Максимум 32 256 байт. Глобальные переменные используют 9 байт (0%) динамической памяти, оставляя 2039 байтов для локальных переменных. Максимум 2048 байт. avrdude: ser_open(): невозможно открыть устройство "COM1": нет такого файла или каталога ioctl("TIOCMGET"): неподходящий ioctl для устройства Проблема с загрузкой на плату. См. предложения по http://www.arduino.cc/en/Guide/Troubleshooting#upload.< /эм>

Параметры порта в IDE (Инструменты--> Порт) отображали только /dev/cu.incoming-bluetooth-port

Вот что сработало:

  1. Загружен и установлен драйвер CH340
  2. Драйверы FTDI удалены с моего Mac. Apple недавно установила новую утилиту, которая предотвращает удаление критически важных компонентов.

Процесс, обеспечивающий соблюдение этого правила, называется csrutil.

Чтобы удалить драйвер FTDI, вам придется отключить этот процесс. Затем вам нужно будет снова включить его, когда вы закончите. Это потребовало перезагрузки в режиме восстановления. Вот как это сделать:

a.)  power off the mac then hold 'command'+R during the restart until the image of the apple appears.
b.)  when the screen refreshes, click on 'Utilities' menu then 'Terminal.
c.)  type csrutil disable
d.)  Hit enter
e.)  Restart  [Note:  You may be able to execute the next two commands in the terminal before restarting.  I just didn't test it that way.  If the system will allow you to, then by all means run all three commands one after the other THEN restart and you should be on your way.]
  1. удалите драйверы FTDI, снова открыв терминальную программу и введя следующую команду:

       sudo rm -R /System/Library/Extensions/AppleUSBFTDI.kext
    

Введите пароль при появлении запроса.

  1. Восстановите Apple csrutil, выполнив описанные выше шаги a и b. Задача c будет такой же, ЗА ИСКЛЮЧЕНИЕМ того, что вместо этого вы наберете следующее:

    csrutil enable
    

    Затем выполните шаги d и e.

При перезапуске интегрированной среды разработки Arduino вы должны увидеть более полный список портов, помимо порта Bluetooth.

====================== Сценарий Б

Эта плата была импортной и явно не оригинальной Arduino/Genuino. Попытки загрузить скетчи привели к этой прекрасной ошибке:

    Using Port                    : /dev/cu.usbmodem1421
    Using Programmer              : arduino
    Overriding Baud Rate          : 115200

avrdude: ser_open(): невозможно открыть устройство "/dev/cu.usbmodem1421": Нет такого файла или каталога ioctl("TIOCMGET"): недопустимый ioctl для устройства

В IDE указан только один порт, dev/cu.Bluetooth-Incoming-Port.

Прошло некоторое время с тех пор, как произошел сценарий А, и с тех пор я установил несколько обновлений ОС. Проверил драйвера и понизил, и вот, проклятые драйверы FTDI ВЕРНУЛИСЬ!!

Я повторил действия, описанные выше в сценарии A, но проблема осталась.

Затем я установил обновленную конфигурацию платы от arduino, и она заработала! Тестирование на первой плате, которую я использовал по сценарию А, также прошло успешно. Вот что я сделал:

  1. В среде IDE выберите "Инструменты" -> "Платы" -> "Диспетчер плат".
  2. Я установил Arduino SAM Boards (32-разрядная версия ARM Cortex-M3) версии 1.6.8
  3. Отсоединил и снова подключил USB-кабель к моей Arduino.
  4. В среде IDE выберите "Инструменты" -> "Порт". /dev/cu.usbmodem1421 был указан как вариант порта. Выбрал это.
  5. Загрузил свой скетч.
  6. Наслаждайтесь славой УСПЕХА!

Надеюсь, это было полезно для вас. Я потратил два дня на сценарий А и 3 часа на сценарий Б.

,

Предупреждение будущим тестировщикам: после установки этого драйвера всякий раз, когда я подключаю Arduino, мой Mac зависает, и мне приходится перезагружаться., @eestein