Skip to content

Instantly share code, notes, and snippets.

@benjaminkott
Last active July 30, 2025 22:08
Show Gist options
  • Save benjaminkott/e293147dd0ea9e6fa7f1194567a5d1ba to your computer and use it in GitHub Desktop.
Save benjaminkott/e293147dd0ea9e6fa7f1194567a5d1ba to your computer and use it in GitHub Desktop.
CUPS Canon SELPHY CP1500 PostScript Printer Driver - PPD
*PPD-Adobe: "4.3"
*cupsMandatory: attributes-charset attributes-natural-language printer-uri
*% PPD created by ipp2ppd (v2:Feb 1 2018)
*FormatVersion: "4.3"
*FileVersion: "2.0"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PSVersion: "(3010.000) 0"
*LanguageLevel: "3"
*FileSystem: False
*cupsVersion: 2.0
*cupsModelNumber: 0
*cupsSNMPSupplies: False
*APAirPrint: True
*APAirPrintVersion: 1.4
*APURFVersion: 1.4
*APPrinterFWVersion: "IPP:2.0"
*cupsLanguages: "en"
*cupsIdentifyActions: "flash"
*APAcceptsMixedURF: True
*PCFileName: "APCANONS.PPD"
*ModelName: "Canon SELPHY CP1500 HTTP"
*Product: (Canon SELPHY CP1500 HTTP)
*ShortNickName: "Canon SELPHY CP1500 HTTP"
*Manufacturer: "Canon"
*NickName: "Canon SELPHY CP1500 AirPrint"
*Throughput: 1
*APSupplies: "http://CP150016eeb1.local:8008/supply/ink_content.html"
*cupsSingleFile: True
*cupsFilter2: "image/urf image/urf 10 -"
*cupsFilter: "image/urf 10 -"
*cupsFilter2: "image/jpeg image/jpeg 0 maxsize(33554432) -"
*cupsFilter: "image/jpeg 0 -"
*cupsMaxCopies: 99
*ColorDevice: True
*APColorSpaces: true
*DefaultColorSpace: RGB
*OpenUI *ColorModel/Color Mode: PickOne
*OrderDependency: 10 AnySetup *ColorModel
*DefaultColorModel: RGB
*ColorModel Gray/Grayscale: "<</cupsColorSpace 18/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice"
*ColorModel RGB/Color: "<</cupsColorSpace 19/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice"
*CloseUI: *ColorModel
*LandscapeOrientation: Minus90
*DefaultResolution: 300x300dpi
*OpenUI *cupsPrintQuality/Quality: PickOne
*OrderDependency: 10 AnySetup *cupsPrintQuality
*DefaultcupsPrintQuality: Normal
*cupsPrintQuality Normal: "<</cupsInteger1 4 /HWResolution[300 300]>>setpagedevice"
*CloseUI: *cupsPrintQuality
*cupsBackSide: Normal
*DefaultOutputOrder: Reverse
*APHasMediaReady: True
*OpenUI *PageSize/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageSize
*DefaultPageSize: Postcard.Fullbleed
*PageSize 54x86mm: "<</PageSize[153.0709 243.7795]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageSize 54x86mm.Fullbleed: "<</PageSize[153.0709 243.7795]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageSize 89x119mm: "<</PageSize[252.2835 337.3228]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageSize 89x119mm.Fullbleed: "<</PageSize[252.2835 337.3228]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageSize Postcard: "<</PageSize[283.4646 419.5276]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageSize Postcard.Fullbleed: "<</PageSize[283.4646 419.5276]/ImagingBBox null/Orientation 0>>setpagedevice"
*CloseUI: *PageSize
*OpenUI *PageRegion/Media Size: PickOne
*OrderDependency: 10 AnySetup *PageRegion
*DefaultPageRegion: Postcard.Fullbleed
*PageRegion 54x86mm: "<</PageSize[153.0709 243.7795]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageRegion 54x86mm.Fullbleed: "<</PageSize[153.0709 243.7795]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageRegion 89x119mm: "<</PageSize[252.2835 337.3228]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageRegion 89x119mm.Fullbleed: "<</PageSize[252.2835 337.3228]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageRegion Postcard: "<</PageSize[283.4646 419.5276]/ImagingBBox null/Orientation 0>>setpagedevice"
*PageRegion Postcard.Fullbleed: "<</PageSize[283.4646 419.5276]/ImagingBBox null/Orientation 0>>setpagedevice"
*CloseUI: *PageRegion
*DefaultImageableArea: Postcard.Fullbleed
*DefaultPaperDimension: Postcard.Fullbleed
*PaperDimension 54x86mm: "153.0709 243.7795"
*ImageableArea 54x86mm: "7.0866 18.1417 145.9843 225.6378"
*PaperDimension 54x86mm.Fullbleed: "153.0709 243.7795"
*ImageableArea 54x86mm.Fullbleed: "0.0000 0.0000 153.0709 243.7795"
*PaperDimension 89x119mm: "252.2835 337.3228"
*ImageableArea 89x119mm: "7.0866 9.6378 245.1969 327.6850"
*PaperDimension 89x119mm.Fullbleed: "252.2835 337.3228"
*ImageableArea 89x119mm.Fullbleed: "0.0000 0.0000 252.2835 337.3228"
*PaperDimension Postcard: "283.4646 419.5276"
*ImageableArea Postcard: "7.0866 10.4882 276.3780 409.0394"
*PaperDimension Postcard.Fullbleed: "283.4646 419.5276"
*ImageableArea Postcard.Fullbleed: "0.0000 0.0000 283.4646 419.5276"
*ParamCustomPageSize Width: 1 points 150 289
*ParamCustomPageSize Height: 2 points 241 434
*ParamCustomPageSize WidthOffset: 3 points 0 0
*ParamCustomPageSize HeightOffset: 4 points 0 0
*ParamCustomPageSize Orientation: 5 int 0 3
*CustomPageSize True: ""
*OpenUI *MediaType/MediaType: PickOne
*OrderDependency: 10 AnySetup *MediaType
*MediaType photographic/Photo: ""
*MediaType any/Any: ""
*DefaultMediaType: photographic
*CloseUI: *MediaType
*APPrinterPreset Gray_with_Paper_Auto-Detect/Black and White: "
*cupsPrintQuality Normal
*ColorModel Gray
com.apple.print.preset.graphicsType General
com.apple.print.preset.quality mid
com.apple.print.preset.media-front-coating autodetect
com.apple.print.preset.output-mode monochrome"
*End
*APPrinterPreset Color_with_Paper_Auto-Detect/Color: "
*cupsPrintQuality Normal
*ColorModel RGB
com.apple.print.preset.graphicsType General
com.apple.print.preset.quality mid
com.apple.print.preset.media-front-coating autodetect"
*End

