Stratum 1 Orangepi

Come avere un orologio preciso (ordine di microsecondi) in casa? Basta prendere un ricevitore GPS!

Stratum 1 Orangepi

  • Responsabile: g5pw
  • Membri: g5pw
  • Data inizio:
  • Data fine: 24/2/2019
  • Orange Pi Zero
  • Ricevitore GPS con PPS

Come prima cosa c'è da individuare i pin necessari per il collegamento. Per il GPS basta collegare alimentazione (Vcc e GND), comunicazione (RX, TX) e il pin di PPS. Il PPS deve essere collegato a un pin con interrupt.

Non tutti i pin sul header supportano interrupt! Interrupt solo su PA*, PG, PL (vedi data sheet Allwinner H3 p. 74)

Innanzitutto bisogna dire al kernel di usare i pin come UART e come PPS. Questo si fa configurando il device tree. Il modo in cui farlo dipende da distribuzione a distribuzione (alcuni hanno supporto dei DTB overlay).

Fedora

Su Fedora, si fa con fdtput, che permette di modificare il device tree compilato. NB: Per rendere effettive le modifiche è necessario un riavvio.

fdt=/boot/dtb-4.14.5-300.fc27.armv7hl/sun8i-h3-orangepi-pc.dtb
# setup TTY
fdtput -t s $fdt '/soc/serial@01c28c00' status okay
# setup pps pin
## Setup pinctrl
fdtput -c $fdt '/soc/pinctrl@01c20800/pps0'
fdtput -t s $fdt '/soc/pinctrl@01c20800/pps0' pins PD14
fdtput -t s $fdt '/soc/pinctrl@01c20800/pps0' function "gpio_in"
# setup PPS device
fdtput -c $fdt /soc/pps
fdtput -t s $fdt /soc/pps compatible pps-gpio
fdtput $fdt /soc/pps gpios 6 0 12 0

Armbian

Su armbian basta aprire il file /boot/armbianEnv.txt e inserire le seguenti linee (occhio a non avere un overlay= duplicato!)

armbianEnv.txt
overlays=uart1 pps-gpio
param_pps_pin=PA7

Basta inserire nella configurazione GPSd in /etc/default/gpsd:

gpsd
# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyS1"
# Other options you want to pass to gpsd
GPSD_OPTIONS="-n"

E far partire GPSd all'avvio con systemctl enable –now gpsd

Per attivare il GPS + PPM su Chrony basta aggiungere queste linee al suo config.

chrony.conf
refclock SHM 0 refid GPS precision 1e-1 offset 0.134 delay 0.2 noselect
refclock PPS /dev/pps0 lock GPS

Bonus stuff

Un po' di cose extra che ho deciso di aggiungere.

Un display LCD comandato via USB che è supportato da LCD4linux, che ho configurato per mostrare l'ora corrente.

Per fare in modo che il tempo venga salvato a OrangePI spenta. FIXME (work in progress)

Ulteriore sicurezza per la OrangePi.

  • progetti/stratum_1_orangepi.txt
  • Ultima modifica: 2019/03/06 23:07
  • da g5pw