Hi all,

I wanted to share my experience with getting EFI Fiery XF Control to run on a headless Mac Mini without needing to have a user logged in. Mind you, this procedure is experimental. If you choose to attempt what I have done, do so at your own risk. I tried searching on Google and the EFI forums for an answer, and sadly I couldn't find any solution someone else has come up with. Hopefully this method will help out other Mac users who manage small print offices, etc.

Firstly, I installed Fiery XF Control server software and configured it for my environment. All users and workflows were set up and made sure the application was working before I made my next change. Then I ran the following command to gather some information about the EFI software (this command will print out all system processes and then search by the case-insensitive term "efi"):

Code:
sudo ps waax | grep -i efi
From here I was able to find out which programs were being launched by EFI.

Code:
/Library/Application Support/EFI/ES1000Service/ES1000Server
/Applications/EFI Fiery XF/Server/Fiery XF Control.app/Contents/MacOS/Fiery XF Control timer1Action
/Applications/EFI Fiery XF/Server/EFI XF Server.app/Contents/MacOS/EFI XF Server
/Applications/EFI Fiery XF/JDF/JDFConnectorServer
EFI -T HOSTNAME 0.0.0 -c /Applications/FlexLM -lmgrd_port 9999 --lmgrd_start 1abcd23e
#
# # Customer-specific values:
#
# HOSTNAME = hostname of server
# 0.0.0 = don't know what this is. Might be a version number?
# 9999 = host port
# 1abcd23e = not sure what this is either.
The last line was a little confusing, as I wasn't able to find any command by the name of "EFI", so I did a search on the machine to find out where it was from:

Code:
sudo find -x / type -f -name "EFI"
and that returned

Code:
/Applications/FlexLM/EFI
So I inserted "/Applications/FlexLM/" before "EFI" and ran the full line of code after rebooting and it seemed to work. So I threw everything together in an entire script (I've obfuscated any personal information):

Code:
#!/bin/bash
logFile="launchFieryXFControl.log"
logDir="/var/log/efi"

if [[ ! -d ${logDir} ]];then
  mkdir -p ${logDir}
fi
if [[ ! -f ${logDir}/${logFile} ]];then
  echo "" > ${logDir}/${logFile}
fi

f_logr () {
  logPhrase="$1"
  fr_logr () {
    # Prints logs to custom log file
    echo -e "$(date +%Y/%d/%m-%r): ${fname} - $1" >> ${logDir}/${logFile}
  }
  fr_logr "${logPhrase}"
}

f_logr "Starting Fiery XF Control admin service..."
/Applications/EFI\ Fiery\ XF/Server/Fiery\ XF\ Control.app/Contents/Resources/AdminService.app/Contents/MacOS/AdminService -control start timer1Action &
sleep 30
f_logr "Fiery XF Control admin service started."

f_logr "Starging ES1000Server..."
if [[ ! $(ps waax | grep [E]S1000Server) ]];then
  /Library/Application\ Support/EFI/ES1000Service/ES1000Server &
  sleep 10
fi
f_logr "ES1000Server started."

f_logr "Starting Fiery XF Control.app..."
if [[ ! $(ps waax | grep [C]ontrol.app/Contents/MacOS/Fiery) ]];then
  /Applications/EFI\ Fiery\ XF/Server/Fiery\ XF\ Control.app/Contents/MacOS/Fiery\ XF\ Control timer1Action &
  sleep 10
fi
f_logr "Fiery XF Control.app started."

f_logr "Starting Fiery XF Server.app..."
if [[ ! $(ps waax | grep [S]erver.app/Contents/MacOS/EFI) ]];then
  /Applications/EFI\ Fiery\ XF/Server/EFI\ XF\ Server.app/Contents/MacOS/EFI\ XF\ Server &
  sleep 10
fi
f_logr "Starting Fiery XF Server.app started."

f_logr "Starting JDFConnectorServer..."
if [[ ! $(ps waax | grep [J]DFConnectorServer) ]];then
  /Applications/EFI\ Fiery\ XF/JDF/JDFConnectorServer &
  sleep 20
fi
f_logr "JDFConnectorServer started."


f_logr "Starting FlexLM..."
if [[ ! $(ps waax | grep [l]mgrd_port) ]];then
  /Applications/FlexLM/EFI -T HOSTNAME 0.0.0 -c /Applications/FlexLM -lmgrd_port 9999 --lmgrd_start 1abcd23e &
  sleep 20
fi
f_logr "FlexLM started."

exit
After that I decided to write a custom launchd file to launch the script at boot. I had trouble with these applications running at the login window so I had to specifically call it out in the launchd plist file which I wrote in /Library/LaunchDaemons/org.control.fiery.plist.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>org.control.fiery</string>
	<key>LimitLoadToSessionType</key>
	<array>
		<string>LoginWindow</string>
		<string>Aqua</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>KeepAlive</key>
	<false/>
	<key>Program</key>
        <string>/usr/local/efi/launchFieryXFControl.sh</string>
        <key>StandardOutPath</key>
        <string>/tmp/fieryxf.stdout</string>
        <key>StandardErrorPath</key>
        <string>/tmp/fieryxf.stderr</string>
</dict>
</plist>
After that it seems like I was able to get everything going OK. I rebooted the server, waited a few minutes, then launched Fiery XF Control from my remote laptop. Everything seems to work!

Please let me know about your thoughts or if you have any suggestions. Thank you!