Compare commits
10 Commits
b94bae29d1
...
24387ef1e0
| Author | SHA1 | Date | |
|---|---|---|---|
| 24387ef1e0 | |||
| 51d096f856 | |||
| 83fd804ed5 | |||
| abf39eb70d | |||
| 10bbd953c0 | |||
| dae6ff5e55 | |||
| ff81edf325 | |||
| ddf88add78 | |||
| ebf39238e8 | |||
| bfe4bde866 |
@@ -0,0 +1,34 @@
|
|||||||
|
# 10MHz Reference Sources
|
||||||
|
1. 10mHz (1ns period) OCOX (Oven Controlled) oscillator for beat time perhaps?
|
||||||
|
1. **investigate** state of the art **10mhz** and see if can **input** via clock/something else
|
||||||
|
2. check specs!
|
||||||
|
1. repeatability
|
||||||
|
2. reliability
|
||||||
|
3. margin of error
|
||||||
|
4. stability (time)
|
||||||
|
5. power input
|
||||||
|
6. signal output
|
||||||
|
1. connector
|
||||||
|
2. voltage
|
||||||
|
3. power
|
||||||
|
7. noise
|
||||||
|
8. operating temperature
|
||||||
|
9. square wave ideally?
|
||||||
|
3. check off TCXO **only use OCXO and DOCXO**
|
||||||
|
4. only use 10mhz reference sources
|
||||||
|
5. square wave ideally
|
||||||
|
6. output over gpio ideally
|
||||||
|
7. 3.3v/5v ideally
|
||||||
|
8. usb-c for power ideally
|
||||||
|
9. acquire ALL DA DATASHEETS
|
||||||
|
10. **MUST SUPPORT FREQUENCY DIVIDER down to 1MHz MAX**
|
||||||
|
11. **CAN DISCIPLINE GPSDO PPS IF SUPPORTED**
|
||||||
|
1. [One (aliexpress)](https://www.aliexpress.us/item/3256809505766372.html)
|
||||||
|
2. [Two (aliexpress)](https://www.aliexpress.us/item/3256810096296631.html)
|
||||||
|
3. [Three (aliexpress)](https://www.aliexpress.us/item/3256805803653257.html)
|
||||||
|
4. [Cheap Reference OCXO (aliexpress)](https://www.aliexpress.us/item/3256807112194740.html?spm)
|
||||||
|
5. [Quality Variable Reference OCXO (aliexpress)](https://www.aliexpress.us/item/3256808516082974.html)
|
||||||
|
6. [OCXO with atomic clock port, no reference?](https://www.aliexpress.us/item/3256804938971512.html)
|
||||||
|
7. [Cheap Ref 10mhz sma connectors low noise](https://www.aliexpress.us/item/3256808618867244.html)
|
||||||
|
8. [SMD OCXO 10mhz](https://www.aliexpress.us/item/3256809395237681.html)
|
||||||
|
9. [TCXO Ref 10MHZ 5V SQUARE WAVE 50ohm load required usb-c power](https://www.aliexpress.us/item/3256810530735650.html)
|
||||||
+36
-36
@@ -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
|
||||||
@@ -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. Here’s 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. Here’s 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 cable’s datasheet for the exact VF.
|
Check your cable’s 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**
|
||||||
- Let’s say your GPS antenna cable is **3 meters** long.
|
- Let’s 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 cable’s **VF** and **length**.
|
For a **3-meter RG-58 cable**, the signal delay is **~15.15 ns**. Adjust based on your cable’s **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**. Here’s 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**. Here’s 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!
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
# Version 3
|
||||||
|
## To Figure Out
|
||||||
|
1. Details on the NEO-F10T/breakout
|
||||||
|
1. Battery
|
||||||
|
2. GPIO Pinouts
|
||||||
|
3. Voltages
|
||||||
|
4. GPIO pin pitch
|
||||||
|
5. Antenna connector type
|
||||||
|
6. Best GPS Antenna+Cable for it
|
||||||
|
7. PPS Settings
|
||||||
|
8. UART Speed settings
|
||||||
|
2. RPI5
|
||||||
|
1. pulse out/in (32kHz 31.25us period/10mhz 1ns period?)
|
||||||
|
3. [Pulsar Clock](Pulsar-Clock.md)
|
||||||
|
1. all daaat shit lmao
|
||||||
|
4. [10MHzReference Sources (If Needed)](10MHz-Reference-Sources.md)
|
||||||
|
5. figure out how to support Universal Beat Time to high precision
|
||||||
|
6. Boot up sequence
|
||||||
|
1. warm ups
|
||||||
|
2. get signals
|
||||||
|
3. run services with affinityies
|
||||||
|
4. check
|
||||||
|
|
||||||
|
## Hardware
|
||||||
|
1. [Raspberry Pi 5 16GB](https://www.adafruit.com/product/6125)
|
||||||
|
1. Raspberry OS Lite
|
||||||
|
2. Will need to carefully use real time priority, maybe even pinned to a core?
|
||||||
|
1. gpsd, etc?
|
||||||
|
2. Reading GPIO Pulses/etc
|
||||||
|
3. UART?
|
||||||
|
```bash
|
||||||
|
sudo taskset -cp 2 1234 # set task pid 1234 pin to core 2
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo chrt -f -p 90 1234 # set pid 1234 to priority 90 (1-99 highest)
|
||||||
|
```
|
||||||
|
|
||||||
|
1. RTC 32khz pulses (31.25us period)
|
||||||
|
2. Pulsar readings
|
||||||
|
3. RTC set/read over i2c
|
||||||
|
4. GPS Module PPS
|
||||||
|
5. NVME hat for NVME boot (? IF NOT INTERFERE WITH GPIO SHIT)
|
||||||
|
1. NVME SSD (? IF NOT INTERFERE WITH GPIO SHIT)
|
||||||
|
6. **Custom Hat**
|
||||||
|
1. [Adafruit DS3231 RTC Precision I2C Breakout Module](https://www.adafruit.com/product/3013#tutorials) x1
|
||||||
|
[CR1220](https://www.adafruit.com/products/380) x1 (Battery)
|
||||||
|
7. [Gen 10 Timekeeping Specific GPS Module - NEO-F10T](https://gnss.store/collections/neo-f10t-timing-gnss-modules)
|
||||||
|
8. GPS Module
|
||||||
|
1. [Buy Varieties (Europe)](https://gnss.store/collections/neo-f10t-timing-gnss-modules)
|
||||||
|
1. Make sure **BATTERY** **TYPE** and **APPLICATION** is figured out
|
||||||
|
2. May have to solder in holder or something
|
||||||
|
1. use the good solder/pins/wire :3
|
||||||
|
3. Make fuckin sure af you have a good fuckin pinout
|
||||||
|
4. check if can be configed via uart using [u-center-2](https://www.u-blox.com/en/u-center-2)?
|
||||||
|
1. figure out a convenient UART (Tigard/FT422H) and plug
|
||||||
|
2. Make sure GPIO pins are FUCKING **2.54mm** AND **3.3v** OR **5v**
|
||||||
|
1. use good/gold/copper pinssss/wire/solder
|
||||||
|
9. [Gen 10 Timekeeping Specific GPS Module - NEO-F10T](https://gnss.store/collections/neo-f10t-timing-gnss-modules)
|
||||||
|
10. [Product Summary](https://content.u-blox.com/sites/default/files/documents/NEO-F10T_ProductSummary_UBX-22025534.pdf)
|
||||||
|
11. [Data Sheet](https://content.u-blox.com/sites/default/files/documents/NEO-F10T_DataSheet_UBX-22022576.pdf)
|
||||||
|
12. [Hardware Integration Guide](https://content.u-blox.com/sites/default/files/documents/NEO-F10T_IntegrationManual_UBX-22018271.pdf)
|
||||||
|
13. [Chip Product Page](https://www.u-blox.com/en/product/neo-f10t-module)
|
||||||
|
|
||||||
|
9. GPS cable
|
||||||
|
1. check connectors
|
||||||
|
2. check adaptors
|
||||||
|
3. check variety
|
||||||
|
1. speed/length
|
||||||
|
2. check length
|
||||||
|
10. GPS antenna
|
||||||
|
1. check protos
|
||||||
|
2. check bands
|
||||||
|
3. check features
|
||||||
|
4. check connectors
|
||||||
|
## RPI5 Wiring
|
||||||
|
- [GPIO Simple Pinout](https://vilros.com/pages/raspberry-pi-5-pinout)
|
||||||
|
- [GPIO Detailed Pinout](https://pinout.xyz/pinout/3v3_power)
|
||||||
|
### Wiring of Note
|
||||||
|
- CLK/PCM/GPIO18/PIN12:
|
||||||
|
- CLK in/out up to 10mHz (1ns period)
|
||||||
|
- 
|
||||||
|
- only one i2c port?
|
||||||
|
- mostly all 3v3?
|
||||||
|
- PCM is kinda like DAC?
|
||||||
|
- GPIO Read?
|
||||||
|
- PWM?
|
||||||
|
- find sum DAC/ADC? sumtin?
|
||||||
|
- **May have to nix double RTC Module**
|
||||||
|
### Wiring
|
||||||
|
- UART (GPS Module, tinker with speed)
|
||||||
|
- I2C (RTC)
|
||||||
|
- CLK/PCM/GPIO READ? (RTC 32khz pulse - 31.25us period)
|
||||||
|
## Operation Flow
|
||||||
|
Both RTCs loaded time over I2C, both inputting 32kHz (31.25us period) signal via GPIO
|
||||||
|
|
||||||
|
RTC time, GPS time, system time, GPS PPS, 32kHz (31.25us period) signal, pulsar readings:
|
||||||
|
|
||||||
|
- tested off each other
|
||||||
|
- deltas per pulse (errors) (add to Grafana)
|
||||||
|
- averages per pulse (add to Grafana)
|
||||||
|
- stored in histograms, constantly updating (add to Grafana)
|
||||||
|
- dial in desired confidence interval over time (add to Grafana)
|
||||||
|
- divisor/multiplier for 32kHz pulses to make them ONE BEAT constantly updated (displayed in Grafana)
|
||||||
|
- 32kHz oscillator (31.25us period) (or most reliable) will be dubbed the "master universal beat pulse", made into pulse by divisor/multiplier based on previous calculations
|
||||||
|
- and will serve as source of truth for UBT web display
|
||||||
|
- sanity tested against network sources
|
||||||
|
|
||||||
|
1. Test both RTC times against GPS time
|
||||||
|
2. Test system time against GPS time
|
||||||
|
3. Test system time against network time
|
||||||
|
4. Sanity Checks
|
||||||
|
1. Time reported vs time actual (net)
|
||||||
|
2. Cable/system delay calculated vs delay measured
|
||||||
|
3. Readability check
|
||||||
|
4. Repeatability check
|
||||||
|
5. Accuracy check
|
||||||
|
6. Precision check
|
||||||
|
## Maybe
|
||||||
|
1. Play with PPS (dial faster?)
|
||||||
|
2. Play with UART speed (dial faster?)
|
||||||
|
3. tinker with 10mhz clock out/test/tinker
|
||||||
|
4. tinker with 32khz clock in/test/tinker
|
||||||
+337
@@ -0,0 +1,337 @@
|
|||||||
|
# TLDR
|
||||||
|
|
||||||
|
Make a highly accurate clock where time is kept by the radio signals from millisecond pulsars, amd shoehorn in Universal Beat Time for autism
|
||||||
|
|
||||||
|
# Todo
|
||||||
|
|
||||||
|
1. research
|
||||||
|
1. Best millisecond pulsars for my location
|
||||||
|
1. Their radio frequency
|
||||||
|
2. their period
|
||||||
|
1. period stability
|
||||||
|
3. their location
|
||||||
|
4. their drift
|
||||||
|
2. Run numbers
|
||||||
|
3. get equipment list together
|
||||||
|
4. sanity check numbers and list via radio nerds and the astrophysics nerds
|
||||||
|
1. Antenna
|
||||||
|
2. Dish
|
||||||
|
3. LNA
|
||||||
|
4. Connectors
|
||||||
|
5. figure out signal processing (linux software)
|
||||||
|
6. figure out multi-pulsar usage
|
||||||
|
|
||||||
|
# Shopping List
|
||||||
|
|
||||||
|
1. 5 meter dish (16.6 feet diameter) [AliBaba](https://www.alibaba.com/product-detail/Big-Size-3m-4m-4-5m_1601092778180.html?spm=a2700.details.you_may_like.1.13805ab039GiG4)
|
||||||
|
2. Tripod / Mount
|
||||||
|
1. Altitude‑Azimuth mount
|
||||||
|
1. possibly motorized/automatic
|
||||||
|
2. cables/antennas to hookup to dish
|
||||||
|
3. NanoVNA to get frequency right (**HAVE**)
|
||||||
|
4. Star finder tool/app
|
||||||
|
1. Android?
|
||||||
|
5. RTL-SDR v4 [eBay](https://www.ebay.com/itm/276000581691?epid=28064968184&itmmeta=01KMSM3SQX0HRVAMMWKZ9MEE9W&hash=item4042eaa83b:g:SOoAAOSwapVk3Jg~)
|
||||||
|
6. Low Noise Amplifier [eBay](https://www.ebay.com/itm/283455455676?itmmeta=01KMSM3SQX7KDXAP18A63J8K91&hash=item41ff4301bc:g:fqAAAOSw1lxct6~v)
|
||||||
|
7. Computer
|
||||||
|
1. Linux
|
||||||
|
1. RPI5
|
||||||
|
2. Laptop
|
||||||
|
8. Assorted cables/antennas/software
|
||||||
|
1. USB-Extenders
|
||||||
|
1. USB-A 3.1 Female to USB-A 3.1 Male (**HAVE**)
|
||||||
|
|
||||||
|
**Yes — it *is* possible for an amateur to detect (and even “listen to”) pulsars**, but the difficulty ranges from “challenging but doable” to “requires a giant dish.” The key is understanding the difference between **detecting** a pulsar and **hearing individual pulses in real time**.
|
||||||
|
|
||||||
|
Below is a clear, structured breakdown grounded in the evidence from your search results.
|
||||||
|
|
||||||
|
# Links
|
||||||
|
|
||||||
|
[Pulsar Clock (Wikipedia)](https://en.wikipedia.org/wiki/Pulsar_clock)
|
||||||
|
|
||||||
|
# AI Answers
|
||||||
|
|
||||||
|
## ⭐ **Short Answer**
|
||||||
|
|
||||||
|
- **Detecting** a pulsar: **Yes, amateurs can do this** with a modest dish (2–5 meters), an RTL‑SDR, a low‑noise amplifier, and the right software. [Reddit](https://www.reddit.com/r/amateurradio/comments/af0ejc/listening_to_pulsars/) [RTL-SDR](https://www.rtl-sdr.com/amateur-pulsar-observations-rtl-sdr/)
|
||||||
|
- **Listening to individual pulses in real time**: **Only possible with very large antennas** (≈25 meters or more). [Reddit](https://www.reddit.com/r/amateurradio/comments/af0ejc/listening_to_pulsars/)
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 🛰️ What amateurs *can* do
|
||||||
|
|
||||||
|
### **1\. Detect strong pulsars using small-to-medium dishes**
|
||||||
|
|
||||||
|
Amateurs have successfully detected pulsars like **Vela** and **B0329+54** using:
|
||||||
|
|
||||||
|
- **2.5–5 m backyard dishes**
|
||||||
|
- **RTL‑SDR dongles** (cheap software-defined radios)
|
||||||
|
- **Low-noise amplifiers**
|
||||||
|
- **DSP software** (Presto, rapulsar, custom tools)
|
||||||
|
|
||||||
|
Some amateurs have detected **up to 15 pulsars** with setups like a 7.3 m dish and RTL‑SDR receivers. [RTL-SDR](https://www.rtl-sdr.com/amateur-pulsar-observations-rtl-sdr/)
|
||||||
|
|
||||||
|
Even a **3 m dish** can detect B0329+54 reliably. [qsl.net](https://www.qsl.net/oe5jfl/pulsar/detecting_pulsars.pdf)
|
||||||
|
|
||||||
|
### **2\. Use signal processing to reveal the pulse profile**
|
||||||
|
|
||||||
|
Because pulsar signals are extremely weak, amateurs typically:
|
||||||
|
|
||||||
|
- Record several minutes of data
|
||||||
|
- **Fold** the signal over the known pulsar period
|
||||||
|
- Average thousands of rotations to extract the pulse shape
|
||||||
|
|
||||||
|
This is standard practice and well within amateur capability. [British Astronomical Association](https://britastro.org/wp-content/uploads/2021/03/AmateurPulsarDetection.pdf)
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 🔊 What amateurs *cannot easily* do
|
||||||
|
|
||||||
|
### **Real-time audio of individual pulses**
|
||||||
|
|
||||||
|
To literally *hear* the pulses as clicks or beats, you need:
|
||||||
|
|
||||||
|
- A **very large antenna** (≈25 m dish)
|
||||||
|
- **High-bandwidth receivers** (tens of MHz)
|
||||||
|
- **Extremely low-noise amplifiers**
|
||||||
|
- Real-time DSP
|
||||||
|
|
||||||
|
One amateur using the **25 m Dwingeloo radio telescope** can hear only the **two brightest northern pulsars**. [Reddit](https://www.reddit.com/r/amateurradio/comments/af0ejc/listening_to_pulsars/)
|
||||||
|
|
||||||
|
This is far beyond typical home equipment.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 🎧 What does a pulsar sound like?
|
||||||
|
|
||||||
|
Recordings exist from professional telescopes (NRAO, Arecibo), and they sound like rhythmic static or a metronome buried in noise. [Radio-Sky Publishing](https://radiosky.com/rspplsr.html)
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 🧰 Minimum practical amateur setup
|
||||||
|
|
||||||
|
If your goal is **detection**, not real-time audio:
|
||||||
|
|
||||||
|
- **Dish**: 2–5 m
|
||||||
|
- **LNA**: <0.5 dB noise figure
|
||||||
|
- **Receiver**: RTL‑SDR (2 MHz bandwidth is enough)
|
||||||
|
- **Software**: Presto, rapulsar, or similar folding tools
|
||||||
|
- **Target pulsars**: Vela, B0329+54, B0950+08
|
||||||
|
|
||||||
|
This is achievable on a modest budget and is a popular project in amateur radio astronomy communities.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 🧭 Bottom Line
|
||||||
|
|
||||||
|
- **Yes, amateurs can detect pulsars**, and many already do.
|
||||||
|
- **Hearing them live** requires a **huge dish**, but you *can* process your data to create audio-like outputs afterward.
|
||||||
|
- The strongest pulsars are within reach of dedicated hobbyists with a few meters of dish and an SDR.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
If you want, I can outline:
|
||||||
|
|
||||||
|
- A **step-by-step beginner setup**,
|
||||||
|
- A **shopping list** for the cheapest viable pulsar station, or
|
||||||
|
- Which pulsars are easiest to detect from your location.
|
||||||
|
|
||||||
|
You can measure time using pulsar signals with **astonishing precision**—in some cases rivaling or even exceeding the stability of the best atomic clocks. The exact precision depends on the type of pulsar, the observing setup, and how long you observe it.
|
||||||
|
|
||||||
|
Below is a structured, evidence‑based breakdown using the search results you triggered.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **Short Answer**
|
||||||
|
|
||||||
|
With the best millisecond pulsars and long-term monitoring, **pulsar timing can achieve time‑of‑arrival precision at the ~100 nanosecond level**, and in some cases even better.
|
||||||
|
This allows pulsars to function as **“celestial clocks”** with long‑term stability comparable to atomic clocks.
|
||||||
|
[HEASARC](https://heasarc.gsfc.nasa.gov/docs/nicer/data_analysis/workshops/2024/presentations/3.11_MeganDeCesar_pulsartiming.pdf)
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 🧭 **How Pulsar Timing Achieves Such Precision**
|
||||||
|
|
||||||
|
Pulsar timing works by:
|
||||||
|
|
||||||
|
1. Recording many pulses
|
||||||
|
2. **Folding** them together to create a stable average profile
|
||||||
|
3. Measuring the **time of arrival (TOA)** of that profile
|
||||||
|
4. Fitting a detailed timing model that accounts for:
|
||||||
|
- Spin frequency
|
||||||
|
- Spin‑down
|
||||||
|
- Orbital motion (if binary)
|
||||||
|
- Astrometric parameters
|
||||||
|
- Interstellar dispersion
|
||||||
|
- Relativistic effects
|
||||||
|
|
||||||
|
TOA precision depends heavily on:
|
||||||
|
|
||||||
|
- Pulse sharpness
|
||||||
|
- Signal‑to‑noise
|
||||||
|
- Bandwidth
|
||||||
|
- Template matching accuracy
|
||||||
|
|
||||||
|
Modern systems can achieve **TOA uncertainties of ~100 ns**.
|
||||||
|
[HEASARC](https://heasarc.gsfc.nasa.gov/docs/nicer/data_analysis/workshops/2024/presentations/3.11_MeganDeCesar_pulsartiming.pdf)
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⏱️ **What This Means in Practice**
|
||||||
|
|
||||||
|
### **1\. Millisecond pulsars are incredibly stable**
|
||||||
|
|
||||||
|
Millisecond pulsars (MSPs) rotate hundreds of times per second and have extremely stable pulse profiles. They are the primary targets for precision timing.
|
||||||
|
[Cambridge University Press & Assessment](https://www.cambridge.org/core/services/aop-cambridge-core/content/view/12A3DB6229A9F0661D3FD990725E931B/S1743921309990421a.pdf/the-art-of-precision-pulsar-timing.pdf)
|
||||||
|
|
||||||
|
### **2\. Long-term timing stability rivals atomic clocks**
|
||||||
|
|
||||||
|
Over years to decades, the best MSPs maintain rotational stability comparable to:
|
||||||
|
|
||||||
|
- **Hydrogen masers**
|
||||||
|
- **Cesium fountain clocks**
|
||||||
|
|
||||||
|
This is why pulsars are used in:
|
||||||
|
|
||||||
|
- Pulsar Timing Arrays (PTAs)
|
||||||
|
- Gravitational wave detection
|
||||||
|
- Tests of general relativity
|
||||||
|
- Potential future deep‑space navigation systems
|
||||||
|
[arXiv.org](https://arxiv.org/pdf/2502.00080)
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 📏 **How precise can pulsar-based timekeeping get?**
|
||||||
|
|
||||||
|
### **🔹 Short-term precision (per observation):**
|
||||||
|
|
||||||
|
- **~100 nanoseconds** TOA precision is achievable with modern radio telescopes.
|
||||||
|
[HEASARC](https://heasarc.gsfc.nasa.gov/docs/nicer/data_analysis/workshops/2024/presentations/3.11_MeganDeCesar_pulsartiming.pdf)
|
||||||
|
|
||||||
|
### **🔹 Long-term stability (years to decades):**
|
||||||
|
|
||||||
|
- Some MSPs maintain phase coherence over **10+ years** with deviations of only a few hundred nanoseconds.
|
||||||
|
- This makes them competitive with the best atomic clocks for long-term stability.
|
||||||
|
|
||||||
|
### **🔹 Pulsar Timing Arrays (PTAs):**
|
||||||
|
|
||||||
|
By combining many pulsars, PTAs effectively create a **galactic-scale clock network** with timing sensitivity in the nanosecond regime.
|
||||||
|
[arXiv.org](https://arxiv.org/pdf/2502.00080)
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## 🛰️ **Why aren’t pulsars used as our official time standard?**
|
||||||
|
|
||||||
|
Even though pulsars are incredibly stable, they have limitations:
|
||||||
|
|
||||||
|
- Signals pass through the interstellar medium, adding noise (dispersion, scattering).
|
||||||
|
- They require large radio telescopes and long integration times.
|
||||||
|
- Atomic clocks are more practical for real-time terrestrial timekeeping.
|
||||||
|
|
||||||
|
But for **long-term stability**, pulsars remain one of the most stable natural clocks in the universe.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **Bottom Line**
|
||||||
|
|
||||||
|
- **Best-case precision:** ~100 ns TOA accuracy
|
||||||
|
- **Long-term stability:** Comparable to top-tier atomic clocks
|
||||||
|
- **Use cases:** Gravitational wave detection, tests of relativity, potential navigation systems
|
||||||
|
|
||||||
|
Pulsars are not just cosmic lighthouses—they’re **cosmic clocks**, and some of the most stable ones known.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
If you want, I can also explain:
|
||||||
|
|
||||||
|
- Which specific pulsars are the best clocks
|
||||||
|
- How amateurs can contribute to pulsar timing
|
||||||
|
- How pulsar timing compares numerically to optical atomic clocks
|
||||||
|
|
||||||
|
It’s **not very difficult to aim a dish at a pulsar**, but the difficulty depends on **how big your dish is**, **how accurately it can point**, and **how strong the pulsar is**. The good news is that pulsars don’t move quickly across the sky, and their positions are known with extreme precision, so the challenge is mostly mechanical rather than astronomical.
|
||||||
|
|
||||||
|
Here’s the practical breakdown.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **1\. Pulsars are fixed, well‑charted targets**
|
||||||
|
|
||||||
|
Pulsars have extremely precise coordinates (right ascension and declination), often known to **milliarcsecond accuracy**.
|
||||||
|
This means:
|
||||||
|
|
||||||
|
- You don’t have to “search” for them
|
||||||
|
- You simply point your dish to the published coordinates
|
||||||
|
- They drift slowly due to Earth’s rotation, so tracking is predictable
|
||||||
|
|
||||||
|
This makes aiming **much easier** than aiming at satellites or fast-moving objects.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **2\. The real challenge is beamwidth**
|
||||||
|
|
||||||
|
The **larger your dish**, the **narrower the beam**, and the more precisely you must aim.
|
||||||
|
|
||||||
|
### Approximate beamwidths:
|
||||||
|
|
||||||
|
- **1 m dish @ 1.4 GHz** → ~10° beam (very forgiving)
|
||||||
|
- **3 m dish @ 1.4 GHz** → ~3° beam
|
||||||
|
- **5 m dish @ 1.4 GHz** → ~2° beam
|
||||||
|
- **10 m dish @ 1.4 GHz** → ~1° beam
|
||||||
|
|
||||||
|
Even a 1–3° beam is easy to hit with a basic azimuth/elevation mount.
|
||||||
|
|
||||||
|
You don’t need arcsecond precision like optical telescopes.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **3\. Tracking is simple**
|
||||||
|
|
||||||
|
Because pulsars are fixed celestial objects, you can track them using:
|
||||||
|
|
||||||
|
- A manual alt‑az mount with slow‑motion controls
|
||||||
|
- A motorized mount with basic tracking
|
||||||
|
- A fixed dish plus drift‑scan (let the sky move over you)
|
||||||
|
|
||||||
|
Many amateur pulsar detections are done with **fixed dishes** using drift scans.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **4\. The hard part isn’t aiming — it’s sensitivity**
|
||||||
|
|
||||||
|
Detecting a pulsar requires:
|
||||||
|
|
||||||
|
- A low‑noise amplifier (LNA)
|
||||||
|
- A clean RF chain
|
||||||
|
- Enough collecting area (2–5 m dish for strong pulsars)
|
||||||
|
- Long integration times
|
||||||
|
- Software to fold the pulses
|
||||||
|
|
||||||
|
Aiming is rarely the limiting factor.
|
||||||
|
**Signal strength is.**
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **5\. How precise do you need to be?**
|
||||||
|
|
||||||
|
For strong pulsars like **B0329+54** or **Vela**, you can be off by a degree or two and still detect them.
|
||||||
|
|
||||||
|
For weaker pulsars, you want to be within **0.5–1°**.
|
||||||
|
|
||||||
|
This is well within the capability of:
|
||||||
|
|
||||||
|
- A homemade alt‑az mount
|
||||||
|
- A repurposed satellite dish mount
|
||||||
|
- A small rotator system
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
## ⭐ **Bottom Line**
|
||||||
|
|
||||||
|
Aiming a dish at a pulsar is **not difficult**.
|
||||||
|
The coordinates are known precisely, the sky motion is predictable, and the required pointing accuracy is modest. The real challenge is **collecting enough signal**, not pointing the dish.
|
||||||
|
|
||||||
|
If you want, I can also outline:
|
||||||
|
|
||||||
|
- The easiest pulsars to aim at from Colorado
|
||||||
|
- How to build a simple mount for pulsar tracking
|
||||||
|
- How to test your pointing accuracy using radio sources like Cassiopeia A or the Sun
|
||||||
@@ -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,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# dev=$1
|
# dev=$1
|
||||||
@@ -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,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# dev=$1
|
# dev=$1
|
||||||
+3
-1
@@ -3,4 +3,6 @@ admin:grandfather123abc
|
|||||||
|
|
||||||
ssh grandfather@grandfatherclock
|
ssh grandfather@grandfatherclock
|
||||||
|
|
||||||
sudo apt update && sudo apt autoremove -y && sudo shutdown +1
|
sudo apt update && sudo apt autoremove -y && sudo shutdown +1
|
||||||
|
|
||||||
|
sudo passwd -e username aka sudo passwd --expire username
|
||||||
+105
-105
@@ -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`
|
||||||
@@ -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,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# dev=$1
|
# dev=$1
|
||||||
@@ -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,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
dev=$1
|
dev=$1
|
||||||
@@ -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,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
dev=$1
|
dev=$1
|
||||||
+60
-60
@@ -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,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
dev=$1
|
dev=$1
|
||||||
@@ -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,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
|
||||||
Reference in New Issue
Block a user