<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.usnan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lmorris</id>
	<title>Network for Advanced NMR - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.usnan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lmorris"/>
	<link rel="alternate" type="text/html" href="https://wiki.usnan.org/Special:Contributions/Lmorris"/>
	<updated>2026-05-06T13:30:51Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.usnan.org/index.php?title=Alma_Linux_9.6_-_Creating_systemctl_capability&amp;diff=1115</id>
		<title>Alma Linux 9.6 - Creating systemctl capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.usnan.org/index.php?title=Alma_Linux_9.6_-_Creating_systemctl_capability&amp;diff=1115"/>
		<updated>2025-06-27T16:07:32Z</updated>

		<summary type="html">&lt;p&gt;Lmorris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For Alma Linux 9.6, the standard &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service data-transport-daemon status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
command doesn&#039;t work. &lt;br /&gt;
&lt;br /&gt;
Let&#039;s make the daemon work with systemctl.&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Create the service file. ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo vi /etc/systemd/system/data-transport-daemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter the following lines in the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Data Transport Daemon&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStart=/opt/nan-dtdaemon/data-transport-daemon&lt;br /&gt;
TimeoutStopSec=10&lt;br /&gt;
KillSignal=SIGINT&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
User=root&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Get the daemon started ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart data-transport-daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Helpful Commands ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
systemctl stop data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
systemctl restart data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
systemctl status data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
# investigating problems&lt;br /&gt;
journalctl -xeu data-transport-daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bonus Material (very optional) ===&lt;br /&gt;
&lt;br /&gt;
I like to get the status of a few things when I log onto one of the NMR spectrometer workstations remotely.&lt;br /&gt;
&lt;br /&gt;
In my .bash_profile, I added:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Check if the shell is interactive&lt;br /&gt;
if [[ $- == *i* ]]; then&lt;br /&gt;
        /home/lmorris/scripts/checkNDTS.sh&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the path and filename as appropriate.&lt;br /&gt;
