Feb 212012
 

We are proud to announce the release of the DYMO LabelWriter/LabelManager SDK 1.4.0 for Linux.

This release adds support for the LabelWriter 3xx series printers. Please check the DYMO SDK for Linux document for a complete list of supported DYMO LabelWriter/LabelManager printers.

The SDK is available from here. The DYMO LabelWriter/LabelManager SDK for Linux page is here

 Posted by at 20:53  Tagged with: ,

  67 Responses to “Announcing DYMO LabelWriter/LabelManager SDK 1.4.0 for Linux”

  1. Does this work with the JavaScript library?

  2. Dear Dymo,

    I’m trying to get a LabelWriter450 to print labels at a reasonable speed in Ubuntu 11.10
    As it stands now it takes about 10 seconds to print a single label. In Windows it prints in a fraction of a second.
    We need printing in linux because we will eventually have a setup with several print servers connected to several labelwriters in an assembly line.

    Here is what happens:
    In one terminal I do:
    lpr -o PageSize=w162h90 test.txt

    I another:
    cat /sys/kernel/debug/usb/usbmon/3u

    This is sent over the wire instantly:
    ffff8801494a3300 3311681047 S Ci:3:004:0 s 80 08 0000 0000 0001 1 <
    ffff8801494a3300 3311682764 C Ci:3:004:0 0 1 = 01
    ffff880036bd60c0 3311682837 S Ci:3:004:0 s a1 00 0000 0000 0400 1024
    ffff88011df79a80 3314124156 S Bo:3:004:2 -115 2 = 1b41
    ffff88011df79a80 3314125771 C Bo:3:004:2 0 2 >
    ffff88011df790c0 3316626811 S Bo:3:004:2 -115 2 = 1b41
    ffff88011df790c0 3316628777 C Bo:3:004:2 0 2 >
    ffff88011df79f00 3319129469 S Bo:3:004:2 -115 2 = 1b41
    ffff88011df79f00 3319130775 C Bo:3:004:2 0 2 >
    ffff88011df79180 3321630885 S Bo:3:004:2 -115 4 = 1b4c0177
    ffff88011df79180 3321632765 C Bo:3:004:2 0 4 >

    Then this is sent, all at once. At the same time, the label prints.
    ffff8801532fe300 3321633219 S Bo:3:004:2 -115 512 = 1b66010d 1b42091b 44011670 1b420916 701b4209 16701b42 001b442b 17019134
    ffff8801532fe300 3321636785 C Bo:3:004:2 0 512 >
    ffff8801532fe300 3321636886 S Bo:3:004:2 -115 512 = 1e811381 0d810c81 17821181 0d823581 17821181 0a821a81 37821081 17810981
    ffff8801532fe300 3321640763 C Bo:3:004:2 0 512 >
    ffff8801532fe300 3321640902 S Bo:3:004:2 -115 512 = 0c820b83 051b4200 1b443f17 018d1191 0c930788 06870b82 05850d83 06840991
    ffff8801532fe300 3321644765 C Bo:3:004:2 0 512 >
    ffff88011df79240 3321644827 S Bo:3:004:2 -115 512 = 00170583 0a820a81 0e811381 1b811282 0d822681 11810882 0d820e81 00821b81
    ffff88011df79240 3321648769 C Bo:3:004:2 0 512 >
    ffff8801532fef00 3321648835 S Bo:3:004:2 -115 121 = 810c820b 8311811b 81148209 822b8307 830d8209 8210811f 81138209 82008102
    ffff8801532fef00 3321651763 C Bo:3:004:2 0 121 >
    ffff88011df79f00 3321651822 S Bo:3:004:2 -115 4 = 1b471b41

    Now the label has been print mostly but the roll needs to be advanced before the label can be torn off.

    These again one per second.
    ffff88011df79f00 3322169771 C Bo:3:004:2 0 4 >
    ffff8801542b9180 3324152507 S Bo:3:004:2 -115 2 = 1b41
    ffff8801542b9180 3324153774 C Bo:3:004:2 0 2 >
    ffff8801542b9180 3326655044 S Bo:3:004:2 -115 2 = 1b41
    ffff8801542b9180 3326656775 C Bo:3:004:2 0 2 >
    ffff88000b062a80 3329157344 S Bo:3:004:2 -115 2 = 1b41
    ffff88000b062a80 3329158770 C Bo:3:004:2 0 2 >

    Then this is sent and the roll is advanced to the point where we can use the label.
    ffff88000b280600 3331657756 S Bo:3:004:2 -115 2 = 1b45
    ffff88000b280600 3331659780 C Bo:3:004:2 0 2 >

    It looks like a timeout issue to me. Is there something we can do about it?

    • Printing from Ubuntu 11.04 to my DYMO LabelWriter 450 Twin Turbo does not take longer than printing from Windows.

      I am using the following command:
      lpr PageSize=w79h252 test.txt

      Is there a delay as well when printing a “Test Page” within the printer properties?

      • Hi Pi,

        thanks for your reply!

        The “print test page” function in the properties dialog behaves the same way. It takes about 10 seconds. Some 7 before it starts at all and then it prints about half the label. Waits another 3-4 seconds and then it prints the rest.

        What can you deduce from this behaviour?

        • Are you using Ubuntu or Ubuntu server? Is the printer locally attached? What kind of LabelWriter 450 are you using? Are you able to print locally to a locally attached LabelWriter 450 using Ubuntu?

          • Hi Pi,

            I’m on Ubuntu Desktop. Kernel 3.0.0-16-generic 64 bits.
            The printer is locally attached via USB.
            The model number is: 1750111.
            Serial number is: 1750111-2117415.
            I’m using Dymo brand labels type 11354.

            The printer works ok. It is just very slow, about 1 label every 10 seconds.

            Best regards,

            Freek

          • I am on Ubuntu 11.04 (kernel 2.6.38-13-generic 32 bits). I don’t encounter any delays when printing to a DYMO LabelWriter 450, DYMO LabelWriter 450 Turbo, and DYMO LabelWriter 450 Twin Turbo. Do you see a delay on other DYMO printers as well? Have you tried a different PC and a different USB cable?

          • Good news:

            The printer is fast on my collegue’s computer. He is also on 32 bits ubuntu 11.04.
            I have also tried a different cable but that didn’t make a difference.
            I’ll try to boot a 32 bit livecd of 11.10 and see what that does. But that will be tomorrow, it’s end of the day here.

            Thanks for the help!
            Freek

          • I am able to reproduce the problem on Ubuntu 11.10. It seems something is broken on 11.10 since there isn’t any performance problem on 11.04.

          • Ok great that you have reproduced it. I’ll hold off on making the livecd and work with 11.04 for now.

            Would you be so kind as to post a comment here when/if you find out what the problem was?

            Thanks again for your help! Now I at least know that it wasn’t something I did wrong.

            best regards,

            Freek

          • It is not a CUPS 1.5.0 issue since it is working with openSUSE 12.1. It looks like an Ubuntu 11.10 bug.

          • It is an Ubuntu 11.10 feature since the “usb” backend of CUPS has no backchannel support in Oneiric (11.10). This problem will fixed in Precise (12.04).

          • Ok, thank you for finding this out. I’ll just avoid 11.10 for now!

            I really appreciate that you invested all the effort to sort this out for me!

            best regards!

            Freek Zindel

          • It is working with Ubuntu 12.04 BETA again. I guess that it will work with Ubuntu 12.04.

        • Hello
          I have the same problem on raspbian. if i do
          lpr -Pdymo file.pdf
          it is ok
          if i do
          lpr -Pdymo file1.pdf, file2.pdf
          it take 10 seconds to print the 2 labels. first print imeddiately and second wait 6-8 seconds
          Any idea ?
          Thank you

          • I don’t have raspbian and we haven’t tested our drivers on raspbian.

            The issue above has been caused by missing CUPS back channel support and has been fixed with a more recent Ubuntu version.

            Therefore I would try with the latest raspbian version.

  3. Is there a dll available that could translate the “.label” files to an image?

    I am looking for lightweight optimization in printer speed across all platforms. I would prefer to do this without full blown gui software.
    Currently have a network of customers consisting of 2,900+ LabelWriter printers printing 67,000+ labels per week and growing.

  4. hi,
    I try to install dymo cup driver for “dymo labelmanager pnp” on debian squeeze. When I try to print page test (pdf, image or text) from cups or other program, i get this error:

    /usr/lib/ups/filter/pdftoroaster failed.

    Also, I don’t know the right URI for pnp on CUPS, I tryed this: “usb://DYMO/LM-PNP” , it’s right? how to fix the pdftoroaster issue? This is my conf:

    dymo-cups-drivers-1.4.0.5
    CUPS: 1.4.4-7+squeeze1
    ghostscript: gs 8.71

    tank you.

    • The current Linux SDK does not support the DYMO LabelManager PnP. Please check the DYMO_SDK_for_Linux document for the supported DYMO printers.

      • There is an lmpnp.ppd file :( . It ‘a shame that there is not a driver for label manager pnp. there is another way to use this device on linux? It will take a long time before it is released?It’s planned?

        • The DYMO LabelManager PnP has 2 USB configuration and each configuration is a composite device. The first and default USB configuration reports as a HID interface and a MAS interface. The second USB configuration reports as a printer interface, a HID interface and a MAS interface. Therefore custom software is required to tell the LabelManager PnP to start the second USB configuration in order to print.

          • I try to switch off uneeded usb storage drive to leave only printer usb. I try to use USB_ModeSwitch (http://www.draisberghof.de/usb_modeswitch/#usage) with this rule:

            —————————————————————————————————————————-

            DefaultVendor= 0x0922 # idVendor 0x0922 Dymo-CoStar Corp.
            DefaultProduct= 0x1001 # idProduct 0x1001

            # To Printer mode:

            TargetVendor= 0x0922 # idVendor 0x0922 Dymo-CoStar Corp.
            TargetProduct= XXXXXX

            MessageContent=”XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”
            —————————————————————————————————————————-

            But i don’t now XXX value. You can help? I find others value from lsusb

          • The idProduct of the 2nd USB configuration is 0x1002.

  5. Hello, our work uses dymo label printers to barcode stock as it’s processed. Now, we currently have our labels printed via a web browser which requests the label from the server, the response looks something like this:

    codemessagemessagelabels

    This triggers a label to be printed with a set template. Now, I am considering a move to linux, and to an open source browser to add extra functionality, such as automated data entry. How exactly do I implement this? Add code into the browser? Is there a way to get this server response to trigger a label within linux?

    • [code]<methodResponse><params><param><value><struct><member><name>code</name><value><string>message</string></value></member><member><name>message</name><value><string></string></value></member><member><name>labels</name><value><struct><label id="683841 GBM12353-1"><tamsid value="683841"/><tamscode value="683841*12480"/><loadcode value="GBM12353-1"/><desc1 value="Computer-PC Hp DC7700 Core 2 Duo 1866MHz"/><desc2 value=" 2048MB 0GB HDD DVD-RW/CD-RW NIC:On Boar"/><serial value="aud71705wq"/></label></struct></value></member></struct></value></param></params></methodResponse>
      [/code]

      • DYMO provides CUPS drivers for printing. But the DYMO JavaScript library isn’t supported on Linux.

        • So I assume that I’ll need to perhaps put code in the browser to catch the server response, place the elements into the template, and then send code off via cups to print the label?

  6. I downloaded and installed the SDK for Linux version 1.4.0.5, but i dont find the PPD files for the Dymo LabelManager 420P (which i bought because there should be some Cups Drivers for it, according to http://var.dymo.com/US/resources/sdk/linux/ )

    Could you please give me a hint?

    Thanks in advance and best regards, Mathias

    • The PPD file for the DYMO LabelManager 420P is called LM420p.ppd. But the DYMO LabelManager PnP as well as the 420P have 2 USB configuration. The first and default USB configuration reports as a HID interface and a MAS interface. The second USB configuration reports as a printer interface, a HID interface and a MAS interface. Therefore custom software is required to tell the LabelManager 420P to start the second USB configuration in order to print.

      There is already a comment about this topic. The USB_ModeSwitch (http://www.draisberghof.de/usb_modeswitch/#usage) is working according to that customer.

      The DYMO LabelManager PnP Product ID of the 2nd USB configuration is 0×1002
      The DYMO LabelManager 420P Product ID of the 2nd USB configuration is 0×1004

  7. Is the JavaScript library still not supported?

  8. The link to the sdk page is broken. Only the sdk link works. Where is the documentation?

  9. Is printing of DieCutLabel XML labels at all possible on linux?

    • Hi,

      Die cut label printing is supported by our linux SDK. You can take a look at the Sample file included in the SDK for examples on how to print these labels.

  10. Hello,

    I have trouble with Cups 2.2.x. Firstly, there were a couple of errors at compilation, which could be fixed by including where necessary:

    diff -u -r dymo-cups-drivers-1.4.0.5/src/common/CupsFilter.h dymo-cups-drivers-1.4.0.5-patch/src/common/CupsFilter.h
    — dymo-cups-drivers-1.4.0.5/src/common/CupsFilter.h 2012-02-07 14:22:37.000000000 +0100
    +++ dymo-cups-drivers-1.4.0.5-patch/src/common/CupsFilter.h 2016-10-26 16:09:48.957672252 +0200
    @@ -23,6 +23,7 @@

    #include
    #include
    +#include
    #include
    #include
    #include “CupsPrintEnvironment.h”

    diff -u -r dymo-cups-drivers-1.4.0.5/src/lm/CupsFilterLabelManager.h dymo-cups-drivers-1.4.0.5-patch/src/lm/CupsFilterLabelManager.h
    — dymo-cups-drivers-1.4.0.5/src/lm/CupsFilterLabelManager.h 2012-02-07 14:22:38.000000000 +0100
    +++ dymo-cups-drivers-1.4.0.5-patch/src/lm/CupsFilterLabelManager.h 2016-10-26 16:10:40.611006704 +0200
    @@ -23,6 +23,7 @@

    #include
    #include
    +#include
    #include “LabelManagerDriver.h”
    #include “LabelManagerLanguageMonitor.h”
    #include “DummyLanguageMonitor.h”

    #endif
    diff -u -r dymo-cups-drivers-1.4.0.5/src/lw/CupsFilterLabelWriter.h dymo-cups-drivers-1.4.0.5-patch/src/lw/CupsFilterLabelWriter.h
    — dymo-cups-drivers-1.4.0.5/src/lw/CupsFilterLabelWriter.h 2012-02-07 14:22:37.000000000 +0100
    +++ dymo-cups-drivers-1.4.0.5-patch/src/lw/CupsFilterLabelWriter.h 2016-10-26 16:10:25.051006367 +0200
    @@ -23,6 +23,7 @@

    #include
    #include
    +#include
    #include “LabelWriterDriver.h”
    #include “LabelWriterLanguageMonitor.h”
    #include “DummyLanguageMonitor.h”

    Secondly, after fixing the compilation issue, the printer doesn’t work. No error is reported and the driver seems working fine from the logs. But the printer (LabelWriter PnP) remains impassibly silent and nothing comes out of it. It was working before the upgrade to Cups 2.2.x.

    How to debug / check if the usb communication between the host and the printer works fine? Is there some kind of self-test in the driver?

    • What Linux version are you running? Is CUPS 2.2 supported on your Linux version? Are you able printing to other printers? Is there a special reason why you are running CUPS 2.2?

      I am running Ubuntu 16.04 and the latest CUPS version is 2.1.3. The Linux SDK is compiling just fine with out any issues. What compiler errors are you getting? Have you tried to run drivers compiled against CUPS 2.1 on 2.2?

      I assume that you are referring to LabelManager PnP since LabelWriters are our die-cut (pre-sized) label printers. I am not sure how you have fixed your compiling errors. But make sure that you don’t mix LabelWriter and LabelManager code.

      Finally the DYMO LabelManager PnP has 2 USB configuration and each configuration is a composite device. The first and default USB configuration reports as a HID interface and a MAS interface. The second USB configuration reports as a printer interface, a HID interface and a MAS interface. Therefore custom software (e.g. USB_ModeSwitch) is required to tell the LabelManager PnP to start the second USB configuration in order to print. Please see the responses of this blog post for more details.

  11. Hello,

    Could you help me?

    I have Dymo Label Manager PnP and Fedora 25 operation system. I found Dymo SDK for Linux, download it and try to install.

    “./configure” command works fine, but then I tried to execute “make” command process and it was failed.
    Here the log of errors:

    Making all in src
    make[1]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
    make all-recursive
    make[2]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
    Making all in lw
    make[3]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
    Making all in tests
    make[4]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw/tests'
    make[4]: Nothing to be done for 'all'.
    make[4]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw/tests'
    make[4]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
    g++ -DHAVE_CONFIG_H -I. -I../../src -I../common -O2 -Wall -Wno-unknown-pragmas -MT raster2dymolw.o -MD -MP -MF .deps/raster2dymolw.Tpo -c -o raster2dymolw.o raster2dymolw.cpp
    In file included from raster2dymolw.cpp:37:0:
    ../common/CupsFilter.h: In member function 'int DymoPrinterDriver::CCupsFilter::Run(int, char**)':
    ../common/CupsFilter.h:135:10: warning: 'template class std::auto_ptr' is deprecated [-Wdeprecated-declarations]
    std::auto_ptr H;
    ^~~~~~~~
    In file included from /usr/include/c++/6.3.1/memory:81:0,
    from raster2dymolw.cpp:28:
    /usr/include/c++/6.3.1/bits/unique_ptr.h:49:28: note: declared here
    template class auto_ptr;
    ^~~~~~~~
    In file included from raster2dymolw.cpp:37:0:
    ../common/CupsFilter.h: In member function 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*)':
    ../common/CupsFilter.h:218:3: error: 'ppd_file_t' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ^~~~~~~~~~
    ../common/CupsFilter.h:218:15: error: 'ppd' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ^~~
    ../common/CupsFilter.h:218:46: error: there are no arguments to 'ppdOpenFile' that depend on a template parameter, so a declaration of 'ppdOpenFile' must be available [-fpermissive]
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ^
    ../common/CupsFilter.h:218:46: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
    ../common/CupsFilter.h:228:22: error: there are no arguments to 'ppdMarkDefaults' that depend on a template parameter, so a declaration of 'ppdMarkDefaults' must be available [-fpermissive]
    ppdMarkDefaults(ppd);
    ^
    ../common/CupsFilter.h:234:59: error: there are no arguments to 'ppdMarkOption' that depend on a template parameter, so a declaration of 'ppdMarkOption' must be available [-fpermissive]
    ppdMarkOption(ppd, Options[i].name, Options[i].value);
    ^
    ../common/CupsFilter.h:238:44: error: there are no arguments to 'cupsMarkOptions' that depend on a template parameter, so a declaration of 'cupsMarkOptions' must be available [-fpermissive]
    cupsMarkOptions(ppd, OptionCount, Options);
    ^
    ../common/CupsFilter.h:243:3: error: 'ppd_choice_t' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ^~~~~~~~~~~~
    ../common/CupsFilter.h:243:17: error: 'choice' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ^~~~~~
    ../common/CupsFilter.h:243:67: error: there are no arguments to 'ppdFindMarkedChoice' that depend on a template parameter, so a declaration of 'ppdFindMarkedChoice' must be available [-fpermissive]
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ^
    ../common/CupsFilter.h:248:15: error: there are no arguments to 'ppdClose' that depend on a template parameter, so a declaration of 'ppdClose' must be available [-fpermissive]
    ppdClose(ppd);
    ^
    In file included from raster2dymolw.cpp:38:0:
    CupsFilterLabelWriter.h: At global scope:
    CupsFilterLabelWriter.h:36:89: error: 'ppd_file_t' has not been declared
    static void ProcessPPDOptions (CLabelWriterDriver& Driver, CDummyLanguageMonitor& LM, ppd_file_t* ppd);
    ^~~~~~~~~~
    CupsFilterLabelWriter.h:43:98: error: 'ppd_file_t' has not been declared
    static void ProcessPPDOptions (CLabelWriterDriverTwinTurbo& Driver, CDummyLanguageMonitor& LM, ppd_file_t* ppd);
    ^~~~~~~~~~
    In file included from raster2dymolw.cpp:38:0:
    CupsFilterLabelWriter.h:50:95: error: 'ppd_file_t' has not been declared
    static void ProcessPPDOptions (CLabelWriterDriver& Driver, CLabelWriterLanguageMonitor& LM, ppd_file_t* ppd);
    ^~~~~~~~~~
    CupsFilterLabelWriter.h:58:104: error: 'ppd_file_t' has not been declared
    static void ProcessPPDOptions (CLabelWriterDriverTwinTurbo& Driver, CLabelWriterLanguageMonitor& LM, ppd_file_t* ppd);
    ^~~~~~~~~~
    raster2dymolw.cpp: In function 'int main(int, char**)':
    raster2dymolw.cpp:60:3: error: 'ppd_file_t' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ^~~~~~~~~~
    raster2dymolw.cpp:60:15: error: 'ppd' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ^~~
    raster2dymolw.cpp:60:46: error: 'ppdOpenFile' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ^
    In file included from raster2dymolw.cpp:37:0:
    ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]':
    ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]'
    raster2dymolw.cpp:68:35: required from here
    ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ~~~~~~~~~~~^~~~~~~~~~~~~~~
    ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
    ppdMarkDefaults(ppd);
    ~~~~~~~~~~~~~~~^~~~~
    ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
    ppdMarkOption(ppd, Options[i].name, Options[i].value);
    ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
    cupsMarkOptions(ppd, OptionCount, Options);
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
    ppdClose(ppd);
    ~~~~~~~~^~~~~
    ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]':
    ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]'
    raster2dymolw.cpp:73:35: required from here
    ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ~~~~~~~~~~~^~~~~~~~~~~~~~~
    ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
    ppdMarkDefaults(ppd);
    ~~~~~~~~~~~~~~~^~~~~
    ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
    ppdMarkOption(ppd, Options[i].name, Options[i].value);
    ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
    cupsMarkOptions(ppd, OptionCount, Options);
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
    ppdClose(ppd);
    ~~~~~~~~^~~~~
    ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurboWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]':
    ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurboWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]'
    raster2dymolw.cpp:84:37: required from here
    ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ~~~~~~~~~~~^~~~~~~~~~~~~~~
    ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
    ppdMarkDefaults(ppd);
    ~~~~~~~~~~~~~~~^~~~~
    ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
    ppdMarkOption(ppd, Options[i].name, Options[i].value);
    ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
    cupsMarkOptions(ppd, OptionCount, Options);
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
    ppdClose(ppd);
    ~~~~~~~~^~~~~
    ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurbo; LM = DymoPrinterDriver::CDummyLanguageMonitor]':
    ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurbo; LM = DymoPrinterDriver::CDummyLanguageMonitor]'
    raster2dymolw.cpp:89:37: required from here
    ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ~~~~~~~~~~~^~~~~~~~~~~~~~~
    ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
    ppdMarkDefaults(ppd);
    ~~~~~~~~~~~~~~~^~~~~
    ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
    ppdMarkOption(ppd, Options[i].name, Options[i].value);
    ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
    cupsMarkOptions(ppd, OptionCount, Options);
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
    ppdClose(ppd);
    ~~~~~~~~^~~~~
    ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]':
    ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]'
    raster2dymolw.cpp:103:37: required from here
    ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ~~~~~~~~~~~^~~~~~~~~~~~~~~
    ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
    ppdMarkDefaults(ppd);
    ~~~~~~~~~~~~~~~^~~~~
    ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
    ppdMarkOption(ppd, Options[i].name, Options[i].value);
    ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
    cupsMarkOptions(ppd, OptionCount, Options);
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
    ppdClose(ppd);
    ~~~~~~~~^~~~~
    ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]':
    ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]'
    raster2dymolw.cpp:108:37: required from here
    ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
    ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
    ~~~~~~~~~~~^~~~~~~~~~~~~~~
    ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
    ppdMarkDefaults(ppd);
    ~~~~~~~~~~~~~~~^~~~~
    ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
    ppdMarkOption(ppd, Options[i].name, Options[i].value);
    ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
    cupsMarkOptions(ppd, OptionCount, Options);
    ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
    ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
    ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
    ppdClose(ppd);
    ~~~~~~~~^~~~~
    Makefile:345: recipe for target 'raster2dymolw.o' failed
    make[4]: *** [raster2dymolw.o] Error 1
    make[4]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
    Makefile:435: recipe for target 'all-recursive' failed
    make[3]: *** [all-recursive] Error 1
    make[3]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
    Makefile:262: recipe for target 'all-recursive' failed
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
    Makefile:204: recipe for target 'all' failed
    make[1]: *** [all] Error 2
    make[1]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
    Makefile:263: recipe for target 'all-recursive' failed
    make: *** [all-recursive] Error 1

    What should I do?

    • ppd_file_t is defined in “cups/ppd.h”.

      Please make sure that this file has been installed and that this file contains the definition for ppd_file_t.

      If you can’t find this header file or the definition is missing then install libcups2-dev package.

  12. I found this file. It was in /usr/include/cups/ppd.d

    Then I grep’ed this file to find the ppd_file_t. Here the output:


    [root@localhost cups]# less ppd.h | grep ppd_file_t
    } ppd_file_t;
    extern int cupsMarkOptions(ppd_file_t *ppd, int num_options, cups_option_t *options) _PPD_DEPRECATED;
    extern void ppdClose(ppd_file_t *ppd) _PPD_DEPRECATED;
    extern int ppdCollect(ppd_file_t *ppd, ppd_section_t section,
    extern int ppdConflicts(ppd_file_t *ppd) _PPD_DEPRECATED;
    extern int ppdEmit(ppd_file_t *ppd, FILE *fp,
    extern int ppdEmitFd(ppd_file_t *ppd, int fd,
    extern int ppdEmitJCL(ppd_file_t *ppd, FILE *fp, int job_id,
    extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd,
    extern ppd_option_t *ppdFindOption(ppd_file_t *ppd, const char *keyword)
    extern int ppdIsMarked(ppd_file_t *ppd, const char *keyword,
    extern void ppdMarkDefaults(ppd_file_t *ppd) _PPD_DEPRECATED;
    extern int ppdMarkOption(ppd_file_t *ppd, const char *keyword,
    extern ppd_file_t *ppdOpen(FILE *fp) _PPD_DEPRECATED;
    extern ppd_file_t *ppdOpenFd(int fd) _PPD_DEPRECATED;
    extern ppd_file_t *ppdOpenFile(const char *filename) _PPD_DEPRECATED;
    extern float ppdPageLength(ppd_file_t *ppd, const char *name)
    extern ppd_size_t *ppdPageSize(ppd_file_t *ppd, const char *name)
    extern float ppdPageWidth(ppd_file_t *ppd, const char *name)
    extern ppd_attr_t *ppdFindAttr(ppd_file_t *ppd, const char *name,
    extern ppd_attr_t *ppdFindNextAttr(ppd_file_t *ppd, const char *name,
    ppd_file_t *ppd,
    extern int ppdCollect2(ppd_file_t *ppd, ppd_section_t section,
    extern int ppdEmitAfterOrder(ppd_file_t *ppd, FILE *fp,
    extern int ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp)
    extern char *ppdEmitString(ppd_file_t *ppd, ppd_section_t section,
    extern ppd_coption_t *ppdFindCustomOption(ppd_file_t *ppd,
    extern ppd_option_t *ppdFirstOption(ppd_file_t *ppd) _PPD_DEPRECATED;
    extern ppd_option_t *ppdNextOption(ppd_file_t *ppd) _PPD_DEPRECATED;
    extern int ppdLocalize(ppd_file_t *ppd) _PPD_DEPRECATED;
    extern ppd_file_t *ppdOpen2(cups_file_t *fp) _PPD_DEPRECATED;
    extern const char *ppdLocalizeIPPReason(ppd_file_t *ppd,
    extern int cupsGetConflicts(ppd_file_t *ppd, const char *option,
    extern int cupsResolveConflicts(ppd_file_t *ppd,
    extern int ppdInstallableConflict(ppd_file_t *ppd,
    extern ppd_attr_t *ppdLocalizeAttr(ppd_file_t *ppd, const char *keyword,
    extern const char *ppdLocalizeMarkerName(ppd_file_t *ppd,
    extern int ppdPageSizeLimits(ppd_file_t *ppd,

    Also I tried to find libcups2-dev for fedora, but can’t. I found just cups-libs. What the difference between them?
    Here the packages which installed in my system:
    [root@localhost /]# dnf list | grep cups
    bluez-cups.x86_64 5.42-2.fc25 @koji-override-0
    cups.x86_64 1:2.2.0-8.fc25 @updates
    cups-bjnp.x86_64 2.0-5.fc24 @fedora
    cups-client.x86_64 1:2.2.0-8.fc25 @updates
    cups-devel.i686 1:2.2.0-8.fc25 @updates
    cups-devel.x86_64 1:2.2.0-8.fc25 @updates
    cups-filesystem.noarch 1:2.2.0-8.fc25 @updates
    cups-filters.x86_64 1.10.0-3.fc25 @koji-override-0
    cups-filters-devel.i686 1.10.0-3.fc25 @fedora
    cups-filters-devel.x86_64 1.10.0-3.fc25 @fedora
    cups-filters-libs.i686 1.10.0-3.fc25 @fedora
    cups-filters-libs.x86_64 1.10.0-3.fc25 @koji-override-0
    cups-ipptool.x86_64 1:2.2.0-8.fc25 @updates
    cups-libs.i686 1:2.2.0-8.fc25 @updates
    cups-libs.x86_64 1:2.2.0-8.fc25 @updates
    cups-lpd.x86_64 1:2.2.0-8.fc25 @updates
    cups-pdf.x86_64 2.6.1-11.fc24 @fedora
    cups-pk-helper.x86_64 0.2.6-1.fc24 @koji-override-0
    cups-x2go.noarch 3.0.1.3-2.fc24 @fedora
    gutenprint-cups.x86_64 5.2.11-2.fc24 @koji-override-0
    python3-cups.x86_64 1.9.72-9.fc25 @koji-override-0
    apcupsd.x86_64 3.14.14-2.fc25 fedora
    apcupsd-cgi.x86_64 3.14.14-2.fc25 fedora
    apcupsd-gui.x86_64 3.14.14-2.fc25 fedora
    bluez-cups.x86_64 5.44-1.fc25 updates
    python-cups-doc.x86_64 1.9.72-9.fc25 fedora
    python2-cups.x86_64 1.9.72-9.fc25 fedora

    • Please run automake and autoconf before you run ./configure and then make.

      I am not sure if “_PPD_DEPRECATED” will generate an error or just a warning. In the past it used to generate a compiler warning.

      What CUPS version are you running?

      • I did autoconf and automake before ./configure. So when I ran autoconf it works fine. But problem appeared when I tried to start automake. Here a piece of log:

        [root@localhost dymo-cups-drivers-1.4.0.5]# automake
        configure.ac:22: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated. For more info, see:
        configure.ac:22: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
        ppd/Makefile.am:53: warning: deprecated feature: target ‘testppd’ overrides ‘testppd$(EXEEXT)’
        ppd/Makefile.am:53: change your target to read ‘testppd$(EXEEXT)’
        /usr/share/automake-1.15/am/program.am: target ‘testppd$(EXEEXT)’ was defined here
        ppd/Makefile.am:49: while processing program ‘testppd’
        samples/custom_paper/Makefile.am:28: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        samples/custom_paper_tape/Makefile.am:28: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        samples/paper_bounds/Makefile.am:28: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        samples/test_label/Makefile.am:30: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        src/common/tests/Makefile.am:41: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        src/common/tests/Makefile.am:24: warning: source file ‘../Halftoning.cpp’ is in a subdirectory,
        src/common/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        automake: warning: possible forward-incompatibility.
        automake: At least a source file is in a subdirectory, but the ‘subdir-objects’
        automake: automake option hasn’t been enabled. For now, the corresponding output
        automake: object file(s) will be placed in the top-level directory. However,
        automake: this behaviour will change in future Automake versions: they will
        automake: unconditionally cause object files to be placed in the same subdirectory
        automake: of the corresponding sources.
        automake: You are advised to start using ‘subdir-objects’ option throughout your
        automake: project, to avoid future incompatibilities.
        src/common/tests/Makefile.am:24: warning: source file ‘../ErrorDiffusionHalftoning.cpp’ is in a subdirectory,
        src/common/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/common/tests/Makefile.am:24: warning: source file ‘../NonLinearLaplacianHalftoning.cpp’ is in a subdirectory,
        src/common/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lm/Makefile.am:22: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        src/lm/Makefile.am:26: warning: source file ‘../common/CupsPrintEnvironment.cpp’ is in a subdirectory,
        src/lm/Makefile.am:26: but option ‘subdir-objects’ is disabled
        src/lm/Makefile.am:26: warning: source file ‘../common/Halftoning.cpp’ is in a subdirectory,
        src/lm/Makefile.am:26: but option ‘subdir-objects’ is disabled
        src/lm/Makefile.am:26: warning: source file ‘../common/ErrorDiffusionHalftoning.cpp’ is in a subdirectory,
        src/lm/Makefile.am:26: but option ‘subdir-objects’ is disabled
        src/lm/Makefile.am:26: warning: source file ‘../common/NonLinearLaplacianHalftoning.cpp’ is in a subdirectory,
        src/lm/Makefile.am:26: but option ‘subdir-objects’ is disabled
        src/lm/Makefile.am:26: warning: source file ‘../common/DummyLanguageMonitor.cpp’ is in a subdirectory,
        src/lm/Makefile.am:26: but option ‘subdir-objects’ is disabled
        src/lm/tests/Makefile.am:44: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        src/lm/tests/Makefile.am:24: warning: source file ‘../../common/tests/testsMain.cpp’ is in a subdirectory,
        src/lm/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lm/tests/Makefile.am:24: warning: source file ‘../../common/tests/MOCK_PrintEnvironment.cpp’ is in a subdirectory,
        src/lm/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lm/tests/Makefile.am:24: warning: source file ‘../../common/tests/TestCommon.cpp’ is in a subdirectory,
        src/lm/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lm/tests/Makefile.am:24: warning: source file ‘../../common/DummyLanguageMonitor.cpp’ is in a subdirectory,
        src/lm/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lm/tests/Makefile.am:24: warning: source file ‘../LabelManagerDriver.cpp’ is in a subdirectory,
        src/lm/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lm/tests/Makefile.am:24: warning: source file ‘../CupsFilterLabelManager.cpp’ is in a subdirectory,
        src/lm/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lm/tests/Makefile.am:24: warning: source file ‘../LabelManagerLanguageMonitor.cpp’ is in a subdirectory,
        src/lm/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/Makefile.am:48: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        src/lw/Makefile.am:24: warning: source file ‘../common/CupsPrintEnvironment.cpp’ is in a subdirectory,
        src/lw/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/Makefile.am:24: warning: source file ‘../common/Halftoning.cpp’ is in a subdirectory,
        src/lw/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/Makefile.am:24: warning: source file ‘../common/ErrorDiffusionHalftoning.cpp’ is in a subdirectory,
        src/lw/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/Makefile.am:24: warning: source file ‘../common/NonLinearLaplacianHalftoning.cpp’ is in a subdirectory,
        src/lw/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/Makefile.am:24: warning: source file ‘../common/DummyLanguageMonitor.cpp’ is in a subdirectory,
        src/lw/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/tests/Makefile.am:49: warning: ‘INCLUDES’ is the old name for ‘AM_CPPFLAGS’ (or ‘*_CPPFLAGS’)
        src/lw/tests/Makefile.am:24: warning: source file ‘../../common/tests/testsMain.cpp’ is in a subdirectory,
        src/lw/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/tests/Makefile.am:24: warning: source file ‘../../common/tests/MOCK_PrintEnvironment.cpp’ is in a subdirectory,
        src/lw/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/tests/Makefile.am:24: warning: source file ‘../../common/tests/TestCommon.cpp’ is in a subdirectory,
        src/lw/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/tests/Makefile.am:24: warning: source file ‘../../common/DummyLanguageMonitor.cpp’ is in a subdirectory,
        src/lw/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/tests/Makefile.am:24: warning: source file ‘../LabelWriterLanguageMonitor.cpp’ is in a subdirectory,
        src/lw/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/tests/Makefile.am:24: warning: source file ‘../LabelWriterDriver.cpp’ is in a subdirectory,
        src/lw/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled
        src/lw/tests/Makefile.am:24: warning: source file ‘../CupsFilterLabelWriter.cpp’ is in a subdirectory,
        src/lw/tests/Makefile.am:24: but option ‘subdir-objects’ is disabled

        I googled this wraning and found that it can solve by this change:
        I did it in configure.ac

        +++ AM_INIT_AUTOMAKE([subdir-objects])
        --- AM_INIT_AUTOMAKE(dymo-cups-drivers, 1.4.0.5)

        Also I changed Makefile.am and added there a string:

        AUTOMAKE_OPTIONS=subdir-objects

        After that, automake worked fine. Then I started ./configure it worked fine too. And, then I tried to start make again. At first it was looking good, but then… Here all log messages after make command:

        [root@localhost dymo-cups-drivers-1.4.0.5]# make
        Making all in src
        make[1]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
        make all-recursive
        make[2]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
        Making all in lw
        make[3]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
        Making all in tests
        make[4]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw/tests'
        make[4]: Nothing to be done for 'all'.
        make[4]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw/tests'
        make[4]: Entering directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
        depbase=`echo raster2dymolw.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
        g++ -DHAVE_CONFIG_H -I. -I../../src -I../common -O2 -Wall -Wno-unknown-pragmas -MT raster2dymolw.o -MD -MP -MF $depbase.Tpo -c -o raster2dymolw.o raster2dymolw.cpp &&\
        mv -f $depbase.Tpo $depbase.Po
        In file included from raster2dymolw.cpp:37:0:
        ../common/CupsFilter.h: In member function 'int DymoPrinterDriver::CCupsFilter::Run(int, char**)':
        ../common/CupsFilter.h:135:10: warning: 'template class std::auto_ptr' is deprecated [-Wdeprecated-declarations]
        std::auto_ptr H;
        ^~~~~~~~
        In file included from /usr/include/c++/6.3.1/memory:81:0,
        from raster2dymolw.cpp:28:
        /usr/include/c++/6.3.1/bits/unique_ptr.h:49:28: note: declared here
        template class auto_ptr;
        ^~~~~~~~
        In file included from raster2dymolw.cpp:37:0:
        ../common/CupsFilter.h: In member function 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*)':
        ../common/CupsFilter.h:218:3: error: 'ppd_file_t' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ^~~~~~~~~~
        ../common/CupsFilter.h:218:15: error: 'ppd' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ^~~
        ../common/CupsFilter.h:218:46: error: there are no arguments to 'ppdOpenFile' that depend on a template parameter, so a declaration of 'ppdOpenFile' must be available [-fpermissive]
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ^
        ../common/CupsFilter.h:218:46: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
        ../common/CupsFilter.h:228:22: error: there are no arguments to 'ppdMarkDefaults' that depend on a template parameter, so a declaration of 'ppdMarkDefaults' must be available [-fpermissive]
        ppdMarkDefaults(ppd);
        ^
        ../common/CupsFilter.h:234:59: error: there are no arguments to 'ppdMarkOption' that depend on a template parameter, so a declaration of 'ppdMarkOption' must be available [-fpermissive]
        ppdMarkOption(ppd, Options[i].name, Options[i].value);
        ^
        ../common/CupsFilter.h:238:44: error: there are no arguments to 'cupsMarkOptions' that depend on a template parameter, so a declaration of 'cupsMarkOptions' must be available [-fpermissive]
        cupsMarkOptions(ppd, OptionCount, Options);
        ^
        ../common/CupsFilter.h:243:3: error: 'ppd_choice_t' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ^~~~~~~~~~~~
        ../common/CupsFilter.h:243:17: error: 'choice' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ^~~~~~
        ../common/CupsFilter.h:243:67: error: there are no arguments to 'ppdFindMarkedChoice' that depend on a template parameter, so a declaration of 'ppdFindMarkedChoice' must be available [-fpermissive]
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ^
        ../common/CupsFilter.h:248:15: error: there are no arguments to 'ppdClose' that depend on a template parameter, so a declaration of 'ppdClose' must be available [-fpermissive]
        ppdClose(ppd);
        ^
        In file included from raster2dymolw.cpp:38:0:
        CupsFilterLabelWriter.h: At global scope:
        CupsFilterLabelWriter.h:36:89: error: 'ppd_file_t' has not been declared
        static void ProcessPPDOptions (CLabelWriterDriver& Driver, CDummyLanguageMonitor& LM, ppd_file_t* ppd);
        ^~~~~~~~~~
        CupsFilterLabelWriter.h:43:98: error: 'ppd_file_t' has not been declared
        static void ProcessPPDOptions (CLabelWriterDriverTwinTurbo& Driver, CDummyLanguageMonitor& LM, ppd_file_t* ppd);
        ^~~~~~~~~~
        In file included from raster2dymolw.cpp:38:0:
        CupsFilterLabelWriter.h:50:95: error: 'ppd_file_t' has not been declared
        static void ProcessPPDOptions (CLabelWriterDriver& Driver, CLabelWriterLanguageMonitor& LM, ppd_file_t* ppd);
        ^~~~~~~~~~
        CupsFilterLabelWriter.h:58:104: error: 'ppd_file_t' has not been declared
        static void ProcessPPDOptions (CLabelWriterDriverTwinTurbo& Driver, CLabelWriterLanguageMonitor& LM, ppd_file_t* ppd);
        ^~~~~~~~~~
        raster2dymolw.cpp: In function 'int main(int, char**)':
        raster2dymolw.cpp:60:3: error: 'ppd_file_t' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ^~~~~~~~~~
        raster2dymolw.cpp:60:15: error: 'ppd' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ^~~
        raster2dymolw.cpp:60:46: error: 'ppdOpenFile' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ^
        In file included from raster2dymolw.cpp:37:0:
        ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]':
        ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]'
        raster2dymolw.cpp:68:35: required from here
        ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ~~~~~~~~~~~^~~~~~~~~~~~~~~
        ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
        ppdMarkDefaults(ppd);
        ~~~~~~~~~~~~~~~^~~~~
        ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
        ppdMarkOption(ppd, Options[i].name, Options[i].value);
        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
        cupsMarkOptions(ppd, OptionCount, Options);
        ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
        ppdClose(ppd);
        ~~~~~~~~^~~~~
        ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]':
        ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]'
        raster2dymolw.cpp:73:35: required from here
        ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ~~~~~~~~~~~^~~~~~~~~~~~~~~
        ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
        ppdMarkDefaults(ppd);
        ~~~~~~~~~~~~~~~^~~~~
        ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
        ppdMarkOption(ppd, Options[i].name, Options[i].value);
        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
        cupsMarkOptions(ppd, OptionCount, Options);
        ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
        ppdClose(ppd);
        ~~~~~~~~^~~~~
        ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurboWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]':
        ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurboWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]'
        raster2dymolw.cpp:84:37: required from here
        ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ~~~~~~~~~~~^~~~~~~~~~~~~~~
        ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
        ppdMarkDefaults(ppd);
        ~~~~~~~~~~~~~~~^~~~~
        ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
        ppdMarkOption(ppd, Options[i].name, Options[i].value);
        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
        cupsMarkOptions(ppd, OptionCount, Options);
        ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
        ppdClose(ppd);
        ~~~~~~~~^~~~~
        ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurbo; LM = DymoPrinterDriver::CDummyLanguageMonitor]':
        ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriverTwinTurbo; DI = DymoPrinterDriver::CDriverInitializerLabelWriterTwinTurbo; LM = DymoPrinterDriver::CDummyLanguageMonitor]'
        raster2dymolw.cpp:89:37: required from here
        ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ~~~~~~~~~~~^~~~~~~~~~~~~~~
        ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
        ppdMarkDefaults(ppd);
        ~~~~~~~~~~~~~~~^~~~~
        ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
        ppdMarkOption(ppd, Options[i].name, Options[i].value);
        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
        cupsMarkOptions(ppd, OptionCount, Options);
        ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
        ppdClose(ppd);
        ~~~~~~~~^~~~~
        ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]':
        ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriterWithLM; LM = DymoPrinterDriver::CLabelWriterLanguageMonitor]'
        raster2dymolw.cpp:103:37: required from here
        ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ~~~~~~~~~~~^~~~~~~~~~~~~~~
        ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
        ppdMarkDefaults(ppd);
        ~~~~~~~~~~~~~~~^~~~~
        ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
        ppdMarkOption(ppd, Options[i].name, Options[i].value);
        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
        cupsMarkOptions(ppd, OptionCount, Options);
        ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
        ppdClose(ppd);
        ~~~~~~~~^~~~~
        ../common/CupsFilter.h: In instantiation of 'void DymoPrinterDriver::CCupsFilter::InitDocument(const char*) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]':
        ../common/CupsFilter.h:99:15: required from 'int DymoPrinterDriver::CCupsFilter::Run(int, char**) [with D = DymoPrinterDriver::CLabelWriterDriver400; DI = DymoPrinterDriver::CDriverInitializerLabelWriter; LM = DymoPrinterDriver::CDummyLanguageMonitor]'
        raster2dymolw.cpp:108:37: required from here
        ../common/CupsFilter.h:218:32: error: 'ppdOpenFile' was not declared in this scope
        ppd_file_t* ppd = ppdOpenFile(getenv("PPD"));
        ~~~~~~~~~~~^~~~~~~~~~~~~~~
        ../common/CupsFilter.h:228:18: error: 'ppdMarkDefaults' was not declared in this scope
        ppdMarkDefaults(ppd);
        ~~~~~~~~~~~~~~~^~~~~
        ../common/CupsFilter.h:234:20: error: 'ppdMarkOption' was not declared in this scope
        ppdMarkOption(ppd, Options[i].name, Options[i].value);
        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:238:18: error: 'cupsMarkOptions' was not declared in this scope
        cupsMarkOptions(ppd, OptionCount, Options);
        ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:243:45: error: 'ppdFindMarkedChoice' was not declared in this scope
        ppd_choice_t* choice = ppdFindMarkedChoice(ppd, "DymoHalftoning");
        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
        ../common/CupsFilter.h:248:11: error: 'ppdClose' was not declared in this scope
        ppdClose(ppd);
        ~~~~~~~~^~~~~
        Makefile:481: recipe for target 'raster2dymolw.o' failed
        make[4]: *** [raster2dymolw.o] Error 1
        make[4]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
        Makefile:503: recipe for target 'all-recursive' failed
        make[3]: *** [all-recursive] Error 1
        make[3]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src/lw'
        Makefile:354: recipe for target 'all-recursive' failed
        make[2]: *** [all-recursive] Error 1
        make[2]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
        Makefile:299: recipe for target 'all' failed
        make[1]: *** [all] Error 2
        make[1]: Leaving directory '/opt/dymo/dymo-cups-drivers-1.4.0.5/src'
        Makefile:364: recipe for target 'all-recursive' failed
        make: *** [all-recursive] Error 1

        Also, I have 2.2.0 CUPS version.

        • Any chance you figured this out? I’m attempting to ‘make’ with Cups 2.2.0 on Raspbian and getting the same “recipe for target ‘all-recursive’ failed” errors.

          • Ross, development on our Linux has been stopped for the time being. We’ll post here on the blog if anything changes.

        • Did you get this working? I have the same issue under Ubuntu 18.04

          • Joel, we have stopped working on the Linux SDK for the time being. We’ll post here on the blog if/when that changes.

  13. I am able to print a single label using the command “lp -o DymoPrintQuality=Text -o PageSize=w54h144 -o landscape -n 1 -d Dymo400Turbo /tmp/test.txt”

    When I try “lp -n 2 -o DymoPrintQuality=Text -o PageSize=w54h144 -o landscape -n 1 -d Dymo400Turbo /tmp/test.txt” the -n option is ignored and it prints just 1 label.

    I have tested lp with the -n option printing to a non Dymo printer and -n is respected.

    Is there another way to print multiple lables?

    • Hi John,

      You can pretty easily write a simple program or script using our SDK to print multiple labels.

      Hope this helps,
      Ron

      • Hi Ron,
        If there is a SDK for Linux for writing scripts, could you tell me where to find it? http://www.dymo.com/en-US/dymo-label-sdk-and-cups-drivers-for-linux-dymo-label-sdk-cups-linux-p--1 contains the needed Cups drivers as well as various pieces of C sample code. I didn’t find anything for scripting.

        Of course it is easy to wrap the lp call in a loop, but that’t not as efficient.

        Perhaps I should word my question more clearly: Is there a way to make the Dymo printer respect the -n parameter?

        You may have noticed there is an error in my second example – the correct example is “lp -n 2 -o DymoPrintQuality=Text -o PageSize=w54h144 -o landscape -d Dymo400Turbo /tmp/test.txt”. This prints one label, not two.

        • Hi John,

          The Linux SDK only provides CUPS driver source code for the DYMO printers, some sample sources and some documents. There isn’t any script support.

          I guess you have to go with the lp or lpr command. Have you tried the -n parameter without any space between -n and the number of copies (e.g. -n2)?

          Thanks,
          Philipp

          • Hi Philipp,
            Thanks for the help. I tried the -n parameter without the space, it still only prints 1 copy.
            Regards,
            John

          • Hi John,
            You need to change *cupsManualCopies: False to True in the corresponding /etc/cups/ppd/DYMO_Printer_Name.ppd file. Make sure to restart cups or Linux before trying the multi-copy command.
            Hope that helps,
            Philipp

          • Hi Philipp,
            Perfect, *cupsManualCopies: True solved the problem. It there some reason it was False?
            Anything I need to look out for?

            Thank you very much for the help.
            Regards,
            John

  14. Hi,

    I am using DYMO Label Writer 450 on Ubuntu 16.04LTS.
    I am able to print my labels using command ‘lp’. I need to send tape cut command after each label print.

    Please, let me know hot to send this command using CUPS driver.

    Thanks

  15. I have a LabelWriter Wireless. Which linux SDK ppd driver would be compatible with this model?

    • The LabelWriter Wireless is a completely new printer. Therefore there isn’t any compatible driver in the current Linux SDK.

      A new Linux SDK will also support the LabelWriter Wireless, but there isn’t any schedule for a new Linux SDK yet!

  16. Any updates re Linux drivers for the LabelWriter Wireless or some workaround to make it work? The LabelWriter Wireless has been out for a while now. I bought it as it seemed the best idea for our office, however, the linux users are unable to use it.

Leave a Reply to dymodev Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)