Unangemessenes ioctl für Gerät

6

Ich benutze ein Arduino Uno und einen Mac und versuche, meinen Code in das Board hochzuladen. Ich habe versucht, das Programm von verschiedenen Computern (MacBook Air und Pro) hochzuladen, und ich habe immer noch dieses Problem.

Wie behebe ich das? Ich habe versucht, den FTDI-Treiber herunterzuladen. Ich ging zu der Website, die sie vorgeschlagen hatten, und versuchte, den Anweisungen zu folgen. Ich habe sogar andere Beiträge in Stack Exchange verfolgt, kann den Code jedoch immer noch nicht hochladen.

BEARBEITEN

Programmierer -> AVRISP mkll

Ich verwende ein Kabel, um eine Verbindung zu meinem Mac herzustellen, und ich verwende die Arduino-Software. Das zwischen dem Arduino USB- und dem Mac USB-Anschluss angeschlossene Kabel.

Ich habe versucht, die Arduino-App zu beenden und neu zu starten. Sobald es gestartet ist, drücke ich einfach die Upload-Taste, während mein USB angeschlossen ist. Meine verfügbaren Ports in der App sind /dev/cu.Bluetooth-Incoming-Portund/dev/cu.Bluetooth-Modem

Und das ist der Fehler

avrdude: ser_open(): can't open device "/dev/cu.usbmodem1421": No such file or directory
ioctl("TIOCMGET"): Inappropriate ioctl for device
Dinesh Sekar
quelle
Bitte bearbeiten Sie die Frage und fügen Sie folgende Informationen hinzu: Wie der Uno mit dem Mac verbunden ist, einschließlich Name oder Modellnummer des Kabels oder was auch immer, und was verbindet wo. Das von Ihnen verwendete Programm und die Befehle, die Sie zum Hochladen des Codes eingegeben haben. Wenn Sie arduino ide verwenden, welche Optionen haben Sie ausgewählt, z. B. welcher Port, welcher Programmierer, Programmiermodus. URL der "von ihnen vorgeschlagenen Website".
James Waldby - jwpat7
Besser, aber bitte fügen Sie die anderen angeforderten Informationen hinzu. Das Problem wird etwas Einfaches sein, aber wenn die Leute nicht wissen, was Sie haben oder was Sie getan haben, dann sind ihre Antworten nur Vermutungen. Welche Optionen haben Sie festgelegt? Auf welche Schaltflächen haben Sie geklickt? Was ist bei Tools / Port ausgewählt? bei Tools / Board? An was ist jedes Ende des Programmierkabels angeschlossen? Was ist das Kabel? (Sagen Sie zB, wenn es sich um ein USB A zu USB B-Mikro handelt, das an einen USB-Anschluss am Mac und an USB an Uno angeschlossen ist)
James Waldby - jwpat7
Haben Sie versucht, Ihr Arduino als Root-Benutzer auszuführen?
Michael
1
Ich denke, @Majenko fragt, ob Sie ein einfaches USB-Kabel gegen eine zusätzliche Programmierplatine verwenden. Nach Ihrer letzten Bearbeitung verwenden Sie vermutlich ein einfaches USB-Kabel. Ich weiß nicht viel über Mac, aber es sieht für mich so aus, als ob die Porteinstellung falsch ist - Bluetooth ist für diese USB-Kabelverbindung überhaupt nicht relevant. Siehe Erste Schritte mit Arduino unter Mac OS X, in dem angegeben wird, dass ein Port wie /dev/tty.usbmodemoder /dev/tty.usbserial
James Waldby - jwpat7 vom
1
Hat Ihnen eine der Antworten bei der Lösung Ihres Problems geholfen? Wenn ja, können Sie die Antwort, die Ihnen am meisten geholfen hat, als "akzeptiert" markieren?
Greenonline

Antworten:

6

Schließen Sie Ihr Uno mit einem bekanntermaßen guten USB-Kabel an den Mac an.

Gehen Sie zum Apple-Menü -> Über diesen Mac -> Weitere Informationen -> Systembericht

Bitte bestätigen Sie unter der USB-Auswahl (links), ob Sie so etwas sehen oder nicht:

Arduino USB im Systembericht

Sie können auch ein Terminalfenster öffnen und Folgendes eingeben:

system_profiler SPUSBDataType

Unter anderem sollten Sie sehen:

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

Beachten Sie den Eintrag "www.arduino.cc".

In Ihrer Arduino IDE sollten Sie das Arduino als tty.usbmodemfd131 (oder eine ähnliche Nummer) sehen.

Arduino Uno USB-Modem

Wenn Sie alles sehen, sollte es funktionieren.

Wenn nicht, geben Sie bitte an, inwiefern es sich unterscheidet.

Programmierer -> AVRISP mkll

Sie sollten keinen Programmierer auswählen. Sie sollten einen "Upload" (Befehl-U) durchführen, keinen "Upload mit Programmierer" (Umschalt + Befehl + U).

Nick Gammon
quelle
1

Ich habe dieses Problem gelöst. Vielleicht hilft dieser Beitrag anderen.

Ich bin ein paar Mal auf dieses Problem gestoßen. Ich habe buchstäblich stundenlang nach der Antwort gesucht und am Ende mehrere Vorschläge gemacht.

Beide von mir gelösten Szenarien sind unten als "Szenario A" und "Szenario B" dokumentiert:

===================== Szenario A.

