Ioctl không phù hợp cho thiết bị


6

Tôi đang sử dụng Arduino Uno và Mac và cố gắng tải mã của mình lên bảng. Tôi đã thử tải lên chương trình từ các máy tính khác nhau (MacBook Air và Pro) và tôi vẫn gặp vấn đề này.

Làm thế nào để tôi sửa lỗi này? Tôi đã thử tải xuống trình điều khiển FTDI. Tôi đã đi đến trang web mà họ đề nghị và thử làm theo hướng dẫn. Tôi thậm chí đã theo dõi các bài viết khác trong Stack Exchange nhưng tôi vẫn không thể tải lên mã.

BIÊN TẬP

Lập trình viên -> AVRISP mkll

Tôi đang sử dụng cáp để kết nối với máy Mac và tôi đang sử dụng phần mềm Arduino. Cáp kết nối giữa cổng USB USB và Mac USB.

Tôi đã thử bỏ và khởi chạy lại ứng dụng Arduino. Khi nó khởi chạy, tôi chỉ cần nhấn nút tải lên trong khi USB của tôi được cắm. Các cổng có sẵn của tôi trong ứng dụng là /dev/cu.Bluetooth-Incoming-Port/dev/cu.Bluetooth-Modem

Và đây là lỗi

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

Vui lòng chỉnh sửa câu hỏi và thêm thông tin sau: Cách Uno được kết nối với Mac, bao gồm tên hoặc số kiểu cáp hoặc bất cứ thứ gì, và kết nối ở đâu. Chương trình bạn đã sử dụng và các lệnh bạn đã nhập để tải lên mã. Nếu bạn đang sử dụng arduino ide, bạn đã chọn tùy chọn nào, ví dụ cổng nào, lập trình viên nào, chế độ lập trình. URL của "trang web họ đề xuất".
James Waldby - jwpat7

Tốt hơn, nhưng vui lòng thêm các thông tin khác được yêu cầu. Vấn đề sẽ là một cái gì đó đơn giản nhưng nếu mọi người không biết bạn có gì hoặc bạn đã làm gì, thì câu trả lời của họ chỉ là phỏng đoán. Bạn đã đặt những lựa chọn nào? Những nút nào bạn đã nhấp? Những gì được chọn tại Công cụ / Cổng? tại Công cụ / Hội đồng quản trị? Mỗi đầu của cáp lập trình được cắm vào là gì? Cáp là gì? (Ví dụ: nếu đó là micro USB A đến USB B, được kết nối với cổng USB trên Mac và USB trên Uno)
James Waldby - jwpat7

Đã thử chạy arduino của bạn như một người dùng root?
Michael

1
Tôi nghĩ rằng @Majenko đang hỏi bạn có đang sử dụng cáp USB đơn giản so với một số bảng lập trình bổ trợ không. Từ lần chỉnh sửa mới nhất của bạn, tôi giả sử bạn sử dụng cáp USB đơn giản. Tôi không biết nhiều về Mac nhưng có vẻ như tôi cài đặt cổng là sai - Bluetooth hoàn toàn không liên quan đến kết nối có kết nối USB này. Xem Bắt đầu với Arduino trên Mac OS X có nghĩa là sử dụng một cổng như /dev/tty.usbmodemhoặc /dev/tty.usbserial
James Waldby - jwpat7

1
Có bất kỳ câu trả lời giúp bạn giải quyết vấn đề của bạn? Nếu vậy, bạn có thể đánh dấu câu trả lời giúp bạn nhiều nhất là "được chấp nhận" không?
Greenonline

Câu trả lời:


6

Cắm Uno của bạn vào máy Mac bằng cáp USB tốt đã biết.

Chuyển đến menu Apple -> Giới thiệu về máy Mac này -> Thông tin thêm -> Báo cáo hệ thống

Trong phần chọn USB (ở bên trái), vui lòng xác nhận xem bạn có thấy thứ gì như thế này không:

Arduino USB trong báo cáo hệ thống

Bạn cũng có thể mở một cửa sổ Terminal và gõ:

system_profiler SPUSBDataType

Trong số những thứ khác bạn nên xem:

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

Lưu ý mục "www.arduino.cc".

Trong Arduino IDE của bạn, bạn sẽ thấy Arduino là một tty.usbmodemfd131 (hoặc một số tương tự).

Modem USB Uno

Nếu bạn thấy tất cả những gì nó nên làm việc.

Nếu không, xin vui lòng cho biết nó khác nhau như thế nào.

Lập trình viên -> AVRISP mkll

Bạn không nên chọn bất kỳ lập trình viên. Bạn nên thực hiện "Tải lên" (Command-U) chứ không phải là "Tải lên bằng lập trình viên" (Shift + Command + U).


1

Tôi đã giải quyết vấn đề này. Có lẽ bài này sẽ giúp người khác.

Tôi đã gặp vấn đề này một vài lần. Tôi thực sự đã tìm kiếm hàng giờ cho câu trả lời và cuối cùng đã sử dụng một số gợi ý.

Cả hai kịch bản tôi đã giải quyết được ghi lại dưới đây là 'Kịch bản A' và 'Kịch bản B':

====================== Kịch bản A

Được cắm vào một bo mạch Arduino Uno R3 mới, đã biên soạn thành công bản phác thảo "Blink" tiêu chuẩn. Khi tôi cố tải nó lên bảng, tôi nhận được thông báo này:

