Все описанные инструкции работают для Raspberry Pi 2 c версией ядра
uname -a
Linux raspberrypi 4.1.7-v7+ #817 SMP PREEMPT Sat Sep 19 15:32:00 BST 2015 armv7l GNU/Linux
Резисторы (подтягивающие) не выпаивал (где то в сети их выпаивают). На плате загорится led indicator POWER.
update-rc.d -f fake-hwclock removeupdate-rc.d -f ntp remove
uname -a
Linux raspberrypi 4.1.7-v7+ #817 SMP PREEMPT Sat Sep 19 15:32:00 BST 2015 armv7l GNU/Linux
Никаких blacklist файлов в моем случае не оказалось, поэтому ничего модифицировать не надо (отсылка к blacklist файлу идет во многих сетевых туториалах).
1) Добавим необходимый модуль в ядро, выполнив команду
modprobe i2c-bcm2708
Список модулей можно вывести командой lsmod. В списке должны присутствовать - rtc_ds1307
i2c_bcm2708
2) В конец файла /boot/config.txt добавляем следующие две строки:
dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231
3) Подключаем плату с часами по следующей таблице:
| DS1307 | Pi GPIO |
|---|---|
| GND | P1-06 |
| Vcc | P1-01 (3.3V) |
| SDA | P1-03 (I2C SDA) |
| SCL | P1-05 (I2C SCL) |
4) Удаляем fake-hwclock и ntp синхронизацию.
update-rc.d -f fake-hwclock removeupdate-rc.d -f ntp remove
fake-hwclock можно вообще удалить из пакетов. (см. dpkg purge).
5) Ребутим raspberry
reboot
и смотрим, появилась ли директория
ls /sys/class/i2c-adapter/i2c-1
1-0068 delete_device device name new_device of_node subsystem uevent
Если этой директории нет, то видимо надо выполнить
echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
я этого не делал, так как запись появлялась автоматически.
Для работы с RTC в Linux существует утилита hwclock
# hwclock -r — считать время, сохранённое в RTC
# hwclock -s — синхронизировать время системы с временем RTC
# hwclock -w — записать текущее системное время в RTC
Для работы с RTC в Linux существует утилита hwclock
# hwclock -r — считать время, сохранённое в RTC
# hwclock -s — синхронизировать время системы с временем RTC
# hwclock -w — записать текущее системное время в RTC
6) Запишем показания часов в DS3231
hwclock --set --date="2016-02-15 09:00:00"
7) Просмотр данных часов
hwclock -r
Mon 15 Feb 2016 12:37:30 UTC -0.556879 seconds
8) Синхронизируем показания системных часов с данным из hwclock
hwclock -s
В общем, время по команде date и время по команде hwclock -r должно быть одним и тем же.
9) Для того, чтобы часы синхронизировались при стартапе raspberry в файл /etc/rc.local добавляем до строки exit 0 следующую строку
#set the system time from hardware clock ds3231
sudo hwclock -s
10) Выключаем raspberry и включаем ее через минут 5. Вывод команды date должен показывать актуальное текущее время. Профит!