diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl
index 66b69a6e15536e58a440b228c71072aa9882fe53..279e40a0b9447248a36f410a5dc220647b732aec 100755
--- a/src/epics/util/feCodeGen.pl
+++ b/src/epics/util/feCodeGen.pl
@@ -68,6 +68,16 @@ die "Usage: $PROGRAM_NAME <MDL file> <Output file name> [<DCUID number>] [<site>
 #Setup current working directory and pointer to RCG source directory.
 $currWorkDir = &Cwd::cwd();
 $rcg_src_dir = $ENV{"RCG_SRC_DIR"};
+$lrpciefile = $rcg_src_dir . "/src/include/USE_LR_PCIE";
+$pciegenfile = $rcg_src_dir . "/src/include/USE_DOLPHIN_GEN2";
+
+if (-e "$lrpciefile") {
+        print "PCIE LR exists\n";
+        $rfm_via_pcie = 1;
+} else {
+        print "PCIE LR DOES NOT exist\n";
+        $rfm_via_pcie = 0;
+}
 if (! length $rcg_src_dir) { $rcg_src_dir = "$currWorkDir/../../.."; }
 
 @sources = ();
@@ -122,7 +132,6 @@ $rfmTimeSlave = -1;
 $diagTest = -1;
 $flipSignals = 0;
 $virtualiop = 0;
-$rfm_via_pcie = 1;
 $edcu = 0;
 $casdf = 0;
 $globalsdf = 0;
@@ -1329,6 +1338,11 @@ for($ii=0;$ii<32;$ii++)
 {
 	print EPICS "OUTVARIABLE FEC\_$dcuId\_GDS_MON_$ii epicsOutput.gdsMon\[$ii\] int ao 0\n";
 }
+print OUTH "\tint startgpstime;\n";
+print EPICS "OUTVARIABLE FEC\_$dcuId\_START_GPS epicsOutput.startgpstime int ao 0\n";
+print EPICS "DUMMY FEC\_$dcuId\_UPTIME_DAY int ai 0\n";
+print EPICS "DUMMY FEC\_$dcuId\_UPTIME_HOUR int ai 0\n";
+print EPICS "DUMMY FEC\_$dcuId\_UPTIME_MINUTE int ai 0\n";
 
 
 # The following code is in solely for automated testing.
@@ -1785,11 +1799,12 @@ print "\tPart number is $remoteGpsPart\n";
 
 if($virtualiop == 1) {
 print OUT "#include \"$rcg_src_dir/src/fe/controllerVirtual.c\"\n";
-} elsif($virtualiop > 1) {
-#This is a Dolphin switch
-print OUT "#include \"$rcg_src_dir/src/fe/controllerSwitch.c\"\n";
 } else {
-print OUT "#include \"$rcg_src_dir/src/fe/controller.c\"\n";
+  if($adcMaster == 1) {
+  	print OUT "#include \"$rcg_src_dir/src/fe/controllerIop.c\"\n";
+  } else {
+  	print OUT "#include \"$rcg_src_dir/src/fe/controllerApp.c\"\n";
+  }
 }
 
 