Steckte eine neue Arduino Uno R3-Karte ein und kompilierte erfolgreich die Standardskizze "Blink". Als ich versuchte, es auf das Board hochzuladen, bekam ich folgende Nachricht:

Sketch verwendet 1.066 Byte (3%) des Programmspeicherplatzes. Das Maximum beträgt 32.256 Bytes. Globale Variablen belegen 9 Byte (0%) des dynamischen Speichers, während für lokale Variablen 2.039 Byte verbleiben. Das Maximum beträgt 2.048 Bytes. avrdude: ser_open (): Gerät "COM1" kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis ioctl ("TIOCMGET"): Unangemessenes ioctl für Gerät Problem beim Hochladen auf das Board. Vorschläge finden Sie unter http://www.arduino.cc/en/Guide/Troubleshooting#upload .

Die Portoptionen in der IDE (Extras -> Port) zeigten nur /dev/cu.incoming-bluetooth-port an

Folgendes hat funktioniert:

  1. Den CH340-Treiber heruntergeladen und installiert
  2. Die FTDI-Treiber wurden von meinem Mac entfernt. Apple hat kürzlich ein neues Dienstprogramm installiert, das das Entfernen von als kritisch erachteten Komponenten verhindert.

Der Prozess, der diese Regel erzwingt, heißt csrutil.

Sie müssen diesen Prozess deaktivieren, um den FTDI-Treiber zu entfernen. Dann müssen Sie es wieder aktivieren, wenn Sie fertig sind. Dies erforderte einen Neustart im Wiederherstellungsmodus. So geht's:

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. Entfernen Sie die FTDI-Treiber, indem Sie das Terminalprogramm erneut öffnen und den folgenden Befehl eingeben:

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

Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.

  1. Stellen Sie das Apfel-Csrutil wieder her, indem Sie die obigen Schritte a und b ausführen. Aufgabe c ist dieselbe, AUSSER Sie geben stattdessen Folgendes ein:

    csrutil enable

    Folgen Sie dann den Schritten d und e.

Wenn Sie die Arduino IDE neu starten, sollte neben dem Bluetooth-Port eine umfassendere Liste der Ports angezeigt werden.

====================== Szenario B.

Dieses Board war ein Import und eindeutig kein original Arduino / Genuino. Versuche, Skizzen zu laden, führten zu diesem schönen Fehler:

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

avrdude: ser_open (): Gerät kann nicht geöffnet werden "/dev/cu.usbmodem1421": Keine solche Datei oder kein solches Verzeichnis ioctl ("TIOCMGET"): Unangemessenes ioctl für Gerät

In der IDE war nur ein Port aufgeführt, dev / cu.Bluetooth-Incoming-Port.

Es war eine Weile her, seit Szenario A aufgetreten war, und seitdem hatte ich einige Betriebssystem-Updates installiert. Überprüfte die Treiber und niedrig und siehe da, die verdammten FTDI-Treiber waren zurückgekehrt !!

Ich habe die Schritte in Szenario A oben wiederholt, aber das Problem blieb bestehen.

Dann habe ich eine aktualisierte Board-Konfiguration von Arduino installiert und es hat funktioniert! Die Tests auf dem ersten Board, das ich unter Szenario A verwendet hatte, waren ebenfalls erfolgreich. Folgendes habe ich getan:

  1. Gehen Sie in der IDE zu Tools-> Boards -> Boards Manager
  2. Ich habe 'Arduino SAM Boards (32-Bit ARM Cortex-M3) von Arduino Version 1.6.8 installiert
  3. Ziehen Sie das USB-Kabel heraus und stecken Sie es wieder in mein Arduino.
  4. Gehen Sie in der IDE zu Extras -> Port. Das /dev/cu.usbmodem1421 wurde als Portoption aufgeführt. Wählte das aus.
  5. Meine Skizze hochgeladen.
  6. Genießen Sie den Ruhm des ERFOLGS!

Ich hoffe das war hilfreich für dich. Ich habe zwei Tage in Szenario A und drei Stunden in Szenario B verbracht.

Joseph Greer
quelle
Warnung an zukünftige Tester, nachdem ich diesen Treiber installiert habe, wenn ich mein Arduino anschließe, friert er meinen Mac ein und ich muss neu starten
eestein
0

Ich habe diese Fehlermeldung auch erhalten, als ich ein anderes serielles Terminal an denselben Port angeschlossen habe, den die Arduino IDE zu verwenden versucht.

JRobert
quelle
0

Ich habe diesen Fehler auf meinem Macintosh-System erhalten und das Problem war, dass ich den richtigen Anschluss am USB auswählen musste. Irgendwie hatte es sich automatisch mit einem Bluetooth-Port verbunden, der unter Extras-> Port als aufgeführt war /dev/cu.Bluetooth-modemund das Handy meiner Tochter war. Ich habe einen Port mit der Bezeichnung /dev/cu/wchusbserialfd... gewählt und es hat gut funktioniert.

mdo47
quelle
-2

Ich hatte dieses Problem auf einer Linux-Distribution. Es war nur ein Berechtigungsproblem für mich.

sudo ./arduino 

vom Linux-Terminal im Arduino-Ordner funktionierte gut.

Mireigon
quelle
Führen Sie Arduino nicht als Root aus - es ist unsicher und hinterlässt wahrscheinlich ein Durcheinander in Form von Dateien, die Ihr Regulierungskonto nicht bereinigen kann.
Chris Stratton