The G0kK-1 series is a versatile range of PTP grandmaster technology.
The key to getting the most out of your device is to connect it to a GNSS source.
So where do we attach the atenna:
On the back of your device there will be some SMA connectors. The connector on the left is typically for the GNSS antenna but always check the label :)
Next up is to configure the timebeat.yml file to use GNSS as a primary source.
For this we open up the console on the device or ssh to it using the details sent upon purchase.
Once in on the command prompt use the following:
root@gm01 ~]# vi /etc/timebeat/timebeat.yml
This will open up the timebeat config file which by defualt looks like the below:
# ______ _ __ __ # /_ __/(_)____ ___ ___ / /_ ___ ____ _ / /_ # / / / // __ `__ \ / _ \ / __ \ / _ \ / __ `// __/ # / / / // / / / / // __// /_/ // __// /_/ // /_ # /_/ /_//_/ /_/ /_/ \___//_.___/ \___/ \__,_/ \__/ ################### Timebeat Configuration AREA ######################### timebeat: # Location of license key file for premium features license.keyfile: '/etc/timebeat/timebeat.lic' # Configuration for clock synchronisation clock_sync: # Clocksync # Default is true enabling clock synchronisation, setting to false for monitoring purposes only (false will not adjust the clock) adjust_clock: true # To remove step limit restrictions comment out the below, this will allow the clock to be stepped indefinitely step_limit: 15m # "s", "h" "d" can be used to denominate seconds, hours or days for step limit. primary_clocks: # PTP Config example - protocol: ptp domain: 0 #serve_unicast: true #max_unicast_subscribers: 0 #serve_multicast: true #server_only: true announce_interval: 1 sync_interval: 0 delayrequest_interval: 0 #unicast_master_table: ['1.2.3.4','2.3.4.5', '3.4.5.6'] #delay_strategy: e2e # other options which can be used are: 'p2p' #hybrid_e2e: false # Send delay requests as unicast (enterprise profile) #priority1: 128 #priority2: 128 #monitor_only: false #use_layer2: false # Use ptp over ethernet instead of IP/UDP #interface: enp2s0 #profile: 'G.8275.2' # other options which can be used are: 'G.8275.1', 'G.8265.1' and 'enterprise-draft' #logsource: 'Grandmaster Clock in NY4' # configurable name for source included in all logging records for source #asymmetry_compensation: 0 # In nanoseconds. Static compensation for know asymmetry (+/- as the case maybe) #max_packets_per_second: 0 # If inbound packet rate exceeds this a WRED algorithm is used # PTP Config example #- protocol: ptp # domain: 10 # serve_unicast: true # serve_multicast: true # server_only: true # announce_interval: 1 # sync_interval: 0 # delayrequest_interval: 0 # unicast_master_table: ['1.2.3.4','2.3.4.5', '3.4.5.6'] # delay_strategy: e2e # priority1: 128 # priority2: 128 # monitor_only: false # interface: enp2s0 # NTP Config example #- protocol: ntp # ip: '1.2.3.4' # You can also use name formate e.g: time.server.com # pollinterval: 4s # Values tested: 500ms, 1s, 2s, 4s and 8s # 4s is recommended for public NTP servers # monitor_only: false # 1 Pulse-per-second input config example. 1-PPS out can be configured using Timebeat CLI #- protocol: pps # interface: ens3 # pin: 0 # index: 0 # cable_delay: 0 # Cable delay in nanoseconds (odds are ~5 ns per meter is a good value) # edge_mode: "rising" # PPS event trigger for older cards. Options are "rising", "falling" or "both" # monitor_only: false # utc_offset: 37 # If TAI or similar UTC offset add here (only meaningful is phc_as_tai enabled) # PHC input config example. Useful for OCP-TAP / Meta Timecard, Azure and VMware #- protocol: phc # device: '/dev/ptp_hyperv' # Using Azure? We know where you live... # offset: 0 # In nanoseconds. Static compensation for things like PHCs with TAI (+/- as the case maybe) # monitor_only: false # utc_offset: 37 # If TAI or similar UTC offset add here (only meaningful is phc_as_tai enabled) # Secondary clocks. When all primary sources are unavailable the below will activate secondary_clocks: # PTP Config example #- protocol: ptp # domain: 0 # serve_unicast: true # serve_multicast: true # server_only: true # announce_interval: 1 # sync_interval: 0 # delayrequest_interval: 0 # unicast_master_table: ['1.2.3.4','2.3.4.5', '3.4.5.6'] # delay_strategy: e2e # Other options which can be used are: 'p2p' # priority1: 128 # priority2: 128 # monitor_only: false # interface: enp2s0 # PTP Config example #- protocol: ptp # domain: 10 # serve_unicast: true # serve_multicast: true # server_only: true # announce_interval: 1 # sync_interval: 0 # delayrequest_interval: 0 # unicast_master_table: ['1.2.3.4','2.3.4.5', '3.4.5.6'] # delay_strategy: e2e # priority1: 128 # priority2: 128 # monitor_only: false # interface: enp2s0 # NTP Config example #- protocol: ntp # ip: '1.2.3.4' # You can also use name formate e.g: ntp.time.server.com # pollinterval: 4s # Values tested: 500ms, 1s, 2s, 4s and 8s # 4s is recommended for public NTP servers # monitor_only: false # NMEA-GNSS input config example (can provide majortime for PPS sources) # Eight data bits, no parity bit, and one stop bit (8N1) is assumed # (It is not recommended to configure a NMEA source if you have an alternative secondary source) #- protocol: nmea # device: '/dev/ttyS0' # Serial device path # baud: 9600 # Serial device baud rate # offset: 0 # Static offset of RMC line # monitor_only: false # Other vendor specific GNSS receivers input config example (can provide majortime for PPS sources) # Eight data bits, no parity bit, and one stop bit (8N1) is assumed # (It is not recommended to configure a Mini-JLT source if you have an alternative secondary source) #- protocol: timecard-mini # "mini-jlt" (Jackson Labs) is also an option # device: '/dev/ttyUSB0' # Serial device path # baud: 115200 # Serial device baud rate # offset: 0 # Static offset of RMC line # monitor_only: false # Timebeat can monitor external devices - currently Arista switches acting as boundary clocks # using the eAPI and the Orolia/Spectracom SecureSync grandmaster clocks using its REST API external_devices: #- vendor: ocptap_temperature_sensor_v1 # device: /dev/ttyUSB0 # baud: 9600 # interface: ens1 #- vendor: arista_eos # host: 10.101.101.47 # port: 443 # transport: https # username: admin # password: 12345678 #- vendor: orolia_securesync # host: 10.101.101.48 # port: 80 # transport: http # username: spadmin # password: 12345678 ptpsquared: # Enable PTPSquared functionality # enable: false # discovery: # mdns: true # dht: false # dht_seed_list: ["/ip4/10.101.101.23/tcp/65107/p2p/16Uiu2HAmJiQvJQbja8pf5dKAZsSYxWmcDCxZaoYbMUL5X7GnXej9"] # keypath: "/etc/timebeat/ptp2key.private" # domains: [115,116] # interface: ens5f0 # seats_to_offer: 4 # Number of seats available to consume time from this node # seats_to_fill: 3 # Number of seats this node seeks to fill from other nodes to consume time # concurrent_sources: 1 # Number of concurrent PTP sources used to steer our clock(s) # active_sync_interval: -3 # sync interval for active sources # active_delayrequest_interval: -3 # delay request interval for active sources # monitor_sync_interval: 0 # sync interval for sources we monitor # monitor_delayrequest_interval: 0 # delay request interval for sources we monitor # capabilities: ["hqosc-1500"] # high-quality oscillator 1.5us drift per 24 hours # preference_score: 0 # Used when requesting capacity from reservations # reservations: ["1500:50%:115,116", "750:25%"] # List containing client seat reservations: # <required preference score> : # <percent of capacity> : # <optional comma seperated list of allowed domains> # debug: false # debug logging specifically for ptpsquared # advanced: # asymmetry_compensation: 0 # In nanoseconds. Static compensation for know asymmetry (+/- as the case maybe). All interfaces # is_better_factor: 1.4 # How much "better" does a source need to be to be selected instead of a current source # eos_weight: 1.0 # Weight attributed to error of source std dev calculation in determining hop cost # All costs below default to zero which infers that cumulative error of source is the only factor # determining the cost of a particular time source path # base_hop_cost: 0.0 # The default cost of a single hop to downstream peers # swts_cost: 0.0 # The cost of using software timestamping # hwts_cost: 0.0 # The cost of using hardware timestamping # Enable latency analysis functionality # latency_analysis_enable: false taas: # enable: false # clients: # - name: "CompanyABC" # interface: ens1f0 # vlan: 101 # ips: ["1.2.3.4/24"] # routes: ["5.6.7.0/24->1.2.3.1"] # sources: # - protocol: ptp # domain: 0 # serve_unicast: true # serve_multicast: true # announce_interval: 1 # sync_interval: 0 # delayrequest_interval: 0 # unicast_master_table: ["1.2.3.4", "2.3.4.5", "3.4.5.6"] # priority1: 128 # priority2: 128 # templates: # - name: "mcast-ptp-16tps" # source: # protocol: ptp # serve_multicast: true # announce_interval: 1 # sync_interval: -4 # delayrequest_interval: -4 # profile: 'enterprise-draft' # # _______________________________________ # / Below are the advanced configurations \ # | change at own risk, please refer to | # \ documentation guides for detail / # --------------------------------------- # \ ^ /^ # \ / \ // \ # \ |\___/| / \// .\ # \ /O O \__ / // | \ \ *----* # / / \/_/ // | \ \ \ | # @___@` \/_ // | \ \ \/\ \ # 0/0/| \/_ // | \ \ \ \ # 0/0/0/0/| \/// | \ \ | | # 0/0/0/0/0/_|_ / ( // | \ _\ | / # 0/0/0/0/0/0/`/,_ _ _/ ) ; -. | _ _\.-~ / / # ,-} _ *-.|.-~-. .~ ~ # \ \__/ `/\ / ~-. _ .-~ / # \____(oo) *. } { / # ( (--) .----~-.\ \-` .~ # //__\\ \__ Ack! ///.----..< \ _ -~ # // \\ ///-._ _ _ _ _ _ _{^ - - - - ~ # advanced: # Steering Algorithm Options steering: # Several algorithms are available : # # alpha, beta, gamma, rho & sigma # Most likely you will want the sigma algo in a reasonably noise # free (low jitter / low network congestion) environment. In a less than # ideal environment with hardware timestamping rho may be better depending # on the circumstances. If your servers don't support hardware timestamping, # then go for the sigma algo as well. # # algo: sigma # Log steering algo constituents # algo_logging: false # Enable the external outlier filter # outlier_filter_enabled: true # Several outlier filter types are available # "strict", "moderate" and "relaxed" # outlier_filter_type: strict # Allow offset arrival based servo # servo_offset_arrival_driven: true # In the event an alternative system adjusts the clock, timebeat will cease active operation and transition into monitoring mode. # period of time defined in the value below interference_monitor: backoff_timer: 5m # Slewing is active only when the offset is less than the step boundary, # If the offset is less than the step limit but greater than the step boundary time will be stepped and not slewed, # The step boundary cannot exceed the step limit, it is able to be equal to, # If the offset is greater than both step limit and step boundary the clock will not be synchronised, neither stepping or slewing will take place, # Any change to the below configuration will overide the default/configured limits above. extended_step_limits: #forward: #boundary: 500ms #limit: 15m #backward: #boundary: 500ms #limit: 15m windows_specific: # Default is true, setting configuration to false will alter the Windows Timer Resolution, Default of true sets the Timer Resolution to a fine value. # disable_os_relax: true linux_specific: # Enable hardware timestamping on Linux SOF_TIMESTAMPING_(R|T)X_HARDWARE # (setting this to false will also disable steering based on PPS) # hardware_timestamping: true # Enable external software timestamping on Linux SOF_TIMESTAMPING_(R|T)X_SOFTWARE # external_software_timestamping: true # Synchronise non-master PHC (nic) clocks on Linux # sync_nic_slaves: false # Don't synchronise these clocks on Linux # disable_adjustment: ['system', 'ens1', 'enp2s0'] # Fixed PHC offset strategy (default order of preference is 1st: precise, 2nd: extended, # 3rd: pps, 4th: basic). List of "<iface>:<method>" # phc_offset_strategy: ["ens1:pps"] # PHC smoothing mechanism. Defaults to "minimum". Other option is "median". List of "<iface>:<smoother>" # phc_smoothing_strategy: ["ens1:median"] # Enable the internal modified lucky packet PHC outlier filter # phc_lp_filter_enabled: false # Enable the internal none-Gausian PHC outlier filter # phc_ng_filter_enabled: false # Interface specific PHC samples to determine offset from system clock (default is 15: list of "<iface>:<samples>") # phc_samples: ["ens5f0:5"] # Use 1-step on the list of interfaces below if available # phc_one_step: ["ens5f0", "ens1"] # Maintain PHC clocks in TAI # phc_as_tai: true ptp_tuning: # Enable PTP sockets that bind to all interfaces. If disabled interface parameter # must be specified in the time source configuration # enable_ptp_global_sockets: true # Randomly delay DELAY_REQ packets by 200-800ms from receipt of SYNC packets # (this option will be forced true for multicast sources irrespective of the value below) # relax_delay_requests: true # When auto discover is enabled, ptp multicast sources will automatically be configured # as secondary sources based on received announce messages if no explicit configuration # in the domain exist. # auto_discover_enabled: true # Sync Output (use *only* with hardware timestamping, and only if required) # Some NICs skips a lot of tx timestamps if TX packets are spaced too tightly # Timebeat can compensate for this problem by ensuring that TX happens synchronised in its # server components and introduce a delay between sendMsg calls. The structure in list is : # <interface>:<tx delay between ptp messages>. E.g. 5 microseconds between messages on # interface ens1: # synchronise_tx: ["ens1:5us"] cli: # Enable the SSH based CLI interface. I.e. to access: ssh -p 65129 admin@127.0.0.1 # enable: false # bind_port: 65129 # bind_host: 127.0.0.1 # Server SSH key. If path specified key will be loaded or generated. Otherwise key will be random on startup # server_key: "/etc/timebeat/cli_id_rsa" # Authorised SSH keys (yes... with an s not a z....) # authorised_keys: "/etc/timebeat/authorised_keys" # CLI username and password # username: "admin" # password: "password" http: # Enable the HTTP server status interface. I.e. to access: curl -o http://127.0.0.1:8088/ # enable: false # bind_port: 8088 # bind_host: 127.0.0.1
This default config is set to receive PTP on domain 0 as a primary source. We will need to turn this off and configure GNSS. for that we comment out the top PTP section so that it is not activated on startup. It will then look like the below:
# PTP Config example #- protocol: ptp #domain: 0 #serve_unicast: true #max_unicast_subscribers: 0 #serve_multicast: true #server_only: true #announce_interval: 1 #sync_interval: 0 #delayrequest_interval: 0 #unicast_master_table: ['1.2.3.4','2.3.4.5', '3.4.5.6'] #delay_strategy: e2e # other options which can be used are: 'p2p' #hybrid_e2e: false # Send delay requests as unicast (enterprise profile) #priority1: 128 #priority2: 128 #monitor_only: false #use_layer2: false # Use ptp over ethernet instead of IP/UDP #interface: enp2s0 #profile: 'G.8275.2' # other options which can be used are: 'G.8275.1', 'G.8265.1' and 'enterprise-draft' #logsource: 'Grandmaster Clock in NY4' # configurable name for source included in all logging records for source #asymmetry_compensation: 0 # In nanoseconds. Static compensation for know asymmetry (+/- as the case maybe) #max_packets_per_second: 0 # If inbound packet rate exceeds this a WRED algorithm is used
Now we need to get GNSS as a source in as the primary. This will consist of a PPS source as the primary and a Timecard-mini source as a secondary source. The secondary source is important as you will need this to provide major time (time of day).
# 1 Pulse-per-second input config example. 1-PPS out can be configured using Timebeat CLI - protocol: pps interface: ens1 pin: 1 index: 1 cable_delay: 0 # Cable delay in nanoseconds (odds are ~5 ns per meter is a good value) edge_mode: "rising" # PPS event trigger for older cards. Options are "rising", "falling" or "both" monitor_only: false utc_offset: 37 # If TAI or similar UTC offset add here (only meaningful is phc_as_tai enabled)
secondary_clocks:
# Other vendor specific GNSS receivers input config example (can provide majortime for PPS sources) # Eight data bits, no parity bit, and one stop bit (8N1) is assumed # (It is not recommended to configure a Mini-JLT source if you have an alternative secondary source) - protocol: timecard-mini # "mini-jlt" (Jackson Labs) is also an option device: '/dev/ttyUSB0' # Serial device path baud: 115200 # Serial device baud rate offset: 0 # Static offset of RMC line monitor_only: false
# Other vendor specific GNSS receivers input config example (can provide majortime for PPS sources) # Eight data bits, no parity bit, and one stop bit (8N1) is assumed # (It is not recommended to configure a Mini-JLT source if you have an alternative secondary source) - protocol: timecard-mini # "mini-jlt" (Jackson Labs) is also an option device: '/dev/ttyUSB1' # Serial device path baud: 115200 # Serial device baud rate offset: 0 # Static offset of RMC line monitor_only: false
On older models of the G0kK-1 you may have a mini-JLT so just amend the protocol line to state mini-jlt in place of timecard-mini.
Once complete just save and quit the config file and restart the timebeat service.
:wq!
root@gm01 ~]# systemctl restart timebeat