Прошивка 3.18.x ломает I²C, SPI, аудио, lirc, 1-wire (например, / dev / i2c-1, такого файла или каталога нет)


19

Я использую I²C для управления модулем Bright Pi .

Я следовал инструкциям « Настройка GPIO - Adafruit » и « Настройка I²C - Adafruit » для настройки I²C. Я сделал это несколько месяцев назад, и все прошло хорошо.

Вот как я подключил Bright Pi к своему Raspberry Pi (модель B):

Схема Брайт Пи

С сегодняшнего дня я заметил, что I²C больше не работает, как раньше. Использование таких команд, как ' sudo i2cdetect -y 1 ' и ' sudo i2cset -y 1 0x70 0x00 0xff ' даст ошибку:

Не удалось открыть файл «/ dev / i2c-1» или «/ dev / i2c / 1»: такого файла или каталога нет

Использование команды ' sudo i2cdetect ' даст ошибку

Шина i2c не указана!

что означает, что i2c-dev работает.

Файл / etc / modules выглядит следующим образом:

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

Файл /etc/modprobe.d/raspi-blacklist.conf выглядит следующим образом:

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

Я попытался переустановить все необходимые модули, но это тоже не помогло. Также apt-get updateи apt-get upgradeне помогло.

Команда ' lsmod | grep i2c 'показывает это:

i2c_bcm2708          6004  0   
i2c_dev              6709  0

Это странно, потому что раньше работало. Я мог бы подумать, что он «сломан», так как я сделал обновление прошивки два дня назад, потому что мой Raspberry Pi показывал странные ошибки ядра.

Как я могу исправить проблему с I²C?

Ответы:


35

В последней версии встроенного ПО реализована поддержка дерева устройств . Это сломало бы такие вещи, как I²C, SPI и 1-проводная шина.

Для более подробной информации см. I²C, SPI, I2S, LIRC, PPS, перестал работать? Прочитайте это. ,

Резюме

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

Примечание. Рекомендуется использовать i2c_vc (и i2c_vc_baudrate) только в том случае, если вам это действительно нужно - например, если вы программируете HAT EEPROM. Включение i2c_vc может остановить обнаружение камеры Pi.


Вы, сэр, мой герой! Это исправило мой I2C.
LittleOne

7

Вы можете использовать sudo raspi-configи в Дополнительные параметры отключить дерево устройств. Может быть быстрее, чем изменять конфигурацию вручную.


1

Или вы можете просто использовать sudo raspi-configдля включения I2C в

Advanced Options> I2C.

для макета с raspi-configверсии 20160108, январь 2016 г. или в более поздних версиях

Interfacing Options> I2C.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.