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

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 immediately goes to Paused. Can never get the print job to start.

Anyone have any suggestions?


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:


# 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}"

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}"


function remove_printers {
	# looping function to remove all printers passed
    echo "*** List: $printers"
	for i in "${printers[@]}"
        echo "*** Removing: $i"
        lpadmin -x ${i} > $2>/dev/null



## add printers
ScriptLog "$4" "${NOW}"

case "$4" in




    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


        /usr/local/bin/jamf policy -event fieryuninstaller
        fsu='/tmp/Fiery Software 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"

        /usr/local/bin/jamf policy -event CN_iPRM10_v2_0RX_FD65_v1 -forceNoRecon


    ${lpa} -p "Fiery Name" -E \
    -o printer-is-shared=false \
    -L "My Office" \
    -D "Fiery_Name" \
    -v "lpd://" \
    -P "/Library/Printers/PPDs/Contents/Resources/en.lproj/Canon iPR Svr M10 PS V2.0" \
    -o "printer-is-shared=false" \
    -o "EFDuplex=False"



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.