Phác thảo sử dụng 1.066 byte (3%) không gian lưu trữ chương trình. Tối đa là 32.256 byte. Biến toàn cục sử dụng 9 byte (0%) bộ nhớ động, để lại 2.039 byte cho biến cục bộ. Tối đa là 2.048 byte. avrdude: ser_open (): không thể mở thiết bị "COM1": Không có tệp hoặc thư mục ioctl ("TIOCMGET"): ioctl không phù hợp cho thiết bị Sự cố khi tải lên bảng. Xem http://www.arduino.cc/en/Guide/Troubledh Boot # upload để được gợi ý.

Tùy chọn cổng trong IDE (Công cụ -> Cổng) chỉ hiển thị /dev/cu.inending-bluetooth-port

Đây là những gì đã làm việc:

  1. Đã tải xuống và cài đặt trình điều khiển CH340
  2. Đã xóa trình điều khiển FTDI khỏi máy mac của tôi. Apple gần đây đã cài đặt một tiện ích mới ngăn chặn loại bỏ những gì nó coi là thành phần quan trọng.

Quá trình thực thi quy tắc này được gọi là csrutil.

Bạn sẽ phải vô hiệu hóa quá trình này để loại bỏ trình điều khiển FTDI. Sau đó, bạn sẽ cần phải kích hoạt lại khi bạn hoàn thành. Điều này đòi hỏi phải khởi động lại trong chế độ phục hồi. Đây là cách để làm điều đó:

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. xóa trình điều khiển FTDI bằng cách mở lại chương trình đầu cuối và nhập lệnh sau:

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

Nhập mật khẩu của bạn khi được nhắc.

  1. Khôi phục táo csrutil bằng cách làm theo các bước a và b ở trên. Nhiệm vụ c sẽ là cùng một NGOẠI TRỪ bạn sẽ nhập cái này thay vào đó:

    csrutil enable

    Sau đó làm theo các bước d và e.

Khi bạn khởi động lại IDE arduino, bạn sẽ thấy một danh sách các cổng toàn diện hơn ngoài cổng bluetooth.

====================== Kịch bản B

Bảng này là một bản nhập khẩu và rõ ràng không phải là Arduino / Genuino gốc. Nỗ lực tải bản phác thảo dẫn đến lỗi đáng yêu này:

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

avrdude: ser_open (): không thể mở thiết bị "/dev/cu.usbmodem1421": Không có tệp hoặc thư mục ioctl như vậy ("TIOCMGET"): ioctl không phù hợp cho thiết bị

Chỉ có một Cổng được liệt kê trong IDE, dev / cu.Bluetooth-In chuẩn-Port.

Đã được một thời gian kể từ khi Kịch bản A xảy ra và kể từ đó tôi đã cài đặt một vài bản cập nhật hệ điều hành. Đã kiểm tra các trình điều khiển và thấp và kìa, các trình điều khiển FTDI mờ nhạt đã TRẢ LẠI !!

Tôi đã lặp lại các bước trong kịch bản A ở trên nhưng vấn đề vẫn còn.

Sau đó, tôi đã cài đặt một cấu hình bảng cập nhật từ arduino và nó đã hoạt động! Thử nghiệm trên bảng đầu tiên tôi đã sử dụng theo kịch bản A cũng thành công. Đây là những gì tôi đã làm:

  1. Trong IDE, đi tới Công cụ-> Bảng -> Trình quản lý bảng
  2. Tôi đã cài đặt 'Arduino SAM Boards (ARM Cortex-M3 32 bit) của Arduino phiên bản 1.6.8
  3. Rút phích cắm và cắm lại cáp USB vào arduino của tôi.
  4. Trong IDE đi đến Công cụ -> Cổng. /Dev/cu.usbmodem1421 được liệt kê dưới dạng tùy chọn cổng. Chọn mà.
  5. Tải lên bản phác thảo của tôi.
  6. Đắm mình trong vinh quang THÀNH CÔNG!

Tôi hy vọng điều này hữu ích cho bạn. Tôi đã dành hai ngày cho Kịch bản A và 3 giờ cho Kịch bản B.


Cảnh báo cho những người thử nghiệm trong tương lai, sau khi cài đặt trình điều khiển đó bất cứ khi nào tôi cắm arduino của mình, nó sẽ đóng băng máy mac của tôi và tôi phải khởi động lại
eestein

0

Tôi cũng đã có thông báo lỗi này khi tôi để một thiết bị đầu cuối nối tiếp khác được kết nối với cùng một cổng mà Arduino IDE đang cố gắng sử dụng.


0

Tôi đã gặp lỗi này trên hệ thống Macintosh của mình và vấn đề là tôi cần chọn đúng cổng trên USB. Bằng cách nào đó, nó đã tự động kết nối với cổng Bluetooth được liệt kê trong Công cụ-> Cổng cũng như /dev/cu.Bluetooth-modemđiện thoại di động của con gái tôi. Tôi đã chọn một cổng có nhãn /dev/cu/wchusbserialfd... và nó hoạt động tốt.


-2

Tôi đã có vấn đề này trên một bản phân phối Linux. Đó chỉ là một vấn đề quyền đối với tôi.

sudo ./arduino 

từ Linux Terminal trong thư mục Arduino hoạt động tốt.


Không chạy Arduino dưới quyền root - nó không an toàn và có thể để lại một mớ hỗn độn dưới dạng các tệp mà tài khoản điều chỉnh của bạn không thể dọn sạch.
Chris Stratton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.