migration

This commit is contained in:
2026-05-26 20:41:02 -06:00
parent 51d096f856
commit 24387ef1e0
18 changed files with 380 additions and 380 deletions
+36 -36
View File
@@ -1,37 +1,37 @@
Added RTC (https://www.adafruit.com/product/3013) Added RTC (https://www.adafruit.com/product/3013)
added packages python3-smbus i2c-tools to installer added packages python3-smbus i2c-tools to installer
updated installer to set gpio baud to 115200 updated installer to set gpio baud to 115200
added rtc i2c overlay /boot/firmware/config.txt added rtc i2c overlay /boot/firmware/config.txt
removed fake-hwclock package removed fake-hwclock package
NEO GPS Module NEO GPS Module
Wiring Wiring
Changed to 5v mode Changed to 5v mode
U-Center-2 (https://www.u-blox.com/en/u-center-2) U-Center-2 (https://www.u-blox.com/en/u-center-2)
Changed Baudrate UART1 to 115200 Changed Baudrate UART1 to 115200
Time Pulse Mode Time Pulse Mode
Antenna Cable Delay set to the calculated 14ns Antenna Cable Delay set to the calculated 14ns
edited shit edited shit
baud baud
pins for pps pins for pps
configure configure
unattended-upgrades unattended-upgrades
restic restic
all five installers all five installers
fuckin hwclock-config or whatever fuckin hwclock-config or whatever
1.4-rc-0 1.4-rc-0
IT WORKAN WITH NEW MODULE IT WORKAN WITH NEW MODULE
1.5-rc-2 1.5-rc-2
updooted grafana vis updooted grafana vis
streamlined info level streamlined info level
collapsed all da scripts into time_fuckery.sh collapsed all da scripts into time_fuckery.sh
1.5-rc-3 1.5-rc-3
merged all da functions into time_fuckery.sh merged all da functions into time_fuckery.sh
measure offset (chrony_statistics.sh) measure offset (chrony_statistics.sh)
added Commands.md added Commands.md
pi image creation pi image creation
1.5-rc-4 1.5-rc-4
mostly bug fixes mostly bug fixes
+91 -91
View File
@@ -1,92 +1,92 @@
how do i calculate the time for a signal to travel down the wire of a gps antenna? how do i calculate the time for a signal to travel down the wire of a gps antenna?
Calculating the time for a signal to travel down a GPS antenna cable involves understanding the **signal propagation speed**, which depends on the **velocity factor (VF)** of the cable. Heres how to do it step-by-step: Calculating the time for a signal to travel down a GPS antenna cable involves understanding the **signal propagation speed**, which depends on the **velocity factor (VF)** of the cable. Heres how to do it step-by-step:
### **1. Determine the Velocity Factor (VF) of the Cable** ### **1. Determine the Velocity Factor (VF) of the Cable**
The velocity factor is a property of the cable and represents how fast an electrical signal travels compared to the speed of light in a vacuum (\(c = 3 \times 10^8 \, \text{m/s}\)). The velocity factor is a property of the cable and represents how fast an electrical signal travels compared to the speed of light in a vacuum (\(c = 3 \times 10^8 \, \text{m/s}\)).
Common coaxial cables used for GPS antennas: Common coaxial cables used for GPS antennas:
- **RG-58**: VF ≈ **0.66** (66% of the speed of light) - **RG-58**: VF ≈ **0.66** (66% of the speed of light)
- **RG-174**: VF ≈ **0.70** - **RG-174**: VF ≈ **0.70**
- **LMR-200**: VF ≈ **0.83** - **LMR-200**: VF ≈ **0.83**
- **LMR-400**: VF ≈ **0.85** - **LMR-400**: VF ≈ **0.85**
Check your cables datasheet for the exact VF. Check your cables datasheet for the exact VF.
### **2. Calculate Signal Propagation Speed in the Cable** ### **2. Calculate Signal Propagation Speed in the Cable**
The actual speed (\(v\)) of the signal in the cable is: The actual speed (\(v\)) of the signal in the cable is:
\[ \[
v = \text{VF} \times c v = \text{VF} \times c
\] \]
For example, with **RG-58 (VF = 0.66)**: For example, with **RG-58 (VF = 0.66)**:
\[ \[
v = 0.66 \times 3 \times 10^8 \, \text{m/s} = 1.98 \times 10^8 \, \text{m/s} v = 0.66 \times 3 \times 10^8 \, \text{m/s} = 1.98 \times 10^8 \, \text{m/s}
\] \]
### **3. Measure the Cable Length** ### **3. Measure the Cable Length**
- Lets say your GPS antenna cable is **3 meters** long. - Lets say your GPS antenna cable is **3 meters** long.
### **4. Calculate Signal Travel Time** ### **4. Calculate Signal Travel Time**
The time (\(t\)) for the signal to travel the length of the cable is: The time (\(t\)) for the signal to travel the length of the cable is:
\[ \[
t = \frac{\text{Length}}{v} = \frac{\text{Length}}{\text{VF} \times c} t = \frac{\text{Length}}{v} = \frac{\text{Length}}{\text{VF} \times c}
\] \]
For **3 meters of RG-58**: For **3 meters of RG-58**:
\[ \[
t = \frac{3 \, \text{m}}{1.98 \times 10^8 \, \text{m/s}} ≈ 15.15 \, \text{nanoseconds (ns)} t = \frac{3 \, \text{m}}{1.98 \times 10^8 \, \text{m/s}} ≈ 15.15 \, \text{nanoseconds (ns)}
\] \]
### **5. Quick Formula for Practical Use** ### **5. Quick Formula for Practical Use**
For a given length (\(L\)) in meters and velocity factor (VF): For a given length (\(L\)) in meters and velocity factor (VF):
\[ \[
t \, (\text{ns}) ≈ \frac{L \, (\text{m}) \times 3.33}{\text{VF}} t \, (\text{ns}) ≈ \frac{L \, (\text{m}) \times 3.33}{\text{VF}}
\] \]
**Example (3m, RG-58, VF=0.66):** **Example (3m, RG-58, VF=0.66):**
\[ \[
t ≈ \frac{3 \times 3.33}{0.66} ≈ 15.15 \, \text{ns} t ≈ \frac{3 \times 3.33}{0.66} ≈ 15.15 \, \text{ns}
\] \]
### **Why Does This Matter for GPS?** ### **Why Does This Matter for GPS?**
- **Timing Accuracy:** GPS relies on precise signal timing (errors as small as **10 ns** can cause ~3m position error). - **Timing Accuracy:** GPS relies on precise signal timing (errors as small as **10 ns** can cause ~3m position error).
- **Antenna Delay Calibration:** Some high-precision GPS receivers allow compensating for cable delay. - **Antenna Delay Calibration:** Some high-precision GPS receivers allow compensating for cable delay.
### **Final Answer** ### **Final Answer**
For a **3-meter RG-58 cable**, the signal delay is **~15.15 ns**. Adjust based on your cables **VF** and **length**. For a **3-meter RG-58 cable**, the signal delay is **~15.15 ns**. Adjust based on your cables **VF** and **length**.
Would you like help estimating the impact on GPS positioning accuracy? Would you like help estimating the impact on GPS positioning accuracy?
what is the 3.33 in those formulas? what is the 3.33 in those formulas?
Great question! The **3.33** in the simplified formula comes from the **time (in nanoseconds) it takes light to travel 1 meter in a vacuum**. Heres the breakdown: Great question! The **3.33** in the simplified formula comes from the **time (in nanoseconds) it takes light to travel 1 meter in a vacuum**. Heres the breakdown:
### **Derivation of the 3.33 Constant** ### **Derivation of the 3.33 Constant**
1. **Speed of light in a vacuum (\(c\)):** 1. **Speed of light in a vacuum (\(c\)):**
\[ \[
c = 3 \times 10^8 \, \text{meters/second} c = 3 \times 10^8 \, \text{meters/second}
\] \]
2. **Time for light to travel 1 meter (in seconds):** 2. **Time for light to travel 1 meter (in seconds):**
\[ \[
t = \frac{1 \, \text{meter}}{3 \times 10^8 \, \text{m/s}} ≈ 3.33 \times 10^{-9} \, \text{seconds} = 3.33 \, \text{nanoseconds (ns)} t = \frac{1 \, \text{meter}}{3 \times 10^8 \, \text{m/s}} ≈ 3.33 \times 10^{-9} \, \text{seconds} = 3.33 \, \text{nanoseconds (ns)}
\] \]
3. **Generalizing for any cable length (\(L\)) and velocity factor (VF):** 3. **Generalizing for any cable length (\(L\)) and velocity factor (VF):**
The delay (\(t\)) in nanoseconds is: The delay (\(t\)) in nanoseconds is:
\[ \[
t \, (\text{ns}) = \frac{L \, (\text{meters}) \times 3.33 \, \text{ns/m}}{\text{VF}} t \, (\text{ns}) = \frac{L \, (\text{meters}) \times 3.33 \, \text{ns/m}}{\text{VF}}
\] \]
- **3.33 ns/m** is the baseline delay per meter in a vacuum. - **3.33 ns/m** is the baseline delay per meter in a vacuum.
- Dividing by **VF** accounts for the slower speed in the cable. - Dividing by **VF** accounts for the slower speed in the cable.
### **Example Recap (3m RG-58, VF = 0.66)** ### **Example Recap (3m RG-58, VF = 0.66)**
\[ \[
t = \frac{3 \, \text{m} \times 3.33 \, \text{ns/m}}{0.66} ≈ 15.15 \, \text{ns} t = \frac{3 \, \text{m} \times 3.33 \, \text{ns/m}}{0.66} ≈ 15.15 \, \text{ns}
\] \]
### **Why Use This Shortcut?** ### **Why Use This Shortcut?**
- Avoids recalculating \(c\) every time. - Avoids recalculating \(c\) every time.
- Converts directly to **nanoseconds** (handy for RF and GPS timing). - Converts directly to **nanoseconds** (handy for RF and GPS timing).
### **Key Notes** ### **Key Notes**
- If working in **feet**, use **1.016 ns/ft** (since light travels ~1 ft in ~1.016 ns). - If working in **feet**, use **1.016 ns/ft** (since light travels ~1 ft in ~1.016 ns).
- For **picoseconds**, multiply by 1000 (e.g., 3.33 ns = 3330 ps). - For **picoseconds**, multiply by 1000 (e.g., 3.33 ns = 3330 ps).
This constant simplifies real-world calculations for signal delays in cables. Let me know if you'd like further clarification! This constant simplifies real-world calculations for signal delays in cables. Let me know if you'd like further clarification!
+9 -9
View File
@@ -1,10 +1,10 @@
# Precision Timekeeping Fuckery Additions # Precision Timekeeping Fuckery Additions
## GPS PPS GPIO Signal ## GPS PPS GPIO Signal
dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18
## GPS GPIO UART ## GPS GPIO UART
enable_uart=1 enable_uart=1
init_uart_baud=9600 init_uart_baud=9600
## I2C Hardware RTC Overlay ## I2C Hardware RTC Overlay
dtoverlay=i2c-rtc,ds3231 dtoverlay=i2c-rtc,ds3231
# End Precision Timekeeping Fuckery Additions # End Precision Timekeeping Fuckery Additions
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
# dev=$1 # dev=$1
+9 -9
View File
@@ -1,10 +1,10 @@
# Precision Timekeeping Fuckery Additions # Precision Timekeeping Fuckery Additions
## GPS PPS GPIO Signal ## GPS PPS GPIO Signal
dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18
## GPS GPIO UART ## GPS GPIO UART
enable_uart=1 enable_uart=1
init_uart_baud=9600 init_uart_baud=9600
## I2C Hardware RTC Overlay ## I2C Hardware RTC Overlay
dtoverlay=i2c-rtc,ds3231 dtoverlay=i2c-rtc,ds3231
# End Precision Timekeeping Fuckery Additions # End Precision Timekeeping Fuckery Additions
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
# dev=$1 # dev=$1
+105 -105
View File
@@ -1,106 +1,106 @@
## Install ## Install
### Hardware Needed ### Hardware Needed
1. Raspberry Pi of any type 1. Raspberry Pi of any type
2. Timing Specific GPS Module [U-BLOX ublox LEA-M8T-0-10 HUAWEI GPS Module](https://www.ebay.com/itm/134243322249) 2. Timing Specific GPS Module [U-BLOX ublox LEA-M8T-0-10 HUAWEI GPS Module](https://www.ebay.com/itm/134243322249)
3. High Precision RTC Module like [Adafruit DS3231 Precision RTC Breakout](https://www.adafruit.com/product/3013) 3. High Precision RTC Module like [Adafruit DS3231 Precision RTC Breakout](https://www.adafruit.com/product/3013)
4. CR1220 Battery for RTC 4. CR1220 Battery for RTC
5. Female to Female jumper/dupont wires 5. Female to Female jumper/dupont wires
6. Raspberry Pi Case that Exposes GPIO 6. Raspberry Pi Case that Exposes GPIO
7. (GPS Antenna)[https://www.aliexpress.us/item/3256808971033962.html] 7. (GPS Antenna)[https://www.aliexpress.us/item/3256808971033962.html]
8. (Cable for GPS Antenna)[https://www.amazon.com/Superbat-coaxial-Bulkhead-Adapter-Equipment/dp/B07FC8PVZS?th=1] 8. (Cable for GPS Antenna)[https://www.amazon.com/Superbat-coaxial-Bulkhead-Adapter-Equipment/dp/B07FC8PVZS?th=1]
9. (GPS Antenna Adaptor)[https://www.amazon.com/dp/B00CVR4NN0] 9. (GPS Antenna Adaptor)[https://www.amazon.com/dp/B00CVR4NN0]
10. UART 10. UART
11. Solder Supplies (maybe) 11. Solder Supplies (maybe)
### Configuring Hardware ### Configuring Hardware
1. Install (u-center)[https://www.u-blox.com/en/product/u-center] NOT u-center 2 1. Install (u-center)[https://www.u-blox.com/en/product/u-center] NOT u-center 2
2. Wire UART of GPS Module to your UART 2. Wire UART of GPS Module to your UART
1. Change baudrate to 115200 1. Change baudrate to 115200
2. enable timing mode? 2. enable timing mode?
3. change cable delay to calculated value 3. change cable delay to calculated value
### Wiring Everything Up ### Wiring Everything Up
#### GPS Module #### GPS Module
1. GPS GND to RPi Physical Pin 6 (GND) 1. GPS GND to RPi Physical Pin 6 (GND)
2. GPS RX to RPi Physical Pin 8 (GPIO 14 / TX (UART)) 2. GPS RX to RPi Physical Pin 8 (GPIO 14 / TX (UART))
3. GPS TX to RPi Physical Pin 10 (GPIO 15 / RX (UART)) 3. GPS TX to RPi Physical Pin 10 (GPIO 15 / RX (UART))
4. GPS PPS to RPi Physical Pin 12 (GPIO 18) 4. GPS PPS to RPi Physical Pin 12 (GPIO 18)
5. GPS VIN to RPi Physical Pin 27 (3.3 volts) 5. GPS VIN to RPi Physical Pin 27 (3.3 volts)
#### RTC Module #### RTC Module
1. RTC GND to Rpi Physical Pin 9 (GND) 1. RTC GND to Rpi Physical Pin 9 (GND)
3. RTC SDA to RPi Physical Pin 3 (GPIO 2 / SDA1 (I2C)) 3. RTC SDA to RPi Physical Pin 3 (GPIO 2 / SDA1 (I2C))
4. RTC SCL to RPi Physical Pin 5 (GPIO 4 / SCL1 (I2C)) 4. RTC SCL to RPi Physical Pin 5 (GPIO 4 / SCL1 (I2C))
5. RTC VCC to RPi Physical Pin 1 (3.3 volts) 5. RTC VCC to RPi Physical Pin 1 (3.3 volts)
### Setup Pi ### Setup Pi
#### Microsd Card #### Microsd Card
1. Install [Raspberry Pi Imager](https://www.raspberrypi.com/software/) on your PC 1. Install [Raspberry Pi Imager](https://www.raspberrypi.com/software/) on your PC
2. Insert Microsd card to your PC 2. Insert Microsd card to your PC
3. Run Raspberry Pi Imager 3. Run Raspberry Pi Imager
1. Choose Device (your Raspberry Pi Type) 1. Choose Device (your Raspberry Pi Type)
2. Choose OS->Raspberry Pi OS (other)->Raspberry Pi OS Lite (64-bit) 2. Choose OS->Raspberry Pi OS (other)->Raspberry Pi OS Lite (64-bit)
3. Choose Storage (your Microsd card) 3. Choose Storage (your Microsd card)
4. Configure settings as you like them 4. Configure settings as you like them
5. Burn 5. Burn
#### Login to Raspberry Pi #### Login to Raspberry Pi
1. `curl -s https://raw.githubusercontent.com/PrincessPi3/Precision-Timekeeping-Fuckery/refs/heads/main/installer_auto.sh?nocache=$RANDOM | $SHELL` 1. `curl -s https://raw.githubusercontent.com/PrincessPi3/Precision-Timekeeping-Fuckery/refs/heads/main/installer_auto.sh?nocache=$RANDOM | $SHELL`
2. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer1.sh` (will reboot) 2. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer1.sh` (will reboot)
3. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer2.sh` (will reboot) 3. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer2.sh` (will reboot)
4. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer3.sh` (will reboot) 4. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer3.sh` (will reboot)
5. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer4.sh` (will reboot) 5. `cd ~/Precision-Timekeeping-Fuckery && git pull; bash installer4.sh` (will reboot)
6. `curl -s https://gitlab.com/princesspi/general-scripts-and-system-ssssssetup/-/raw/master/customscripts/install_script.sh?nocache=$RANDOM | sudo $SHELL` 6. `curl -s https://gitlab.com/princesspi/general-scripts-and-system-ssssssetup/-/raw/master/customscripts/install_script.sh?nocache=$RANDOM | sudo $SHELL`
7. `exec $SHELL` 7. `exec $SHELL`
8. `configure_webhook.sh` 8. `configure_webhook.sh`
9. `sudo reboot` 9. `sudo reboot`
10. Grafana 10. Grafana
1. open grafana web interface in a browser: `http://<ip>:3000` 1. open grafana web interface in a browser: `http://<ip>:3000`
2. username `admin` password `admin` 2. username `admin` password `admin`
3. set new password 3. set new password
4. Dashboards->Import 4. Dashboards->Import
1. Upload Garfana-Visualization.json 1. Upload Garfana-Visualization.json
5. edit each graph and just save 5. edit each graph and just save
11. After 24 Hours 11. After 24 Hours
1. `cd ~/Precision-Timekeeping-Fuckery` 1. `cd ~/Precision-Timekeeping-Fuckery`
2. `bash services.sh stop` 2. `bash services.sh stop`
3. `bash nuke_logs.sh` 3. `bash nuke_logs.sh`
4. `bash reconfig_full.sh ./running-warn-level-conf` 4. `bash reconfig_full.sh ./running-warn-level-conf`
5. `sudo reboot` 5. `sudo reboot`
## Scripts ## Scripts
* `uninstall.sh` uninstalls everything * `uninstall.sh` uninstalls everything
* `chrony_statistics.sh` uses the python script chrony_statistics.py and feeds it copies of tracking statistics to calculate offset * `chrony_statistics.sh` uses the python script chrony_statistics.py and feeds it copies of tracking statistics to calculate offset
*`cleanup.sh` remove old files *`cleanup.sh` remove old files
* `dump_configs.sh` make a backup of all configs * `dump_configs.sh` make a backup of all configs
* `full_status.sh` show status of all of the componants of Precision-Timekeeping-Fuckery one by one * `full_status.sh` show status of all of the componants of Precision-Timekeeping-Fuckery one by one
* `installer_auto.sh` script to initialize the install, it is run first * `installer_auto.sh` script to initialize the install, it is run first
* usage: `curl -s https://raw.githubusercontent.com/PrincessPi3/Precision-Timekeeping-Fuckery/refs/heads/main/installer_auto.sh?nocache=$RANDOM | $SHELL` * usage: `curl -s https://raw.githubusercontent.com/PrincessPi3/Precision-Timekeeping-Fuckery/refs/heads/main/installer_auto.sh?nocache=$RANDOM | $SHELL`
* `installer1.sh` first manual installer script. runs rpi-config and optionall rpi-update * `installer1.sh` first manual installer script. runs rpi-config and optionall rpi-update
* `installer2.sh` second manual installer script. performs a dist-upgrade and an autoremove * `installer2.sh` second manual installer script. performs a dist-upgrade and an autoremove
* `installer3.sh` third manual installer script. adds grafana and telegram repos, uninstalls and disables unneeded junk, installs packages, adds pps-gpio to /etc/modules if not there, autoremove, gives users the right groups * `installer3.sh` third manual installer script. adds grafana and telegram repos, uninstalls and disables unneeded junk, installs packages, adds pps-gpio to /etc/modules if not there, autoremove, gives users the right groups
* `installer4.sh` final manual installer script. runs `reconfig_full.sh` and enables the services on boot * `installer4.sh` final manual installer script. runs `reconfig_full.sh` and enables the services on boot
* `nuke_logs.sh` does just what it says on the tin * `nuke_logs.sh` does just what it says on the tin
* `reconfig_full.sh` reconfigures services in one of the directories * `reconfig_full.sh` reconfigures services in one of the directories
* usage: `bash reconfig_full.sh <config_directory>` * usage: `bash reconfig_full.sh <config_directory>`
* `services.sh` runs an operation on all of the relevant services * `services.sh` runs an operation on all of the relevant services
* usage: `bash services.sh [start|status|stop|restart|reload|enable|disable]` * usage: `bash services.sh [start|status|stop|restart|reload|enable|disable]`
* `show_running_configs.sh` shows the current config files, one by one * `show_running_configs.sh` shows the current config files, one by one
* `cable-delay-calc.xlsx` spreadsheet to estimate cable delay in ns * `cable-delay-calc.xlsx` spreadsheet to estimate cable delay in ns
## Files ## Files
* `status.txt` this shows the progress of an ongoing install, it is automatically created at the start and deleted at the end * `status.txt` this shows the progress of an ongoing install, it is automatically created at the start and deleted at the end
* `CHANGEOG.txt` this is all the latest changes * `CHANGEOG.txt` this is all the latest changes
* `version.txt` version of Precision-Timekeeping-Fuckery * `version.txt` version of Precision-Timekeeping-Fuckery
## Logs ## Logs
### Chrony Logs ### Chrony Logs
* `sudo tail -f /var/log/chrony/tracking.log` * `sudo tail -f /var/log/chrony/tracking.log`
* `sudo tail -f /var/log/chrony/statistics.log` * `sudo tail -f /var/log/chrony/statistics.log`
* `sudo tail -f /var/log/chrony/measurements.log` * `sudo tail -f /var/log/chrony/measurements.log`
### Telegraf Logs ### Telegraf Logs
* `sudo tail -f /var/log/telegraf/telegraf.log` * `sudo tail -f /var/log/telegraf/telegraf.log`
### Grafana Logs ### Grafana Logs
* `sudo tail -f /var/log/grafana/grafana.log` * `sudo tail -f /var/log/grafana/grafana.log`
### Influxdb Logs ### Influxdb Logs
* `sudo tail -f /var/log/syslog` * `sudo tail -f /var/log/syslog`
### Root Crontab Logs ### Root Crontab Logs
* `sudo tail -f /var/log/root-crontab.log` * `sudo tail -f /var/log/root-crontab.log`
+9 -9
View File
@@ -1,10 +1,10 @@
# Precision Timekeeping Fuckery Additions # Precision Timekeeping Fuckery Additions
## GPS PPS GPIO Signal ## GPS PPS GPIO Signal
dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18
## GPS GPIO UART ## GPS GPIO UART
enable_uart=1 enable_uart=1
init_uart_baud=9600 init_uart_baud=9600
## I2C Hardware RTC Overlay ## I2C Hardware RTC Overlay
dtoverlay=i2c-rtc,ds3231 dtoverlay=i2c-rtc,ds3231
# End Precision Timekeeping Fuckery Additions # End Precision Timekeeping Fuckery Additions
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
# dev=$1 # dev=$1
+11 -11
View File
@@ -1,12 +1,12 @@
# Precision Timekeeping Fuckery Additions # Precision Timekeeping Fuckery Additions
## GPS PPS GPIO Signal ## GPS PPS GPIO Signal
dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18
## GPS GPIO UART ## GPS GPIO UART
enable_uart=1 enable_uart=1
init_uart_baud=115200 init_uart_baud=115200
## I2C Hardware RTC Overlay ## I2C Hardware RTC Overlay
dtoverlay=i2c-rtc,ds3231 dtoverlay=i2c-rtc,ds3231
# End Precision Timekeeping Fuckery Additions # End Precision Timekeeping Fuckery Additions
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
dev=$1 dev=$1
+11 -11
View File
@@ -1,12 +1,12 @@
# Precision Timekeeping Fuckery Additions # Precision Timekeeping Fuckery Additions
## GPS PPS GPIO Signal ## GPS PPS GPIO Signal
dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18
## GPS GPIO UART ## GPS GPIO UART
enable_uart=1 enable_uart=1
init_uart_baud=115200 init_uart_baud=115200
## I2C Hardware RTC Overlay ## I2C Hardware RTC Overlay
dtoverlay=i2c-rtc,ds3231 dtoverlay=i2c-rtc,ds3231
# End Precision Timekeeping Fuckery Additions # End Precision Timekeeping Fuckery Additions
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
dev=$1 dev=$1
+60 -60
View File
@@ -1,61 +1,61 @@
rtc module rtc module
ds3231 ds3231
product page: https://www.adafruit.com/product/3013 product page: https://www.adafruit.com/product/3013
product tutorial: https://learn.adafruit.com/adafruit-ds3231-precision-rtc-breakout/overview product tutorial: https://learn.adafruit.com/adafruit-ds3231-precision-rtc-breakout/overview
install packages python3-smbus i2c-tools install packages python3-smbus i2c-tools
enable i2c support in raspi-config enable i2c support in raspi-config
interfacing options->i2c-> interfacing options->i2c->
enable <Yes> enable <Yes>
kernel module loaded by default <Yes> kernel module loaded by default <Yes>
check that i2c-dev is in /etc/modules check that i2c-dev is in /etc/modules
add `dtoverlay=i2c-rtc,ds3231` to /boot/firmware/config.txt add `dtoverlay=i2c-rtc,ds3231` to /boot/firmware/config.txt
reboot reboot
detect/test module `sudo i2cdetect -y 1` detect/test module `sudo i2cdetect -y 1`
looking for address UU AFTER configure Overlay looking for address UU AFTER configure Overlay
looking for address 68 BEFORE configure overlay looking for address 68 BEFORE configure overlay
remove package fake-hwclock remove package fake-hwclock
remove from rc remove from rc
read rtc `sudo hwclock -r` read rtc `sudo hwclock -r`
set rtc `sudo hwclock -w` set rtc `sudo hwclock -w`
raspberry pi RTC tutorial: https://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/set-rtc-time raspberry pi RTC tutorial: https://learn.adafruit.com/adding-a-real-time-clock-to-raspberry-pi/set-rtc-time
pinout: https://learn.adafruit.com/adafruit-ds3231-precision-rtc-breakout/pinouts pinout: https://learn.adafruit.com/adafruit-ds3231-precision-rtc-breakout/pinouts
battery: CR1220 battery: CR1220
chipset product page: https://www.analog.com/en/products/ds3231.html chipset product page: https://www.analog.com/en/products/ds3231.html
chipset datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/DS3231.pdf chipset datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/DS3231.pdf
chipset reliability report: https://www.analog.com/media/en/technical-documentation/reliability-data/ds3231.pdf chipset reliability report: https://www.analog.com/media/en/technical-documentation/reliability-data/ds3231.pdf
notes: notes:
https://serverfault.com/questions/1093101/chrony-hosting-time-with-rtc-as-authoritative-clock-on-an-air-gapped-isolated?__cf_chl_tk=G_sZX4ClltOv3fQJpH1q2a65tx4O2s_H_FObeBQ2UyU-1749831141-1.0.1.1-W0v5fl8cCrf0tIpB0pAqIb93L5MuoWeebiHm7iLGAlo https://serverfault.com/questions/1093101/chrony-hosting-time-with-rtc-as-authoritative-clock-on-an-air-gapped-isolated?__cf_chl_tk=G_sZX4ClltOv3fQJpH1q2a65tx4O2s_H_FObeBQ2UyU-1749831141-1.0.1.1-W0v5fl8cCrf0tIpB0pAqIb93L5MuoWeebiHm7iLGAlo
https://stackoverflow.com/questions/49730407/how-to-do-one-shot-time-sync-using-chrony https://stackoverflow.com/questions/49730407/how-to-do-one-shot-time-sync-using-chrony
do oneshot sync? do oneshot sync?
script set every x seconds script set every x seconds
`sudo hwclock -r` `sudo hwclock -r`
GPS module GPS module
baudrates baudrates
1. 115200 // working 1. 115200 // working
2. 230400 2. 230400
3. 460800 3. 460800
cable delay cable delay
cable is 10ft? RG-174? cable is 10ft? RG-174?
14.3 14.3
velocity factors of cable forms velocity factors of cable forms
RG-58: VF ≈ 0.66 (66% of the speed of light) RG-58: VF ≈ 0.66 (66% of the speed of light)
RG-174: VF ≈ 0.70 RG-174: VF ≈ 0.70
LMR-200: VF ≈ 0.83 LMR-200: VF ≈ 0.83
LMR-400: VF ≈ 0.85 LMR-400: VF ≈ 0.85
formula formula
CD = time in nanoseconds of cable delay CD = time in nanoseconds of cable delay
L = Length of cable in UNIT L = Length of cable in UNIT
DF = delay factor in UNIT )speed of light in a vaccum used in nanoseconds per UNIT) DF = delay factor in UNIT )speed of light in a vaccum used in nanoseconds per UNIT)
3.33 = ns (nanoseconds per meter) 3.33 = ns (nanoseconds per meter)
1.016 = feet (feet per meter) 1.016 = feet (feet per meter)
VF = velocity factor of cable (above) VF = velocity factor of cable (above)
CD ≈ (L*DF)/VF CD ≈ (L*DF)/VF
CD ≈ (Length (meters) * 3.33 (baseline light speed in a vaccum ns/m)) / Velocity Factor of cable (VF) CD ≈ (Length (meters) * 3.33 (baseline light speed in a vaccum ns/m)) / Velocity Factor of cable (VF)
derriving the speed of light offset derriving the speed of light offset
t(ns) = time in nanoseconds t(ns) = time in nanoseconds
c = speed of light in a vaccum in meters per second (3*(10^8) m/s) c = speed of light in a vaccum in meters per second (3*(10^8) m/s)
d(m) = distance to travel in meters d(m) = distance to travel in meters
t(ns) = d(m)/c t(ns) = d(m)/c
@@ -1,12 +1,12 @@
# Precision Timekeeping Fuckery Additions # Precision Timekeeping Fuckery Additions
## GPS PPS GPIO Signal ## GPS PPS GPIO Signal
dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18
## GPS GPIO UART ## GPS GPIO UART
enable_uart=1 enable_uart=1
init_uart_baud=115200 init_uart_baud=115200
## I2C Hardware RTC Overlay ## I2C Hardware RTC Overlay
dtoverlay=i2c-rtc,ds3231 dtoverlay=i2c-rtc,ds3231
# End Precision Timekeeping Fuckery Additions # End Precision Timekeeping Fuckery Additions
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
dev=$1 dev=$1
+11 -11
View File
@@ -1,12 +1,12 @@
# Precision Timekeeping Fuckery Additions # Precision Timekeeping Fuckery Additions
## GPS PPS GPIO Signal ## GPS PPS GPIO Signal
dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18
## GPS GPIO UART ## GPS GPIO UART
enable_uart=1 enable_uart=1
init_uart_baud=115200 init_uart_baud=115200
## I2C Hardware RTC Overlay ## I2C Hardware RTC Overlay
dtoverlay=i2c-rtc,ds3231 dtoverlay=i2c-rtc,ds3231
# End Precision Timekeeping Fuckery Additions # End Precision Timekeeping Fuckery Additions
+11 -11
View File
@@ -1,12 +1,12 @@
#!/bin/sh #!/bin/sh
# Reset the System Clock to UTC if the hardware clock from which it # Reset the System Clock to UTC if the hardware clock from which it
# was copied by the kernel was in localtime. # was copied by the kernel was in localtime.
dev=$1 dev=$1
# if [ -e /run/systemd/system ] ; then # if [ -e /run/systemd/system ] ; then
# exit 0 # exit 0
# fi # fi
# /sbin/hwclock --rtc=$dev --systz # /sbin/hwclock --rtc=$dev --systz
# /sbin/hwclock --rtc=$dev --hctosys # /sbin/hwclock --rtc=$dev --hctosys