понедельник, 15 февраля 2016 г.

Добавление часов реального времени (на основе DS3231) к Raspberry Pi 2

Все описанные инструкции работают для 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

Никаких blacklist файлов в моем случае не оказалось, поэтому ничего модифицировать не надо (отсылка к blacklist файлу идет во многих сетевых туториалах).

1) Добавим необходимый модуль в ядро, выполнив команду

modprobe i2c-bcm2708

Список модулей можно вывести командой lsmod. В списке должны присутствовать - rtc_ds1307   
i2c_bcm2708

2) В конец файла /boot/config.txt добавляем следующие две строки:

dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231

3) Подключаем плату с часами по следующей таблице:

DS1307Pi GPIO
GNDP1-06
VccP1-01 (3.3V)
SDAP1-03 (I2C SDA)
SCLP1-05 (I2C SCL)
Резисторы (подтягивающие) не выпаивал (где то в сети их выпаивают). На плате загорится led indicator POWER.

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

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 должен показывать актуальное текущее время. Профит!




пятница, 12 февраля 2016 г.

Tuning Raspberry Pi 2

Увеличить размер SWAP

sudo nano /etc/dphys-swapfile

По умолчанию в этом файле CONF_SWAPSIZE = 100, что соответствует значению

cat /proc/swaps
Filename                                Type            Size    Used    Priority
/var/swap                               file            102396  0       -1

для увеличения swap выставляем CONF_SWAPSIZE=256 и перезапускаем сервисы

/etc/init.d/dphys-swapfile stop
/etc/init.d/dphys-swapfile start

Альтернативные варианты просмотра размера SWAP файла:

swapon -s
или
cat /proc/meminfo | grep Swap

Ускорить процедуру логина по ssh

Необходимо в файл /etc/ssh/sshd_config добавить строку UseDNS no и перезапустить сервис

sudo service ssh restart

среда, 10 февраля 2016 г.

В какой то момент времени обнаружилось, что raspberri умудряется назначить на интерфейс eth0 два IP адреса - один из конфиг файла /etc/network/interfaces, второй - назначает предустановленный dhcp клиент.

В этом можно убедиться набрав команду в терминале ip addr show eth0, вывод которой продемонстрирует два IP адреса на интерфейсе eth0.

Один из менее трудоемких способов решения проблемы (можно удалить сервис клиента, можно запретить автозапуск сервису, или откатиться на предыдущую версию raspbian ) - просто надо добавить строку denyinterfaces eth0 в файл конфигурации /etc/dhcpcd.conf.

После изменения настроек - reboot

Пример файла /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
#allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

auto wlan1
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf