El firmware 3.18.x rompe I²C, SPI, audio, lirc, 1 cable (p. Ej. / Dev / i2c-1, no existe tal archivo o directorio)


19

Estoy usando I²C para controlar un módulo Bright Pi .

Seguí las instrucciones de ' Configuración de GPIO - Adafruit ' y ' Configuración de I²C - Adafruit ' para configurar el I²C. Lo hice hace unos meses y todo salió bien.

Así es como conecté el Bright Pi en mi Raspberry Pi (Modelo B):

Circuit Bright Pi

Desde hoy noté que el I²C ya no funciona como solía hacerlo. El uso de los comandos como ' sudo i2cdetect -y 1 ' y ' sudo i2cset -y 1 0x70 0x00 0xff ' dará el error:

No se pudo abrir el archivo '/ dev / i2c-1' o '/ dev / i2c / 1': no ​​existe dicho archivo o directorio

El uso del comando ' sudo i2cdetect ' dará el error

¡No se ha especificado el bus i2c!

lo que significa que i2c-dev se está ejecutando.

El archivo '/ etc / modules' se ve así:

#/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

El archivo '/etc/modprobe.d/raspi-blacklist.conf' se ve así:

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

Intenté reinstalar todos los módulos requeridos, pero eso tampoco ayudó. Además apt-get updatey apt-get upgradeno ayudó.

El comando ' lsmod | grep i2c 'muestra esto:

i2c_bcm2708          6004  0   
i2c_dev              6709  0

Es extraño, porque solía funcionar antes. Podría pensar que está "roto" desde que hice una actualización de firmware hace dos días, porque mi Raspberry Pi mostraba errores extraños en el núcleo.

¿Cómo puedo solucionar el problema con el I²C?

Respuestas:


35

El último firmware implementa el soporte del árbol de dispositivos . Eso habrá roto cosas como I²C, SPI y bus de 1 cable.

Para obtener más detalles, consulte I²C, SPI, I2S, LIRC, PPS, ¿dejó de funcionar? Lee esto. .

Resumen

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

Nota: Se recomienda que solo use i2c_vc (e i2c_vc_baudrate) si realmente lo necesita, por ejemplo, si está programando una EEPROM HAT. Habilitar i2c_vc puede detener la detección de la cámara Pi.


¡Usted señor, es mi héroe! Esto solucionó mi I2C.
LittleOne

7

Puede usar sudo raspi-configy en Opciones avanzadas deshabilitar el Árbol de dispositivos. Podría ser más rápido que cambiar la configuración manualmente.


1

O simplemente puede usar sudo raspi-configpara habilitar I2C en

Advanced Options> I2C.

para el diseño de la raspi-configversión 20160108, enero de 2016 o en versiones posteriores

Interfacing Options> I2C.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.