{"id":28276,"date":"2021-05-20T13:50:08","date_gmt":"2021-05-20T11:50:08","guid":{"rendered":"https:\/\/pi3g.com\/?p=28276"},"modified":"2021-05-20T14:00:10","modified_gmt":"2021-05-20T12:00:10","slug":"enabling-and-checking-i2c-on-the-raspberry-pi-using-the-command-line-for-your-own-scripts","status":"publish","type":"post","link":"https:\/\/pi3g.com\/de\/enabling-and-checking-i2c-on-the-raspberry-pi-using-the-command-line-for-your-own-scripts\/","title":{"rendered":"Aktivieren und \u00dcberpr\u00fcfen von I2C auf dem Raspberry Pi \u00fcber die Kommandozeile f\u00fcr eigene Skripte"},"content":{"rendered":"<p>Die meisten Leute wissen, dass man den I2C-Port mit raspi-config aktivieren kann.<\/p>\n<p>raspi-config bietet auch einen nicht-interaktiven Modus, in dem Sie die Funktionalit\u00e4t des Programms \u00fcber Kommandozeilenparameter steuern k\u00f6nnen.<\/p>\n<h2>Auslesen des aktuellen Zustands des I2C-Ports am Raspberry Pi<\/h2>\n<p>So lesen Sie den aktuellen Zustand des I2C-Ports aus:<\/p>\n<blockquote>\n<p>sudo raspi-config nonint get_i2c<\/p>\n<\/blockquote>\n<p>Dieser Befehl wird zur\u00fcckgegeben:<\/p>\n<ul>\n<li>1, wenn der Anschluss deaktiviert ist<\/li>\n<li>0, wenn der Anschluss aktiviert ist<\/li>\n<\/ul>\n<p><font style=\"background-color: rgb(255, 255, 0);\">Achtung: In diesem Fall ist die Logik Bash-Scripting! \"0 bedeutet wahr oder kein Fehler, und alle anderen Zahlen bedeuten einen Fehlercode\". Das hat mich anfangs \u00fcberrascht!<\/font><\/p>\n<p><font style=\"\"><\/font>Hinweis: nonint steht f\u00fcr \"nicht-interaktiv\".<font style=\"\"><\/font><\/p>\n<h2>Aktivieren von I2C auf dem Raspberry Pi mit einem einfachen Befehl<\/h2>\n<p>Wiederum mit raspi-config k\u00f6nnen wir den Status des I2C-Ports einstellen. Die Verwendung von raspi-config hat den Vorteil, dass es viele zus\u00e4tzliche Dinge f\u00fcr Sie erledigt und aufw\u00e4rtskompatibel sein sollte. Hinter den Kulissen bearbeitet raspi-config zum Beispiel \/boot\/config.txt f\u00fcr Sie und aktualisiert auch den Ger\u00e4tebaum.<\/p>\n<p>So aktivieren Sie den I2C-Port:<\/p>\n<blockquote>\n<p>sudo raspi-config nonint do_i2c 0<\/p>\n<\/blockquote>\n<p>Auch hier ist zu beachten, dass <strong>0 bedeutet hier wahr \/ ein<\/strong>!<\/p>\n<p>So k\u00f6nnen Sie den I2C-Port deaktivieren:<\/p>\n<blockquote>\n<p>sudo raspi-config nonint do_i2c 1<\/p>\n<\/blockquote>\n<p>1 bedeutet f\u00fcr diesen Zweck \"falsch\" oder ausgeschaltet.<\/p>\n<h2>Pr\u00fcfen, ob I2C aktiviert ist<\/h2>\n<h3>raspi-config im nicht-interaktiven Modus<\/h3>\n<p>wie oben erw\u00e4hnt, k\u00f6nnen Sie den Zustand des I2C-Ports mit <\/p>\n<blockquote>\n<p>sudo raspi-config nonint get_i2c<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"706\" height=\"68\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-1.png\" border=\"0\"><\/a><\/p>\n<p>Der Screenshot zeigt die Ausgabe, wenn der I2C-Port aktiviert ist (0 = true)<\/p>\n<h3>I2C-Ger\u00e4teknoten<\/h3>\n<p>Wenn I2C auf dem Raspberry Pi aktiviert ist, sehen Sie auch einen \/dev-Knoten f\u00fcr ihn:<\/p>\n<blockquote>\n<p>ls \/dev\/i2*<\/p>\n<\/blockquote>\n<p><em>\/dev\/i2c-1<\/em><\/p>\n<p>Hinweis: Bei den ersten Raspberry Pi-Modellen war der I2C-Port, der den Benutzern zur Verf\u00fcgung stand, I2C 0, man w\u00fcrde also \/dev\/i2c-0 erwarten<\/p>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"446\" height=\"61\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-2.png\" border=\"0\"><\/a><\/p>\n<p>Der Screenshot zeigt, dass der i2c-1-Knoten in \/dev existiert<\/p>\n<h3>gpio readall<\/h3>\n<p>Hier ist die Ausgabe von <\/p>\n<blockquote>\n<p>sudo gpio readall<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"632\" height=\"433\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-3.png\" border=\"0\"><\/a><\/p>\n<p>F\u00fcr BCM 2 und 3 sehen Sie unter Name \"SDA1\" (I2C-Daten) und \"SCL1\" (I2C-Takt). Auch der Modus ist ALT0, was der I2C-Funktion an diesen speziellen Pins (GPIO2, GPIO3) entspricht. <\/p>\n<p>Beachten Sie, dass BCM 2 und 3 die Broadcom-Nummerierung ist, nicht die GPIO-Pinbelegung. Die Position der GPIO-Pins ist die erste Spalte in \"Physical\" (Pins 3 und 5).<\/p>\n<p>(<a href=\"https:\/\/www.raspberrypi.org\/app\/uploads\/2012\/02\/BCM2835-ARM-Peripherals.pdf\">Sie k\u00f6nnen sich auf dieses Dokument beziehen, Seite 102<\/a>f\u00fcr einen \u00dcberblick \u00fcber die verschiedenen GPIO-Pin-Modi, falls Sie daran interessiert sind)<\/p>\n<h3>lsmod<\/h3>\n<p>lsmod zeigt an, welche I2C-Module geladen sind:<\/p>\n<blockquote>\n<p>lsmod | grep i2c<\/p>\n<\/blockquote>\n<p><em>i2c_bcm2835 16384 0<br \/>\ni2c_dev 20480 0<\/em><\/p>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"411\" height=\"74\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-4.png\" border=\"0\"><\/a><\/p>\n<p>Es macht also keinen Unterschied, wenn I2C deaktiviert ist. <\/p>\n<p><\/p>\n<h3>i2cdetect: <\/h3>\n<p>Ein letzter Test besteht darin, i2cdetect auszuf\u00fchren, um den Adressbereich zu scannen. Bei modernen Pis m\u00fcssen Sie 1 als Port angeben:<\/p>\n<blockquote>\n<p>sudo i2cdetect -y 1<\/p>\n<\/blockquote>\n<p>wird eine Tabelle mit den aktuell erkannten I2C-Ger\u00e4ten ausgegeben.<\/p>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"615\" height=\"241\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-5.png\" border=\"0\"><\/a><\/p>\n<p>Hinweis: Da in meinem Fall keine I2C-Ger\u00e4te angeschlossen waren, werden keine I2C-Ger\u00e4te angezeigt - diese Ausgabe wird erwartet.\n<\/p>\n<h2>Pr\u00fcfen, ob I2C deaktiviert ist<\/h2>\n<h3>raspi-config im nicht-interaktiven Modus<\/h3>\n<p>wie oben erw\u00e4hnt, k\u00f6nnen Sie den Zustand des I2C-Ports mit <\/p>\n<blockquote>\n<p>sudo raspi-config nonint get_i2c<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"599\" height=\"51\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-6.png\" border=\"0\"><\/a><\/p>\n<p>Der Screenshot zeigt die Ausgabe, wenn der I2C-Port deaktiviert ist (1 = false)<\/p>\n<h3>I2C-Ger\u00e4teknoten<\/h3>\n<p>Wenn I2C auf dem Raspberry Pi deaktiviert ist, sehen Sie keinen \/dev-Knoten f\u00fcr ihn:<\/p>\n<blockquote>\n<p>ls \/dev\/i2*<\/p>\n<\/blockquote>\n<p><em>ls: kann nicht auf '\/dev\/i2*' zugreifen: Keine solche Datei oder Verzeichnis<\/em><\/p>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"62\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-7.png\" border=\"0\"><\/a><\/p>\n<p>Der Screenshot zeigt, dass keine i2c-Knoten in \/dev existieren.<\/p>\n<h3>gpio readall<\/h3>\n<p>Hier ist die Ausgabe von <\/p>\n<blockquote>\n<p>sudo gpio readall<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"622\" height=\"421\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-8.png\" border=\"0\"><\/a><\/p>\n<p>F\u00fcr BCM 2 und 3 sehen Sie unter Name \"SDA1\" (I2C-Daten) und \"SCL1\" (I2C-Takt). <\/p>\n<p><strong>Im Gegensatz zur aktivierten Version (siehe oben) ist der Modus jedoch IN, der Pin ist nun ein GPIO-Eingang.<\/strong> <\/p>\n<p>Beachten Sie, dass BCM 2 und 3 die Broadcom-Nummerierung ist, nicht die GPIO-Pinbelegung. <\/p>\n<p>(<a href=\"https:\/\/www.raspberrypi.org\/app\/uploads\/2012\/02\/BCM2835-ARM-Peripherals.pdf\">Sie k\u00f6nnen sich auf dieses Dokument beziehen, Seite 102<\/a>f\u00fcr einen \u00dcberblick \u00fcber die verschiedenen GPIO-Pin-Modi, falls Sie daran interessiert sind)<\/p>\n<h3>lsmod<\/h3>\n<p>lsmod zeigt an, welche I2C-Module geladen sind:<\/p>\n<blockquote>\n<p>lsmod | grep i2c<\/p>\n<\/blockquote>\n<p><em>i2c_bcm2835 16384 0<br \/> i2c_dev 20480 0<\/em><\/p>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"411\" height=\"74\" title=\"Bild\" style=\"margin: 0px; display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-9.png\" border=\"0\"><\/a><\/p>\n<p>Es macht also keinen Unterschied, ob I2C aktiviert ist - Sie <strong>kann nicht<\/strong> verwenden Sie dies als Test. <\/p>\n<p><\/p>\n<h3>i2cdetect: <\/h3>\n<p>Ein letzter Test besteht darin, i2cdetect auszuf\u00fchren, um den Adressbereich zu scannen. Bei modernen Pis m\u00fcssen Sie 1 als Port angeben:<\/p>\n<blockquote>\n<p>sudo i2cdetect -y 1<\/p>\n<\/blockquote>\n<p>wenn I2C deaktiviert ist, wird ein Fehler angezeigt:<\/p>\n<p><em>Fehler: Die Datei `\/dev\/i2c-1\u2032 oder `\/dev\/i2c\/1\u2032 konnte nicht ge\u00f6ffnet werden: Keine solche Datei oder Verzeichnis<\/em><\/p>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-10.png\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"53\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-10.png\" border=\"0\"><\/a><\/p>\n<p><\/p>\n<p><\/p>\n<h2>Fallstricke und Probleme mit dem I2C-Port, FAQ<\/h2>\n<h3>Ist ein Neustart erforderlich, um den I2C-Port zu aktivieren?<\/h3>\n<p>Aus meiner Sicht ist ein Neustart <strong>nicht <\/strong>notwendig. Ich habe mir den Code von raspi-config angesehen, und sie fragen nach einem Neustart f\u00fcr andere Ports (z.B. UART), aber nicht f\u00fcr den I2C-Port.<\/p>\n<p>Wenn Sie den I2C-Status dynamisch ein- und ausschalten, k\u00f6nnen Sie au\u00dferdem \u00fcberpr\u00fcfen, ob der Ger\u00e4teknoten erstellt wurde und der I2C-Bereich mit i2cdetect ohne Neustart gescannt werden kann.<\/p>\n<p>Wenn alles andere fehlschl\u00e4gt, sollten Sie dennoch einen Neustart versuchen - das k\u00f6nnte bei einigen anderen Bedingungen helfen.<\/p>\n<p><\/p>\n<h3>gibt es weitere M\u00f6glichkeiten, raspi-config zu steuern, z.B. f\u00fcr die UART- und SPI-Ports, f\u00fcr SSH, etc.<\/h3>\n<p>Sicher - raspi-config unterst\u00fctzt im nicht-interaktiven Modus eine breite Palette verschiedener Optionen. <\/p>\n<p>alle diese Befehle werden mit <\/p>\n<blockquote>\n<p>raspi-config nonint<\/p>\n<\/blockquote>\n<p>Sie k\u00f6nnen einen Blick auf die <a href=\"https:\/\/github.com\/RPi-Distro\/raspi-config\/blob\/master\/raspi-config\">raspi-config-Quellcode<\/a>, oder siehe <a href=\"https:\/\/www.raspberrypi.org\/forums\/viewtopic.php?t=21632#p1634840\">dieser n\u00fctzliche Beitrag im Raspberry Pi-Forum<\/a>.<\/p>\n<p><font style=\"background-color: rgb(255, 255, 0);\">auch hier gilt die (f\u00fcr manche Entwickler verwirrende) Konvention, dass 0 = wahr \/ ein und 1 = falsch \/ aus ist<\/font><\/p>\n<p><\/p>\n<h3>i2cdetect kann nicht scannen <\/h3>\n<p>Wenn Sie den folgenden Fehler erhalten:<\/p>\n<p><em>Fehler: Die Datei `\/dev\/i2c-1\u2032 oder `\/dev\/i2c\/1\u2032 konnte nicht ge\u00f6ffnet werden: Keine solche Datei oder Verzeichnis<\/em><\/p>\n<p>I2C ist h\u00f6chstwahrscheinlich deaktiviert. Versuchen Sie, es mit der Anleitung in diesem Artikel oder mit raspi-config zu aktivieren, und versuchen Sie dann, den I2C-Port erneut zu scannen.<\/p>\n<p>Sie k\u00f6nnen die in diesem Artikel vorgestellten Methoden verwenden, um den Zustand des I2C-Ports Ihres Raspberry Pi zu \u00fcberpr\u00fcfen.<\/p>\n<p><\/p>\n<h3>gpio readall kann den Kartentyp nicht bestimmen<\/h3>\n<p>wenn Sie diese Meldung erhalten, wenn Sie versuchen, gpio readall auf einem Raspberry Pi 4 auszuf\u00fchren:<\/p>\n<p>13:01:19 pi@Avalon:\/dev $ sudo gpio readall<br \/><em><br \/>\nUps - kann den Kartentyp nicht bestimmen... Modell: 17<\/em><\/p>\n<p>\n<\/p>\n<p>Sie m\u00fcssen eine neuere Version von wiringpi vom Autor installieren (sie ist noch nicht in den Upstream-Repositories). <a href=\"http:\/\/wiringpi.com\/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b\/\">Dieser Artikel<\/a> beschreibt, wie man es macht.<\/p>\n<p>Hier ist die Kurzfassung:<\/p>\n<blockquote>\n<p>cd \/tmp<\/p>\n<p>wget <a href=\"https:\/\/project-downloads.drogon.net\/wiringpi-latest.deb\">https:\/\/project-downloads.drogon.net\/wiringpi-latest.deb<\/a><\/p>\n<p>sudo dpkg -i wiringpi-latest.deb<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image-11.png\"><img loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"277\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2021\/05\/image_thumb-11.png\" border=\"0\"><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Die meisten Leute wissen, dass man den I2C-Port mit raspi-config aktivieren kann. raspi-config bietet auch einen nicht-interaktiven Modus, in dem man die Funktionalit\u00e4t \u00fcber Kommandozeilenparameter steuern kann. Den aktuellen Status des I2C-Ports auf dem Raspberry Pi auslesen Hier ist, wie man den aktuellen Status des I2C-Ports ausliest: sudo...<\/p>","protected":false},"author":830,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1],"tags":[957,956,955,954,959,960,240,958],"class_list":["post-28276","post","type-post","status-publish","format-standard","hentry","category-raspberrypi-blog","tag-disable-i2c","tag-enable-i2c","tag-i2c","tag-i2c-port","tag-i2c-port-state","tag-i2c-raspberry-on","tag-raspberry-pi","tag-script-i2c-port-activation"],"_links":{"self":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts\/28276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/users\/830"}],"replies":[{"embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/comments?post=28276"}],"version-history":[{"count":2,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts\/28276\/revisions"}],"predecessor-version":[{"id":28278,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts\/28276\/revisions\/28278"}],"wp:attachment":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/media?parent=28276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/categories?post=28276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/tags?post=28276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}