====== Stratum 1 Orangepi ====== Come avere un orologio preciso (ordine di microsecondi) in casa? Basta prendere un ricevitore GPS! {{ :progetti:stratum_zero:e.jpeg?direct&400 |}} * **Responsabile**: g5pw * **Membri**: g5pw * **Data inizio**: * **Data fine**: 24/2/2019 ===== Materiali ===== * Orange Pi Zero * Ricevitore GPS con PPS ===== Costruzione ===== 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) {{gallery>stratum_zero?lightbox&240x240&=4}} ===== Configurazione ===== 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!) overlays=uart1 pps-gpio param_pps_pin=PA7 ===== GPSd ===== Basta inserire nella configurazione GPSd in ''/etc/default/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'' ===== Chrony ===== Per attivare il GPS + PPM su Chrony basta aggiungere queste linee al suo config. 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. ===== Display LCD Crystalfontz ===== Un display LCD comandato via USB che è supportato da [[https://lcd4linux.bulix.org/wiki/Howto|LCD4linux]], che ho configurato per mostrare l'ora corrente. ===== RTC ===== Per fare in modo che il tempo venga salvato a OrangePI spenta. FIXME (work in progress) ===== Battery backup/UPS ===== Ulteriore sicurezza per la OrangePi. ===== Link Utili ===== * https://frillip.com/raspberry-pi-stratum-1-ntp-server/ * http://linux-sunxi.org/Xunlong_Orange_Pi_PC * http://elixir.free-electrons.com/linux/v4.14.5/source/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt * https://www.blackmagicboxes.com/?p=581 * http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf * http://developer.ridgerun.com/wiki/index.php?title=Edit_device_tree_at_run_time * https://forum.armbian.com/topic/4944-opi-zero-gps-ntpserver/