-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExtendedUsersGuide.txt
1100 lines (964 loc) · 78.9 KB
/
ExtendedUsersGuide.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
=====================================
Extended User's guide for MCS-DR/DRSU
=====================================
====================================================================================
Version: DROS-2.3.0.1-RELEASE
Date: 2013-06-23
Author: Christopher Wolfe
====================================================================================
DROS Versions and ICD Version
=============================
The following table outlines the correspondence between different software versions, the
ICD, and what software changes occurred in what versions.
---------------------------------------------------------------------------------------
| DROS Version | ICD version | Posted As | Compliance Issues, Comments |
|---------------|-------------|------------|------------------------------------------|
| 2.0 | 2.0 | MCS0027 | *Added Stokes IV and IQUV modes to |
| | | MCS0025 | spectrometer. |
| | | | *Added additional time/freq. resolutions |
| | | | to spectrometer |
| | | | *Deprecated live buffer and correlator |
| | | | modes |
| | | | *Added Metatags to support modifying |
| | | | command and MIB request behavior |
| | | | *Added support for selecting DRSUs and |
| | | | external storage by number, device id, |
| | | | mount point, or volume name |
| | | | *Added log auto-rotation and context- |
| | | | specific coloring |
| | | | *Added basis for plugin suppport, |
| | | | triggered/flagged recording, and |
| | | | restreaming(via UDP) |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.5.0 | 1.7 | MCS0027 |*Added Beam-correlator mode/command. |
| | | MCS0025 |*Added saturation count fields to |
| | | | spectrometer and beam-correlator output.|
| | | |*Added ability to select DRSU by barcode |
| | | |*Added DRSU-BARCODE MIB entry. |
| | | |*Added TT-LAG and TT-LAG-INITIAL MIB |
| | | | entries to measure DP frame latency. |
| | | |*Added CorrelationViewer utility. |
| | | |*Changed FILE-ENTRY-X to accept negative |
| | | | X values (i.e. enable getting most- |
| | | | recent file without first getting count.|
| | | | Discovered/fixed glitch in spectrometer |
| | | | mode which might prevent output from |
| | | | being generated. |
| | | | Fixed timetag treatment in DROS and |
| | | | associated utilities. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.4.0 | 1.6 | MCS0027 | Fixed SYN glitch competing for ntp socket|
| | | MCS0025 | Fixed messaging glitch which truncated |
| | | | messages due to tokenization. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.3.3 | 1.6 | MCS0027 | Changed spectrometer storage location to |
| | | MCS0025 | '/LWADATA/...'. Fixed ntp service glitch |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.3.2 | 1.5 | MCS0027 | Added CONTIGUOUS-STORAGE MIB entry |
| | | MCS0025 | |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.3.1 | 1.4 | MCS0027 | Fixed issues: |
| | | MCS0025 | 1) fixed off-by-1 fail to start when |
| | | | ArraySelect == # DRSUs detected. |
| | | | 2) added STP support for SPC command |
| | | | 3) changed SPC command to allow |
| | | | unique file names, respond w/ |
| | | | said unique TAG |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.3 | 1.3 | MCS0027 | Added SPC command (spectrometer) |
| | | MCS0025 | Added DRX mode to DataSource |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.2.6- 1.2.9 | --- | NOT | Experimental branches, unreleased. |
| | | POSTED | 1.2.6: EXT4 |
| | | | 1.2.7: DSP plugins (labeled v2.0-DSP) |
| | | | 1.2.8: Spectrometry-via-copy (old OpJup)|
| | | | 1.2.9: Windowing Spectrometer |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.2.5 | 1.3 | MCS0027 | Fixed "garbage data at end of recordings"|
| *** | | MCS0025 | issue. Fixed "Decreasing recording length|
| | | | when requested length is short" issue. |
| | | | Changed the number of files supported |
| | | | from 1023 to 8191. Removed compiled data |
| | | | formats (i.e. recordings must record |
| | | | payload data in entirety) |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.2.4 | 1.2 | MCS0027 | Adds capability to record longer than 24 |
| *** | | MCS0025 | hours (for single DP board LWA1) |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.2.3 | 1.2 | MCS0027 | This release fixes misreported external |
| | | MCS0025 | storage size and DIRECTORY-ENTRY-X MIB |
| | | | entries. Fixes excess bytes appended to |
| | | | CPY / DMP output files. Fixes parameter- |
| | | | passing, and removes the need for |
| | | | the 'launch' script previously used. |
| | | | Also fixes a segfault for recording |
| | | | overflow. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.2.2 | 1.2 | ** | This release updates DRSU detection. |
| | | | |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.2.1 | 1.2 | MCS0027 | This release fixes a buge where all |
| | | MCS0025 | free space preceeding existing recordings|
| | | | would remain unusable by the file system.|
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.2 | 1.2 | MCS0027 | This release fixes CPY and DMP command |
| | | MCS0025 | interpreting leading-zero-numbers as |
| | | | octal, as well as updating the partition |
| | | | identification mechanism from using hard-|
| | | | coded system and DRSU block device IDs. |
| | | | Includes minor ICD typo fixes. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.1 | 1.1 | MCS0027 | This release fixes a few minor output |
| | | MCS0025 | bugs, and updates the ICD to reflect |
| | | | configuration options. Also, response |
| | | | messages are no longer terminated with |
| | | | NULL (ASCII 0) characters. MIB items |
| | | | with variable counts are now 1-based as |
| | | | opposed to previously being 0-based. |
| | | | Also corrected DRUS-preparation portions |
| | | | of this guide. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 1.0 | 1.0 | MCS0027 | This release brings the filesystem reader|
| | | MCS0025 | to beta stage, and adds support for |
| | | | writing in addition to existing reading |
| | | | capabilities. This release also includes |
| | | | MIB branch 1 items, which were not |
| | | | present in previous releases. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 0.9 | 1.0 | MCS0025 + | This release fixes all of the 0.8 issues |
| | | MCS0026 | except formatting of interlock-related |
| | | | rejection responses. This version also |
| | | | includes several utilities to aid in |
| | | | testing, development, integration, etc. |
| | | | This version adds support for live |
| | | | buffering and multiple DRSUs. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 0.8.1* | 0.4 | N/A + | This is the unpublished release |
| | | MCS0020 | version sent to JPL for integration and |
| | | (Only JPL | testing with DP. This version contains |
| | | machine | minor changes to the launch script, |
| | | has this | tar-ball documentation, and removes |
| | | build) | a memory leak. |
| | | | |
|---------------|-------------|------------|------------------------------------------|
| 0.8 | 0.4 | MCS0022 + | This version does not support: |
| | | MCS0020 | * MIB: Branches 5-8,10, and 4.2.X |
| | | | * Commands: CPY, DMP, FMT, UP, DWN, DEL, |
| | | | EJT (now removed). |
| | | | * Several Safety Interlocks |
| | | | |
---------------------------------------------------------------------------------------
* : Documentation in ver 0.8.1 lists version number as 0.8. The only copy of this version
is the tar-ball sent to JPL.
**: version 1.2.2 was has not been published, and distribution tarball for 1.2.3 had listed
it published as MCS0027+MCS0025
***: incremental patched version 1.2.3.01 installed on DR1, DR2 (10DEC2010) is officially
released as version 1.2.4.
Assumptions
===========
This tutorial assumes the following:
1) You are working on an MCS-DR PC with x86_64 Ubuntu 12.04
2) the following packages are installed: libgdbm3, libgdbm-dev, libfuse2,
libfuse-dev, lmsensors, smartmontools, mdadm, libfftw3-dev, fftw3,
libboost-all-dev, gnuplot
and, depending on PC model:
XPS 435MT: coretemp
DELL t1500: f71882fg
3) gnu C/C++ compiler (stdlib, pthreads, librt)
4) You have an assembled DRSU (IAW "LWA Engineering Memo MCS0019")
5) all of the appropriate system hardware has been installed (10GbE, VGA, eSATA)
6) Drivers for the Myricom 10GbE adapter have been built and installed
7) familiarity with Linux. ( build is make all install, no configure currently )
8) optional : another MCS-DR PC or comparable to act as an emulated data source
for testing in lieu of DP.
** 9) You must be root for most of the tasks outlined here. The DROS software needs
root permission to work directly with partitions, so 'sudo su' before doing
anything is easiest. Note that building the software can be done in user space,
but installation requires root privileges. Consequently, you will need login
information:
The default username for MCS-DR PCs is
mcsdr
but may be
chwolfe2
on earlier machines (first PC on-site at LWA1 and PC sent to JPL)
Files and Organization
======================
The top level of this tar-ball contains this file 'QuickStart.txt' and a 'build'
folder. Each folder under 'build' contains the source and makefile for each of the
binaries included in this tar-ball. Also, the build folder itself contains a makefile
for building and installing all of the included components in the tar-ball. This is
the preferred and easiest method of installing everything. More information on each of
the binaries can be found in 'ReadMe' files in each folder under the 'build' folder.
Included Binaries / Source Trees
================================
Data Recorder Operating Software versin 2 (DROS_v2)
===================================================
'WAVE_Y' This is DROS. The main DROS executable and provides all of the
ICD-specified functionality (messaging, recording, etc..)
Support and Utilities
=====================
'Msender' is a command line utility to send messages to and receive responses from
MCS-DR (or any ICD compliant system), and is intended to operate the
MCS-DR in the absence of MCS.
'DataSource' is a simulated data source which can be used to emulate DP output for
testing purposes.
'DataSource2' is a simulated data source which can be used to emulate DP output for
testing purposes.
SpectrogramViewer is a GUI utility to view spectrograms produced by DROSv2
SpectrogramViewer2
Software Installation
=====================
Software installation for the MCS-DR consists of extracting
the tar-ball, building the binaries, and installing them. At the
bash prompt, type:
tar -xvf <tar-ball-file-name>
cd <tar-ball-file-name-minus-'.tar.gz'>/build
make
make install
The 'install' target must be built with root privileges, and the scripts will
install the binaries, scripts, and support files into "/LWA". More information
regarding the build process can be found in the "readme.txt" file in the
root of the WAVE_Y folder.
Note: building the 'install' target will overwrite all files in the /LWA folder,
so be sure to backup configuration files before building.
At the command Line:
>make; make install
This should generate a lot of output ending with:
################################################################
# Notice:
#
# MCS-DR software has been installed to:
# /LWA
#
# The default configuration files are installed to:
# /LWA/config/
#
# You must modify defaults.cfg.example to reflect your network environment.
#
# To launch the software, execute:
# /LWA/bin/DROS
#
# To install the software to run on-boot, execute:
# cd /LWA/scripts; ./installStartupScript.sh /LWA/scripts/StartDROS.sh
#
################################################################
System Configuration
====================
Before the MCS-DR can be used, configuration files must be edited to
reflect your local network environment. The configuration files are located in
'/LWA/config'. Only 'defaults.cfg.example' and 'formats.cfg.example' should be altered.
Once altered, save the files as 'defaults.cfg' and 'formats.cfg', respectively.
The file 'formats.cfg' specifies 3 data formats which were used in testing
and development. If custom formats are required, see the 'FormatsReadme.txt'
In 'defaults.cfg', the 'SelfIP' and 'MessageOutURL' entries correspond to the
MCS-DR's IP address, and the MCS's (or whatever machine the MCS-DR will be
accepting commands from or responding to). 'MessageOutURL' may be localhost
or 127.0.0.1 as long as the message in and out ports are different.
'MyReferenceDesignator' determines the reference designator to which the
MCS-DR will respond. The current default is MD<x> (i.e. DR1, MD2, etc.),
but these have not officially been assigned, and hence this naming scheme
should not be relied upon. The last item that should
be configured is TimeAuthority which specifies the URL or IP of an NTP time
server to use. Currently the MCS-DR does not use ntpd, and syncing is only done
on start-up or at request of the SYN command.
Additionally, you must edit /etc/network/interfaces and /etc/resolv.conf
to suit your local network environment. Depending on which Model MCS-DR PC you
have, your system's Ethernet adapters may be named differently. The MCS-DR PC
will have 2 Ethernet adapters, one 10 GbE for DP data, and one GbE for messaging.
To identify which is which, examine /etc/udev/rules.d/70-persistent-net.rules:
# This file maintains persistent names for network interfaces.
# See udev(7) for syntax.
#
# Entries are automatically added by the 75-persistent-net-generator.rules
# file; however you are also free to add your own entries.
# PCI device 0x8086:0x10cd (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:24:e8:17:dc:7e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x14c1:0x0008 (myri10ge)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:60:dd:46:d7:79", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
The important part is the module identifier in parenthesis. The myri10ge device is
the 10 GbE adapter, and all else should be GbE. So for this example, eth1 identifies the
10 GbE adapter, and eth0 is a GbE for messaging. These should be configured
in accordance with network environment. See Ubuntu documentation for editing
/etc/network/interfaces and /etc/resolv.conf.
More details regarding configuring the DROSv2 software can be found in the WAVE_Y/readme.txt
DRSU preparation
================
Before the MCS-DR can be used, a DRSU storage unit must be assembled, connected
and configured. For assembly instructions, refer to "LWA Engineering Memo MCS0019". Once
the DRSU is assembled and connected, verify that all 5 partitions are visible by typing
'cat /proc/partitions' at the bash prompt. The list of devices should contain the following:
/dev/sda system drive
/dev/sda1 root file system
/dev/sda2
/dev/sda5 swap partition
/dev/sdb DRSU drive # 0
/dev/sdc DRSU drive # 1
/dev/sdd DRSU drive # 2
/dev/sde DRSU drive # 3
/dev/sdf DRSU drive # 4
Once connectivity is verified, prepare the drive for usage by creating a software raid array.
At the prompt:
>mdadm -C /dev/md0 -c 256 -l 0 -n 5 /dev/sd{b,c,d,e,f}
mdadm: /dev/md0 has been started with 5 drives.
If the DRSU has already been previously prepared, then doing the above could damage the data.
If you have previously created an array and don't wish to destroy data:
>mdadm --assemble /dev/md0 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
mdadm: /dev/md0 has been started with 5 drives.
This will start the array from the specified drives without deleting the contents.
However, this configuration of the DRSU will not be preserved at the next boot.
To preserve the drive configuration, necessary for normal DROSv2 operation, perform
the above, and then do:
>cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.QS.bak
>mdadm --examine --scan > /etc/mdadm.conf
>cat /etc/mdadm/mdadm.conf
This should backup the config file, write current array config to the file, and then
list the contents, something like:
ARRAY /dev/md0 level=raid0 num-devices=5 UUID=410a299e:4cdd535e:169d3df4:48b7144a
UUID will be different.
On each boot, mdadm will scan for drives. If the DRSUs drives haven't initialized yet,
the array might not be started properly. If so, see the trouble shooting section later
in this document.
Also, some excellent documentation on mdadm in general is available at:
http://ubuntuforums.org/showthread.php?t=408461
http://linuxdevcenter.com/pub/a/linux/2002/12/05/RAID.html?page=1
http://linuxcommand.org/man_pages/mdadm8.html
Each drive in the DRSU, once configured, will contain a md superblock. In a multi-DRSU
environment, you may have to examine the superblocks of a previously created array to
know which drives belong to which DRSU (example here using /dev/sdc1 ex. from above URL).
>mdadm -E /dev/sdc1
/dev/sdc1:
Magic : a92b4efc
Version : 00.90.00
*** UUID : 84788b68:1bb79088:9a73ebcc:2ab430da
Creation Time : Mon Sep 23 16:02:33 2002
Raid Level : raid0
Device Size : 17920384 (17.09 GiB 18.40 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Update Time : Mon Sep 23 16:14:52 2002
State : clean, no-errors
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Checksum : 8ab5e437 - correct
Events : 0.10
Chunk Size : 128K
Number Major Minor RaidDevice State
this 1 8 33 1 active sync /dev/sdc1
0 0 8 17 0 active sync /dev/sdb1
1 1 8 33 1 active sync /dev/sdc1
2 2 8 49 2 active sync /dev/sdd1
3 3 8 65 3 active sync /dev/sde1
This example shows /dev/sdc1 as belonging to a RAID 0 array of 5 drives (like DRSUs).
The important thing to note is the UUID at top which will be common for all members
of an array, and will also be the UUID specified in the mdadm.conf file we created. I
recommend recording this number on a label on the DRSU as this may save time and headaches
later when/if DRSUs are moved around frequently. This UUID will change if the array is
re-created. Note that the device names and order may change between boots, but that as
long as the device's md superblock is not altered, mdadm is "smart-enough" to figure it
out.
Formatting the DRSU
===================
DRSUs are now based on the EXT4 file system with a specific set of options.
To prepare a DROSv2 compliant filesystem on the RAID array, do the following:
At the command prompt:
>sudo /LWA/scripts/StorageControl.sh format /dev/md0 MyDrsuBarcode
You should see something similar to:
mke2fs 1.42 (29-Nov-2011)
Filesystem label='myDrsuBarcode'
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=64 blocks, Stripe width=320 blocks
1192336 inodes, 2441893120 blocks
122094656 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
74521 block groups
32768 blocks per group, 32768 fragments per group
16 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544, 1934917632
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information:
Complete!!!
To mount the new DRSU, type 'mount -t ext4 -o defaults,data=writeback,noatime,barrier=0 /dev/md0 <mountpoint>' Or Use this script to enable use with DROS.
Mounting the DRSU
=================
This will be done automatically by DROSv2, but if you wish to view the files, you may mount
manually. To mount the new DRSU, type:
>sudo mount -t ext4 -o defaults,data=writeback,noatime,barrier=0 /dev/md0 <mountpoint>
Readiness Check-list
====================
At this point, you should have:
1) An MCS-DR PC with x86_64 Ubuntu 12.04
packages: C++, libgdbm3, libgdbm-dev, libfuse2, libfuse-dev, lmsensors, smartmontools
mdadm, and, depending on PC model:
XPS 435MT: coretemp
DELL t1500: f71882fg
2) A freshly built version 'DROS-2.3.0.1-RELEASE' of the DROSv2 software
3) Configuration files modified to suit the local environment
4) An assembled DRSU
5) A raid 0 array on the DRSU visible as /dev/md0 in /proc/partitions
First Run : Running the application
===================================
Normally, the DROSv2 binary is launched from a rc.d script, but the first
time it is run, I recommend launching it directly. The DROSv2 software is still in the
beta stage, and catching error messages may prove more difficult from within the script.
To launch the binary directly, type '/LWA/bin/DROS2'
====================================================
The following will be displayed:
========================== Logfile rotated ==========================
========================== Logfile opened ==========================
FATAL: Error inserting f71882fg (/lib/modules/3.2.0-30-generic/kernel/drivers/hwmon/f71882fg.ko): No such device
2012-11-09 23:09:24.415 [I] message originating in ../System/System.cpp:134
[I] [System ] ======================= Active Thread Report =======================
[I] [System ] [ 0]: tid = 13279
[I] [System ] ===================== End Active Thread Report =====================
2012-11-09 23:09:24.416 [I] [System ] [System] Booting Start
2012-11-09 23:09:24.416 [I] [System ] [System] Hardware CPU count: 8
2012-11-09 23:09:24.416 [I] [System ] [System] Read config...
2012-11-09 23:09:24.416 [I] [System ] Configuration data loaded...
2012-11-09 23:09:24.416 [D] message originating in ../System/Config.cpp:98
[D] [System ] MyReferenceDesignator DR1
[D] [System ] SelfIp 192.168.1.20
[D] [System ] MessageInPort 5000
[D] [System ] MessageOutPort 5001
[D] [System ] TimeAuthority Time.Ubuntu.com
[D] [System ] SerialNumber 0
[D] [System ] ArraySelect 1
[D] [System ] DataInPort 16180
2012-11-09 23:09:24.417 [I] [System ] [System] Scan storage devices...
2012-11-09 23:09:24.417 [I] [System ] Beginning storage subsystem initialization.
< will pause here for a few minutes >
2012-11-09 23:10:20.880 [D] message originating in ../System/Storage.cpp:200
[D] [System ] ls /LWA_STORAGE/Internal:
[D] [System ] 0
[D] [System ] '
2012-11-09 23:10:20.911 [D] [System ] Examining '/LWA_STORAGE/Internal/0'
2012-11-09 23:10:23.431 [D] [System ] Watched folder re-read '/LWA_STORAGE/Internal/0/DROS/Rec'
2012-11-09 23:10:23.442 [D] [System ] Watched folder re-read '/LWA_STORAGE/Internal/0/DROS/Spec'
2012-11-09 23:10:23.445 [D] [System ] Watched folder re-read '/LWA_STORAGE/Internal/0/DROS/Corr'
2012-11-09 23:10:23.445 [D] message originating in ../System/Storage.cpp:721
[D] [System ] Opened storage volume
[D] [System ] Type Internal
[D] [System ] Partition /dev/md0
[D] [System ] Mountpoint /LWA_STORAGE/Internal/0
[D] [System ] Volume Name hello55
[D] [System ] Block Size 4.00000 KiB
[D] [System ] Block Count 2441893120
[D] [System ] Size 9.09676 TiB
[D] [System ] Number Drives 5
[D] [System ] Raid Stride Size 256.00000 KiB
[D] [System ] Raid Stripe Size 1.25000 MiB
2012-11-09 23:10:23.467 [D] [System ] Examining '/LWA_STORAGE/External/0'
2012-11-09 23:10:23.524 [D] [System ] Watched folder re-read '/LWA_STORAGE/External/0/DROS/'
2012-11-09 23:10:23.534 [D] message originating in ../System/Storage.cpp:721
[D] [System ] Opened storage volume
[D] [System ] Type External
[D] [System ] Partition /dev/sdg1
[D] [System ] Mountpoint /LWA_STORAGE/External/0
[D] [System ] Volume Name puppy
[D] [System ] Block Size 4.00000 KiB
[D] [System ] Block Count 58564864
[D] [System ] Size 223.40723 GiB
[D] [System ] Number Drives 1
[D] [System ] Raid Stride Size 0.00000 B
[D] [System ] Raid Stripe Size 0.00000 B
2012-11-09 23:10:23.535 [I] [System ] Storage subsystem initialized!!!
2012-11-09 23:10:23.535 [I] message originating in ../System/Storage.cpp:142
[I] [System ] ============================================================
[I] [System ] == Storage Subsystem Report ==
[I] [System ] ============================================================
[I] [System ] == -- Online --- ==
[I] [System ] == Number Internal Devices: 1
[I] [System ] == Internal device 0
[I] [System ] == Type Internal
[I] [System ] == Partition /dev/md0
[I] [System ] == Mountpoint /LWA_STORAGE/Internal/0
[I] [System ] == Volume Name hello55
[I] [System ] == Block Size 4.00000 KiB
[I] [System ] == Block Count 2441893120
[I] [System ] == Size 9.09676 TiB
[I] [System ] == Number Drives 5
[I] [System ] == Raid Stride Size 256.00000 KiB
[I] [System ] == Raid Stripe Size 1.25000 MiB
[I] [System ] == Monitored folders 3
[I] [System ] == * Monitored folder 0 (Purpose: General)
[I] [System ] == /LWA_STORAGE/Internal/0/DROS/Rec
[I] [System ] == ** File 0: '056232_000000000' 2.32035 GiB (2.32036 GiB allocated)
[I] [System ] == ** File 1: '056232_000000004' 2.20256 GiB (2.20257 GiB allocated)
[I] [System ] == ** File 2: '056233_000000108' 75.99536 MiB (76.00000 MiB allocated)
[I] [System ] == ** File 3: '056233_000000109' 77.40472 MiB (77.41016 MiB allocated)
[I] [System ] ==
[I] [System ] == * Monitored folder 1 (Purpose: Spectrogram)
[I] [System ] == /LWA_STORAGE/Internal/0/DROS/Spec
[I] [System ] == ** File 0: '056238_000000087' 2.19040 MiB (2.19531 MiB allocated)
[I] [System ] == ** File 1: '056238_000000088' 186.91406 KiB (192.00000 KiB allocated)
[I] [System ] == ** File 2: '056238_000000089' 0.00000 B (4.00000 KiB allocated)
[I] [System ] == ** File 3: '056238_000000090' 0.00000 B (4.00000 KiB allocated)
[I] [System ] == ** File 4: '056238_000000091' 1.49026 MiB (1.49609 MiB allocated)
<additional output not shown, will vary by DRSU content>
[I] [System ] == ** File 60: '056240_000000018' 34.68132 MiB (34.68750 MiB allocated)
[I] [System ] == ** File 61: '056240_000000019' 25.18959 MiB (25.19531 MiB allocated)
[I] [System ] == ** File 62: '056240_000000020' 48.86770 MiB (48.87500 MiB allocated)
[I] [System ] ==
[I] [System ] == * Monitored folder 2 (Purpose: Correlation)
[I] [System ] == /LWA_STORAGE/Internal/0/DROS/Corr
[I] [System ] ==
[I] [System ] == Active Files 0
[I] [System ] == ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ==
[I] [System ] ==
[I] [System ] == Number External Devices: 1
[I] [System ] == External device 0
[I] [System ] == Type External
[I] [System ] == Partition /dev/sdg1
[I] [System ] == Mountpoint /LWA_STORAGE/External/0
[I] [System ] == Volume Name puppy
[I] [System ] == Block Size 4.00000 KiB
[I] [System ] == Block Count 58564864
[I] [System ] == Size 223.40723 GiB
[I] [System ] == Number Drives 1
[I] [System ] == Raid Stride Size 0.00000 B
[I] [System ] == Raid Stripe Size 0.00000 B
[I] [System ] == Monitored folders 1
[I] [System ] == * Monitored folder 0 (Purpose: General)
[I] [System ] == /LWA_STORAGE/External/0/DROS/
[I] [System ] ==
[I] [System ] == Active Files 0
[I] [System ] == ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ==
[I] [System ] ==
[I] [System ] ============================================================
[I] [System ] == End Report ==
[I] [System ] ============================================================
2012-11-09 23:10:23.539 [D] [System ] RESOLVE BY INDEX
2012-11-09 23:10:23.539 [D] [System ] RESOLVED TO 0
2012-11-09 23:10:23.540 [I] [System ] [System] Initialize scheduler...
2012-11-09 23:10:23.540 [I] [System ] [System] Initialize receive buffer...
2012-11-09 23:10:23.540 [I] [Schedule ] [GenericThread] : Set CPU affinity : '0'
2012-11-09 23:10:23.540 [I] [Schedule ] [GenericThread] : Set priority : '-1'
2012-11-09 23:10:23.540 [I] [Schedule ] [Schedule] started scheduler.
2012-11-09 23:10:23.540 [I] [System ] [System] Initialize receiver...
2012-11-09 23:10:23.540 [I] [System ] [System] Wait for receiver to start...
2012-11-09 23:10:23.572 [I] [Receiver ] [GenericThread] : Set CPU affinity : '1'
2012-11-09 23:10:23.573 [I] [Receiver ] [GenericThread] : Set priority : '-2'
2012-11-09 23:10:23.573 [I] [Receiver ] [Receiver] initializing ...
2012-11-09 23:10:23.573 [D] [Receiver ] [TicketBuffer:MasterReceiveBuffer] Resizing to 1.00000 GiB with 4.03125 KiB frames and 1016 frames/ticket
2012-11-09 23:10:23.574 [D] [Receiver ] [TicketBuffer:MasterReceiveBuffer] Destroyed 0 old tickets
2012-11-09 23:10:23.574 [D] [Receiver ] [TicketBuffer:MasterReceiveBuffer] Created 256 new tickets
2012-11-09 23:10:23.587 [D] [Receiver ] [TicketBuffer:MasterReceiveBuffer] Resizing complete
2012-11-09 23:10:23.588 [I] [Receiver ] [Receiver] opened data socket on port 16180
Socket opened on port 16180.
2012-11-09 23:10:23.588 [I] [System ] [System] Start messaging responder...
2012-11-09 23:10:23.588 [I] [Receiver ] [Receiver] Buffer usage: [________________________________________] ( 0%)
2012-11-09 23:10:23.588 [D] [System ] WaitQueue 'ResponseSender' constructed.
2012-11-09 23:10:23.588 [I] [Receiver ] [Receiver] Receive rate: [________________________________________] ( 0%) 0.00000 B/s
2012-11-09 23:10:23.588 [I] [Receiver ] [Receiver] Subscribers 0
2012-11-09 23:10:23.588 [D] [System ] [WaitQueueManager] Registered queue 'ResponseSender'.
2012-11-09 23:10:23.588 [I] [System ] [System] Start message processor...
2012-11-09 23:10:23.589 [D] [System ] WaitQueue 'MessageProcessor' constructed.
2012-11-09 23:10:23.589 [D] [System ] [WaitQueueManager] Registered queue 'MessageProcessor'.
2012-11-09 23:10:23.589 [I] [System ] [System] Start message receiver...
2012-11-09 23:10:23.589 [I] [System ] [MessageListener] : Messaging socket opened on port5000
2012-11-09 23:10:23.589 [I] [System ] [System] Determining system status...
2012-11-09 23:10:23.589 [I] [System ] [System] system is 'NORMAL '
2012-11-09 23:10:23.589 [I] [System ] [System] Booting Complete
At this point, the system is up and listening for command messages. It should periodically spit out messages indicating buffer usage: as below:
2012-11-09 23:10:23.588 [I] [Receiver ] [Receiver] Buffer usage: [________________________________________] ( 0%)
2012-11-09 23:10:23.588 [I] [Receiver ] [Receiver] Receive rate: [________________________________________] ( 0%) 0.00000 B/s
2012-11-09 23:10:23.588 [I] [Receiver ] [Receiver] Subscribers 0
To test messaging, use the included Msender utility.
===================================================
*** In a new terminal ****:
>/LWA/bin/Msender -v -Source "MCS" -Destination "DR1" -Type "PNG" -ReferenceNumber 0 -DestinationIpAddress localhost -DestinationPort 5001 -ResponseListenPort 5000
On the original terminal you should see:
2012-11-09 23:16:03.934 [I] [MessageListener ] >> Message(56240:83763934, MCS, DR1, 1, PNG, 0, '' ) 127.0.0.1:39352
2012-11-09 23:16:03.935 [I] [ResponseSender ] << Response(56240:83763935, DR1, MCS, 1, PNG, 8, Accept, NORMAL , '', '' ) 127.0.0.1:5001
On the new terminal you should see:
[send]Message :
[send] Sender: MCS
[send] Destination: DR1
[send] Type: PNG
[send] Reference: 0
[send] Modified Julian Day: 56240
[send] Milliseconds Past Midnight: 83763934
[send] Data Length: 0
[send] Data: No Data Specified
[recv]Response :
[recv] Sender: DR1
[recv] Destination: MCS
[recv] Type: PNG
[recv] Reference: 0
[recv] Modified Julian Day: 56240
[recv] Milliseconds Past Midnight: 83763935
[recv] Accept/Reject: Accepted
[recv] General Status: NORMAL
[recv] Comment: No Comment Specified
[recv] Data Length: 9
[recv] Data:
[recv] < 0>: 41 4e 4f 52 4d 41 4c 20 0
Normal operation:
==============================================
Once communication has been verified, and nothing looks fishy with output, then
installing the DROSv2 software to run on boot will enable normal operation
First we need to cause the initial run of DROSv2 to exit. In the new terminal:
>/LWA/bin/Msender -v -Source "MCS" -Destination "DR1" -Type "SHT" -ReferenceNumber 0 -DestinationIpAddress localhost -DestinationPort 5001 -ResponseListenPort 5000
On the original terminal you should see:
2012-11-09 23:22:39.684 [I] [MessageListener ] >> Message(56240:84159683, MCS, DR1, 3, SHT, 0, '' ) 127.0.0.1:31903
2012-11-09 23:22:39.685 [I] [ResponseSender ] << Response(56240:84159684, DR1, MCS, 3, SHT, 8, Accept, NORMAL , '', '' ) 127.0.0.1:5001
2012-11-09 23:22:40.445 [I] [System ] [System] Shutdown Start
2012-11-09 23:22:40.446 [I] [System ] [System] Shutting down message receiver...
2012-11-09 23:22:40.735 [I] [MessageListener ] [MessageListener] Stopped.
2012-11-09 23:22:40.735 [I] [System ] [System] Shutting down message processor...
2012-11-09 23:22:40.738 [I] [MessageProcessor] [MessageProcessor] Stopped.
2012-11-09 23:22:40.738 [D] [System ] [WaitQueueManager] Unregistered queue 'MessageProcessor'.
2012-11-09 23:22:40.738 [D] [System ] WaitQueue 'MessageProcessor' destroyed.
2012-11-09 23:22:40.738 [I] [System ] [System] Shutting down message responder...
2012-11-09 23:22:40.788 [I] [ResponseSender ] [ResponseSender] Stopped.
2012-11-09 23:22:40.788 [D] [System ] [WaitQueueManager] Unregistered queue 'ResponseSender'.
2012-11-09 23:22:40.788 [D] [System ] WaitQueue 'ResponseSender' destroyed.
2012-11-09 23:22:40.789 [I] [System ] [System] Shutting down receiver...
2012-11-09 23:22:40.941 [I] [Receiver ] [Receiver] finalizing ...
2012-11-09 23:22:40.941 [I] [Receiver ] [Receiver] closed data socket on port 16180
2012-11-09 23:22:40.941 [I] [System ] [System] Destroying receive buffer...
2012-11-09 23:22:40.941 [D] [System ] [TicketBuffer:MasterReceiveBuffer] Releasing resources
2012-11-09 23:22:40.942 [D] [System ] [TicketBuffer:MasterReceiveBuffer] Resource release complete
2012-11-09 23:22:40.942 [I] [System ] [System] Shutting down scheduler...
2012-11-09 23:22:40.999 [I] [Schedule ] [Schedule] stopped scheduler.
2012-11-09 23:22:40.999 [I] [System ] [System] Shutting down storage...
2012-11-09 23:22:41.000 [I] [System ] START DOWN
2012-11-09 23:22:41.000 [I] [System ] DOWN EXT:puppy
2012-11-09 23:22:41.000 [D] message originating in ../System/Storage.cpp:605
[D] [System ] Closed storage volume
[D] [System ] Type External
[D] [System ] Partition /dev/sdg1
[D] [System ] Mountpoint /LWA_STORAGE/External/0
[D] [System ] Volume Name puppy
2012-11-09 23:22:41.401 [I] [System ] DOWN INT:hello55
2012-11-09 23:22:41.401 [D] message originating in ../System/Storage.cpp:605
[D] [System ] Closed storage volume
[D] [System ] Type Internal
[D] [System ] Partition /dev/md0
[D] [System ] Mountpoint /LWA_STORAGE/Internal/0
[D] [System ] Volume Name hello55
2012-11-09 23:22:41.401 [I] [System ] DOWN FT_GENERAL
2012-11-09 23:22:41.881 [I] [System ] DOWN FT_SPECTROMETER
2012-11-09 23:22:42.393 [I] [System ] DOWN FT_CORRELATION
2012-11-09 23:22:42.869 [I] [System ] DOWN DONEISH
2012-11-09 23:22:42.869 [I] message originating in ../System/Storage.cpp:142
[I] [System ] ============================================================
[I] [System ] == Storage Subsystem Report ==
[I] [System ] ============================================================
[I] [System ] == -- Offline -- ==
[I] [System ] ============================================================
[I] [System ] == End Report ==
[I] [System ] ============================================================
2012-11-09 23:22:42.869 [I] [System ] [System] Shutting down config...
2012-11-09 23:22:42.870 [I] [System ] Configuration data saved...
2012-11-09 23:22:42.870 [I] [System ] [System] Shutdown Complete
========================== Logfile closed ==========================
On the new terminal you should see:
[send]Message :
[send] Sender: MCS
[send] Destination: DR1
[send] Type: SHT
[send] Reference: 0
[send] Modified Julian Day: 55240
[send] Milliseconds Past Midnight: 12847605
[send] Data Length: 0
[send] Data: No Data Specified
[recv]Response :
[recv] Sender: DR1
[recv] Destination: MCS
[recv] Type: SHT
[recv] Reference: 0
[recv] Modified Julian Day: 55240
[recv] Milliseconds Past Midnight: 12847605
[recv] Accept/Reject: Accepted
[recv] General Status: SHUTDWN
[recv] Comment: No Comment Specified
[recv] Data Length: 9
[recv] Data:
[recv] < 0>: 41 53 48 55 54 44 57 4e 0
To install the DROSv2 software to start on system boot, execute the following:
>cd /LWA/scripts
>./installStartupScript.sh StartDROS.sh
Terminal output should be as follows:
update-rc.d: warning: /etc/init.d/StartDROS.sh missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
Adding system startup for /etc/init.d/StartDROS.sh ...
/etc/rc0.d/K99StartDROS.sh -> ../init.d/StartDROS.sh
/etc/rc1.d/K99StartDROS.sh -> ../init.d/StartDROS.sh
/etc/rc6.d/K99StartDROS.sh -> ../init.d/StartDROS.sh
/etc/rc2.d/S99StartDROS.sh -> ../init.d/StartDROS.sh
/etc/rc3.d/S99StartDROS.sh -> ../init.d/StartDROS.sh
/etc/rc4.d/S99StartDROS.sh -> ../init.d/StartDROS.sh
/etc/rc5.d/S99StartDROS.sh -> ../init.d/StartDROS.sh
Next, reboot the system, and verify that DROSv2 is communicating, as in the first-time launch above.
If DROSv2 is not responding, inspect the files in '/LWA/runtime'. Generally, the following files
should be present:
root@MD3:/home/mcsdr# ls -l /LWA/runtime/
total 28
-rw-r--r-- 1 root root 12636 2010-12-06 04:55 runtime.log
'runtime.log' console log of output of the WAVE_Y process.
'runtime.log.XXX.tgz' older, rotated console log of output of the WAVE_Y process.
'DROS_crash_log_<DATE>_<TIME>.tgz' crash log generated due to DROS crash
The runtime log is generally the first place to look if something isn't working correctly.
This log contains all the colsole output, including accessory information that is not logged
internally to DROS (that is, items accessible through the MIB).
Once the software is installed and verified, usage is the same as before, although terminal output
is directed to the runtime log.
Scheduling a recording
======================
Directions to begin a recording will vary depending on what method of controlling the
MCS-DR is employed, but examples are given here using the Msender utility included in the
tar-ball. Issuing the following:
/LWA/bin/Msender -Source MCS -Destination DR1 -Type REC -ReferenceNumber 123456789
-DestinationIpAddress localhost -DestinationPort 5000 -ResponseListenPort 5001
-Data "xxxxxx yyyyyyyyy zzzzzzzzz FFFFFFFFFFFFFF...FFF"
will request that a recording of z milliseconds in length be recorded on the day with MJD=x,
at time MPM=y using data format specified by F. The combination of F and z determine how much
storage is required to honor the request, and an error will be generated if the DRSU does not
have enough free space. In order to process the request, it must be received at least
5-10 seconds before the scheduled start time of the recording. Once a recording is
successfully scheduled, the scheduler will de-queue the entry, and wait for the recording to
begin. Just prior to the actual start of the recording (by about 2.5s), the scheduler will
perform any pre-recording operations (open files, seek, etc.), and output to that effect
will be displayed on the DROS's terminal/console window. Once the exact specified MPM arrives,
the DROS will start recording, and will periodically display the number of bytes received.
The exact frequency varies, but is on the order of a half second or so.
Once the specified end time is reached, the scheduler will close the socket, and write any
buffered data to the file, and perform any clean-up operations / file system syncing.
approximately 5 seconds of down time must be included between the end of one operation and
the beginning of the next.
At the command line (remember to substitute appropriate config and time info):
>/LWA/bin/Msender -v -Source MCS -Destination DR1 -Type REC -ReferenceNumber 1 \
-DestinationIpAddress localhost -DestinationPort 5001 -ResponseListenPort 5000 \
-Data "55240 13500000 10000 DEFAULT_TBN"
In the second terminal, you should see:
[send]Message :
[send] Sender: MCS
[send] Destination: DR1
[send] Type: REC
[send] Reference: 1
[send] Modified Julian Day: 55240
[send] Milliseconds Past Midnight: 13276747
[send] Data Length: 32
[send] Data: 55240 13500000 10000 DEFAULT_TBN
[send] < 0>: 35 35 32 34 30 20 31 33 35 30 30 30 30 30 20 31
[send] < 10>: 30 30 30 30 20 44 45 46 41 55 4c 54 5f 54 42 4e
[recv]Response :
[recv] Sender: DR1
[recv] Destination: MCS
[recv] Type: REC
[recv] Reference: 1
[recv] Modified Julian Day: 55240
[recv] Milliseconds Past Midnight: 13276752
[recv] Accept/Reject: Accepted
[recv] General Status: NORMAL
[recv] Comment: 056240_000000004
[recv] Data Length: 25
[recv] Data:
[recv] < 0>: 41 4e 4f 52 4d 41 4c 20 30 35 35 32 34 30 5f 30
[recv] < 10>: 30 30 30 30 30 30 30 31 0
This notifies us that the command was received and the the file 056240_000000004 will
be used to hold the data.
In '/LWA/runtime/runtime.log', you should see:
2012-11-09 23:54:23.979 [I] [MessageListener ] >> Message(56240:86063978, MCS, DR1, 4, REC, 34, '056240 086066978 30000 DEFAULT_TBN' ) 127.0.0.1:47029
2012-11-09 23:54:23.980 [D] [Folder Watcher ] Watched folder '/LWA_STORAGE/Internal/0/DROS/Rec' select returned 1
2012-11-09 23:54:23.980 [D] [Folder Watcher ] Watched folder re-read '/LWA_STORAGE/Internal/0/DROS/Rec'
2012-11-09 23:54:23.980 [I] [MessageProcessor] [Scheduler] Scheduled operation 'Record 000000004 056240 086066978 056240 086096978 DEFAULT_TBN
2012-11-09 23:54:23.981 [I] [ResponseSender ] << Response(56240:86063980, DR1, MCS, 4, REC, 24, Accept, NORMAL , '056240 086066978 30000 DEFAULT_TBN', '056240_000000004' ) 127.0.0.1:5001
2012-11-09 23:54:24.478 [I] [Schedule ] [Schedule] window start current operation: Record 000000004 056240 086066978 056240 086096978 DEFAULT_TBN
2012-11-09 23:54:24.478 [I] [Schedule ] [RECORD] Starting recorder
2012-11-09 23:54:24.478 [I] [Schedule ] [RECORD] Recorder started
2012-11-09 23:54:24.478 [I] [FileWriter:/ ...] [GenericThread] : Set CPU affinity : '2'
2012-11-09 23:54:24.478 [I] [FileWriter:/ ...] [GenericThread] : Set priority : '-2'
2012-11-09 23:54:24.478 [I] [FileWriter:/ ...] [RECORD] FileWriter thread started
2012-11-09 23:54:24.478 [D] [FileWriter:/ ...] [TicketBuffer:MasterReceiveBuffer] <SUBSCRIBE:FileWriter:/LWA_STORAGE/Internal/0/DROS/Rec/056240_000000004>
2012-11-09 23:54:26.978 [I] [Schedule ] [Schedule] execution start current operation: Record 000000004 056240 086066978 056240 086096978 DEFAULT_TBN
2012-11-09 23:54:26.978 [I] [FileWriter:/ ...] [RECORD] FileWriter record started
Sometime later you should see:
2012-11-09 23:54:50.924 [I] [Receiver ] [Receiver] Buffer usage: [________________________________________] ( 0%)
2012-11-09 23:54:50.925 [I] [Receiver ] [Receiver] Receive rate: [________________________________________] ( 0%) 0.00000 B/s
2012-11-09 23:54:50.925 [I] [Receiver ] [Receiver] Subscribers 1
2012-11-09 23:54:56.997 [I] [Schedule ] [Schedule] execution stop current operation: Record 000000004 056240 086066978 056240 086096978 DEFAULT_TBN
2012-11-09 23:54:56.997 [I] [Schedule ] [RECORD] Waiting on recorder cleanup
2012-11-09 23:54:56.997 [I] [FileWriter:/ ...] [RECORD] FileWriter record finished
2012-11-09 23:54:56.997 [D] [FileWriter:/ ...] [TicketBuffer:MasterReceiveBuffer] ENTER UNSUBSCRIBE >
2012-11-09 23:54:56.997 [D] [FileWriter:/ ...] [TicketBuffer:MasterReceiveBuffer] <UNSUBSCRIBE:FileWriter:/LWA_STORAGE/Internal/0/DROS/Rec/056240_000000004>
2012-11-09 23:54:56.998 [D] [FileWriter:/ ...] [TicketBuffer:MasterReceiveBuffer] Last subscriber unsubscribed
2012-11-09 23:54:56.998 [D] [FileWriter:/ ...] [TicketBuffer:MasterReceiveBuffer] LEAVE UNSUBSCRIBE >
2012-11-09 23:54:56.998 [I] [FileWriter:/ ...] [RECORD] FileWriter thread finished
2012-11-09 23:54:57.497 [I] [Schedule ] [RECORD] Recorder cleanup complete
2012-11-09 23:54:59.504 [I] [Schedule ] [Schedule] window stop current operation: Record 000000004 056240 086066978 056240 086096978 DEFAULT_TBN
2012-11-09 23:54:59.504 [I] [Schedule ] [Schedule] completed as scheduled: Record 000000004 056240 086066978 056240 086096978 DEFAULT_TBN
2012-11-09 23:54:59.504 [I] [Schedule ] [Schedule] ===========================================
In this example, the recording was for 10 seconds, but no data source was attached,
consequently, Bytes Received is always 0. If a data source is connected and configured
to send to the MCS-DR, these numbers will be non-zero.
Now, to verify that the recording was made, issue a DIRECTORY-ENTRY-X MIB request:
>/LWA/bin/Msender -v -Source MCS -Destination DR1 -Type RPT -ReferenceNumber 1 \
-DestinationIpAddress localhost -DestinationPort 5001 -ResponseListenPort 5000 -Data "DIRECTORY-ENTRY-0"
On the second terminal you should see:
[send]Message :
[send] Sender: MCS
[send] Destination: DR1
[send] Type: RPT
[send] Reference: 1
[send] Modified Julian Day: 55240
[send] Milliseconds Past Midnight: 15455362
[send] Data Length: 17
[send] Data: DIRECTORY-ENTRY-0
[send] < 0>: 44 49 52 45 43 54 4f 52 59 2d 45 4e 54 52 59 2d
[send] < 10>: 30
[recv]Response :
[recv] Sender: DR1
[recv] Destination: MCS
[recv] Type: RPT
[recv] Reference: 1
[recv] Modified Julian Day: 55240
[recv] Milliseconds Past Midnight: 15455364
[recv] Accept/Reject: Accepted
[recv] General Status: NORMAL
[recv] Comment: 056240_000000004 056240 013500000 056240 013510000 DEFAULT_TBN 000000000000000 000000000004096 YES
[recv] Data Length: 128
[recv] Data:
[recv] < 0>: 41 4e 4f 52 4d 41 4c 20 30 35 35 32 34 30 5f 30
[recv] < 10>: 30 30 30 30 30 30 30 31 20 30 35 35 32 34 30 20
[recv] < 20>: 30 31 33 35 30 30 30 30 30 20 30 35 35 32 34 30
[recv] < 30>: 20 30 31 33 35 31 30 30 30 30 20 20 20 20 20 20
[recv] < 40>: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
[recv] < 50>: 44 45 46 41 55 4c 54 5f 54 42 4e 20 30 30 30 30
[recv] < 60>: 30 30 30 30 30 30 30 30 30 30 30 20 30 30 30 30
[recv] < 70>: 30 30 30 30 30 30 30 34 30 39 36 20 59 45 53 0
Retrieving recorded data
========================
There are 3 methods of retrieving recorded data:
1) Use the GET command to retrieve small chunks of data
2) Use the CPY command to copy a selection of data to a file on an external drive
3) Use the DMP command to copy a selection into a series of files on an external drive
Method 1)
The get command takes arguments "<File name> <Start position> <length>", and length must
fit within the the data field of a response message, so about 8000 bytes or less at a a time.
Obviously, retrieving data this way is not going to be as fast as the recording rate. The
following is an example of retrieving data for visual inspection using the Msender utility:
>/LWA/bin/Msender -v -Source MCS -Destination DR1 -Type GET -ReferenceNumber 123456790 \
-DestinationIpAddress localhost -DestinationPort 5001 -ResponseListenPort 5000 -Data \
"056240_000000004 000000000 4096"
This would retrieve the 4096 bytes starting at position 0 from the file 056240_000000004.
Note: Recording file names are constructed automatically from the MJD and reference number of
the REC command. The -v flag tells Msender to display both the outgoing message and response.
In our example, no data was recorded, so MCS-DR will respond with an 'Invalid range' because
while the file exists, it has a 0 length (length is updated to reflect the actual recorded amount
of data when a recording completes). Had there been any recorded data, this would show the
message/response session and the data from the recording would be returned in the response's
data field -- and consequently displayed in hex by the Msender utility.
Method 2,3)
The CPY and DMP commands are identical barring the specification of file size for DMP.
Arguments are "<Tag> <Start Byte> <Length> <Block Size> <Device ID> <Filename>" for DMP and
"<Tag> <Start Byte> <Length> <Device ID> <Filename>" for CPY.
Assuming you had an external drive attached which showed as /dev/sdk,
>/LWA/bin/Msender -v -Source MCS -Destination DR1 -Type DMP -ReferenceNumber 123456790 \
-DestinationIpAddress localhost -DestinationPort 5001 -ResponseListenPort 5000 -Data \
"056240_000000004 000000000 000004096 000000016 /dev/sdk MyFirstDataSeries"
would create a data series in the root folder of /dev/sdk1 named MyFirstDataSeries.000 through
MyFirstDataSeries.255. Each would be 16 bytes in size, and altogether would constitute the
first 4096 bytes of the file. The output for both the CPY and DMP commands is similar to the