I recently bought a used Canon Pixma Pro 100 and I was trying to get it to run on Linux, given that it’s the only computer OS I’ve been using since forever.

From what I’ve seen, there are no official drivers for the printer and gutenprint doesn’t support it. There is an alternative, called Turboprint, which is a paid proprietary software for Linux that seems to fully support the printer.

Well, I would never settle for a proprietary software solution, even though I wouldn’t mind the least paying for software if it was FOSS.

A solution is clearly within reach, since others have done it. I am just wondering how hard it would be, and what would be the steps that I could take to come up with a solution. I’ve done some reverse engineering before, so I know it can range from straightforward to arduous and time consuming. I wonder if this would be too complicated and if I would be better off setting up a QEMU Windows virtual machine with the drivers (that is what I’ve tried and it works well) while I work on finding a proper solution. I’m now trying to extract the useful part of the MacOS drivers and see if it would work using CUPS. (this part was edited from the original post to address an originally inconsistent phrasing).

I would really appreciate if you could help me with this!

Below I have some further context, some background and references:

1- A post on the Canon community forum says that:

Unfortunately the “Pro” series of printers aren’t supported, but if you don’t mind paying a little money then check out Turboprint for Linux.

2- The printer doesn’t seem to be supported by generic drivers, according to an Arch forum user

3- Another Linux Mint Forums user confirms that it doesn’t work on Linux and suggests a printer driver wrapper

4- Dpreview users unanimously say the solution is either Turboprint or Windows VM, according to this post and this other post

5- A printerknowledge user links a post that seems to contain instructions on how to get the printer working on Linux, but it appears to be a dead link

Update 1: I found this link on stack exchange explaining how to extract ppd from dmg MacOS images. I extracted the ppd file and all the resources from the official MacOS driver provided by Canon. Now I need to replace MacOS-specific paths to something valid on Linux. There are three or so entries that I need to configure. I will update this post as I make some progress on adapting the drivers to Linux.

  • Admiral Patrick@dubvee.org
    link
    fedilink
    English
    arrow-up
    16
    ·
    edit-2
    5 months ago

    Well, I would never settle for a proprietary software solution, even though I wouldn’t mind the least paying for software if it was FOSS.

    I wonder if this would be too complicated and if I would be better off settling on setting up a QEMU Windows virtual machine with the drivers

    Those two statements seem to contradict each other. Honestly, I’d go with the proprietary Linux driver rather than running a full blown proprietary OS in a VM. That, or just sell that printer and replace it with one that does support Linux properly.

    • buffy@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      7
      ·
      edit-2
      5 months ago

      You are right, those are contradictory. I meant doing it for now and sandboxing the VM while I work on finding a solution. I’m now trying to extract the useful part of the MacOS drivers and see if I can run it natively on Linux.

      Edit: I edited the original post slightly to address your point, which I fully agree with.

    • buffy@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      10
      ·
      5 months ago

      Thanks! It seems like the “dead link” is just telling us how to install any printer using CUPS, sadly. But the second link might help me, given that I can try to extract a ppd driver from the provided macOS drivers.

      • mrvictory1@lemmy.world
        link
        fedilink
        English
        arrow-up
        8
        ·
        5 months ago

        Hunting down drivers then manually adding printer via CUPS interface is exactly what I did for my Samsung printer. I had to install “splix” and registered my printer via web. Good luck.

        • buffy@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 months ago

          I could successfully decompress all the relevant files from the dmg file. Now I need to figure out a way of properly installing them in a cups directory. For instance, I don’t know where I should put /Library/Printers/Canon. But it seems to me that I have all the files required to make it work.

          • mrvictory1@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            5 months ago

            If you have .drv file, put them in /usr/share/cups/drv/. If you have .ppd file, go to http://localhost:631 , choose “printers” from top, add new printer, CUPS will give you the option to supply .ppd file.

            • buffy@lemmy.worldOP
              link
              fedilink
              English
              arrow-up
              1
              ·
              5 months ago

              That I understand, but my problem is the ppd file includes paths like *cupsFilter: "application/vnd.cups-command 0 /Library/Printers/Canon/BJPrinter/Filters/Command2CanonIJ.bundle/Contents/MacOS/Command2CanonIJ". I extracted those binary files too, put them in a cups folder, and adapted the path to point at the correct locations, but the scripts don’t seem to work on Linux. Same thing for the turboprint thing, the commands like (canontoturboprint) are not doing anything from what I can tell

  • lambalicious@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    5
    ·
    5 months ago

    Just to make sure: you tried with CUPS / gutenprint both with the Generic PCL and the Generic Postscript drivers? A fair portion of “unsupported” printers I’ve seen usually accept at least one of them, in particular if the printer also supports “discoverable printing” (eg.: sending to the printer from a phone).

    • buffy@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      5 months ago

      Thanks for the recommendation! I tried both, but sadly it didn’t work.

      I could extract the ppd file from the MacOS driver, but I still need to substitute some OS specific paths that lead to executable files and icc profiles, like *cupsFilter: "application/vnd.cups-raster 0 /Library/Printers/Canon/BJPrinter/Filters/Raster2CanonIJ/Raster2CanonIJS.bundle/Contents/MacOS/Raster2CanonIJS". Not that many, just two or three. I will most likely try to install the drivers on a MacOS VM and see if I can extract those files and place them in a Linux-specific cups directory (/usr/lib/cups or something). I think so far the odds are even.

      Update: It looks like I have all the binary files with me. Raster2CanonIJS, Command2CanonIJ, the ICC profiles and whatnot. I’m now looking for some guidance on where I should place those files on Linux, that would belong in /Library/Printers/Canon/..., etc. on MacOS.

      • lambalicious@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        2
        ·
        5 months ago

        Not sure exactly what files do you have but at least on my system:

        • ppd files can be found in /usr/share/ppd/cupsfilters if you want them grabbe dby Cups.
        • icc profile files can be found in an adequate directory within /usr/share/color/icc. Which directory I guess depends on what and who is managing those files.
        • paper definition files (size, margins, etc) go into /usr/share/gutenprint in a directory within usually with the name papers (note the plural).

        Now, all this gets me is where to place the files. I wouldn’t know exactly how to register to eg.: Cups that those files are there other than using Cups’s own web interface to add drivers.

        • buffy@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          5 months ago

          Thanks! I didn’t have the icc profiles correctly set, which might be one of the problems with my setup.

          I was initially having issues with the Raster2CanonIJS and Command2CanonIJ binaries (that I copied to /usr/lib/cups/filter): cups was raising some errors when executing the scripts. But after fixing those, I wouldn’t get any further errors or warnings, although the printer would simply be unresponsive while the job was set as “completed”. I will check if the problem was the lack of icc profiles under /usr/share/color/icc.