&lt;br /&gt;
My version of checkNDTS.sh is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# v 1.10 (2025.06jun.19)&lt;br /&gt;
&lt;br /&gt;
# 1. see who&#039;s on the system&lt;br /&gt;
echo -e &amp;quot;\n\n================================================\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# for Alma Linux 9 use&lt;br /&gt;
user=$(who | awk &#039;$2 == &amp;quot;seat0&amp;quot; { print $1 }&#039;)&lt;br /&gt;
# for Centos 7 use&lt;br /&gt;
# user=$(who | awk &#039;$2 == &amp;quot;:0&amp;quot; { print $1 }&#039;)&lt;br /&gt;
&lt;br /&gt;
if [ -n &amp;quot;$user&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;User: $user&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;No user logged into graphical session.&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 2. make sure the daemon is running&lt;br /&gt;
&lt;br /&gt;
NDTS=$(systemctl status data-transport-daemon |grep Active)&lt;br /&gt;
CK_NDTS=&amp;quot;active&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Define ANSI color codes&lt;br /&gt;
RED=&amp;quot;\033[0;31m&amp;quot;&lt;br /&gt;
# YELLOW=&amp;quot;\033[0;33m&amp;quot; # for reference (not used)&lt;br /&gt;
GREEN=&amp;quot;\033[0;32m&amp;quot;&lt;br /&gt;
# CYAN=&amp;quot;\033[0;36m&amp;quot; # for reference (not used)&lt;br /&gt;
RESET=&amp;quot;\033[0m&amp;quot; # Reset color back to default&lt;br /&gt;
&lt;br /&gt;
# ndts daemon status&lt;br /&gt;
if [[ &amp;quot;$NDTS&amp;quot; == *&amp;quot;$CK_NDTS&amp;quot;* ]]; then&lt;br /&gt;
    echo -e &amp;quot;${GREEN}NDTS daemon${RESET} status: ${GREEN}running${RESET}&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
    echo -e &amp;quot;${RED}NDTS daemon${RESET} status: ${RED}INACTIVE${RESET}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 3. check the port on gateway computer&lt;br /&gt;
&lt;br /&gt;
HOST=&amp;quot;128.192.9.245&amp;quot; # edit for the IP address of your gateway computer&lt;br /&gt;
PORT=60195 # port used by ndts to communicate to the gateway computer&lt;br /&gt;
&lt;br /&gt;
if nc -z -w3 $HOST $PORT; then&lt;br /&gt;
  echo &amp;quot;✅ Port $PORT is open on $HOST&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;❌ Port $PORT is NOT reachable on $HOST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo -e &amp;quot;\n================================================\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmorris</name></author>
	</entry>
	<entry>
		<id>https://wiki.usnan.org/index.php?title=Alma_Linux_9.6_-_Creating_systemctl_capability&amp;diff=1049</id>
		<title>Alma Linux 9.6 - Creating systemctl capability</title>
		<link rel="alternate" type="text/html" href="https://wiki.usnan.org/index.php?title=Alma_Linux_9.6_-_Creating_systemctl_capability&amp;diff=1049"/>
		<updated>2025-06-20T20:39:42Z</updated>

		<summary type="html">&lt;p&gt;Lmorris: Created page with &amp;quot;For Alma Linux 9.6, the standard   &amp;lt;pre&amp;gt; service data-transport-daemon status &amp;lt;/pre&amp;gt;  command doesn&amp;#039;t work.   Let&amp;#039;s make the daemon work with systemctl.  === Step 1. Create the service file. ===  &amp;lt;pre&amp;gt; sudo vi /etc/systemd/system/data-transport-daemon.service &amp;lt;/pre&amp;gt;  Enter the following lines in the file: &amp;lt;pre&amp;gt; [Unit] Description=Data Transport Daemon After=network.target  [Service] Type=forking ExecStart=/opt/nan-dtdaemon/data-transport-daemon TimeoutStopSec=10 KillSign...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For Alma Linux 9.6, the standard &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
service data-transport-daemon status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
command doesn&#039;t work. &lt;br /&gt;
&lt;br /&gt;
Let&#039;s make the daemon work with systemctl.&lt;br /&gt;
&lt;br /&gt;
=== Step 1. Create the service file. ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo vi /etc/systemd/system/data-transport-daemon.service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enter the following lines in the file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Data Transport Daemon&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStart=/opt/nan-dtdaemon/data-transport-daemon&lt;br /&gt;
TimeoutStopSec=10&lt;br /&gt;
KillSignal=SIGINT&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
User=nandt-gateway&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 2. Create the nandt-gateway user ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo useradd --system --no-create-home --shell /sbin/nologin nandt-gateway&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure the binary is executable by the user nandt-gateway:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo chown root:nandt-gateway /opt/nan-dtdaemon/data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
sudo chmod 750 /opt/nan-dtdaemon/data-transport-daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 3. Get the daemon started ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
&lt;br /&gt;
sudo systemctl restart data-transport-daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Helpful Commands ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl start data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
systemctl stop data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
systemctl restart data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
systemctl status data-transport-daemon&lt;br /&gt;
&lt;br /&gt;
# investigating problems&lt;br /&gt;
journalctl -xeu data-transport-daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bonus Material (very optional) ===&lt;br /&gt;
&lt;br /&gt;
I like to get the status of a few things when I log onto one of the NMR spectrometer workstations remotely.&lt;br /&gt;
&lt;br /&gt;
In my .bash_profile, I added:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Check if the shell is interactive&lt;br /&gt;
if [[ $- == *i* ]]; then&lt;br /&gt;
        /home/lmorris/scripts/checkNDTS.sh&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the path and filename as appropriate.&lt;br /&gt;
&lt;br /&gt;
My version of checkNDTS.sh is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash&lt;br /&gt;
&lt;br /&gt;
# v 1.10 (2025.06jun.19)&lt;br /&gt;
&lt;br /&gt;
# 1. see who&#039;s on the system&lt;br /&gt;
echo -e &amp;quot;\n\n================================================\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# for Alma Linux 9 use&lt;br /&gt;
user=$(who | awk &#039;$2 == &amp;quot;seat0&amp;quot; { print $1 }&#039;)&lt;br /&gt;
# for Centos 7 use&lt;br /&gt;
# user=$(who | awk &#039;$2 == &amp;quot;:0&amp;quot; { print $1 }&#039;)&lt;br /&gt;
&lt;br /&gt;
if [ -n &amp;quot;$user&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;User: $user&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;No user logged into graphical session.&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 2. make sure the daemon is running&lt;br /&gt;
&lt;br /&gt;
NDTS=$(systemctl status data-transport-daemon |grep Active)&lt;br /&gt;
CK_NDTS=&amp;quot;active&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Define ANSI color codes&lt;br /&gt;
RED=&amp;quot;\033[0;31m&amp;quot;&lt;br /&gt;
# YELLOW=&amp;quot;\033[0;33m&amp;quot; # for reference (not used)&lt;br /&gt;
GREEN=&amp;quot;\033[0;32m&amp;quot;&lt;br /&gt;
# CYAN=&amp;quot;\033[0;36m&amp;quot; # for reference (not used)&lt;br /&gt;
RESET=&amp;quot;\033[0m&amp;quot; # Reset color back to default&lt;br /&gt;
&lt;br /&gt;
# ndts daemon status&lt;br /&gt;
if [[ &amp;quot;$NDTS&amp;quot; == *&amp;quot;$CK_NDTS&amp;quot;* ]]; then&lt;br /&gt;
    echo -e &amp;quot;${GREEN}NDTS daemon${RESET} status: ${GREEN}running${RESET}&amp;quot; &lt;br /&gt;
else&lt;br /&gt;
    echo -e &amp;quot;${RED}NDTS daemon${RESET} status: ${RED}INACTIVE${RESET}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 3. check the port on gateway computer&lt;br /&gt;
&lt;br /&gt;
HOST=&amp;quot;128.192.9.245&amp;quot; # edit for the IP address of your gateway computer&lt;br /&gt;
PORT=60195 # port used by ndts to communicate to the gateway computer&lt;br /&gt;
&lt;br /&gt;
if nc -z -w3 $HOST $PORT; then&lt;br /&gt;
  echo &amp;quot;✅ Port $PORT is open on $HOST&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;❌ Port $PORT is NOT reachable on $HOST&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo -e &amp;quot;\n================================================\n&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmorris</name></author>
	</entry>
	<entry>
		<id>https://wiki.usnan.org/index.php?title=NDTS_Daemon_Installation&amp;diff=1048</id>
		<title>NDTS Daemon Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.usnan.org/index.php?title=NDTS_Daemon_Installation&amp;diff=1048"/>
		<updated>2025-06-20T19:50:45Z</updated>

		<summary type="html">&lt;p&gt;Lmorris: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NDTS_Navbox}}&lt;br /&gt;
&lt;br /&gt;
== NDTS Daemon &amp;amp; GUI Installation (Spectrometer Workstation) ==&lt;br /&gt;
The NDTS Daemon and GUI must be installed separately on each NAN connected spectrometer&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
# &#039;&#039;&#039;Gateway IP address&#039;&#039;&#039;&lt;br /&gt;
#* The spectrometer workstation must be able to connect to the Gateway IP address on TCP port 60195&lt;br /&gt;
# Exact &#039;&#039;&#039;Instrument Name&#039;&#039;&#039; (set in the Facility Dashboard – no spaces)&lt;br /&gt;
# &#039;&#039;&#039;Workstation UUID&#039;&#039;&#039; (generated when the spectrometer was added)&lt;br /&gt;
&amp;lt;mark&amp;gt;WARNING: If you are installing on Alma Linux make sure that the &amp;lt;code&amp;gt;&#039;&#039;&#039;chkconfig&#039;&#039;&#039;&amp;lt;/code&amp;gt; package is installed before proceeding. Without this service package, the NDTS Workstation will not properly install or run on Alma.&amp;lt;/mark&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== [[Alma Linux 9.6 - Creating systemctl capability]] =====&lt;br /&gt;
&lt;br /&gt;
=== Installation Steps ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Copy the .gz file to the workstation&lt;br /&gt;
tar xf data-transport-daemon.&amp;lt;distro&amp;gt;-&amp;lt;version&amp;gt;.tar.gz&lt;br /&gt;
cd dtdaemon-installer&lt;br /&gt;
sudo ./install.sh&lt;br /&gt;
# → Prompts:&lt;br /&gt;
#   • Gateway IP address&lt;br /&gt;
#   • Instrument name  (e.g., nmr600)&lt;br /&gt;
#   • Workstation UUID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Updating the Daemon ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Best practice: ensure no acquisition is running and the UI is closed&lt;br /&gt;
cd dtdaemon-installer&lt;br /&gt;
sudo ./install.sh              # updates binaries and restarts the daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling the Daemon ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Download the latest installation package and execute uninstall.sh&lt;br /&gt;
sudo ./uninstall.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rolling Back the Daemon ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# The system is designed to allow roll-back to any previous version&lt;br /&gt;
# However, best practice would be to only roll-back one version in the event that a new version was causing issues.&lt;br /&gt;
# Download previous version and install&lt;br /&gt;
tar xf data-transport-daemon.&amp;lt;distro&amp;gt;-&amp;lt;old-version&amp;gt;.tar.gz&lt;br /&gt;
cd dtdaemon-installer&lt;br /&gt;
sudo ./install.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation and Update Examples ===&lt;br /&gt;
&lt;br /&gt;
===== [[NDTS Daemon and GUI Install Example]] =====&lt;br /&gt;
&lt;br /&gt;
===== [[NDTS Daemon and GUI Update Example]] =====&lt;br /&gt;
== Configuring the Daemon ==&lt;br /&gt;
The NDTS daemon reads its settings from a simple key/value dat file  &lt;br /&gt;
&lt;br /&gt;
=== Location ===&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/nan-dtdaemon/data/ndtd_configuration.dat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file may list parameters in any order. Edit with &#039;&#039;nano&#039;&#039; or your favorite editor&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /opt/nan-dtdaemon/data/ndtd_configuration.dat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Changes take effect only after the daemon restarts (see below).&lt;br /&gt;
&lt;br /&gt;
=== Configuration Parameters ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Parameter &lt;br /&gt;
!Default!! Notes&lt;br /&gt;
!Required&lt;br /&gt;
|-&lt;br /&gt;
| gateway_ip_address &lt;br /&gt;
| -|| IP address of the on-site NDTS Gateway&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
| gateway_port &lt;br /&gt;
| -|| TCP port used by the Gateway (usually 60195)&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
| instrument_name &lt;br /&gt;
| -|| Spectrometer name exactly as entered in the Facility Dashboard&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
| instrument_workstation_uuid &lt;br /&gt;
| -|| UUID generated for this workstation in the Facility Dashboard&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|log_level&lt;br /&gt;
|info&lt;br /&gt;
|Six log levels exist with different levels of information:&lt;br /&gt;
fatal &amp;amp;lt; error &amp;amp;lt; warning &amp;amp;lt; &#039;&#039;&#039;info&#039;&#039;&#039; &amp;amp;lt; debug &amp;amp;lt; trace  &lt;br /&gt;
(trace is extremely verbose and should only be used when debugging issues as it will fill the disk if left on too long)&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|use_accounting&lt;br /&gt;
|false&lt;br /&gt;
|TopSpin only – set &#039;&#039;&#039;true&#039;&#039;&#039; for TopSpin versions &amp;amp;lt; 4.x&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|highest_job_number&lt;br /&gt;
|8999&lt;br /&gt;
|Experiments with a higher job number are ignored&lt;br /&gt;
|No&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOTE: &amp;lt;code&amp;gt;use_accounting=true&amp;lt;/code&amp;gt; must be set for versions of TopSpin prior to 4.x&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Log levels ====&lt;br /&gt;
Values range from low to extremely high. Note that trace is used for troubleshooting and creates huge log files that will fill the disk if left in trace mode&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!log level&lt;br /&gt;
!verbosity&lt;br /&gt;
!default&lt;br /&gt;
|-&lt;br /&gt;
|fatal&lt;br /&gt;
|minimal&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|error&lt;br /&gt;
|low&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|warning&lt;br /&gt;
|medium&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;info&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;high&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;yes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|debug&lt;br /&gt;
|very high&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|trace&lt;br /&gt;
|extreme&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gateway_ip_address=155.37.253.192&lt;br /&gt;
gateway_port=60195&lt;br /&gt;
instrument_name=nmr600&lt;br /&gt;
instrument_workstation_uuid=7b20d851-546c-497d-8fad-ef9223b09eab&lt;br /&gt;
log_level=info&lt;br /&gt;
# use_accounting=true      # (uncomment if needed)&lt;br /&gt;
# highest_job_number=9999  # (override default)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starting the service ===&lt;br /&gt;
The daemon uses SysV service scripts for maximum compatibility and the system is designed to be running at all times. See the [[NDTS Daemon Operation|NDTS Daemon Operation guide]] for more information on running and monitoring the Daemon&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo /sbin/service data-transport-daemon start&lt;br /&gt;
sudo /sbin/service data-transport-daemon status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the Daemon configuration file is adjusted the daemon service should be restarted with &amp;lt;pre&amp;gt;sudo /sbin/service data-transport-daemon status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed NDTS Files and Directory Structure ==&lt;br /&gt;
All daemon-related files reside under &amp;lt;code&amp;gt;/opt/nan-dtdaemon&amp;lt;/code&amp;gt; (except the SysV service script).  &lt;br /&gt;
Knowing where each file lives helps with troubleshooting, backups, and upgrades.&lt;br /&gt;
&lt;br /&gt;
=== Top-Level Executable and Service Script ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Path !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/opt/nan-dtdaemon/data-transport-daemon&amp;lt;/code&amp;gt; || Main daemon executable. Forks, then exits; detects if another instance is running.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/etc/init.d/data-transport-daemon&amp;lt;/code&amp;gt; || SysV script used by &amp;lt;code&amp;gt;/sbin/service&amp;lt;/code&amp;gt; for start/stop/status and boot-time launch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User-Interface Scripts ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File(s) !! Role&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;nan_gui&amp;lt;/code&amp;gt; &amp;amp;nbsp;/&amp;amp;nbsp; &amp;lt;code&amp;gt;nan_gui.tcl&amp;lt;/code&amp;gt; || Launch shell + Tcl code for the NDTS Workstation UI.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;topspin_finder.sh&amp;lt;/code&amp;gt; &amp;amp;nbsp;/&amp;amp;nbsp; &amp;lt;code&amp;gt;vnmrj_finder.sh&amp;lt;/code&amp;gt; || Locate spectrometer software and pull metadata.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tcllib/&amp;lt;/code&amp;gt; || Supporting Tcl libraries for the UI.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Version Marker ===&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/nan-dtdaemon/running_workstation_version-X.Y.Z&amp;lt;/pre&amp;gt;  &lt;br /&gt;
Filename contains the current daemon version; file body is the daemon start timestamp.&lt;br /&gt;
&lt;br /&gt;
=== Logs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/nan-dtdaemon/logs/&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;nan-dtdaemon.log&amp;lt;/code&amp;gt; – main runtime log  &lt;br /&gt;
* &amp;lt;code&amp;gt;ndtd_audit.txt&amp;lt;/code&amp;gt; – one line per processed experiment&lt;br /&gt;
&lt;br /&gt;
=== Data Directory ===&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/nan-dtdaemon/data/&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File / Sub-dir !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;experiment_addenda.dat&amp;lt;/code&amp;gt; || Selected user, plus placeholders for sample &amp;amp;amp; project (auto-filled by UI).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ndtd_configuration.dat&amp;lt;/code&amp;gt; || Key / value daemon configuration file (gateway IP, log_level, etc.).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;processing_history.dat&amp;lt;/code&amp;gt; || Unix timestamps of all acquisitions already handled (read at daemon start).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;users_checksum.dat&amp;lt;/code&amp;gt; || MD5 of last user list; delete to force refresh.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;users.dat&amp;lt;/code&amp;gt; || Current NMRhub user list sent by the Gateway (never edit manually).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user-configuration.dat&amp;lt;/code&amp;gt; || Per-user defaults: harvesting on/off, change-user permission.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;samples/&amp;lt;/code&amp;gt; || Cached sample metadata.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;projects/&amp;lt;/code&amp;gt; || Cached project metadata.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;studies/&amp;lt;/code&amp;gt; || Cached study metadata.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Spool Directory ===&lt;br /&gt;
&amp;lt;pre&amp;gt;/opt/nan-dtdaemon/spool/&amp;lt;/pre&amp;gt;  &lt;br /&gt;
Temporary copy of any acquisition that failed to reach the Gateway.  &lt;br /&gt;
Daemon retries each spooled item at every heartbeat until sent.&lt;br /&gt;
&lt;br /&gt;
=== Summary Diagram ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/opt/nan-dtdaemon&lt;br /&gt;
├─ data-transport-daemon&lt;br /&gt;
├─ nan_gui   ─┐&lt;br /&gt;
├─ nan_gui.tcl│ UI layer&lt;br /&gt;
├─ topspin_finder.sh│&lt;br /&gt;
├─ vnmrj_finder.sh ┘&lt;br /&gt;
├─ tcllib/&lt;br /&gt;
├─ running_workstation_version-X.Y.Z&lt;br /&gt;
├─ logs/&lt;br /&gt;
│  ├─ nan-dtdaemon.log&lt;br /&gt;
│  └─ ndtd_audit.txt&lt;br /&gt;
├─ data/&lt;br /&gt;
│  ├─ ndtd_configuration.dat&lt;br /&gt;
│  ├─ experiment_addenda.dat&lt;br /&gt;
│  ├─ processing_history.dat&lt;br /&gt;
│  ├─ users*.dat …&lt;br /&gt;
│  ├─ samples/ projects/ studies/&lt;br /&gt;
└─ spool/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lmorris</name></author>
	</entry>
</feed>