Firmware 3.18.x psuje I²C, SPI, audio, lirc, 1-wire (np. / Dev / i2c-1, Brak takiego pliku lub katalogu)


19

Używam I²C do sterowania modułem Bright Pi .

Postępowałem zgodnie z instrukcjami z „ Konfigurowanie GPIO - Adafruit ” i „ Konfigurowanie I²C - Adafruit ”, aby skonfigurować I²C. Zrobiłem to kilka miesięcy temu i wszystko poszło dobrze.

Oto jak podłączyłem Bright Pi do mojego Raspberry Pi (Model B):

Circuit Bright Pi

Od dzisiaj zauważyłem, że I²C nie działa już tak jak kiedyś. Użycie poleceń takich jak „ sudo i2cdetect -y 1 ” i „ sudo i2cset -y 1 0x70 0x00 0xff ” spowoduje błąd:

Nie można otworzyć pliku „/ dev / i2c-1” lub „/ dev / i2c / 1”: Brak takiego pliku lub katalogu

Użycie polecenia „ sudo i2cdetect ” spowoduje błąd

Nie podano magistrali i2c!

co oznacza, że ​​i2c-dev działa.

Plik „/ etc / modules” wygląda następująco:

#/etc/modules: kernel modules to load at boot time. 
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
i2c-dev
i2c-bcm2708

Plik „/etc/modprobe.d/raspi-blacklist.conf” wygląda następująco:

blacklist spi and i2c by default (many users don't need them)

#blacklist spi-bcm2708
#blacklist i2c-bcm2708
blacklist snd-soc-pcm512x
blacklist snd-soc-wm8804

Próbowałem ponownie zainstalować wszystkie wymagane moduły, ale to też nie pomogło. Też apt-get updatei apt-get upgradenie pomogłem.

Polecenie „ lsmod | grep i2c ”pokazuje to:

i2c_bcm2708          6004  0   
i2c_dev              6709  0

To dziwne, bo wcześniej działało. Mogę myśleć, że jest „zepsuty”, ponieważ dwa dni temu zrobiłem aktualizację oprogramowania, ponieważ moje Raspberry Pi wyświetlało dziwne błędy jądra.

Jak mogę rozwiązać problem z I²C?

Odpowiedzi:


35

Najnowsze oprogramowanie wbudowane obsługuje obsługę drzewa urządzeń . To zepsuje takie rzeczy jak I²C, SPI i magistrala 1-wire.

Aby uzyskać bardziej szczegółowe informacje, patrz I²C, SPI, I2S, LIRC, PPS, przestałeś działać? Przeczytaj to. .

streszczenie

Add one or more of the following to your /boot/config.txt and reboot.

I2C
No longer add: dtparam=i2c1=on (or dtparam=i2c0=on on old models)
Instead add: dtparam=i2c_arm=on (as this is correctly mapped to 0 or 1 for each model)
A very few users might need: dtparam=i2c_vc=on (for the other i2c interface - see note below)

SPI
Add dtparam=spi=on

I2S
Add dtparam=i2s=on

lirc-rpi
Add dtoverlay=lirc-rpi
Add module parameters to the end of the dtoverlay line,
e.g. dtoverlay=lirc-rpi,gpio_in_pin=16,gpio_in_pull=high

w1-gpio
If you require the external pullup
dtoverlay=w1-gpio-pullup,gpiopin=x,pullup=y
otherwise
dtoverlay=w1-gpio-pullup,gpiopin=x
(where x and y are gpios).

Audio card
Add one of the following
dtoverlay=hifiberry-dac
dtoverlay=hifiberry-dacplus
dtoverlay=hifiberry-digi
dtoverlay=iqaudio-dac
dtoverlay=iqaudio-dacplus

heartbeat LED
dtparam=act_led_trigger=heartbeat

Uwaga: Zaleca się, aby używać i2c_vc (i i2c_vc_baudrate) tylko wtedy, gdy naprawdę tego potrzebujesz - na przykład, jeśli programujesz pamięć EEPROM HAT. Włączenie i2c_vc może zatrzymać wykrywanie kamery Pi.


Proszę pana, jesteś moim bohaterem! To naprawiło mój I2C.
LittleOne

7

Możesz użyć sudo raspi-configiw Opcjach zaawansowanych wyłączyć Drzewo urządzeń. Może być szybsze niż ręczne zmienianie konfiguracji.


1

Lub możesz po prostu użyć, sudo raspi-configaby włączyć I2C w

Advanced Options> I2C.

dla układu z raspi-configwersji 20160108, styczeń 2016 lub w nowszych wersjach

Interfacing Options> I2C.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.