The Spectrum XMC1151 digitizer libraries we have require a specific flavour of Linux to operate.
Download the specific version by getting the http://vault.centos.org/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso which is the “minimal” CentOS 6.5.
Kernel from OS install 2016.04.14
Linux lvisf 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Using the 500_00746_r100_SDR7000_Linux_SG.pdf document, set up the core data system.
NOTE: Press the Delete key while booting in order to change the boot to either the USB PLEXTOR drive or the LEXAR CFAST drive
ONBOOT=yes
sudo ifup eth0
yum groupinstall 'Development Tools'
yum install nano -y yum install wget -y
mkdir ~/down cd ~/down wget https://downloadmirror.intel.com/13663/eng/igb-5.3.5.3.tar.gz
tar xvf igb-5.3.4.4.tar.gz
cd ~/tmp/igb-5.3.4.4/src/ make sudo make install
sudo nano /etc/sysconfig/modules/lvisf.modules
#!/bin/sh # start intel network driver /sbin/modprobe igb
sudo chmod 755 /etc/sysconfig/modules/lvisf.modules
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 HWADDR=00:80:82:1B:E7:04 TYPE=Ethernet UUID=98bd88d8-8fe8-4b8e-bca0-a58bd3306717 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static NAME="System eth0" IPADDR=10.4.1.2 NETMASK=255.255.255.0
vi /etc/sysconfig/network
NETWORKING=yes HOSTNAME=lvisf NETWORKING_IPV6=no IPV6INIT=no GATEWAY=10.4.1.1
vi /etc/resolv.conf
search gsfc.nasa.gov nameserver 128.183.10.134 nameserver 128.183.50.17
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1 HWADDR=00:80:82:1B:E7:05 TYPE=Ethernet UUID=5eb0ea0f-b1e8-43ab-a64d-83d3d9e1dc95 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static NAME="System eth1" IPADDR=192.168.0.2 NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth1:1
DEVICE=eth1:1 HWADDR=00:80:82:1B:E7:05 TYPE=Ethernet UUID=5eb0ea0f-b1e8-43ab-a64d-83d3d9e1dc95 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static NAME="System eth1:1" IPADDR=129.100.0.2 NETMASK=255.255.255.0
useradd lvis
passwd lvis
visudo
lvis ALL=(ALL) ALL
sudo yum install epel-release
sudo yum install fuse fuse-ntfs-3g
sudo yum install epel-release sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm
sudo yum install exfat-utils fuse-exfat
sudo mount -t exfat /dev/sdc1 /mnt/tmp
# core X11 sudo yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-utils xterm -y # required for tuna sudo yum install xauth pygtk2-libglade -y
sudo yum install tuna -y
sudo service exim stop
sudo rpm -e --nodeps exim
sudo service auditd stop # now sudo chkconfig auditd off # after reboot
sudo service postfix stop
sudo rpm -e --nodeps postfix
Still as root logged into the main desktop
sudo service iptables stop sudo service ip6tables stop
sudo chkconfig iptables off sudo chkconfig ip6tables off
sudo vi /etc/selinux/config
SELINUX=enforcing
SELINUX=disabled
sudo vi /etc/sysconfig/network
NETWORKING_IPV6=no IPV6INIT=no
sudo nano /etc/ssh/sshd_config # lvisf - ipv4 only AddressFamily inet ListenAddress 0.0.0.0
sudo vi /etc/modprobe.d/lvisf-blacklist.conf
# lvisf kernel module blacklist # version 1.0 - dlr - 20160418 # ipv6 blacklist ipv6 # NMI watchdog blacklist iTCO_wdt blacklist iTCO_vendor_support blacklist i2c_i801 # blacklist igb blacklist lpc_ich blacklist shpchp blacklist dm_mirror # intel sound blacklist soundcore blacklist snd blacklist snd_seq blacklist snd_hda_intel blacklist snd_hda_codec_hdmi # USB controller (still loads) blacklist xhci_hcd # this is required to REMOVE ipv6 module, I am not sure why # http://www.cyberciti.biz/faq/redhat-centos-disable-ipv6-networking/ install ipv6 /bin/true
# USB driver... if you're using the nousb kernel, this will work sudo modprobe --remove xhci_hcd sudo modprobe --remove dm_mirror
Module Size Used by e1000 170646 0 sg 29350 0 ext4 374902 3 jbd2 93427 1 ext4 mbcache 8193 1 ext4 sd_mod 39069 3 crc_t10dif 1541 1 sd_mod ahci 42215 2 i915 624511 1 drm_kms_helper 44321 1 i915 drm 280012 2 i915,drm_kms_helper i2c_algo_bit 5935 1 i915 i2c_core 31084 4 i915,drm_kms_helper,drm,i2c_algo_bit video 20674 1 i915 output 2409 1 video dm_mod 84209 9
NOTE: This is obsolete (the repository link), but left here for posterity.
Repository URL: https://zj.yancich.com:8443/svn/NASA/trunk/lvisF username "lvis" password: standard lvis password This is a cmake project. To rebuild the make files: In "build" directory type "cmake ../" Then "make" to build everything. "make clean" to clean the programs and kernel modules.
(Yancich sent this to me in March 2016) Original document is configuration_and_build_procedures_for_lvisf_and_support_libraries.docx
sudo yum install cmake -y
sudo yum install htop -y
sudo yum install ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/jed-0.99.18-5.el5.kb.i386.rpm -y
sudo yum install nano -y
sudo yum install p7zip pigz -y
sudo yum install pciutils -y
sudo yum install screen -y
sudo yum install telnet -y
sudo yum install wget -y
sudo yum groupinstall "Development Tools"
sudo yum install openssl-devel -y
sudo yum install md5deep -y
sudo yum install man -y sudo yum install man-pages -y
cd mkdir download cd ~/download wget http://vault.centos.org/6.5/os/x86_64/Packages/kernel-devel-2.6.32-431.el6.x86_64.rpm sudo yum --nogpgcheck localinstall ~/download/kernel-devel-2.6.32-431.el6.x86_64.rpm -y
sudo mkdir /opt/lvisf
sudo chown -R lvis:lvis /opt/lvisf
cd / tar jxvf /media/LVIS-GH-2TB_WD209/lvisf_build/lvisf_sourcesnapshot_20160816_svn439.tar.bz2
cd /opt/lvisf svn co https://svn.yancich.com:8443/svn/NASA/LVIS/trunk/ src
cd /opt/lvisf/src svn update
cd /home/lvis mkdir src ln -s /opt/lvisf/src/* /home/lvis/src/
nano /home/lvis/.bash_profile
# For SVN commit comment editor export SVN_EDITOR=nano # For the Innovative digitizer export WD_BASEDIR=/home/lvis/src/Innovative/WinDriver # For the SyncClock timer card export PLX_SDK_DIR=/home/lvis/src/PLX/PlxSdk # For the spectrum digitizer export SSP_INSTALL_ROOT=/home/lvis/src/spectrum
sudo nano /etc/ld.so.conf.d/lvisf.conf
/home/lvis/src/Innovative/winCloudDrvr/winclouddrvr_installation/lib /home/lvis/src/MIC3753/linux_driver_source_3.2.7.0_64bit/libs /home/lvis/src/spectrum/shared/linux/pc64/lib
sudo ldconfig
cd /home/lvis/src/PLX/PlxSdk/Driver
./buildalldrivers
cd /home/lvis/src/PLX/PlxSdk
make
cd /home/lvis/src/PLX/PlxSdk/Bin
sudo ./Plx_load 9030 # to just see what boards are supported, run the script with no argument ./Plx_load
NOTE These drivers NEED to be built as root, you cannot sudo to build these drivers
sudo bash
cd /home/lvis/src/MIC3753/linux_driver_source_3.2.7.0_64bit/drivers/driver_base/src/lnx_ko
make
cd /home/lvis/src/MIC3753/linux_driver_source_3.2.7.0_64bit/drivers/pci1753_mic3753_pcm3753i/src/lnx_ko
# to disable IRQs in this driver, just use this code where the IRQ calls are commented out cp init.c.no_irq init.c make
cd /home/lvis/src/MIC3753/linux_driver_source_3.2.7.0_64bit/drivers/bin insmod biokernbase.ko insmod bio1753.ko
exit
sudo mkdir /usr/Innovative
sudo cp /home/lvis/src/INNO-RAW/* /usr/Innovative/
sudo chmod 755 /usr/Innovative/Setup.sh
sudo ln -s /usr/src/kernels/2.6.32-431.el6.x86_64 /usr/src/linux
cd /usr/Innovative sudo ./Setup.sh
cd /home/lvis/src/Innovative/WinDriver/src/wdapi
make -C LINUX
ln -s /home/lvis/src/Innovative/WinDriver/src/wdapi/LINUX/libwdapi.so /home/lvis/src/Innovative/winCloudDrvr/winclouddrvr_installation/lib/libwdapi1180.so
cd /home/lvis/src/Innovative/winCloudDrvr
make -C linux
cd /home/lvis/src/Innovative/winCloudDrvr/winclouddrvr_installation/redist
./configure --disable-usb-support make
sudo make install
To load the driver:
sudo /opt/lvisf/src/Innovative/winCloudDrvr/winclouddrvr_installation/redist/wdreg winCloudDrvr auto
sudo ln -s /opt/lvisf/src/spectrum /spectrum
cd /home/lvis/src/spectrum/shared/linux/pc64/bin
cp -a /home/lvis/src/spectrum/shared/linux/pc64/bin/`uname -r`/*.ko /home/lvis/src/spectrum/shared/linux/pc64/bin/
chmod 755 *.sh # not sure why these were not already executable sudo bash ./setup_xmc1151_dvt.sh
sudo ln -s /opt/lvisf/src/MIC3753/linux_driver_source_3.2.7.0_64bit/drivers/bin/*.ko /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/misc/
sudo nano /etc/sysconfig/modules/lvisf.modules
# start the MIC-3753 drivers /sbin/modprobe biokernbase /sbin/modprobe bio1753
NOTE: (in lieu of step 2 below) I had this not work when I manually edited it the first time. A copy of the file is in the repository, you could just copy that file in:
sudo cp /opt/lvisf/src/lvisF/scripts/lvisf.modules /etc/sysconfig/modules/lvisf.modules
sudo ln -s /opt/lvisf/src/PLX/PlxSdk/Driver/Source.Plx9000/Output/Plx9030.ko /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/misc/
sudo nano /etc/sysconfig/modules/lvisf.modules
# start the Plx9030 syncclock32 driver /sbin/modprobe Plx9030
# remove the symlink sudo rm /etc/rc.local # move the original to something else sudo mv /etc/rc.d/rc.local /etc/rc.d/rc.local_orig
sudo ln -s /opt/lvisf/src/lvisF/scripts/rc.local /etc/rc.d/rc.local sudo ln -s /etc/rc.d/rc.local /etc/rc.local
The boost C++ library is required for the data system. The tarball of the 1.6.2 version is in the repository. Or download the latest from http://www.boost.org/users/download/. Here is the latest as of 2018.01.04 https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.bz2
cd /opt sudo tar -jxvf /opt/lvisf/src/tars/boost_1_62_0.tar.bz2
sudo ln -s /opt/boost_1_62_0 /opt/boost
sudo chown -R lvis:lvis /opt/boost_1_62_0
nano /home/lvis/.bash_profile
# Add the boost root directory export BOOST_ROOT=/opt/boost
source /home/lvis/.bash_profile
cd /opt/boost ./bootstrap.sh ./b2
Follow the instructions below to compile the USB temperature monitoring device libraries required.
sudo insmod /home/lvis/src/MIC3753/linux_driver_source_3.2.7.0_64bit/drivers/bin/biokernbase.ko sudo insmod /home/lvis/src/MIC3753/linux_driver_source_3.2.7.0_64bit/drivers/bin/bio1753.ko
cd /home/lvis/src/PLX/PlxSdk/Bin sudo ./Plx_load 9030
cd /home/lvis/src/lvisF/build
cmake ../
make
cd /home/lvis/src/lvisF/build/bin/tests/syncclock
sudo ./galvMove
CPU_SET(3, &cpus);
sudo chrt --fifo 99 ./galvMove
isolcpus=2,3
CPU_SET(3, &cpus);
sudo chrt --fifo 99 ./galvMove
sudo bash -c 'echo 2 > /proc/irq/19/smp_affinity'
rhgb nousb quiet isolcpus=2,3 nosoftlockup mce=ignore_ce audit=0
sudo yum install perf
cd /opt/lvisf/src/lvisF/build/bin/tests/syncclock sudo perf sched record -o /dev/shm/perf.data chrt --fifo 99 ./galvMove
sudo perf sched -i /dev/shm/perf.data latency > /tmp/perf.latency.report
cat /proc/interrupts # notice that CPU1 has all the timer card interrupts (PLx9030) [lvis@lvisf syncclock]$ cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 125 0 0 0 IR-IO-APIC-edge timer 8: 1 0 0 0 IR-IO-APIC-edge rtc0 9: 0 0 0 0 IR-IO-APIC-fasteoi acpi 18: 1968 0 0 0 IR-IO-APIC-fasteoi eth2 19: 0 2021327 0 0 IR-IO-APIC-fasteoi Plx9030 24: 0 0 0 0 DMAR_MSI-edge dmar0 25: 0 0 0 0 DMAR_MSI-edge dmar1 26: 2 0 0 0 IR-HPET_MSI-edge hpet2 27: 0 0 0 0 IR-HPET_MSI-edge hpet3 28: 0 0 0 0 IR-HPET_MSI-edge hpet4 29: 0 0 0 0 IR-HPET_MSI-edge hpet5 34: 235 0 0 0 IR-PCI-MSI-edge i915 35: 0 0 0 0 IR-PCI-MSI-edge ahci 36: 7971 0 0 0 IR-PCI-MSI-edge ahci NMI: 0 0 0 0 Non-maskable interrupts LOC: 20569 29227 10924 50493 Local timer interrupts SPU: 0 0 0 0 Spurious interrupts PMI: 0 0 0 0 Performance monitoring interrupts IWI: 0 0 0 0 IRQ work interrupts RES: 324 194 372 353 Rescheduling interrupts CAL: 47 197 178 211 Function call interrupts TLB: 142 610 312 1 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 Machine check exceptions MCP: 1 1 1 1 Machine check polls ERR: 0 MIS: 0