advLigoRTS issueshttps://git.ligo.org/cds/software/advligorts/-/issues2022-07-23T02:16:25Zhttps://git.ligo.org/cds/software/advligorts/-/issues/313RCG: Optimize model calculation2022-07-23T02:16:25ZErik von ReisRCG: Optimize model calculationDaniel has had several ideas about improving calculation speed to support fast ADC models, including using AVX512, increasing compiler optimization, combining multiple filters in one function.
> I don't know how gcc treats object files ...Daniel has had several ideas about improving calculation speed to support fast ADC models, including using AVX512, increasing compiler optimization, combining multiple filters in one function.
> I don't know how gcc treats object files compiled with different
> optimization levels and how compatible
> they are. If they are, one quick fix could be to put the IIR filter
> module into a proper .c file (without
> inlining it) and compile it with -O3 -mavx2 -mfma.
>
> Looking at just the biquad, I get
>
> 13.8 sec for our current optimization flags (-O -ffast-math -m80387 -msse2)
> 10.5 sec by stepping up to -O2
> 8.84 sec by stepping up to -O3
> 8.42 sec with -O3 -mavx2 -mfma (adding fast-math actually makes it slower!)
> -O3 -march=haswell (or cannonlake) seems to produce
> the same result
> Not sure what the -m80387 option does in this case. Probably nothing.
>
> Depending how much of our CPU budget is spent in calculating IIR
> filters this would
> give us a boost of <=1.6.
>
> Daniel
>
> PS. Chasing down an inconsistency in my performance measures, I found
> that the AVX2
> code generated by specifying march=haswell or march=cannonlake is not the same.
> In the later, the compiled code uses 32 internal ymm registers, but
> only 16 for haswell.
> This is because for AVX512 the register set was increased by 2.
Also see svn repo
```
https://redoubt.ligo-wa.caltech.edu/svn/slowcontrols/trunk/EPICS/Utilities/BiquadAVX
```
for Daniel's AVX implementation.https://git.ligo.org/cds/software/advligorts/-/issues/314Get rid of implicit "top names"2022-08-01T20:51:49ZErik von ReisGet rid of implicit "top names"For some models, implicit "top names" are taken from file name and not explicitly part of filter names.
This causes problems when top names are made explicit. It seems top names are made explicit by creating a subsystem, moving everyth...For some models, implicit "top names" are taken from file name and not explicitly part of filter names.
This causes problems when top names are made explicit. It seems top names are made explicit by creating a subsystem, moving everything into it, and perhaps setting some kind of topname parameter on it.
Daniel suggests running every filter file through a script to make top names explicit. Make the RCG only use explicit top names.https://git.ligo.org/cds/software/advligorts/-/issues/53Mux and Buses Have Different Functionality Depending On Which Level They're D...2023-02-09T18:17:59ZErik von ReisMux and Buses Have Different Functionality Depending On Which Level They're Demuxed / SelectedFrom Bugzilla ticket #998
Jeff Kissell: 2016-03-28 15:01:52 PDT
While attempting to use a bus to cull together signals at the top level of the
model, tag them, then send the tag into the first-level sub-block of the model,
and separat...From Bugzilla ticket #998
Jeff Kissell: 2016-03-28 15:01:52 PDT
While attempting to use a bus to cull together signals at the top level of the
model, tag them, then send the tag into the first-level sub-block of the model,
and separate them in that level, I find different functionality between mux
parts and bus parts.
The bus has the advantage of being able name signals and reorder them as
necessary, so I started with using that. However, unbussing one level down
throws back connection errors (and those errors are difficult to parse).
Joe suggests if I just replace the but with a mux, it works. While this is an
OK band-aid, it means I lose the functionality of being able to name and
reorder signals.
What makes it further confusing:
- If you use a bus creator and selector system with an ADC part, you can unpack
the bus at an arbitrarily deep level. This is done, for example, in the
end-station PEM models.
- If you use a bus creator and selector system with any part, and unpack on the
same level as the signals were bus, all works well. This is done, for example,
in the top level of the SUS models, in the mid-levels of the ISI models, etc.
In summary,
- the bus and mux should either have exactly the same functionality (and
essentially become the exact same part, and one could remove on or the other),
- if we must retain different functionality, they should be MUCH more clearly
distinguishable (currently the only distinction is bus' little white bar),
- and the use-cases must be distinct and consistent given what parts can be /
are plugged into it
If none of the above is possible, then *at least* but in a doc block in the
CDS_PARTS library that explains the different uses, and make the RCG put out a
more useful error to the command line suggesting that the problem is the mux /
bus usage rather than some poorly connect / over written ADC channel.
Keith: 2016-03-29 14:15:33 PDT
Created attachment 186 [details]
common [ccodeio.h](/uploads/53904edaa419aa44a25758b5d9a01888/ccodeio.h)
Rolf: 2017-01-25 16:34:10 PST
Matlab uses different description fields for Muxes and Buses, so not a straight
forward 'make them work the same'. I am looking into how to have the RCG
connect buses between any/all levels of a model. I have developed a basic
scheme with a prototype Python parser. Now need to figure out how to fit this
schema into the RCG perl based parser.advligorts 5.2.0https://git.ligo.org/cds/software/advligorts/-/issues/359Shift burden of DIO card count to IOP from user model.2022-04-14T16:34:14ZKeith ThorneShift burden of DIO card count to IOP from user model.See [[https://alog.ligo-la.caltech.edu/TST/index.php?callRep=14772]] from TST log. With RCG 4.2.7, non-IOP models that have Digital IO cards fail if no I/O chassis is present. This happens because it finds no such cards. The requireIOc...See [[https://alog.ligo-la.caltech.edu/TST/index.php?callRep=14772]] from TST log. With RCG 4.2.7, non-IOP models that have Digital IO cards fail if no I/O chassis is present. This happens because it finds no such cards. The requireIOcnt parameter used for IOP models in this card appears not work. The IOP model transmits the number of ADC, DAC and DO modules to sub-models, but not DIO modules.
So we either need to make requireIOcnt to work for non-IOP models, or transmit the number from the IOP model. Note that H1 IOP models do not have the DIO parts in them (as they do no processing on them)https://git.ligo.org/cds/software/advligorts/-/issues/377awgtpan: crashes when model times out at startup2022-04-14T16:34:13ZErik von Reisawgtpan: crashes when model times out at startupIf the model never starts, awgtpman will quickly time out waiting for it. Then it segfaults. It should quit cleanly.If the model never starts, awgtpman will quickly time out waiting for it. Then it segfaults. It should quit cleanly.https://git.ligo.org/cds/software/advligorts/-/issues/356strange DAC behavior in h1tcscs2023-08-04T17:44:07ZErik von Reisstrange DAC behavior in h1tcscsDAC is triggering overflow on channels that are well below the limit (26000 or so).
Also, h1tcscs DAC values are reading about 5% less than the inputs, but the IOP readings for the same channel are *almost* corrected back to the origina...DAC is triggering overflow on channels that are well below the limit (26000 or so).
Also, h1tcscs DAC values are reading about 5% less than the inputs, but the IOP readings for the same channel are *almost* corrected back to the original value.
Camilla writes:
> Hi Erik,
>
> Thanks for helping with this problem.
> It was also mentioned in Jeff Kissel's alog: 60550
>
> We were looking at the overflowing H1:FEC-26_DAC_OUTPUT_0_4. And comparing this to the not overflowing H1:FEC-23_DAC_OUTPUT_1_4.
> Different to the actual filter output H1:TCS-ITMX_CO2_CHILLER_OUT_GAIN_OUTPUT.
>
> I saw that DAC0 channel 4 is the TMX_CO2_CHILLER_OUT by looking at the simulink of h1tcscs.
> Strangely channel 14 seems empty there.
>
> Camilla
| requested set point (C) | CHILLER_OUT_GAIN | DAC0 chan4 | overflow |
| ------ | ------ |----- | ----- |
|20.2|27937|26470|yes|
|20.1|27743|26285|yes|
|20|27548|26101|yes|
|19.5|26575|25179|yes|
|19.1|25797|24442|no|
|19.2|25992|24627|yes|advligorts 5.2.0https://git.ligo.org/cds/software/advligorts/-/issues/354RCG: Add part for down converting frequency of signals.2022-04-14T16:34:14ZErik von ReisRCG: Add part for down converting frequency of signals.Needed for h1lsc0. Part will use frequency heterodyning to downconvert input to lower frequencies. Center frequency as input2 is shifted to zero Hz.Needed for h1lsc0. Part will use frequency heterodyning to downconvert input to lower frequencies. Center frequency as input2 is shifted to zero Hz.https://git.ligo.org/cds/software/advligorts/-/issues/347RCG: 'Matrix' part no longer compiles2022-04-14T16:34:14ZErik von ReisRCG: 'Matrix' part no longer compiles<partnamne>_mask variable is expected but not created. Either part should be dropped from library or fixed. It apparently isn't used at the sites anymore.<partnamne>_mask variable is expected but not created. Either part should be dropped from library or fixed. It apparently isn't used at the sites anymore.https://git.ligo.org/cds/software/advligorts/-/issues/355RCG: Allow bypass of DC filters on ADC.2022-04-14T16:34:14ZErik von ReisRCG: Allow bypass of DC filters on ADC.Apparently there is a digital DC filter running on the ADC inputs. This filtering isn't needed in h1lsc0. RCG should optionally bypass these filters to save time. Perhaps a model parameter or maybe an ADC parameter.Apparently there is a digital DC filter running on the ADC inputs. This filtering isn't needed in h1lsc0. RCG should optionally bypass these filters to save time. Perhaps a model parameter or maybe an ADC parameter.https://git.ligo.org/cds/software/advligorts/-/issues/330IOP symvers disappearing from build dir?2022-04-14T16:34:14ZErik von ReisIOP symvers disappearing from build dir?This week building all models for H1 non-iop models at times stopped finding IOP symvers file even though IOP models had already been built in that directory. Rebuilding an IOP model solved the problem.
EJ ran in to a similar issue whe...This week building all models for H1 non-iop models at times stopped finding IOP symvers file even though IOP models had already been built in that directory. Rebuilding an IOP model solved the problem.
EJ ran in to a similar issue when building models for the first time on x1cymac. Again, rebuilding the IOP model solved the problem.https://git.ligo.org/cds/software/advligorts/-/issues/324RCG: part in calculation sequence named after cds parameters2022-04-14T16:34:14ZErik von ReisRCG: part in calculation sequence named after cds parametersin x2susprocpi in verison 4.2.5 there is an entry in the calculation sequence list for a part named as the cds parameter list for the model, comma separated, such as `ifo-X2\nrate=2k\n...`
After build with the sequence dump code, list c...in x2susprocpi in verison 4.2.5 there is an entry in the calculation sequence list for a part named as the cds parameter list for the model, comma separated, such as `ifo-X2\nrate=2k\n...`
After build with the sequence dump code, list can be found in x2susprocpi_partSequence.txt in the build directory.https://git.ligo.org/cds/software/advligorts/-/issues/271DAC Duotone should be harder to turn on2022-04-14T16:34:15ZErik von ReisDAC Duotone should be harder to turn onDAC Duotone can be turned on with a single button click, but it's dangerous. It seems to propagate to the world. It should never be turned on by accident.DAC Duotone can be turned on with a single button click, but it's dangerous. It seems to propagate to the world. It should never be turned on by accident.https://git.ligo.org/cds/software/advligorts/-/issues/293Change models in src/rcgtest/models to MATLAB r2019a2022-04-14T16:34:15ZKeith ThorneChange models in src/rcgtest/models to MATLAB r2019aSome of the test models for the ATS in src/rcgtest/models were saved by Rolf on a laptop running MATLAB r2021a (or whatever has Simulink 10.3). We need to re-save these files under MATLAB r2019a so we can use them more widelySome of the test models for the ATS in src/rcgtest/models were saved by Rolf on a laptop running MATLAB r2021a (or whatever has Simulink 10.3). We need to re-save these files under MATLAB r2019a so we can use them more widelyKeith ThorneKeith Thornehttps://git.ligo.org/cds/software/advligorts/-/issues/302RCG: Newlines in block names cause 'n' characters to be escaped in source code.2022-04-14T16:34:14ZErik von ReisRCG: Newlines in block names cause 'n' characters to be escaped in source code.If a block as a newline in its name, then 'n' characters in the kernel module source code will have a '\' put in front of them.
'\n' ought to be forbidden or stripped from block names. It'd probably be good to find out why this happe...If a block as a newline in its name, then 'n' characters in the kernel module source code will have a '\' put in front of them.
'\n' ought to be forbidden or stripped from block names. It'd probably be good to find out why this happened.https://git.ligo.org/cds/software/advligorts/-/issues/281Compile git hash into model and report it.2022-04-14T16:34:15ZErik von ReisCompile git hash into model and report it.https://git.ligo.org/cds/software/advligorts/-/issues/285awgtpman can generate a dead spot in a waveform when transitioning from an ar...2023-05-28T20:25:51ZErik von Reisawgtpman can generate a dead spot in a waveform when transitioning from an arbitrary stream to an arbitrary loop.Using the awg.py bindings, an aborted arbitrary stream that is replaced by an arbitrary loop (defined in the bindings) leads to a 25 ms dead zone where the curve is zero just prior to a ramp down.
Note that the ramp down was not requ...Using the awg.py bindings, an aborted arbitrary stream that is replaced by an arbitrary loop (defined in the bindings) leads to a 25 ms dead zone where the curve is zero just prior to a ramp down.
Note that the ramp down was not requested, and the aborted curve will typically fall off like a cliff if there is not an arbitrary loop starting after.
It's unclear if this is a problem with awg or with awg.py.
NDScope image attached.![awg_glitch](/uploads/0b83a17f3464efb1c50546bfecc77f09/awg_glitch.png)
recreate with the following test code on dts1 at LLO:
```
#!/usr/bin/python3
import awg, time
chan = 'X2:ASC-SRC1_P_EXC'
def ExcTest(exc, name):
print("***************")
print("Starting %s" % name)
exc.start(ramptime=5)
time.sleep(5)
print("Stopping %s" % name)
exc.stop(ramptime=1)
print("Finished %s\n" % name)
time.sleep(2)
from random import uniform
random_data2 = [uniform(0, 20) for n in range(65536)]
stream2 = awg.ArbitraryStream(chan, rate=2048)
print("**********")
print("Starting long arbitrary stream")
stream2.append(random_data2)
time.sleep(1)
print("Aborting arbitrary stream\n")
stream2.abort()
random_data = [uniform(0, 20) for n in range(8192)]
loop = awg.ArbitraryLoop(chan, random_data, rate=2048)
ExcTest(loop, "loop")
print("Awg cleanup")
awg.awg_cleanup()
print("Cleanup finished\n")
```https://git.ligo.org/cds/software/advligorts/-/issues/287IPC rate difference jump calculation might be backwards2022-04-14T16:34:15ZErik von ReisIPC rate difference jump calculation might be backwardscommData3.c has similar calculations on line 200 and 355 calculating the correct IPC block to look into. Because the calculations match, they work, but it's an inefficient use of IPC block space.
Lines multiply cycle value by IPC_MAX...commData3.c has similar calculations on line 200 and 355 calculating the correct IPC block to look into. Because the calculations match, they work, but it's an inefficient use of IPC block space.
Lines multiply cycle value by IPC_MAX_RATE / IPC_RATE, but should probably be IPC_RATE / IPC_MAX_RATE.https://git.ligo.org/cds/software/advligorts/-/issues/273User models can kick fast-adc IOP models that use too many IPC parts.2022-04-14T16:34:15ZErik von ReisUser models can kick fast-adc IOP models that use too many IPC parts.From Lee McCuller running on CyMAC at MIT:
IOP fails when user model starts with ADC channel hopping
The IOP only fails if there are some calculations made in the IOP and 24 IPC SHMEM senders (are these IPCx?)
If the calculations are ...From Lee McCuller running on CyMAC at MIT:
IOP fails when user model starts with ADC channel hopping
The IOP only fails if there are some calculations made in the IOP and 24 IPC SHMEM senders (are these IPCx?)
If the calculations are left the same and the IPCx SHMEMs are reduced to 9, the user model does not cause the IOP to fail.https://git.ligo.org/cds/software/advligorts/-/issues/469IO info screen shows wrong card types when started with rtcds2022-10-16T20:47:57ZErik von ReisIO info screen shows wrong card types when started with rtcdsWhen an IOP model starts with 'rtcds start', IO info screen, off the GDSTP screen sometimes will show all 16 bit A2Ds across the slots. It ought to show the correct card types and only those cards that are wanted by the model.
Re-Insta...When an IOP model starts with 'rtcds start', IO info screen, off the GDSTP screen sometimes will show all 16 bit A2Ds across the slots. It ought to show the correct card types and only those cards that are wanted by the model.
Re-Installing with insmod seems to clear the issue.
rtcds start just calls systemd unit file, which calls a bash script which calls insmod. Perhaps there's a race condition and correct titles are random chance. Perhaps the module is being installed too soon after the epics process is started.https://git.ligo.org/cds/software/advligorts/-/issues/230Standalone EDCU does not work with DAQ on single-machine system2022-04-14T16:34:17ZKeith ThorneStandalone EDCU does not work with DAQ on single-machine systemI am unable to get the standalone EDCU to be accepted by the DAQ on a single-machine system. I can vary the start delay/advance but it always has data that is either 1 GPS ahead or 1 GPS behind
See [[https://alog.ligo-la.caltech.edu/TS...I am unable to get the standalone EDCU to be accepted by the DAQ on a single-machine system. I can vary the start delay/advance but it always has data that is either 1 GPS ahead or 1 GPS behind
See [[https://alog.ligo-la.caltech.edu/TST/index.php?callRep=14423|TST log 14423]]
I have configured the x2devel machine on llodts0.ligo-la.caltech.edu for this hardware configuration for testingJonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/254Subtle timing difference (~5 cycles) see on h1oaf1 during a lsc restart causi...2022-04-14T16:34:16ZJonathan HanksSubtle timing difference (~5 cycles) see on h1oaf1 during a lsc restart causing daqd crashThe question here is filtering out bad timing values. In the past we have seen restarts of lsc cause major (multi day) timing jumps for oaf1 that have caused the daqd to see a jump in data and restart.
Today we say a 5 cycle jump.
<pre...The question here is filtering out bad timing values. In the past we have seen restarts of lsc cause major (multi day) timing jumps for oaf1 that have caused the daqd to see a jump in data and restart.
Today we say a 5 cycle jump.
<pre>
Aug 11 15:53:15 h1daqdc0 daqd[3306]: Dropped data from shmem or received 0 dcus; gps now = 1312757613, 0; was = 1312757612, 10; dcu count = 1
Aug 11 15:53:15 h1daqdc0 daqd[3306]: expected gps = 1312757612
Aug 11 15:53:15 h1daqdc0 daqd[3306]: expected cycle = 11
Aug 11 15:53:15 h1daqdc0 daqd[3306]: expected nano = 11
Aug 11 15:53:15 h1daqdc0 daqd[3306]: first 1 dcuids seen
Aug 11 15:53:15 h1daqdc0 daqd[3306]: saw dcu 72
Aug 11 15:53:15 h1daqdc0 daqd[3306]: shmem_receiver looking for gps=1312757612 found 1312757611 on cycle 11
Aug 11 15:53:15 h1daqdc0 daqd[3306]: shmem_receiver looking for gps=1312757612 found 1312757611 on cycle 12
Aug 11 15:53:15 h1daqdc0 daqd[3306]: shmem_receiver looking for gps=1312757612 found 1312757611 on cycle 13
Aug 11 15:53:15 h1daqdc0 daqd[3306]: shmem_receiver looking for gps=1312757612 found 1312757611 on cycle 14
Aug 11 15:53:15 h1daqdc0 daqd[3306]: shmem_receiver looking for gps=1312757612 found 1312757611 on cycle 15
Aug 11 15:53:15 h1daqdc0 systemd[1]: rts-daqd.service: Main process exited, code=killed, status=11/SEGV
</pre>Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/257RCG should report cycles (loops) that don't include delay parts2022-04-14T16:34:16ZErik von ReisRCG should report cycles (loops) that don't include delay partsRight now if there's a cycle in a model that does not have a delay, RCG reports the components as being disconnected, even if they are connected.Right now if there's a cycle in a model that does not have a delay, RCG reports the components as being disconnected, even if they are connected.https://git.ligo.org/cds/software/advligorts/-/issues/258Miscellaneous medm issues2023-02-08T21:45:20ZErik von ReisMiscellaneous medm issuesDave requests slot layout for all adnaco boards, as already exists on IO screen for the BIO adnaco.
Jeff Kissel requested improved dual tone readouts on the IO screen.
On IO screens, boards that should not be in model should be grey in...Dave requests slot layout for all adnaco boards, as already exists on IO screen for the BIO adnaco.
Jeff Kissel requested improved dual tone readouts on the IO screen.
On IO screens, boards that should not be in model should be grey instead of red.
On more info screen, version number is wrong. Is float that concats second and third version number. Should be string.
Dave request start time to also be in standard format to make it easy to compare to build time.
Times should have timezone displayed.advligorts 5.2.0https://git.ligo.org/cds/software/advligorts/-/issues/250block names that contain the word "controller" break userspace models2022-04-14T16:34:16ZChristopher Wipfblock names that contain the word "controller" break userspace modelsWhen C code is generated for userspace models, any part in the model that has "controller" as a substring of its name gets stomped on.
https://git.ligo.org/cds/advligorts/-/blob/8405044410056a315797444f120752b32a2a9f21/src/epics/util/fe...When C code is generated for userspace models, any part in the model that has "controller" as a substring of its name gets stomped on.
https://git.ligo.org/cds/advligorts/-/blob/8405044410056a315797444f120752b32a2a9f21/src/epics/util/feCodeGen.pl#L1859https://git.ligo.org/cds/software/advligorts/-/issues/244Put multiple frame md5sums into a single file2022-04-14T16:34:16ZMichael ThomasPut multiple frame md5sums into a single fileWhen enabled, the framewriters will write a md5sum file for each frame file. LDAS can consume these files to streamline how quickly data makes its way into the LDAS filesystem.
Unfortunately, writing a separate md5 file for each frame ...When enabled, the framewriters will write a md5sum file for each frame file. LDAS can consume these files to streamline how quickly data makes its way into the LDAS filesystem.
Unfortunately, writing a separate md5 file for each frame file creates lots of small files, which can be very inefficient on these QFS filesystems. Instead, we should be write a single md5sum file per frame directory. This would give us app. 1170 checksums per file instead of 1.https://git.ligo.org/cds/software/advligorts/-/issues/247Allow writing trend files to /dev/null2022-04-14T16:34:16ZMichael ThomasAllow writing trend files to /dev/nullTo help isolate daqd vs. disk issues when writing raw trend files, daqdrc should provide a way to write the raw trend files to /dev/null.To help isolate daqd vs. disk issues when writing raw trend files, daqdrc should provide a way to write the raw trend files to /dev/null.https://git.ligo.org/cds/software/advligorts/-/issues/235Update sun rpc to use libtirpc2022-04-14T16:34:17ZErik von ReisUpdate sun rpc to use libtirpcsunrpc is depricated from GCC.
This change also involves rebuilding DTT.
Motivated by this gds issue: https://git.ligo.org/gds/gds/-/issues/7sunrpc is depricated from GCC.
This change also involves rebuilding DTT.
Motivated by this gds issue: https://git.ligo.org/gds/gds/-/issues/7https://git.ligo.org/cds/software/advligorts/-/issues/223advligorts_cymac install tries but fails to create 'controls' account2022-04-14T16:34:17ZKeith Thorneadvligorts_cymac install tries but fails to create 'controls' accountIn testing out from-scratch cymac installation - see [TST log 14366](https://alog.ligo-la.caltech.edu/TST/index.php?callRep=14366) I tried without creating a user account ('controls') first. The installer (in a text-mode popup screen) as...In testing out from-scratch cymac installation - see [TST log 14366](https://alog.ligo-la.caltech.edu/TST/index.php?callRep=14366) I tried without creating a user account ('controls') first. The installer (in a text-mode popup screen) asked what accounts to add to 'advligorts' group, with 'controls' already added, explain it would add required accounts. However, when it go to the query for the password of the account, it just hung.
I also found the following worked best
- Create controls account, group before doing 'advligorts-cymac' package install
- Make controls account a 'sudo' if creating real-time-kernel models
- when install is done, change ownership of /opt/rtcds/(site) from root:root to controls:advligorts
- for good measure, add the 'advligorts' account to the 'controls' grouphttps://git.ligo.org/cds/software/advligorts/-/issues/218Setting up a cymac needs to have working master and testpoint.par files...2022-04-14T16:34:17ZJonathan HanksSetting up a cymac needs to have working master and testpoint.par files...https://git.ligo.org/cds/software/advligorts/-/issues/2281PPS and external clocking support for 18AI32 and 18AI64 ADC cards2022-04-14T16:34:17ZRolf Bork1PPS and external clocking support for 18AI32 and 18AI64 ADC cardsPresent code only supports 1PPS sync and external clock (non-LIGO timing system provided clocks) support for the 16AI64SSC card. Similar support needs to be added for the 2 new ADC card types.Present code only supports 1PPS sync and external clock (non-LIGO timing system provided clocks) support for the 16AI64SSC card. Similar support needs to be added for the 2 new ADC card types.Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/225Create initial /etc/advligorts/systemd_env file during install2022-04-14T16:34:17ZKeith ThorneCreate initial /etc/advligorts/systemd_env file during installThe systemd scripts for awgtpman, etc. do not use /etc/advligo/env but instead use /etc/advligo/systemd_env (and perhaps /etc/advligo/systemd_env_hostname ). Because of this, awgtpman will not run after a initial advligorts-cymac instal...The systemd scripts for awgtpman, etc. do not use /etc/advligo/env but instead use /etc/advligo/systemd_env (and perhaps /etc/advligo/systemd_env_hostname ). Because of this, awgtpman will not run after a initial advligorts-cymac install - see [TST log 14366](https://alog.ligo-la.caltech.edu/TST/index.php?callRep=14366).
The installer should create an initial /etc/advligorts/systemd_env with just SITE and IFO in ithttps://git.ligo.org/cds/software/advligorts/-/issues/190Default daqdrc frame durations poor for Cymac installs2022-04-14T16:34:18ZKeith ThorneDefault daqdrc frame durations poor for Cymac installsAfter installing advligorts-cymac on x2etr1 front-end (LLO A+ SUS/SEI test stand) the default version of /etc/advligorts/daqdrc had poor/wrong values for the frame sizes
For full frames, nothing was set. So we got 1-second frames
For se...After installing advligorts-cymac on x2etr1 front-end (LLO A+ SUS/SEI test stand) the default version of /etc/advligorts/daqdrc had poor/wrong values for the frame sizes
For full frames, nothing was set. So we got 1-second frames
For second frames, 600 second duration was set. This is appropriate for large IFOs but not for small-channel-list test stands where 60 seconds is the old standard.
Recommend following corrections to daqdrc
```
# full_frames_blocks_per_frame is the number of seconds in a raw frame
set full_frames_blocks_per_frame=16;
# start the trender thread. Note this is not the trend writer, but the thread $
# takes raw data, and makes the trends internally.
# start trender <seconds in a second trend frame>
start trender;
```
I also note that full frames of 1 second duration do NOT include that in the frame file name...Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/216Cymac install should setup the /frames/... directories2022-04-14T16:34:17ZJonathan HanksCymac install should setup the /frames/... directoriesPain point when helping a user setup a cymac.
Needed to create /frames/full /frames/trend/minute /frames/trend/second /frames/trend/minute-raw and set ownership correctly.Pain point when helping a user setup a cymac.
Needed to create /frames/full /frames/trend/minute /frames/trend/second /frames/trend/minute-raw and set ownership correctly.https://git.ligo.org/cds/software/advligorts/-/issues/217Daqdrc changes for cymac installs2022-04-14T16:34:17ZJonathan HanksDaqdrc changes for cymac installsFor a cymac install the daqdrc should setup to be a frame writer.
Not sure if minute trend gwf files are needed here.For a cymac install the daqdrc should setup to be a frame writer.
Not sure if minute trend gwf files are needed here.https://git.ligo.org/cds/software/advligorts/-/issues/152MATLAB files in RCG need to be accessible to users2023-04-07T02:00:15ZKeith ThorneMATLAB files in RCG need to be accessible to usersFor users to view/edit front-end models in MATLAB, all the MATLAB files in cds_user_apps and in the RCG need to be in the MATLABPATH
- The existing method is to call /opt/rtcds/rtscore/release/etc/rcg-user-env.sh at startup that adds sr...For users to view/edit front-end models in MATLAB, all the MATLAB files in cds_user_apps and in the RCG need to be in the MATLABPATH
- The existing method is to call /opt/rtcds/rtscore/release/etc/rcg-user-env.sh at startup that adds src/epics/simlink/lib and src/epics/simlink to MATLABPATH
This does not work at present because the RCG installation is buried locally on the boot server and DAQ machines.
--- The RCG install needs to be modified to place this files (or copies) to somewhere on /opt/rtcds/ so that can be seen from workstations. There is also the need to have the MATLABPATH modified. One way would be to create a smaller version of rcg-user-env.sh to only add the bits needed for users, and not the parts needed for RCG buildsJameson Rollinsjameson.rollins@ligo.orgJameson Rollinsjameson.rollins@ligo.orghttps://git.ligo.org/cds/software/advligorts/-/issues/208Standalone edc breaks model transmission to DC2022-04-14T16:34:18ZErik von ReisStandalone edc breaks model transmission to DCWhen the standalone edc is running on x2oaf0, presumably on IOP timing, the DC only receives a good data block from the IOP models. x2oaf gets an 0xbad status while the remaining models continuously produce crc errors.
The models don't...When the standalone edc is running on x2oaf0, presumably on IOP timing, the DC only receives a good data block from the IOP models. x2oaf gets an 0xbad status while the remaining models continuously produce crc errors.
The models don't show any problems.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/142Standalone_edc/local_dc need to coordinate better on when standalone_edc need...2022-04-14T16:34:18ZJonathan HanksStandalone_edc/local_dc need to coordinate better on when standalone_edc needs to have its writes doneStandalone_edc currently triggers off of the clock, writing data at 16Hz boundaries. Local_dc triggers off of when the IOP is done. There are off of different clocks.
The current fix is to change the delay that standalone_edc uses to ...Standalone_edc currently triggers off of the clock, writing data at 16Hz boundaries. Local_dc triggers off of when the IOP is done. There are off of different clocks.
The current fix is to change the delay that standalone_edc uses to time its writes. The code can fire early or wait and go later.
This might mean we need to restore the ability to read time from the iop (or at least sync with the iop on startup).Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/209h1daqnds1 producing bursts of log messages2022-04-14T16:34:18ZErik von Reish1daqnds1 producing bursts of log messagesin the systemd journal, h1daqnds1 is writing messages like:
```
Jan 21 10:30:37 h1daqnds1 daqd[20800]: Byteswap H1:H1EDC_CHAN_NOCON.max rate=1 type=4
Jan 21 10:30:37 h1daqnds1 daqd[20800]: Byteswap H1:H1EDC_CHAN_NOCON.mean rate=1 type=5...in the systemd journal, h1daqnds1 is writing messages like:
```
Jan 21 10:30:37 h1daqnds1 daqd[20800]: Byteswap H1:H1EDC_CHAN_NOCON.max rate=1 type=4
Jan 21 10:30:37 h1daqnds1 daqd[20800]: Byteswap H1:H1EDC_CHAN_NOCON.mean rate=1 type=5
```
In bursts of many (hundreds?) repeating every 30 seconds.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/30better support for leap seconds2022-10-08T22:10:52ZJameson Rollinsjameson.rollins@ligo.orgbetter support for leap secondsVarious things in the code rely on leap seconds, mostly for GPS time conversion. Right now we're relying on tracking of leap seconds in the source, which is incredibly fragile and has bit us many times in the past. We need stop trying ...Various things in the code rely on leap seconds, mostly for GPS time conversion. Right now we're relying on tracking of leap seconds in the source, which is incredibly fragile and has bit us many times in the past. We need stop trying to track leap seconds and find a better way to get the needed info. For examples, coreutils tzdata tracks leap seconds in `/usr/share/zoneinfo/leapseconds`, which is what [gpstime](https://git.ligo.org/cds/gpstime) is now using.
This should be fixed before the next release so we can stop having to deal with this problem in the future.https://git.ligo.org/cds/software/advligorts/-/issues/80"nds" binary not well named2022-04-14T16:34:18ZJameson Rollinsjameson.rollins@ligo.org"nds" binary not well namedAs far as I understand, the `nds` binary is not actually handling any part of the NDS1 service provided by the daqd; it's just retrieving archived data from disk. The current name implies that it is the NDS1 server, which it is not. Th...As far as I understand, the `nds` binary is not actually handling any part of the NDS1 service provided by the daqd; it's just retrieving archived data from disk. The current name implies that it is the NDS1 server, which it is not. The process should be named appropriately.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/191Install frame wiper with advligorts-cymac, make default appropriate for test ...2023-01-17T18:46:46ZKeith ThorneInstall frame wiper with advligorts-cymac, make default appropriate for test standsThe advligorts-cymac package did not install a frame-wiper utility on to x2etr1, so I had to add by hand.
There is a 'timer', a 'service' and the daq-wiper itself.
The service is pretty simple
```
Description=Remove old frame files to ...The advligorts-cymac package did not install a frame-wiper utility on to x2etr1, so I had to add by hand.
There is a 'timer', a 'service' and the daq-wiper itself.
The service is pretty simple
```
Description=Remove old frame files to reclaim space for new frame files
Requires=frames.mount
[Service]
Type=oneshot
Nice=10
ExecStart=/usr/bin/daq_wiper -d /frames
```
The timer component needs the WantedBy= so one can 'enable' it
```
[Unit]
Description=Run rts-daq_wiper every 30 minutes
[Timer]
OnCalendar=*:0/30
AccuracySec=1min
[Install]
WantedBy=timers.target
```
The only /usr/bin/daq_wiper I found in use on Debian 10 was the one Dave Barker used for H1 which is highly customized for that application.
In running several test stands, I have found an older one built with percentages is more assured of not overflowing the disk. I have attached the version running on L1 as a start.[wiper.pl](/uploads/3efaf815ae046f917940960312d210f9/wiper.pl)Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/199EPICS processes max out CPU when models die2022-04-14T16:34:19ZErik von ReisEPICS processes max out CPU when models dieFound on the large test stand: when the kernel module dies, for example when a timing transmitter goes down the timing receiver modules will die, epics processes for those models increase in CPU usage.
At least on 6 core servers with 5 ...Found on the large test stand: when the kernel module dies, for example when a timing transmitter goes down the timing receiver modules will die, epics processes for those models increase in CPU usage.
At least on 6 core servers with 5 models running, this will max out the cpu, and can cause problems such as server lock-up.https://git.ligo.org/cds/software/advligorts/-/issues/200Consider dropping 'host' parameter from .mdl files2022-04-14T16:34:18ZErik von ReisConsider dropping 'host' parameter from .mdl files.mdl files specify the host name the model is expected to run on. We should consider removing that specification.
This value is now little used, perhaps only in the IPC lists.
It can also be incorrect. Models can be started on other h....mdl files specify the host name the model is expected to run on. We should consider removing that specification.
This value is now little used, perhaps only in the IPC lists.
It can also be incorrect. Models can be started on other hosts, so probably the hostname specified in the file shouldn't be used at run-time. It might give a false sense of security that a model is being run on the correct host.Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/196Eliminate special build definitions needed by daqd for building GDS2022-04-14T16:34:19ZErik von ReisEliminate special build definitions needed by daqd for building GDSIt'd be better if awgtpman and libawg were using the same object files as daqd.
Ditch these defines:
_TP_DAQD
_TESTPOINT_DIRECT
_NO_KEEP_ALIVEIt'd be better if awgtpman and libawg were using the same object files as daqd.
Ditch these defines:
_TP_DAQD
_TESTPOINT_DIRECT
_NO_KEEP_ALIVEhttps://git.ligo.org/cds/software/advligorts/-/issues/102Upgrading advligorts-common package led to a hung installer2022-04-14T16:34:20ZJonathan HanksUpgrading advligorts-common package led to a hung installerUpgrading from -dev5 or so to -dev8 caused a hange when configuring the advligorts-common package.
If this is done in an upgrade with /etc/advligorts/daqdrc (as a link) and /etc/advligorts/env as an empty file the install hangs. If I r...Upgrading from -dev5 or so to -dev8 caused a hange when configuring the advligorts-common package.
If this is done in an upgrade with /etc/advligorts/daqdrc (as a link) and /etc/advligorts/env as an empty file the install hangs. If I remove all advligorts packages and remove /etc/advligorts things work.
the command that hangs is /usr/bin/perl -w /usr/share/debconf/frontend /var/lib/dpkg/info/advligorts-common.postinst configurehttps://git.ligo.org/cds/software/advligorts/-/issues/104add example models to advligorts-rcg package2022-04-14T16:34:20ZJameson Rollinsjameson.rollins@ligo.orgadd example models to advligorts-rcg packageThere are two example models in the [test](test/) directory, an IOP and a regular model. These should be included as examples in the `advligorts-rcg` package.There are two example models in the [test](test/) directory, an IOP and a regular model. These should be included as examples in the `advligorts-rcg` package.Jameson Rollinsjameson.rollins@ligo.orgJameson Rollinsjameson.rollins@ligo.orghttps://git.ligo.org/cds/software/advligorts/-/issues/179awgtpman timing is too brittle.2022-04-14T16:34:19ZErik von Reisawgtpman timing is too brittle.awgtpman has enough buffer for 1 second worth of excitation, but if it's off by more than a 1/16th of a second, it fails.awgtpman has enough buffer for 1 second worth of excitation, but if it's off by more than a 1/16th of a second, it fails.https://git.ligo.org/cds/software/advligorts/-/issues/181sample daqdrc config file has spurious commands2022-04-14T16:34:19ZKeith Thornesample daqdrc config file has spurious commandsThe existing daqdrc config file example needs to be corrected
- Remove the # of files/# of directories (no longer supported - all by GPS)
- Existing RCG code updates testpoint.par file in /opt/rtcds/<site>/<ifo>/target/gds/param and as t...The existing daqdrc config file example needs to be corrected
- Remove the # of files/# of directories (no longer supported - all by GPS)
- Existing RCG code updates testpoint.par file in /opt/rtcds/<site>/<ifo>/target/gds/param and as the controls user is not able to modify files in /etc/advligorts.
- The existing MEDM screens assume the prefix DAQ_DC0 not DAQ_SHEM0Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/180advligorts-cymac package needs dependency on fuser2022-04-14T16:34:19ZKeith Thorneadvligorts-cymac package needs dependency on fuserThe rts-epics systemd scripts use the 'fuser' command internally. However, this utility was not present after doing an advligorts-cymac package install. I subsequently did an 'apt-get install psmisc' to remedy itThe rts-epics systemd scripts use the 'fuser' command internally. However, this utility was not present after doing an advligorts-cymac package install. I subsequently did an 'apt-get install psmisc' to remedy itJameson Rollinsjameson.rollins@ligo.orgJonathan HanksJameson Rollinsjameson.rollins@ligo.orghttps://git.ligo.org/cds/software/advligorts/-/issues/148Models l1susetmx, l1susetmy fail to build with undeclared 'adc0' error2022-04-14T16:34:20ZKeith ThorneModels l1susetmx, l1susetmy fail to build with undeclared 'adc0' errorIn trying to build the L1 models, I have brought in all the updates to branch-L1, included the SUS models with all 20-bit DACs. These built and operate just fine on the old production RCG.
However, on the current one from buster-unstab...In trying to build the L1 models, I have brought in all the updates to branch-L1, included the SUS models with all 20-bit DACs. These built and operate just fine on the old production RCG.
However, on the current one from buster-unstable, both fail with errors like
```
/opt/rtcds/rtbuild/rcg-4.0.0/src/fe/l1susetmx/l1susetmx.c: In function ‘feCode’:
/opt/rtcds/rtbuild/rcg-4.0.0/src/fe/l1susetmx/l1susetmx.c:7476:20: error: ‘adc0’ undeclared (first use in this function)
ipcInfo[17].data = adc0;
^~~~
/opt/rtcds/rtbuild/rcg-4.0.0/src/fe/l1susetmx/l1susetmx.c:7476:20: note: each undeclared identifier is reported only once for each function it appears in
make[5]: *** [/usr/src/linux-headers-4.19.0-6-common-rtcds/scripts/Makefile.build:315: /opt/rtcds/rtbuild/rcg-4.0.0/src/fe/l1susetmx/l1susetmx.o] Error 1
make[4]: *** [/usr/src/linux-headers-4.19.0-6-common-rtcds/Makefile:1534: _module_/opt/rtcds/rtbuild/rcg-4.0.0/src/fe/l1susetmx] Error 2
make[3]: *** [Makefile:146: sub-make] Error 2
make[2]: *** [Makefile:8: all] Error 2
make[1]: *** [GNUmakefile:7: default] Error 2
make: *** [Makefile:53: l1susetmx] Error 1
```
This is also the files checked into cds_user_apps\trunkRolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/161Kernel-space model installs even though only user-space model rebuilt2022-04-14T16:34:19ZErik von ReisKernel-space model installs even though only user-space model rebuiltIf the userspace model is built and installed, then only kernel-space model is built and installed, the target bin directory for the model will have both user space and kernel space binaries, but the userspace binary is out of date.If the userspace model is built and installed, then only kernel-space model is built and installed, the target bin directory for the model will have both user space and kernel space binaries, but the userspace binary is out of date.https://git.ligo.org/cds/software/advligorts/-/issues/162DAQ INI check script should look for duplicate channels.2022-04-14T16:34:19ZErik von ReisDAQ INI check script should look for duplicate channels.The python script for compiling and hashing the INI files for the DAQ should have a mode for just checking the hash and reporting the difference. As a convenience, it should also check for duplicate channels, which is an error that abor...The python script for compiling and hashing the INI files for the DAQ should have a mode for just checking the hash and reporting the difference. As a convenience, it should also check for duplicate channels, which is an error that aborts a the DAQ during startup.https://git.ligo.org/cds/software/advligorts/-/issues/66Possible race condition/deadlock on the CA SDF code2023-05-03T16:24:19ZErik von ReisPossible race condition/deadlock on the CA SDF codeFrom bugzilla ticket #1127
Jonathan Hanks (LIGO - Hanford Observatory) 2018-10-23 14:18:13 PDT
See FRS
https://services.ligo-la.caltech.edu/FRS/show_bug.cgi?id=11694
Daniel noticed that the Beckhoff SDF monitoring system for h1sys...From bugzilla ticket #1127
Jonathan Hanks (LIGO - Hanford Observatory) 2018-10-23 14:18:13 PDT
See FRS
https://services.ligo-la.caltech.edu/FRS/show_bug.cgi?id=11694
Daniel noticed that the Beckhoff SDF monitoring system for h1sysecatc1plc[1,3]
and h1sysecaty1plc2 was frozen. The medm pages resolved correctly, but button
presses were not being acted on.
When investigating I noticed that the system was stuck waiting for a mutex, the
point it left the application code (and entered EPICS base) was a call to
ca_clear_subscription(...) while it was syncing the internal state of the
system with changes that had taken place in EPICS.
The specific spot happened to be while handling a enum value, looks like it was
trying to change how it handled the enum. CA SDF tries to display enums as
strings if it can, or falls back to numeric, but it takes some work to figure
out which one to use.
Jonathan Hanks (LIGO - Hanford Observatory) 2018-10-23 14:21:11 PDT
Created attachment 239 [details]
Some gdb output ![IMG_20181023_110908053_HDR_small](/uploads/10356b3aec58f0aa42ecb3ff31655821/IMG_20181023_110908053_HDR_small.jpg)Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/62Filter module EPICS readbacks do not record coeff reset/clear history2022-04-14T16:34:21ZDavid BarkerFilter module EPICS readbacks do not record coeff reset/clear historyTransfer of bugzilla bug 459Transfer of bugzilla bug 459Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/68RCG generates inconsistently named MEDM screens for matrices2022-04-14T16:34:20ZDavid BarkerRCG generates inconsistently named MEDM screens for matricesfrom Bugzilla bug 385 (was assigned to Joe B, reassigning to Rolf)from Bugzilla bug 385 (was assigned to Joe B, reassigning to Rolf)Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/408Filter bank computation (via biquad method) shows different character with EP...2023-01-19T17:07:23ZJeffrey KisselFilter bank computation (via biquad method) shows different character with EPICs gain vs. Filter Module GainSee [LHO aLOG 63210](https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=63210)See [LHO aLOG 63210](https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=63210)advligorts 5.2.0https://git.ligo.org/cds/software/advligorts/-/issues/37X4 sType filters may cause step in output when turning off.2022-04-14T16:34:21ZErik von ReisX4 sType filters may cause step in output when turning off.The source code for handling filter switching on/off is in src/include/drv/fm10gen.c around line 1080.
When requested to turn on or off, filters where sType has '4' in the second digit wait to turn on until the input is near zero, and w...The source code for handling filter switching on/off is in src/include/drv/fm10gen.c around line 1080.
When requested to turn on or off, filters where sType has '4' in the second digit wait to turn on until the input is near zero, and wait to turn off until the output is near zero.
Every filter acts as a bypass when it is turned off, however, sending its input along to the next filter. This input may not be near zero when the output is near zero, which would lead to a step in the output.
Suggestions: Have sType '4' filters act as sType '3' filters when turning off: wait until output and input coincide.
Or
Switch all filters to sType '3', since '3' already nicely handles the case when turning on where the output is a steady zero.
On a related issue, both '3' and '4' have a timeout. When the timeout expires, the filter is switched on immediately, causing a step. It might be a good idea to fallback to a ramp.Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/56bussed signals can't get to top level2022-04-14T16:34:21ZDavid Barkerbussed signals can't get to top leveltransferred from bugzilla bug 491transferred from bugzilla bug 491Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/58RCG simulink tag confusion2022-04-14T16:34:21ZDavid BarkerRCG simulink tag confusionTransferred from bugzilla bug 488Transferred from bugzilla bug 488Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/59Internal filter value gets too big (INF) and output is non-zero even with gai...2022-04-14T16:34:21ZErik von ReisInternal filter value gets too big (INF) and output is non-zero even with gain zerofrom bugzilla ticket #1056
Keith 2017-01-04 10:37:48 PST
From https://services.ligo-la.caltech.edu/FRS/show_bug.cgi?id=6563
There was an issue where filters had values which could not be represented with
double precision internall...from bugzilla ticket #1056
Keith 2017-01-04 10:37:48 PST
From https://services.ligo-la.caltech.edu/FRS/show_bug.cgi?id=6563
There was an issue where filters had values which could not be represented with
double precision internally, which when the filter was turned on, even with a
gain of zero, had an output of 1e20. The filter code itself set the output to
1e20 if greater than 1e20. For some reason, the code does not set the output
to -1e20 if less than -1e20, possibly because it is intended to catch
infinities and prevent them from passing on.
See for example:
https://alog.ligo-la.caltech.edu/aLOG/index.php?callRep=29010
According to trends, the L1:SUS-ETMY_L2_DAMP_MODE4_OUTPUT went to 1e20 even
while L1:SUS-ETMY_L2_DAMP_MODE4_GAIN was 0. This filter is fed with DARM error
and used to damp the violin modes in ETMY.
A question is, when a filter integrates or receives an infinite input, what
should it do? Since IIR filters use prior outputs to calculate the current
output, once it gets into that state, it will stay in that infinite state.
Currently, a user or a guardian script needs to hit the clear history button.
Should the internal code take a more active roll when such situations arise?
Keith: 2016-10-31 13:00:55 PDT
Joe B. is going to pursue this further as to cause and recommended fix.Keith ThorneKeith Thornehttps://git.ligo.org/cds/software/advligorts/-/issues/50NDS1 protocol 12.1 & 12.2 respond to bad input on status channels 3 improperly2021-10-08T01:08:14ZDavid BarkerNDS1 protocol 12.1 & 12.2 respond to bad input on status channels 3 improperlytransferred from bugzilla bug 824transferred from bugzilla bug 824Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/52OUT16 decimation filter2021-10-08T00:45:25ZDavid BarkerOUT16 decimation filtertransferred from bugzilla bug 805transferred from bugzilla bug 805Rolf BorkRolf Borkhttps://git.ligo.org/cds/software/advligorts/-/issues/54buffer overflow in daqd2020-02-13T23:29:59ZDavid Barkerbuffer overflow in daqdtransfer from bugzilla bug 779transfer from bugzilla bug 779Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/55IOP DACKILL channels in SDF have constantly updating "Time of last change"2020-02-13T23:40:29ZErik von ReisIOP DACKILL channels in SDF have constantly updating "Time of last change"from bugzilla ticket #1002
Keith: 2016-04-08 11:51:44 PDT
Even after the upgrade to RCG 3.0, the IOP DACKILL channels in SDF still show
that the "Time of last change" is constantly updating
- See https://services.ligo-la.caltech....from bugzilla ticket #1002
Keith: 2016-04-08 11:51:44 PDT
Even after the upgrade to RCG 3.0, the IOP DACKILL channels in SDF still show
that the "Time of last change" is constantly updating
- See https://services.ligo-la.caltech.edu/FRS/show_bug.cgi?id=3796
- It was claimed have been fixed in Bug 850
https://bugzilla.ligo-wa.caltech.edu/bugzilla3/show_bug.cgi?id=850Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/57ECAT SYS front ends do not have dcuid defined in the NAME_DCU_ID epics record2020-02-13T23:41:08ZErik von ReisECAT SYS front ends do not have dcuid defined in the NAME_DCU_ID epics recordFrom bugzilla ticket #1026
Dave 2016-06-23 11:17:10 PDT
each front end reports its DCU id using an epics record called NAME_DCU_ID. For
the ECAT SYS front ends this record has a zero value.
e.g.
caget H1:SYS-ECATC1PLC1SDF_DCU_ID
H1:...From bugzilla ticket #1026
Dave 2016-06-23 11:17:10 PDT
each front end reports its DCU id using an epics record called NAME_DCU_ID. For
the ECAT SYS front ends this record has a zero value.
e.g.
caget H1:SYS-ECATC1PLC1SDF_DCU_ID
H1:SYS-ECATC1PLC1SDF_DCU_ID 0Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/65FrVect structures in the minute- and second-trend frames do not have values set2020-02-13T23:35:51ZErik von ReisFrVect structures in the minute- and second-trend frames do not have values setFrom bugzilla ticket #1097
Duncan Michael Macleod (Cardiff University) 2017-06-26 09:50:21 PDT
FrVect structures in the minute- and second-trend frames do not have values set
for the following attributes (at least)
- name
- unitX
- u...From bugzilla ticket #1097
Duncan Michael Macleod (Cardiff University) 2017-06-26 09:50:21 PDT
FrVect structures in the minute- and second-trend frames do not have values set
for the following attributes (at least)
- name
- unitX
- unitY
where these are set in the upstream 'raw' frames. It would be nice to have
these set to match those in the upstream, where appropriate (i.e. not unitY for
.n trends)David BarkerDavid Barkerhttps://git.ligo.org/cds/software/advligorts/-/issues/69SDF RELOAD_STATUS should be non-zero whenever a load is pending2020-02-14T00:06:05ZDavid BarkerSDF RELOAD_STATUS should be non-zero whenever a load is pendingtransfer from Bugzilla bug 924 (enhancement)transfer from Bugzilla bug 924 (enhancement)Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/70NDS1 status channels 3 does not return a channel count or status code when re...2021-10-08T01:08:13ZDavid BarkerNDS1 status channels 3 does not return a channel count or status code when requesting a set of named channelstransferred from Bugzilla bug 841 (enhancement)transferred from Bugzilla bug 841 (enhancement)Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/72SDF_MON_ALL should turn on monitoring of all settings against current set points2020-02-14T00:52:11ZDavid BarkerSDF_MON_ALL should turn on monitoring of all settings against current set pointstransferred from bugzilla bug 774 (enchancement)transferred from bugzilla bug 774 (enchancement)Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/23support string types in DAQ2021-10-08T00:25:32ZJameson Rollinsjameson.rollins@ligo.orgsupport string types in DAQString types from front ends or EDCU need to be:
* handled in transport
* handle in DAQ
* handle in framesString types from front ends or EDCU need to be:
* handled in transport
* handle in DAQ
* handle in framesJonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/25gapless daqd restarts2021-10-08T00:26:10ZJameson Rollinsjameson.rollins@ligo.orggapless daqd restartsdaqd should be able to handle front end config changes without needing a restart.daqd should be able to handle front end config changes without needing a restart.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/115useless DAQD dependencies during package build2020-05-11T23:10:00ZJameson Rollinsjameson.rollins@ligo.orguseless DAQD dependencies during package build```
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/advligorts-daqd/usr/bin/nds debian/advligorts-daqd/usr/bin/daqd were not linked against libframecpp.so.12 (they use none of the library's symbols)
dpkg-shlib...```
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/advligorts-daqd/usr/bin/nds debian/advligorts-daqd/usr/bin/daqd were not linked against libframecpp.so.12 (they use none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/advligorts-daqd/usr/bin/daqd was not linked against libca.so.3.15.5 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/advligorts-fe/usr/bin/standalone_edc was not linked against libCom.so.3.15.5 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/advligorts-fe/usr/bin/standalone_edc was not linked against libboost_filesystem.so.1.67.0 (it uses none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/advligorts-transport-pubsub/usr/bin/cds_pub_sub debian/advligorts-transport-pubsub/usr/bin/cps_recv debian/advligorts-transport-pubsub/usr/bin/cps_xmit were not linked against libboost_system.so.1.67.0 (they use none of the library's symbols)
```Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/118permission issue with /opt/rtcds/${SITE}/${IFO} and related directories2021-10-08T01:21:34ZBram Slagmolenpermission issue with /opt/rtcds/${SITE}/${IFO} and related directoriesWhy do you need to `chgrp advligorts /opt/rtcds/${SITE}/${IFO}` in the advligorts-rcg package install script (postinst)? Would the `chmod g+ws` not be enough, if you have the advligorts user in the group of that directory?
We are having...Why do you need to `chgrp advligorts /opt/rtcds/${SITE}/${IFO}` in the advligorts-rcg package install script (postinst)? Would the `chmod g+ws` not be enough, if you have the advligorts user in the group of that directory?
We are having some major permission issues between the various computers (scripts, fe, dad/fb) who all have different users (guardian, advligorts, not sure if daqd has one) who all link to the same shared directory (NAS) and want to rw access. On the NAS shared directory I have the user controls and group controls which has all rw access. On each computers I make the new created user (guardian, advligorts etc) member of the controls group and make sure all directories have g+rw.
This is most likely not the best solution, but changing the groups at install will break our set up. Happy to hear suggestions how to get around this.https://git.ligo.org/cds/software/advligorts/-/issues/132Unify gdstask.c between DAQ and AWG2020-06-26T23:13:17ZErik von ReisUnify gdstask.c between DAQ and AWGgdstask.c exists in src/daqd and src/gds. They are quite similar. They ought to be merged into a library.gdstask.c exists in src/daqd and src/gds. They are quite similar. They ought to be merged into a library.https://git.ligo.org/cds/software/advligorts/-/issues/140The daqd on x2daqtw0 is failing2020-09-01T23:22:03ZJonathan HanksThe daqd on x2daqtw0 is failing<pre>
Jul 23 16:49:46 x2daqtw0 daqd[12008]: Allocated move buffer size 51491864 bytes
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 8
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 9
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 10
Jul 23 16:49:46 x2daqtw0 daqd[...<pre>
Jul 23 16:49:46 x2daqtw0 daqd[12008]: Allocated move buffer size 51491864 bytes
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 8
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 9
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 10
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 11
Jul 23 16:49:46 x2daqtw0 daqd[12008]: 12
Jul 23 16:49:47 x2daqtw0 daqd[12008]: 13
Jul 23 16:49:47 x2daqtw0 daqd[12008]: 14
Jul 23 16:49:47 x2daqtw0 daqd[12008]: 15
Jul 23 16:49:48 x2daqtw0 daqd[12008]: [Thu Jul 23 16:49:48 2020] Minute trender made GPS time correction; gps=1279576205; gps%60=5
Jul 23 16:50:45 x2daqtw0 daqd[12008]: [Thu Jul 23 16:50:45 2020] ->3: clear crc
Jul 23 17:11:10 x2daqtw0 daqd[12008]: Dropped data from shmem or received 0 dcus; gps now = 1279577487, 12; was = 1279577487, 10;
Jul 23 17:11:10 x2daqtw0 daqd[12008]: expected gps = 1279577487
Jul 23 17:11:10 x2daqtw0 daqd[12008]: expected cycle = 11
Jul 23 17:11:10 x2daqtw0 daqd[12008]: expected nano = 11
Jul 23 17:11:11 x2daqtw0 systemd[1]: rts-daqd.service: Main process exited, code=killed, status=11/SEGV
Jul 23 17:11:11 x2daqtw0 systemd[1]: rts-daqd.service: Failed with result 'signal'.
</pre>Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/172Daqd broadcaster sending the wrong data2020-09-23T22:04:51ZJonathan HanksDaqd broadcaster sending the wrong dataThe daqd broadcaster was seen to send the wrong value for at least one channel during the recent lho upgrade.
The guardian state channel was stuck at a value for about a day, despite it changing. The input data stream to the daqd appea...The daqd broadcaster was seen to send the wrong value for at least one channel during the recent lho upgrade.
The guardian state channel was stuck at a value for about a day, despite it changing. The input data stream to the daqd appeared to have the correct value. A restart of the daqd fixed the issue.
Currently we do not know the cause of this issue.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/26record all EXC test points2021-10-08T00:26:14ZJameson Rollinsjameson.rollins@ligo.orgrecord all EXC test pointsWe should record all EXC excitation test points always.We should record all EXC excitation test points always.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/178In a current production setup we run the daqd only to get epics variables, th...2020-10-06T23:10:50ZJonathan HanksIn a current production setup we run the daqd only to get epics variables, these could be folded into the cps_recv processThe daqd on a data concentrator is not really needed, and restarting it doesn't impact the down stream data flow. We should move the diagnostics to the receiver process so that we don't need to run a daqd for that.The daqd on a data concentrator is not really needed, and restarting it doesn't impact the down stream data flow. We should move the diagnostics to the receiver process so that we don't need to run a daqd for that.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/185Data Concentrator system lockup taking down Dolphin-connected machine2022-03-16T16:08:49ZKeith ThorneData Concentrator system lockup taking down Dolphin-connected machineBoth production systems (L1, H1) have seen DAQ systems taken down ( see [LLO aLOG 53760](https://alog.ligo-la.caltech.edu/aLOG/index.php?callRep=53760)
[LHO aLog 56834](https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=56834) wher...Both production systems (L1, H1) have seen DAQ systems taken down ( see [LLO aLOG 53760](https://alog.ligo-la.caltech.edu/aLOG/index.php?callRep=53760)
[LHO aLog 56834](https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=56834) where one or both data concentrators appear to lock up and then lock up all the downstream DAQ computers. The latest at LLO on October 10th had system logs available - see [FRS 15826](https://services.ligo-la.caltech.edu/FRS/show_bug.cgi?id=15836)
We have related problems where reboots of downstream machines can lock up the data concentrator.Keith ThorneJonathan HanksKeith Thornehttps://git.ligo.org/cds/software/advligorts/-/issues/186the daqd producer and some of the transmit code needs to do better parameter/...2020-11-11T01:41:46ZJonathan Hanksthe daqd producer and some of the transmit code needs to do better parameter/input handlingcorrupted data blocks could allow buffer overflows if things like the model/dcu count was bad or lengths were bad.corrupted data blocks could allow buffer overflows if things like the model/dcu count was bad or lengths were bad.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/188On a model crash local_dc exited with an error of 'free(): invalid pointer'2020-10-16T00:54:51ZJonathan HanksOn a model crash local_dc exited with an error of 'free(): invalid pointer'See FRS:
When the models crashed local_dc crashed as well. Notice there had been no messages in about the last month.
<pre>
Sep 17 14:05:03 h1susey local_dc[1572]: Model h1sustmsy rate = 16384 dcuid = 99
Sep 17 14:05:03 h1susey local_...See FRS:
When the models crashed local_dc crashed as well. Notice there had been no messages in about the last month.
<pre>
Sep 17 14:05:03 h1susey local_dc[1572]: Model h1sustmsy rate = 16384 dcuid = 99
Sep 17 14:05:03 h1susey local_dc[1572]: Model h1susetmypi rate = 65536 dcuid = 127
Oct 15 16:26:50 h1susey local_dc[1572]: free(): invalid pointer
Oct 15 16:26:50 h1susey systemd[1]: rts-local_dc.service: Main process exited, code=killed, status=6/ABRT
Oct 15 16:26:50 h1susey systemd[1]: rts-local_dc.service: Failed with result 'signal'.
Oct 15 16:26:55 h1susey systemd[1]: rts-local_dc.service: Service RestartSec=5s expired, scheduling restart.
Oct 15 16:26:55 h1susey systemd[1]: rts-local_dc.service: Scheduled restart job, restart counter is at 13.
Oct 15 16:26:55 h1susey systemd[1]: Stopped Advanced LIGO RTS local data concentrator.
Oct 15 16:26:55 h1susey systemd[1]: Started Advanced LIGO RTS local data concentrator.
</pre>
I am noting that cps_xmit also failed. Again note that we saw a large amount of time with no issues prior to this crash.
<pre>
Oct 08 16:35:11 h1susey cps_xmit[19800]: Client running refcount 1
Oct 15 16:26:50 h1susey cps_xmit[19800]: Closing client
Oct 15 16:26:50 h1susey cps_xmit[19800]: Closing client
Oct 15 16:26:50 h1susey cps_xmit[19800]: Closing out OpenMX and exiting
Oct 15 16:26:50 h1susey systemd[1]: rts-transport@cps_xmit.service: Main process exited, code=exited, status=1/FAILURE
Oct 15 16:26:50 h1susey systemd[1]: rts-transport@cps_xmit.service: Failed with result 'exit-code'.
Oct 15 16:26:55 h1susey systemd[1]: rts-transport@cps_xmit.service: Service RestartSec=5s expired, scheduling restart.
Oct 15 16:26:55 h1susey systemd[1]: rts-transport@cps_xmit.service: Scheduled restart job, restart counter is at 1.
Oct 15 16:26:55 h1susey systemd[1]: Stopped Advanced LIGO RTS DAQD transport.
Oct 15 16:26:55 h1susey systemd[1]: Started Advanced LIGO RTS DAQD transport.
Oct 15 16:26:55 h1susey cps_xmit[5413]: /usr/bin/cps_xmit compiled Aug 14 2020 : 16:21:37
Oct 15 16:26:55 h1susey cps_xmit[5413]: Writing DAQ data to local shared memory and sending out on the publisher
Oct 15 16:26:55 h1susey cps_xmit[5413]: ifo mapped to 0x7f5d7c541000
Oct 15 16:26:56 h1susey cps_xmit[5413]: Making mbuff area local_dc with size 104857600
Oct 15 16:26:56 h1susey cps_xmit[5413]: local_dc mmapped address is 0x7f5d7c541000
Oct 15 16:26:56 h1susey cps_xmit[5413]: Client running refcount 1
Oct 15 17:11:22 h1susey cps_xmit[5413]: Closing client
Oct 15 17:11:22 h1susey cps_xmit[5413]: Closing client
Oct 15 17:11:22 h1susey cps_xmit[5413]: Closing out OpenMX and exiting
</pre>Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/27dix_recv should “fail-over” code between dual DCs2021-10-08T00:26:23ZJameson Rollinsjameson.rollins@ligo.orgdix_recv should “fail-over” code between dual DCsJonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/82nds service should be socket activated2021-10-08T01:49:37ZJameson Rollinsjameson.rollins@ligo.orgnds service should be socket activatedThe 'nds' service, which uses a socket to receive and respond to commands, should be socket activated, so that it's only instantiated when needed, without needing explicit enabling by the admin. This is simple to setup with systemd, but...The 'nds' service, which uses a socket to receive and respond to commands, should be socket activated, so that it's only instantiated when needed, without needing explicit enabling by the admin. This is simple to setup with systemd, but it will likely require changes to the nds server itself to accept the socket from the controlling process.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/222awgtpman: testpoint restrictions are antiquated2021-04-05T18:26:20ZErik von Reisawgtpman: testpoint restrictions are antiquatedtpman has some arbitrary limits on testpoint creation that should be eliminated, and some calculations that are sometimes incorrect. This issue perhaps properly should be split into several issues.
Everything is tracked with fixed-widt...tpman has some arbitrary limits on testpoint creation that should be eliminated, and some calculations that are sometimes incorrect. This issue perhaps properly should be split into several issues.
Everything is tracked with fixed-width buffers that should be std library data structures. Number of test points and number of users per testpoint are arbitrarily limited by the size of the buffers used to track them. Sizes of structures are dissociated from structures.
Total data rate calculation is incorrect for slow models < 16 kHz. So the ceiling on data rate is low by maybe a factor of 8.
There is no consideration of global data rate or where a model is. The limit of models in the cornerstation should be greater than from the end station (as long as the ends are combined into a sub-1G pipe). The limiting factor is how much traffic a link can handle *without causing missed daq epochs* for any model. The hard limit in code is probably too high for the ends and certainly too low for the corner.
Finally, and perhaps of no importance, there are nested loops used to check all these fixed structures. The performance of these checks could easily be improved.
Relevant code is in requesttp_1_svc in testpoint_server.chttps://git.ligo.org/cds/software/advligorts/-/issues/233Modify RCG model make, install to work with linux kernel 5.10 / Debian bullseye2021-08-23T21:00:51ZKeith ThorneModify RCG model make, install to work with linux kernel 5.10 / Debian bullseyeUpdate the RCG model make, make install to work with linux kernel 5.10
known items
- update src/fe/timing.g to support change to 64-bit timekeepingUpdate the RCG model make, make install to work with linux kernel 5.10
known items
- update src/fe/timing.g to support change to 64-bit timekeepingKeith ThorneKeith Thornehttps://git.ligo.org/cds/software/advligorts/-/issues/238Adjust how some transport programs detect live input buffers to treat them as...2021-06-04T17:10:17ZJonathan HanksAdjust how some transport programs detect live input buffers to treat them as read onlySome of the transmit programs (at least cps_xmit and dix_xmit) determine if a input buffer is live by writing an invalid cycle to the buffer and waiting for a valid cycle number. This is causes issues with some things (tracking buffers ...Some of the transmit programs (at least cps_xmit and dix_xmit) determine if a input buffer is live by writing an invalid cycle to the buffer and waiting for a valid cycle number. This is causes issues with some things (tracking buffers through restarts via mbuf_probe) and is a bad philosophy of doing this, the input can and should be read only. These should be changed to look for a cycle change to check for live buffers.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/239DAQD package should specify more precisely ldas-tools dependencies2021-06-09T16:14:07ZErik von ReisDAQD package should specify more precisely ldas-tools dependenciesRight now the dependency is not restricted by version, but some older packages no longer work with daqd.
Perhaps we should consider tightening all dependencies in all packages somewhat.Right now the dependency is not restricted by version, but some older packages no longer work with daqd.
Perhaps we should consider tightening all dependencies in all packages somewhat.https://git.ligo.org/cds/software/advligorts/-/issues/241When DCUID of a model is changed, obscure problems crop up.2022-04-14T21:12:04ZErik von ReisWhen DCUID of a model is changed, obscure problems crop up.If a user naively changes a model DCUID in the model file, then builds and starts the model without manually editing the gds/param/testpoints.par file, some problems crop up that are hard to diagnose and fix:
When there are two DCUIDs d...If a user naively changes a model DCUID in the model file, then builds and starts the model without manually editing the gds/param/testpoints.par file, some problems crop up that are hard to diagnose and fix:
When there are two DCUIDs defined for the same model in the testpoint.par file, awgtpman may pick up the wrong dcuid. It will then reject every channel defined with the new, correct DCUID. No testpoints can be opened.
Awg is mostly silent about this, except at startup it will report the new DCUID as 'RMID' for the channels, but report the old DCUID for itself.
To the user, it just looks like DTT can't open a test point.
Fixes:
Ideally, the installer will erase old blocks for installed models.
As workaround, awg could be changed to load DCUID from channel list. Could be changed to report DCUID as DCUID instead of RMID.
RTCDS could be involved with checking, possibly correcting the testpoint.par file.https://git.ligo.org/cds/software/advligorts/-/issues/242"DAQ LOAD" button took down the whole host2021-06-16T16:38:06ZErik von Reis"DAQ LOAD" button took down the whole hostPressing "DAQ LOAD" on H1PEMMY crashed the whole front end.Pressing "DAQ LOAD" on H1PEMMY crashed the whole front end.https://git.ligo.org/cds/software/advligorts/-/issues/253Add [Install] section to rts-local_dc service2021-08-11T23:00:12ZArtemiy DmitrievAdd [Install] section to rts-local_dc serviceThere is no `[Install]` section in `/lib/systemd/system/rts-local_dc.service` currently. There is no reason not to have it, because this service is required by `daqd` and would normally start at boot.
- Steps to reproduce:
```
$ grep -A...There is no `[Install]` section in `/lib/systemd/system/rts-local_dc.service` currently. There is no reason not to have it, because this service is required by `daqd` and would normally start at boot.
- Steps to reproduce:
```
$ grep -A1 "\[Install\]" /lib/systemd/system/rts-local_dc.service
```
- Expected output:
```
[Install]
WantedBy=multi-user.target
```
- Actual output: nonehttps://git.ligo.org/cds/software/advligorts/-/issues/255Update cmake and code to build both buster and bullseye2021-08-18T22:25:04ZJonathan HanksUpdate cmake and code to build both buster and bullseyeKeith is working on the kernel side of things, however there are still minor userspace/cmake/... changes needed.Keith is working on the kernel side of things, however there are still minor userspace/cmake/... changes needed.Jonathan HanksJonathan Hankshttps://git.ligo.org/cds/software/advligorts/-/issues/259RCG ought to enforce parameter block format2021-09-04T17:27:25ZErik von ReisRCG ought to enforce parameter block formatRCG ought to check that certain parameter blocks, e.g. ADC parameters are formatted correctly. A typo can render a model incorrect. Tracing down this kind of problem is time consuming, sometimes tricky.
RCG should check for missing '='...RCG ought to check that certain parameter blocks, e.g. ADC parameters are formatted correctly. A typo can render a model incorrect. Tracing down this kind of problem is time consuming, sometimes tricky.
RCG should check for missing '=', missing commas, bad param names.
See src/epics/util/lib/Adc.pm line 34 for the relevant code area.https://git.ligo.org/cds/software/advligorts/-/issues/264Look at ways to speed up build of models, possibly recognizing when nothing a...2021-09-13T21:12:14ZJonathan HanksLook at ways to speed up build of models, possibly recognizing when nothing as changed and no new build needs to take placeBuilding and installing all the models takes a long time. If there are failures at the tail end of the model list, then it can take more than an hour to get back to that system in a new install.
If we try to see if there are no changes...Building and installing all the models takes a long time. If there are failures at the tail end of the model list, then it can take more than an hour to get back to that system in a new install.
If we try to see if there are no changes we must take into account the full set of dependencies on a model.
* the main mdl file
* any included parts
* any included c files
* any rcg parts
The rcg could possibly create a dependency file with all this information.https://git.ligo.org/cds/software/advligorts/-/issues/265Modify the RT system to dynamically allocate IPC space on the fly as models s...2022-03-07T17:52:26ZJonathan HanksModify the RT system to dynamically allocate IPC space on the fly as models start up, removing the need for a static ipc fileThe ipc table is a shared central point of contention when building models.
If we could work out a way to have models register the IPC channels they are sending and the channels they are receiving. Then the system could figure out loca...The ipc table is a shared central point of contention when building models.
If we could work out a way to have models register the IPC channels they are sending and the channels they are receiving. Then the system could figure out locations of where to read/write.https://git.ligo.org/cds/software/advligorts/-/issues/267Possibly allow models to run if dolphin disconnected.2021-09-16T22:32:22ZErik von ReisPossibly allow models to run if dolphin disconnected.Models now die on startup if they need dolphin but dolphin is not connected. This is an inconvenience. The check was deliberately added between version 3 and 4, so before we remove it, git history and other notes should be reviewed to ...Models now die on startup if they need dolphin but dolphin is not connected. This is an inconvenience. The check was deliberately added between version 3 and 4, so before we remove it, git history and other notes should be reviewed to glean the reason.https://git.ligo.org/cds/software/advligorts/-/issues/269handle dolphin glitch2021-09-21T23:56:38ZErik von Reishandle dolphin glitchThis may be a solved problem.
From a src/fe/README_DOLPHIN_GLITCH.txt:
1) Dolphin glitch can last up to 64msec.
- iop_read_adc()
- Will detect and report any long cycle > 500 usec ie return > 0
- Will detect and report any sho...This may be a solved problem.
From a src/fe/README_DOLPHIN_GLITCH.txt:
1) Dolphin glitch can last up to 64msec.
- iop_read_adc()
- Will detect and report any long cycle > 500 usec ie return > 0
- Will detect and report any short cycle < 10 usec ie return -1
- Indicates data backed up in ADC module FIFO
- Otherwise report a normal cycle ie return 0;
- Iop code will:
- On long cycle, stop writing DAC outputs
- Sets stop_dac_write flag that will temporarily hold all DAC outputs to last value
- On short cycle, do nothing
- if normal cycle reported and stop_dac_write flag set:
- Unset stop_dac_write flag and continue processing DAC outputs.
Works fine for IOP, except maybe add an extra DAC write on return to normal??
- Use dac_preload function??
- Need to stop DAC FIFO checks during catch up time?
Problem: On return to normal, user apps haven't caught up, IOP will send 0 for their DAC outputs.
Solution:
- Send flag to user apps to have them simply read ADC data until caught up?
- This would let them catch up quickly
- Put this in io_mem_data area and read by app_adc_read()?
- Have IOP continue to send last value until user apps catch up?
- Method for IOP to know where user apps are ie cycle count as they try to catch up?
- Would be complicated algorithm to track every DAC channel
~https://git.ligo.org/cds/software/advligorts/-/issues/270User models should not have disjoint ADC part number and card number2021-09-22T23:09:33ZErik von ReisUser models should not have disjoint ADC part number and card numberThe user model should be able to use ADC_4 part to access the fifth (0 based) adc even though it doesn't access cards 0-3.The user model should be able to use ADC_4 part to access the fifth (0 based) adc even though it doesn't access cards 0-3.https://git.ligo.org/cds/software/advligorts/-/issues/272Timing errors should be more understantable.2021-09-23T17:29:15ZErik von ReisTiming errors should be more understantable.Timing errors caused by IOP and user model loops taking too long should be detected and displayed in a straight-forward manner so that users can understand them.Timing errors caused by IOP and user model loops taking too long should be detected and displayed in a straight-forward manner so that users can understand them.https://git.ligo.org/cds/software/advligorts/-/issues/274'diag' version used ought to be recorded in RCG tests2021-09-24T19:14:58ZErik von Reis'diag' version used ought to be recorded in RCG testshttps://git.ligo.org/cds/software/advligorts/-/issues/279RTS control latency high2021-09-27T20:19:59ZErik von ReisRTS control latency highArtemiy Dmitriev wrote in chat:
> This high-speed CDS work is very interesting. Did anyone measure the actual time delay you get when passing a signal through CDS with increased clock frequency?
>
> We have delay of about 200 us at ...Artemiy Dmitriev wrote in chat:
> This high-speed CDS work is very interesting. Did anyone measure the actual time delay you get when passing a signal through CDS with increased clock frequency?
>
> We have delay of about 200 us at our standard 65k setup if we connect input to output directly in the iop model. It gives a linear phase-frequency dependence with phase crossover frequency of about 2.5 kHz. About half of this delay should be coming from AA/AI filters, but the other half (≈100 us) can only come from the front-end itself. This is still much longer than suggested by e.g. slide 8 here , but I guess it is consistent with what others have.
>
> Since we are working with tabletop setups, we are obviously always looking for ways to increase the bandwidth of CDS beyond 1-2 kHz by a factor of ≈10, and it does not seem that there any hardware limitations for that. The IOP model takes 1-2 us to complete with 2-8 filter banks on our machines. We would certainly consider buying faster ADC/DAC cards if this would help us to increase the bandwidth, but we obviously would like to know in advance whether it would help or not.
We should probably aim for no worse than 50 us. We need to develop a reliable way of measuring the latency of A2D -> DAC. Ideally, we could measure distinct latencies from the control loop, the DMA buffers, and analog response of the DAC.