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
@Dinesh Sekar, 👍6
Обсуждение5 ответов
Подключите Uno к Mac с помощью заведомо исправного USB-кабеля.
Перейдите в меню Apple -> Об этом Mac -> Дополнительная информация -> Системный отчет
Под выбором 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 (или аналогичный номер).
Если вы видите все, что должно работать.
Если нет, укажите, чем он отличается.
Программист -> АВРИСП mkll
Инструменты > Выбор меню Programmer используется только при выборе Tools > Записать загрузчик или "Загрузить с помощью программатора. Он полностью игнорируется при выполнении стандартной "Загрузки". Вы должны выполнить "Загрузить" (Command-U), а не "Загрузить с помощью программатора" (Shift+Command+U). Таким образом, абсолютно не имеет значения, что вы выберете в разделе Инструменты > Меню программиста.
У меня также было это сообщение об ошибке, когда я оставил другой последовательный терминал подключенным к тому же порту, который пытается использовать Arduino IDE.
У меня была эта проблема в дистрибутиве Linux. Для меня это была просто проблема с разрешениями.
sudo ./arduino
из терминала Linux в папку Arduino все работало нормально.
Не запускайте Arduino от имени пользователя root — это небезопасно и может оставить беспорядок в виде файлов, которые ваша учетная запись регулятора не сможет очистить., @Chris Stratton
Я получил эту ошибку в своей системе Macintosh, и проблема заключалась в том, что мне нужно было выбрать правильный порт на USB. Каким-то образом он автоматически подключился к порту Bluetooth, который был указан в разделе Инструменты->Порт как /dev/cu.Bluetooth-modem
и был мобильным телефоном моей дочери. Я выбрал порт с пометкой /dev/cu/wchusbserialfd
... и все заработало.
Я решил эту проблему. Возможно, этот пост поможет другим.
Я сталкивался с этой проблемой пару раз. Я буквально часами искал ответ и в итоге использовал несколько предложений.
Оба сценария, которые я решил, описаны ниже как "Сценарий 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
Вот что сработало:
- Загружен и установлен драйвер CH340
- Драйверы 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.]
удалите драйверы FTDI, снова открыв терминальную программу и введя следующую команду:
sudo rm -R /System/Library/Extensions/AppleUSBFTDI.kext
Введите пароль при появлении запроса.
Восстановите 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, и она заработала! Тестирование на первой плате, которую я использовал по сценарию А, также прошло успешно. Вот что я сделал:
- В среде IDE выберите "Инструменты" -> "Платы" -> "Диспетчер плат".
- Я установил Arduino SAM Boards (32-разрядная версия ARM Cortex-M3) версии 1.6.8
- Отсоединил и снова подключил USB-кабель к моей Arduino.
- В среде IDE выберите "Инструменты" -> "Порт". /dev/cu.usbmodem1421 был указан как вариант порта. Выбрал это.
- Загрузил свой скетч.
- Наслаждайтесь славой УСПЕХА!
Надеюсь, это было полезно для вас. Я потратил два дня на сценарий А и 3 часа на сценарий Б.
Предупреждение будущим тестировщикам: после установки этого драйвера всякий раз, когда я подключаю Arduino, мой Mac зависает, и мне приходится перезагружаться., @eestein
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Пожалуйста, отредактируйте вопрос и добавьте следующую информацию: как 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