Pull to refresh

Synology NAS добавляем сервер точного времени с синхронизацией от GPS

Reading time2 min
Views5.8K

Казалось бы, что ещё нужно для счастья? Купил железку, воткнул жесткий диск, прикрутил камеры, сервер почты, хранилище фоток итд, что ещё нужно от этой несчастной железки? Ну в принципе можно было бы и отстать, но потенциал-то есть, внутри нормальный линукс. Когда дома становится куча гаджетов, камер, телефонов, ноутбуков начинает появляться желание , дабы везде было одно время.

И в принципе можно прописать какой-то чужой сервер точного времени, но мы не ищем легких решений.

Итак приступаем. Сначала надо найти подходящий usb GPS приёмник. В моём случае попался старенький globalsat. У моего приёмника внутри оказался rs->usb pl2303 , но может оказаться ftdi итп, тут надо искать , тот что можно прикрутить. Втыкаем его в USB Synology NAS и ..... и ничего.

Логинимся на NAS по ssh , для удобства сразу становимся root ( sudo -i )

делаем

 cd /dev
ls -a

Убеждаемся , что ttyUSB устройств у нас нет.

Но это не печаль. Проверяем , что наше устройство подключилось

lsusb
dmesg

смотрим, что происходит. По факту оказывается, что надо подгрузить модули, usbserial.ko Synology в /lib/modules положили, а вот дров на usb/com нет, ну нет и нет..

пишем в консоле uname -a , в моём случае у меня GNU/Linux synology_apollolake

идём по адресу https://synocommunity.com/package/synokernel-usbserial

и качаем модули от своего DSM , или устанавливаем полный пакет модулей от synocommunity

PS модули U-blox 8 работают через модуль cdc-acm.ko , соответственно порт после установки модуля будет называться ttyACM0

в rc.local можно сразу добавить нужный модуль

sudo insmod /lib/modules/usbserial.ko > /dev/null 
sudo insmod /lib/modules/cp210x.ko > /dev/null
sudo insmod /lib/modules/usbserial.ko
sudo insmod /lib/modules/cdc-acm.ko
ln -s /dev/ttyUSB0 /dev/gps0

или добавить скрипт в /usr/local/etc/rc.d

#!/bin/sh
case $1 in
  start)
    insmod /lib/modules/usbserial.ko > /dev/null 2>&1
    insmod /lib/modules/pl2303.ko > /dev/null 2>&1
    ;;
  stop)
    exit 0
    ;;
  *)
    exit 1
    ;;
esac

Проверяем, есть ли терерь ttyUSB0 в /dev.

В моём случае всё отлично завелось. Сразу делаем symlink для ttyUSB0 в виде gps0

в конфиг файл /etc/ntp.conf добавляем строчку

server  127.127.20.0    mode 0    prefer    iburst     minpoll 4       maxpoll 6

Этим мы укажем, что gps0 является источником точного времени для ntpd.

в строке 127.127.20.х х: это номер порта gps, в моём случае 0 и порт у меня gps0

mode 0 , это скорость ком порта 4800 , 0x10=9600, 0х20=19200, 0x30=38400, 0х40=57600, 0х50=115200 bps соответственно.

сохраняем, перезапускаем ntpd

Проверяем работу > ntpdate -d localhost

Looking for host localhost and service ntp
127.0.0.1 reversed to localhost
host found : localhost
transmit(127.0.0.1)
receive(127.0.0.1)
Server 127.0.0.1, port 123
stratum 1, precision -23, leap 00, trust 000
refid [GPS], root delay 0.000000, root dispersion 0.003693
reference time: e5fe98e9.546b9201 Mon, Apr 11 2022 15:09:13.329
originate timestamp: e5fe9928.1514e582 Mon, Apr 11 2022 15:10:16.082
transmit timestamp: e5fe9928.150ce81f Mon, Apr 11 2022 15:10:16.082
filter delay: 0.02573 0.02573 0.02573 0.02570
---- ---- ---- ----
filter offset: -0.000003 -0.000009 -0.000002 +0.000012
---- ---- ---- ----
delay 0.02570, dispersion 0.00000, offset +0.000

Всё, у нас свой сервер точного времени, осталось только везде его прописать.

И да, не забудте добавить свои сети в конфиг ntp.conf

restrict AAA.BBB.CCC.0 mask 255.255.255.0

Tags:
Hubs:
Total votes 8: ↑7 and ↓1+8
Comments14

Articles