@@ -2576,18 +2591,16 @@ if ($rfmTimeSlave > -1) {
 if ($flipSignals) {
   print OUTM "EXTRA_CFLAGS += -DFLIP_SIGNALS=1\n";
 }
-if ($pciNet == 1) {
-  print OUTM "#Enable use of PCIe RFM Network Gen 1\n";
-  print OUTM "DISDIR = /opt/srcdis\n";
-  print OUTM "EXTRA_CFLAGS += -DOS_IS_LINUX=1 -D_KERNEL=1 -I\$(DISDIR)/src/IRM/drv/src -I\$(DISDIR)/src/IRM/drv/src/LINUX -I\$(DISDIR)/src/include -I\$(DISDIR)/src/include/dis -DDOLPHIN_TEST=1  -DDIS_BROADCAST=0x80000000\n";
-} elsif($pciNet == 2) {
-  print OUTM "#Enable use of PCIe RFM Network Gen 2\n";
-  print OUTM "DISDIR = /opt/srcdis\n";
-  print OUTM "EXTRA_CFLAGS += -DOS_IS_LINUX=1 -D_KERNEL=1 -I\$(DISDIR)/src/IRM_GX/drv/src -I\$(DISDIR)/src/IRM_GX/drv/src/LINUX -I\$(DISDIR)/src/include -I\$(DISDIR)/src/include/dis -I\$(DISDIR)/src/COMMON/osif/kernel/include -I\$(DISDIR)/src/COMMON/osif/kernel/include/LINUX -DDOLPHIN_TEST=1  -DDIS_BROADCAST=0x80000000\n";
-} else {
-  print OUTM "#Uncomment to use PCIe RFM Network\n";
-  print OUTM "#DISDIR = /home/controls/DIS\n";
-  print OUTM "#EXTRA_CFLAGS += -DOS_IS_LINUX=1 -D_KERNEL=1 -I\$(DISDIR)/src/IRM/drv/src -I\$(DISDIR)/src/IRM/drv/src/LINUX -I\$(DISDIR)/src/include -I\$(DISDIR)/src/include/dis -DDOLPHIN_TEST=1  -DDIS_BROADCAST=0x80000000\n";
+if ($pciNet > 0) {
+        if (-e "$pciegenfile") {
+          print OUTM "#Enable use of PCIe RFM Network Gen 2\n";
+          print OUTM "DISDIR = /opt/srcdis\n";
+          print OUTM "EXTRA_CFLAGS += -DOS_IS_LINUX=1 -D_KERNEL=1 -I\$(DISDIR)/src/IRM_GX/drv/src -I\$(DISDIR)/src/IRM_GX/drv/src/LINUX -I\$(DISDIR)/src/include -I\$(DISDIR)/src/include/dis -I\$(DISDIR)/src/COMMON/osif/kernel/include -I\$(DISDIR)/src/COMMON/osif/kernel/include/LINUX -DDOLPHIN_TEST=1  -DDIS_BROADCAST=0x80000000\n";
+	} else {
+          print OUTM "#Enable use of PCIe RFM Network Gen 1\n";
+          print OUTM "DISDIR = /opt/srcdis\n";
+          print OUTM "EXTRA_CFLAGS += -DOS_IS_LINUX=1 -D_KERNEL=1 -I\$(DISDIR)/src/IRM/drv/src -I\$(DISDIR)/src/IRM/drv/src/LINUX -I\$(DISDIR)/src/include -I\$(DISDIR)/src/include/dis -DDOLPHIN_TEST=1  -DDIS_BROADCAST=0x80000000\n";
+        }
 }
 if($virtualiop > 1) {
   print OUTM "EXTRA_CFLAGS += -DDOLPHIN_SWITCH=1\n";
diff --git a/src/epics/util/fmseq.pl b/src/epics/util/fmseq.pl
index 5d69e70af081b0160a888eec51deda04835259fa..c49a3a958138bea9202340bfaa40b538a759abca 100755
--- a/src/epics/util/fmseq.pl
+++ b/src/epics/util/fmseq.pl
@@ -1076,6 +1076,7 @@ print "grecord(stringout,\"%IFO%:FEC-${dcuId}_MSG\")\n";
 print "grecord(stringout,\"%IFO%:FEC-${dcuId}_MSG2\")\n";
 print "grecord(stringout,\"%IFO%:FEC-${dcuId}_MSGDAQ\")\n";
 print "grecord(stringout,\"%IFO%:FEC-${dcuId}_TIME_STRING\")\n";
+print "grecord(stringout,\"%IFO%:FEC-${dcuId}_BUILD_DATE\")\n";
 
 for(my $fmi = 0; $fmi < 1000; $fmi ++)
 {
diff --git a/src/epics/util/skeleton.st b/src/epics/util/skeleton.st
index 5e4fe7b891339586f83077b103934265ee8e7202..255d445b684c8386a21c6bd6c6bac55a4cec9e93 100644
--- a/src/epics/util/skeleton.st
+++ b/src/epics/util/skeleton.st
@@ -84,6 +84,11 @@ program %SEQUENCER_NAME%
 %% static %EPICS_TYPE% *pEpics = &pEpicsSpace;
 #endif
 
+%% char *build_date = __DATE__ " " __TIME__;
+
+string build_time;
+assign build_time to "{ifo}:FEC-{sysnum}_BUILD_DATE";
+
 string msg;
 assign msg to "{ifo}:FEC-{sysnum}_MSG";
 
@@ -131,6 +136,15 @@ assign dataSize to "{ifo}:DAQ-FEC_{sysnum}_TOTAL";
 int dcuId;
 assign dcuId to "{ifo}:DAQ-FEC_{sysnum}_DCU_ID";
 
+int uptime_day;
+assign uptime_day to "{ifo}:FEC-{sysnum}_UPTIME_DAY";
+
+int uptime_hour;
+assign uptime_hour to "{ifo}:FEC-{sysnum}_UPTIME_HOUR";
+
+int uptime_minute;
+assign uptime_minute to "{ifo}:FEC-{sysnum}_UPTIME_MINUTE";
+
 #endif
 
 
@@ -315,6 +329,8 @@ state init
 %% strcpy(localtimestring, ctime(&lt));
 %% localtimestring[strlen(localtimestring) - 1] = 0; /* Delete newline character */
    pvPut(localtimestring);
+%% strcpy(build_time, build_date);
+   pvPut(build_time);
 
 #if defined(RFM_EPICS)
     sysnum = atoi(macValueGet("sysnum"));
@@ -512,6 +528,7 @@ state monScreen{
 %% int ij;
 %% int rtruns = 0;
 %% int myTimeout;
+%% int uptime;
 
 %% rtruns = 1;
 %%    stateWord = pEpics->epicsOutput.stateWord
@@ -544,6 +561,15 @@ state monScreen{
 %% if(prev_seqTrig == 0) epicsSyncTime += 1;
    epicsWait = myTimeout;
    pvPut(epicsWait);
+%% uptime = pEpics->epicsOutput.timeDiag - pEpics->epicsOutput.startgpstime;
+   uptime_day = uptime / 86400;
+   uptime -= uptime_day * 86400;
+   uptime_hour = uptime / 3600;
+   uptime -= uptime_hour * 3600;
+   uptime_minute = uptime /60;
+   pvPut(uptime_day);
+   pvPut(uptime_hour);
+   pvPut(uptime_minute);
 
 %% pthread_mutex_lock (&seq_lock);