Posted on 11-08-2022 02:05 PM
Having a hard time trying to get Fiery printers deployed through Jamf. I either have 'paused' print jobs, or I can't see the printer to add through Jamf Admin.
Install the printer driver through the PKG, it prints fine, but I cannot add the printer in Jamf Admin - There are not any printers mapped on this computer.
Install the printer driver manually, define the printer, use the same driver that was shown with the install process....and when I go to print.....it immediately goes to Paused. Can never get the print job to start.
Anyone have any suggestions?
Posted on 11-08-2022 02:46 PM
Personally, I didn't use Jamf Admin for printers. I always added printers using a script. And when it came to Fiery printers, I found that scripting it was way more successful. I would use the Fiery Uninstaller to clean up any existing driver installs before installing the driver and then adding the printer using lpadmin. Here's an example script:
#!/bin/bash
# Date: 2021 Sep 22
# Author: Steve Wood (@stevewood_tx on Macadmins Slack)
# Update:
#
# Purpose: add printers using a Case statement to choose
#
# Parameters:
# Parameter 4 ($4) = Printer name for case statement
# setup logging
logFile="/var/log/add-printers-$(date +%Y%m%d-%H%M).log"
# Check for / create logFile
if [ ! -f "${logFile}" ]; then
# logFile not found; Create logFile
/usr/bin/touch "${logFile}"
fi
set -xv; exec 1> $logFile 2>&1
function ScriptLog() { # Re-direct logging to the log file ...
exec 3>&1 4>&2 # Save standard output and standard error
exec 1>>"${logFile}" # Redirect standard output to logFile
exec 2>>"${logFile}" # Redirect standard error to logFile
NOW=$( date '+%Y-%m-%d %H:%M:%S' )
/bin/echo "${NOW}" " ${1}" >> "${logFile}"
}
ScriptLog
function remove_printers {
# looping function to remove all printers passed
printers=("$@")
echo "*** List: $printers"
for i in "${printers[@]}"
do
echo "*** Removing: $i"
lpadmin -x ${i} > $2>/dev/null
done
}
lpa='/usr/sbin/lpadmin'
## add printers
ScriptLog "$4" "${NOW}"
case "$4" in
XENA)
printer_array=(
"Xena_Colour"
)
remove_printers "${printer_array[@]}"
## remove any installed Fiery driver and re-install. Or, install if it is missing.
if [[ ! -f "/Library/Printers/PPDs/Contents/Resources/en.lproj/Canon iPR Svr M10 PS V2.0" ]]; then
/usr/local/bin/jamf policy -event CN_iPRM10_v2_0RX_FD65_v1 -forceNoRecon
else
/usr/local/bin/jamf policy -event fieryuninstaller
fsu='/tmp/Fiery Software Uninstaller.app/Contents/MacOS/Fiery Software Uninstaller'
fiery_driver=$( "$fsu" -s $USER -getInstalledDrivers | grep "Canon iPR Svr M10 PS V2.0" )
if [[ $fiery_driver ]]; then
"$fsu" -s $USER -d "$fiery_driver"
fi
/usr/local/bin/jamf policy -event CN_iPRM10_v2_0RX_FD65_v1 -forceNoRecon
fi
${lpa} -p "Fiery Name" -E \
-o printer-is-shared=false \
-L "My Office" \
-D "Fiery_Name" \
-v "lpd://192.168.1.1" \
-P "/Library/Printers/PPDs/Contents/Resources/en.lproj/Canon iPR Svr M10 PS V2.0" \
-o "printer-is-shared=false" \
-o "EFDuplex=False"
;;
esac
exit 0
I would attach that to a policy, provide the name of the printer as Parameter 4, and then use that for the "Case" statement (line 53). So if you pass 'XENA', as I do in the script, then that is the case that it runs. Hopefully that makes sense.