The Lucent KS-24361 REF 0 L101

This unit is a PPSDO which is normally used for telecommunication systems. The 1PPS signal is normally generated by REF 1 GPSDO. In addition to the 1PPS, the REF 0 expects this GPSDO to send Motorola Oncore messages. Here I am trying to repeat some previous results by Dan Watson which you might want to read first. I am using the same wiring for standalone operation. This is

Further details can be found on the time-nuts mailing list here and here.

Standalone operation

+-----+  PPS   +---------+  CTS   +--------+
| GPS | -----> | USB-CTS | -----> | Python |
+-----+        +---------+        +--------+
  |                                   | 
  |                                   | Oncore
  |                                   V
  |                              +----------+
  | PPS                          | USB-UART |
  |                              +----------+
  |                UART               |
  |         +-------------------------+
  |         |
  |         V
  |    +--------+  inv UART   +-------+
  +--->| 74AC04 | ----------> | REF 0 |
       +--------+             +-------+
            |                      ^
            |        inv PPS       |
            +----------------------+

For emulating a Oncore GPS, I wrote a Python script. It sends some required messages to the REF-0 unit, after catching a 1PPS signal on the CTS line. For this I am using a FTDI USB to UART cable with which I got a delay of 0.8 ms and a jitter of +/- 0.1 ms. The 1PPS signal with a pulse with of 100 ms is generated by a NS-RAW gps receiver. Both, UART and 1PPS signals, are inverted with a 74AC04 and send inserted in J5. After some minutes the NO GPS led should go off.

Commands

Some documentation for the commands can be found here. Connecting a EIA-422 cable to connector J8 gives access to SCPI terminal. We can enter the pForth mode with

:SYSTem:LANGuage "PFORTH"

where small letters can be omitted. Using ‘words’ in pForth mode to get a list of valid commands:

duart_debug        fp_u               es_ascii           print_l1           
force_15_pass      force_15_fail      force_1pps_fail    sync_imm           
efc_rep            pll_rep            loop_time          pr_hold_cause      
gps_query          gps_change         pstat              disable_gps_cmds   
pr_time_raim       pr_1pps            pr_gps_id          pr_gps_istate      
pr_avg             pr_gps_cmds        clr_gps_debug      pr_gps_debug       
master_reset       quiet_status       gps_query_all      init_gps           
clr_avg            avg                q_gps_cable_dly    q_gps_php          
q_eman             eman               leapsec            crash              
print_clk_list     log_send           pr_pll             lock               
pll_debug          pll_restart        pr_efc             efc_wr             
force_ext_1pps     force_gps_1pps     gps_cable_dly      gps_ph             
gps_php            gps_date           gps_time           print_bc           
print_ext_msg      xdop_stat_rate     ext_msg_rate       print_vis          
vis_stat_rate      stat_rate          print_stat         abr_stat           
set_time           get_time           clk_synch          debug_psos         
clear_nv           wr_eeprom          dmes_all           dmes_curv          
dmes_spoo          dmes_scpi          dmes_root          dmes_pllp          
dmes_klok          dmes_hmon          dmes_gpsm          dmessage           
efc_write          pr_adc_avg         adc_read           s_rep              
mem_rep            ps                 user               !iodev             
dev_ctrl           dev_write          dev_read           dev_close          
dev_open           dev_init           ident              mode               
pause              get_v              wait_v             signal_v           
request_x          send_x             delete_x           create_x           
jam_x              priority           resume             suspend            
delete             ver                spawn              ?^C                
my_pid             root               watch              execute            
0x                 number             unfence            fence              
immediate          recurse            does>              pad                
tib                count              word               type               
expect             interpret          startup            words              
forget             ]                  [                  [']                
'                  state              base               hex                
decimal            .s                 u.x                u.                 
.                  (.")               ."                 cr                 
spaces             space              emit               cos                
sin                >>                 <<                 2*                 
2/                 2-                 2+                 1-                 
1+                 +!                 +                  -                  
*                  /                  */                 */mod              
/mod               mod                ;                  :                  
literal            constant           create             variable           
!                  @                  i                  j                  
k                  leave              +loop              loop               
?do                do                 until              again              
repeat             while              begin              endif              
then               else               if                 depth              
dup                swap               drop               2drop              
cmove>             cmove              ?dup               0>                 
0=                 0<                 <                  >                  
=                  xor                not                and                
or                 true               false              halt               
abort              (                  2swap              2dup               
allot              -rot               rot                c,                 
w,                 ,                  pick               fill               
r>                 >r                 here               negate             
c!                 c@                 w!                 w@                 
min                max                abs                over

Troubleshooting

The termination characters of the messages are important. A problem here is denoted as frame error when calling pr_gps_debug. In general there should be no error reported.

One can force the unit to lock on the external PPS signal with:

1 force_gps_1pps

Apparently, this still requires Onecore messages send on J5. After forcing to use the external 1PPS signal, we get this result after approximately 30 hours:

--------------------------- Primary Receiver Status ---------------------------
SYNCHRONIZATION ............................................. [ Outputs Valid ]
SmartClock Mode ___________________________   Reference Outputs _______________
>> Locked to GPS                              TFOM     3             FFOM     0
   Recovery                                   1PPS TI -30.0 ns relative to GPS
   Holdover                                   HOLD THR 1.000 us
   Power-up                                   Holdover Uncertainty ____________
                                              Predict  1.9 us/initial 24 hrs
                                                
ACQUISITION ................................................ [ GPS 1PPS Valid ]
Tracking: 0 ____   Not Tracking: 10 _______   Time ____________________________
                   PRN  El  Az  PRN  El  Az   GPS      02:01:41     01 Jan 1998
                   * 2  80  16   17  32   5   GPS 1PPS Invalid: not tracking
                   * 4  48  32   18  48   0   ANT DLY  0 ns
                   * 6  64   0                Position ________________________
                   * 8  90   0                MODE     Hold
                   *10  90   1                
                   *12  90   2                LAT      N  23:18:06.080
                   *14  90   3                LON      E   8:59:34.784
                   *16  90   4                HGT                +2.56 m  (GPS)
                   *attempting to track       
HEALTH MONITOR ......................................................... [ OK ]
Self Test: OK    Int Pwr: OK   Oven Pwr: OK   OCXO: OK   EFC: OK   GPS Rcv: OK