Wer von euch – so wie ich – immer mal wieder die Raspberry Pi Firmware mit sudo rpi-update
auf den neuesten Stand gebracht hat, läuft ab Firmware Version #738 in Probleme, sofern er I2C, SPI oder andere Peripherie am GPIO Anschluss betreibt. Bei mir ging auf einmal die Temperatur und Luftdruckmessung mit dem BMP085 Sensor nicht mehr. Schlimmer noch, meine Webcam ist deshalb in einen Fehler gelaufen und hat keine Bilder mehr gemacht.
Ebenso gibt es seit ca. März 2015 dieselben Probleme, wenn man ganz normal mit apt-get update && apt-get upgrade
sein System aktualisiert.
Hier wird mit Raspbian auch die Firmware upgedated – aktuell ist das Firmware #744 vom 30. Januar 2015.
Änderungen am Kernel Model
Mit der neuen Firmware wurde ein auf dem Pi bisher nicht verwendetetes Treiberkonzept namens Device Tree eingeführt. Wahrscheinlich auch im Hinblick auf den Ende 2014 erschienenen Raspberry Pi 2 B.
Wird die Firmware nun einfach so per sudo rpi-update
upgegradet oder wird nach Anfang März 2015 Raspbian ganz normal mit apt-get update
und apt-get upgrade
auf den neuesten Stand gebracht, werden die I2C etc. Interfaces nicht mehr gefunden.
Bei Eingabe von sudo i2cdetect -y 1
gibt es folgende Fehlermeldung:
Error: Could not open file
/dev/i2c-1' or
/dev/i2c/1': No such file or directory
Eigentlich müsste doch alles klappen, denn der Befehl lsmod
zeigt
1 2 |
Module Size Used by i2c_dev 5769 0 |
Deshalb folgende…
Abhilfe
Die brutalst mögliche Lösung ist, in die Datei /boot/config.txt eine Zeile device_tree=
einzufügen. Damit ist der ganze neumodische Device Tree Kram disabled. Nicht empfohlen!
Eleganter ist es, einen schnittstellenspezifischen Parameter in /boot/config.txt einzutragen: Für I2C wäre das dtparam=i2c1=on
am Ende der config.txt Datei. Die Parameter für andere Schnittstellen (z.B. SPI, lirc oder Audio etc.) findet ihr u.a. in diesem englischen Beitrag des Raspberry Pi Forums. Empfohlene Lösung.
Eine dritte Möglichkeit ist, die Raspberry Pi Firmware wieder auf die letzte Version ohne Device Tree herunterzustufen (downgrade):
1 |
sudo rpi-update f74b92120e0d469fc5c2dc85b2b5718d877e1cbb |
Auch nicht empfehlenswert, da jeder Betriebssystemupdate die alt Firmware überschreibt, von Kompatibilitätsproblemen einmal ganz abgesehen.
Wichtig: Bei allen drei Verfahren anschließend neu booten: sudo reboot
Ein sehr gutes Tutorial auf deutsch findet ihr bei https://raspiprojekt.de/anleitungen/hardware/154-geraetetreiber-und-device-tree.html
Ich glaube wir sollten so schnell wie möglich die "alten" Methoden vergessen. Device Tree (DT) ist die Zukunft. Alle modernen Geräte werden früher oder später (Der Rasoberry Pi ist wirklich beinahe einer der letzten) DT nutzen. Nachteil ist, dass wir den Anfängern zu liebe alle unsere Anleitungen umschreiben müssen! Aber das machen wir doch gern, oder?
Natürlich hast du Recht! Das mit dem "neumodischen Kram" war auch eher provokativ gemeint. Trotzdem glaube ich, dass das anlasslose Upgraden mit rpi-update tatsächlich mehr Ärger macht als Vorteile bringt. Zumindest wenn einem keiner sagt, dass der Update ein paar ganz wesentliche Änderungen mit sich bringt, die zum Versagen der bisherigen Installation führen können…
Euer Tutorial zum Thema ist wirklich super und sehr hilfreich!
Gruß
Chris