Commands:

lpoptions -l Canon_SELPHY_CP1500
lpoptions -p Canon_SELPHY_CP1500 -o StpiShrinkOutput=Expand
lpoptions -p Canon_SELPHY_CP1500 -o StpBorderless=True

Print Command (%s for Filename):

lp -o media=Postcard.fullbleed -o landscape -o fit-to-page %s

Cups: Defaults: job-sheets=none, none media=om_postcard-fullbleed_100x148mm sides=one-sided

@Stephanuuusssiii
Copy link

Thanks for the driver. It works, but it's not borderless for me. I use cups with your suggested values. Can you help me, please...

@baloe
Copy link

baloe commented Jul 28, 2025

In principal, the printer can be installed with the following command, where xxx.xxx.xxx.xxx is its static (IP) address.

lpadmin \
        -p Canon_SELPHY_CP1500 \
        -v 'ipps://xxx.xxx.xxx.xxx:443/ipp/print' \
        -P Canon_SELPHY_CP1500.ppd \
        -o StpiShrinkOutput=Expand \
        -o StpBorderless=True \
        -E

with the ppd from https://gist.github.com/benjaminkott/e293147dd0ea9e6fa7f1194567a5d1ba:

wget https://gist.githubusercontent.com/benjaminkott/e293147dd0ea9e6fa7f1194567a5d1ba/raw/00975a9a713e24417a476f923d8e2b4c2a6529b4/Canon_SELPHY_CP1500.ppd

However, unless we are able to assign the printer a static IP address we don't know the address at this point.
Not knowing the address of the printer we can do the following:

  1. Send a print job to the printer
    (have the paper cartridge removed to prevent it from actually printing)
wget -O test.jpg https://upload.wikimedia.org/wikipedia/commons/2/28/JPG_Test.jpg
lp -o media=Postcard.fullbleed -o landscape -o fit-to-page -d Canon_SELPHY_CP1500 test.jpg

The printer actually receives a job even though we had not set it up. It somehow gets installed automagically.

  1. Now we can use
lpoptions -d Canon_SELPHY_CP1500

to find the network address of the printer.
In my case, the command returned

... device-uri=ipps://CP1500d73593.local:443/ipp/print ... 

So there we have it, the network address is CP1500d73593.local regardless of the dynamic IP address it gets.
The address is printer specific. Running

sudo apt install arp-scan
sudo arp-scan --interface=wlan0 --localnet

tells us its current IP address and the MAC address. In my case this is dc:c2:c9:d7:35:93.
So the network address is actually

`CP1500`+`last six digits of MAC address + `.local`
  1. Remove the printer,
sudo lpadmin -x Canon_SELPHY_CP1500

and install it with the ppd file and the acquired network address.

lpadmin \
        -p Canon_SELPHY_CP1500 \
        -v 'ipps://CP1500d73593.local:443/ipp/print' \
        -P Canon_SELPHY_CP1500.ppd \
        -o StpiShrinkOutput=Expand \
        -o StpBorderless=True \
        -E

Print with lp -o media=Postcard.fullbleed -o landscape -o fit-to-page -d Canon_SELPHY_CP1500 %s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment