Here's my solution. I've done this on three RFTGm-II-Rb units and all sync up correctly and the units report good values via the RFTG software. All are on frequency to within a few parts in 10^12. These three units do NOT all have the same Motorola receivers, but they are all similar Oncore types.
In the standard configuration, the OCXO half of the timing unit provides the PPS and certain GPS messages to the Rb unit. If we provide these messages and the PPS to the Rb unit will sync up and become GPS disciplined. These RFTGm-II-Rb units have the 2x5 footprint required by the Oncore receiver, and all that was required was to install the header and the stand-offs for the GPS board. The firmware on the Rb RFTG board does not know how to fully drive the GPS module, but it does listen to certain messages (which are normally provided by the OCXO half). Any standard Oncore module will power up in Motorola binary mode but will not automatically emit messages - and this is the basic problem here. To solve this, we add a small micro-controller to configure the Oncore after power up. I used an ATTINY85 board which turned out to be just the right size and pinout configuration to sit handily on the test connector at the side of the board.
*Note: I did have to make one mod to the RFTG board - on the 5V there is a current limiting resistor by the header which I jumpered.* The TX/RX of the micro is simply bridged onto the TX/RX of the Oncore/RFTG interface. It doesn't provide enough loading to interfere with the normal operation.
First to get the header and stand-offs installed:
Next is the Oncore module installed, with a pigtail going to a front panel antenna connector.
ATTINY85 board with machine pin socket soldered on for connection to RFTG
ATTINY85 back side - I used PB2 and PB3 for the serial pins
ATTINY85 mounted and connected. It sits nicely here and cannot come loose after the enclosure is closed up.
Crude and simple ATTINY code. LED activity is not tightly controlled and is just used to identify where in the process things are and to indicate it's still running.
#include <Arduino.h>
#include <SoftSerial.h>
#include <TinyPinChange.h>
#define LEDPIN 1
byte disauto[] {0x40,0x40,0x45,0x61,0x00,0x24,0x0d,0x0a}; // @@Ea disable auto output, polled mode
byte enauto[] {0x40,0x40,0x45,0x61,0x01,0x25,0x0d,0x0a}; // @@Ea enable auto output, 1 second interval
byte setGPStime[] {0x40,0x40,0x41,0x77,0x00,0x36,0x0d,0x0a}; // @@Aw set to GPS time (not UTC)
byte disposhold[] {0x40,0x40,0x41,0x74,0x00,0x35,0x0d,0x0a}; // @@At disable position hold mode
byte elev104[] {0x40,0x40,0x41,0x67,0x0A,0x2C,0x0d,0x0a}; // @@Ag set elevation angle to 10
byte productid[] {0x40,0x40,0x43,0x6a,0x29,0x0d,0x0a}; // @@Cj get product string
byte getvissats[] {0x40,0x40,0x42,0x62,0x00,0x20,0x0d,0x0A}; // @@Bb get visible sat status
SoftSerial mySerial(2, 3); // RX, TX
unsigned long i = 0;
int state = 0;
void setup()
{
pinMode(LEDPIN, OUTPUT); //LED on Model A or Pro
// Give the GPS a chance to power up... about 8 seconds
for (i = 0; i<20; i++) {
digitalWrite(LEDPIN, HIGH);
delay(200);
digitalWrite(LEDPIN, LOW);
delay(200);
}
mySerial.begin(9600);
mySerial.write(disauto,sizeof(disauto)); // Turn off auto output for now
delay(5000);
mySerial.write(productid,sizeof(productid)); // Product ID string
delay(1000);
mySerial.write(enauto,sizeof(enauto)); // Enable enauto
delay(1000);
mySerial.write(setGPStime,sizeof(setGPStime)); // Set to GPS time
delay(1000);
mySerial.write(disposhold,sizeof(disposhold)); // Disable position hold mode
delay(1000);
mySerial.write(elev104,sizeof(elev104)); // Set elevation angle to 10
delay(1000);
mySerial.write(getvissats,sizeof(getvissats)); // Get visible sat status
delay(1000);
i = 0;
state = 0;
}
void loop()
{
// toggle led to show still alive
// send the messages at specified intervals
if (i == 0) {
/* do stuff the first time */
delay(1000);
i++;
}
else if (i % 6 == 0) { // Every 6 seconds
mySerial.write(getvissats,sizeof(getvissats)); // Report sat signals
delay(1000);
i++;
}
else if (i % 30 == 0) { // Every 30 secs
mySerial.write(setGPStime,sizeof(setGPStime)); // Set to GPS time
delay(1000);
i++;
}
else if (i == 900) { // Every 15 min
mySerial.write(enauto,sizeof(enauto)); // Enable enauto - just in case
delay(1000);
i = 1; // Reset the counter, but not to zero
}
else {
digitalWrite(LEDPIN, (state) ? HIGH : LOW);
state = !state;
delay(1000);
i++;
}
}
That's about all there is to it. You could use any micro you want really, it's just a matter of getting it in the enclosure to make it self contained. It should also be possible to do this outboard using the J5 Interface connector but I wanted a self contained solution.
Hope it helps. Cheers!