RPIGPS Bookworm: Porovnání verzí
(→Instalace NTP) |
(→Instalace NTP) |
||
Řádka 136: | Řádka 136: | ||
sudo apt-get -y install ntp | sudo apt-get -y install ntp | ||
sudo mkdir /var/log/ntpsec && sudo chown ntpsec:ntpsec /var/log/ntpsec | sudo mkdir /var/log/ntpsec && sudo chown ntpsec:ntpsec /var/log/ntpsec | ||
+ | Po instalaci prvně upravíme default pro spusštění, aby se nenačítal NTP server z DHCP | ||
+ | sudo nano /etc/default/ntpsec | ||
+ | |||
+ | IGNORE_DHCP="yes" | ||
Po instalaci upravíme soubor ntp.conf podle našich požadavků nakonec opět NTP restartujme/spustíme. | Po instalaci upravíme soubor ntp.conf podle našich požadavků nakonec opět NTP restartujme/spustíme. | ||
sudo nano /etc/ntpsec/ntp.conf | sudo nano /etc/ntpsec/ntp.conf |
Verze z 10. 3. 2024, 14:12
Nová verze Raspberry a Debianu přináší také jiný způsob instalace.
Obsah
Úvod
Po vytvoření image si nastavíme obvyklé rozhraní. Pozor, prvni odstavec je fakt jen pro mne ...
sudo su root apt install -y mc cd /root sed -i 's/#alias ll=/alias ll=/' .bashrc sed -i 's/#alias la=/alias la=/' .bashrc cd /home/tydyt sed -i 's/#alias ll=/alias ll=/' .bashrc sed -i 's/#alias la=/alias la=/' .bashrc sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/' .bashrc exit
Následně provedeme upgrade celé distribuce:
sudo apt-get update && sudo apt-get dist-upgrade -y sudo apt-get upgrade -y && sudo apt autoremove -y sudo rpi-update
Nastavení COM
Pokud budeme GPS přijímač připojovat přes sériové rozhraní Raspberry (nikoliv přes USB), je potřeba z něj odpojit konzoli a nechat aktivoní sériový port. To provedeme pomocí konfiguraččního nástroje pro Raspberry.
sudo raspi-config
Následné volíme:
3 Interface Options Configure connections to peripherals I5 Serial Port Enable/disable shell messages on the serial connection Would you like a login shell to be accessible over serial? <No> Would you like the serial port hardware to be enabled? <Yes>
Nakonec provedeme reboot, aby se změna nastavení sériového portu projevila.
Nastaveni PPS
Pro funkci PPS musíme vyčlenít jeden pin GPIO,
sudo bash -c "echo '# Set PPS on GPIN' >> /boot/firmware/config.txt" sudo bash -c "echo 'dtoverlay=pps-gpio,gpiopin=4' >> /boot/firmware/config.txt"
a přidat modul pps.
sudo bash -c "echo 'pps-gpio' >> /etc/modules"
Pro aplikování opět provést restart.
Zapojení
Ověření GPS
Před pokračováním je dobré se přesvědčit že modul GPS má dostatek dat ze satelitů a že je komunikace přes sériový port v pořádku. U některých modelů je dostatek dat signalizován led "Fix" na modulu:
- Bliká v intervalu 1s - No Fix (nedostatek dat)
- Blikne jednou za 10s - OK Fix
Je možné,že bude nutné přijímač GPS dát blíže k oknu, nebo připojit externí anténu. Pak můžeme pokračovat v ověření "surových" dat z přijímače přímo ze sériového portu:
cat /dev/serial0
Následně by se nám měli zobrazit "surová" data, například
$GPGGA,193338.000,4909.7635,N,01643.8563,E,1,10,0.87,221.4,M,43.4,M,,*6C $GPGSA,A,3,03,11,31,22,01,17,09,14,06,23,,,1.57,0.87,1.30*01 $GPRMC,193338.000,A,4909.7635,N,01643.8563,E,0.21,357.98,220717,,,A*64 $GPZDA,193338.000,22,07,2017,,*56 $GPGGA,193339.000,4909.7635,N,01643.8563,E,1,10,0.87,221.4,M,43.4,M,,*6D $GPGSA,A,3,03,11,31,22,01,17,09,14,06,23,,,1.57,0.87,1.30*01 $GPRMC,193339.000,A,4909.7635,N,01643.8563,E,0.11,57.42,220717,,,A*52
Pokud tomu tak je, můžeme pokračovat ....
Instalace GPS a PPS
Nainstalujeme vlastní ovladače pro GPS a PPS.
sudo apt-get install -y gpsd gpsd-clients pps-tools
Následně otevřeme konfigurační soubor /etc/default/gpsd kde nastavíme parametry
sudo nano /etc/default/gpsd
DEVICES="/dev/serial0" GPSD_OPTIONS="-n" USBAUTO="false"
Poté restartujeme službu, aby se změny projevily.
sudo systemctl restart gpsd.service
Ověření gpsd
Ověření funkčnosti GPS je možné použít několik pomocných programů které jsou součástí předchozí instalace. Například:
- gpsmon
- cgps -s
- sudo ntpshmmon
Ověření PPS
Prvně ověříme, že je modul PPS načtem
lsmod | grep pps
Měli by jsme dotat následující (obdobnou) informaci:
pps_gpio 16384 0
K ověření pulzů PPS můžeme použít:
sudo ppstest /dev/pps0
Následně by jsme měli získat podobný výpis
trying PPS source "/dev/pps0" found PPS source "/dev/pps0" ok, found 1 source(s), now start fetching data... source 0 - assert 1504898420.000395033, sequence: 2859 - clear 0.000000000, sequence: 0 source 0 - assert 1504898421.000394391, sequence: 2860 - clear 0.000000000, sequence: 0 source 0 - assert 1504898422.000394114, sequence: 2861 - clear 0.000000000, sequence: 0
Pokud by se zobrazil výpis " time_pps_fetch() error -1 (Connection timed out) " tak PPS pulzy nejsou na daném rozhraní k dispozici.
Poznámka: V případě že GPS přijímač je připojen přes seriové rozhraní, tak pro PPS signál se využívá jeden z pinů DCD, RI a DSR.
Instalace Chrony
Vlastní instalace. Pozor, pokud jiz je nainstalovane NTP, tak jej odinstaluje.
sudo apt install -y chrony
Pote upravíme nastavení chrony, kde přidáme řádku pro GPS, PPS a upravíme z jakého rozsahu budeme službu NTP nabízet:
- refclock SHM 0 refid NMEA offset 0.200
- refclock PPS /dev/pps0 refid PPS lock NMEA
- allow
sudo nano /etc/chrony/chrony.conf
###### pod tímto řádkem jsou vlastní změny konfigurace ####### server 10.98.1.1 iburst minpoll 3 maxpoll 5 server time-a-b.nist.gov iburst server time-d-b.nist.gov server utcnist.colorado.edu server time.windows.com server time.apple.com # zpoždění bylo určeno experimentálně nastavením noselect a poté sledováním po dobu několika hodin # 0,325 znamená, že časová věta NMEA dorazí 325 milisekund po pulzu PPS # zpoždění nastaví dopředu refclock SHM 0 delay 0.325 refid NMEA refclock PPS /dev/pps0 refid PPS allow 10.98.1.0/24 # my home network ###### nad tímto řádkem jsou vlastní změny konfigurace ####### ###### pod tímto řádkem jsou standardní chronické věci ####### keyfile /etc/chrony/chrony.keys driftfile /var/lib/chrony/chrony.drift #log tracking measurements statistics logdir /var/log/chrony maxupdateskew 100.0 hwclockfile /etc/adjtime rtcsync makestep 1 3
Nakonec ověříme že vše funguje.
chronyc sources
Ve sloupečku S je pak signalozovano:
- * je vybraný zdroj pro synchronizaci
- + je záložní zdroj pro synchronizaci
- x neplatný, falešný zdroj
- vše ostatní se nepoužije
Instalace NTP
Prvně provedeme vlastní instalaci. Pokud mame nainstalovany chrone, tak bude odinstalovan.
sudo apt-get update sudo apt-get -y install ntp sudo mkdir /var/log/ntpsec && sudo chown ntpsec:ntpsec /var/log/ntpsec
Po instalaci prvně upravíme default pro spusštění, aby se nenačítal NTP server z DHCP
sudo nano /etc/default/ntpsec
IGNORE_DHCP="yes"
Po instalaci upravíme soubor ntp.conf podle našich požadavků nakonec opět NTP restartujme/spustíme.
sudo nano /etc/ntpsec/ntp.conf
# gps ntp server 127.127.28.0 minpoll 4 maxpoll 4 prefer fudge 127.127.28.0 time1 0.0 refid GPS # PPS ntp server 127.127.22.0 minpoll 4 maxpoll 4 fudge 127.127.22.0 refid PPS
a následně službu NTP restartujeme pro načtení změn
sudo service ntp restart
Prepnuti NTP na lokal
- /etc/systemd/timesyncd.conf - upravit dle potreby, adresar timesyncd.conf.d/
- /etc/systemd/networkd.conf zadat:
[DHCP] UseNTP=false
Web zobrazení
Součástí gpsd je i php skript, který umožní zobrazení zachycených družic přes web rozhraní. V případě zájmu o toto zobrazení je potřeba doinstalovat web server z PHP.
sudo apt install -y lighttpd php-cgi php-gd php-bcmath sudo lighty-enable-mod fastcgi sudo lighty-enable-mod fastcgi-php sudo service lighttpd force-reload
Následně z adresáře /usr/share/doc/gpsd-clients/examples překopírujeme soubor gpsd.php.gz do adresáře /var/www/html. Tam jej rozbalíme příkazem "gzip -d gpsd.php.gz". Při prvním spuštění gpsd.php se vytváří konfigurační soubor. Proto je potřeba alespoň dočasně povolit do adresáře zápis.
sudo cp /usr/share/doc/gpsd-clients/examples/gpsd.php.gz /var/www/html cd /var/www/html sudo gzip -d gpsd.php.gz
Někdy se stane, že po instalaci skript neni zkompromován. Pak je stačí překopírovat.
sudo cp /usr/share/doc/gpsd-clients/examples/gpsd.php /var/www/html
Pred prvním zpuštěním vytvoříme symlink a nastavíme práva, aby se mohl zapsat konfiguracni soubor
cd /var/www/html sudo ln -s gpsd.php index.php sudo chmod 777 ../html
Následně si zobrazime web stránku přes http://<IP_adresa/DNS_nazev gps serveru>. Poté vrátíme práva aby do adresáře nemohl kde kdo zapisovat
sudo chmod 755 ../html
Jestě překlad popisu v souboru gpsd.php (cca řádek 611):
<p class="caption"> <u>Plný objeket</u> - data ze satelitu byli použity pro synchronizaci<br> <u>Odstup signál od šumu v dBHz</u>: <span style="color:green;">Zelená=nejlepší</span>, <span style="color:#c7a317;">žlutá=dobrý</span>, <span style="color:#dc322f">rudá=nejhorší</span><br> <i>Kruh</i> - satelity z GPS a QZSS<br> <i>Kosočtverec</i> - satelity s rozšířením (SBAS, WAAS atd.)<br> <i>Trojúhelník směrující nahoru</i> - satelity Galileo<br> <i>Trojúhelník směrující dolů</i> - satelity BeiDou<br> <i>Čtverec</i> - satelity GLONASS<br> </p>
A ve vytvořeném konfig souboru:
$blurb = <<<EOT <center> Jedná se o <a href="https://gpsd.io/">gps</a>/<a href="https://www.ntp.org/">ntp</a> server <blink>v síti SlapNet.cz</blink>. Je postaven na <blink>Raspberry pi</blink> z GSM přijímačem. Tento server spravuje <a href="mailto://tydyt@tydyt.cz">Tydyt</a>.<br/> </center> EOT;