Fiery and Jamf Admin - There are not any printers mapped on this computer

mvalpreda
New Contributor II

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?

1 REPLY 1

stevewood
Honored Contributor II
Honored Contributor II

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.