# Printer Epson L132

## ilya1966616

I have printer Epson L132. I downloaded from this page http://download.ebz.epson.net/dsc/du/02/DriverDownloadInfo.do?LG2=EN&CN2=&DSCMI=34541&DSCCHK=141ba614c212ead0099d27f8dc8f2bc35faf7781 epson-inkjet-printer-201401w-1.0.0-1lsb3.2.x86_64.rpm, converted it to tar.gz using `rpm2targz`, unpacked and copied to /opt/epson-inkjet-printer-201401w/. However printer doesn't work. There is also epson-inkjet-printer-201401w-1.0.0-1lsb3.2.src.rpm on the above page which contains source code for /opt/epson-inkjet-printer-201401w/cups/lib/filter/epson_inkjet_printer_filter. I downloaded it and modified source code so it includes code saving debug info into file, ran `make` within src folder and copied newly compiled file "epson_inkjet_printer_filter" to /opt/epson-inkjet-printer-201401w/cups/lib/filter/. I also created folder debug with 777 access mode within that folder for storing debug file. Function load_core_library() on line 163 of file "src/raster_to_epson.c" was modified to included debug info:

```

static int load_core_library (HANDLE * handle)

{

   debuglog(("TRACE IN"));

   

   FILE *f = fopen("/opt/epson-inkjet-printer-201401w/cups/lib/filter/debug/load_core_library.txt", "w");

   

   HANDLE lib_handle = NULL;

   int error = 1;

   ppd_attr_t * attr = NULL;

   EPS_RES_FUNC resFunc;

   char library [PATH_MAX];

   do {

      attr = get_ppd_attr ("epcgCoreLibrary", 1);

      if (attr == NULL) {

         fprintf(f, "get_ppd_attr is NULL\n");

         break;

      }

      fprintf(f, "library: %s/%s\n", CORE_LIBRARY_PATH, attr->value);

      snprintf(library, sizeof(library), "%s/%s", CORE_LIBRARY_PATH, attr->value);

      lib_handle = dlopen(library, RTLD_NOW /*, RTLD_LAZY*/);

      if (lib_handle == NULL) {

         debuglog(("Failed to dlopen(%s)->%s", attr->value, dlerror()));

         fprintf(f, "Failed to dlopen(%s)->%s\n", attr->value, dlerror());

         fprintf(f, "dlerror: |%s|\n", dlerror());

         break;

      }

      /* Setting of library function */

      epcgInitialize = (EPCGInitialize) dlsym (lib_handle, "epcgInitialize");

      epcgRelease = (EPCGRelease) dlsym (lib_handle, "epcgRelease");

      epcgGetVersion = (EPCGGetVersion) dlsym (lib_handle, "epcgGetVersion");

      epcgSetResource = (EPCGSetResource) dlsym (lib_handle, "epcgSetResource");

      epcgGetOptionList= (EPCGGetOptionList) dlsym (lib_handle, "epcgGetOptionList");

      epcgGetChoiceList= (EPCGGetChoiceList) dlsym (lib_handle, "epcgGetChoiceList");

      epcgSetPrintOption= (EPCGSetPrintOption) dlsym (lib_handle, "epcgSetPrintOption");

      epcgGetPageAttribute= (EPCGGetPageAttribute) dlsym (lib_handle, "epcgGetPageAttribute");

      epcgStartJob= (EPCGStartJob) dlsym (lib_handle, "epcgStartJob");

      epcgStartPage= (EPCGStartPage) dlsym (lib_handle, "epcgStartPage");

      epcgRasterOut= (EPCGRasterOut) dlsym (lib_handle, "epcgRasterOut");

      epcgEndPage= (EPCGEndPage) dlsym (lib_handle, "epcgEndPage");

      epcgEndJob= (EPCGEndJob) dlsym (lib_handle, "epcgEndJob");

      if (epcgInitialize == NULL

         || epcgRelease == NULL

         || epcgGetVersion == NULL

         || epcgSetResource == NULL

         || epcgGetOptionList == NULL

         || epcgGetChoiceList == NULL

         || epcgSetPrintOption == NULL

         || epcgGetPageAttribute == NULL

         || epcgStartJob == NULL

         || epcgStartPage == NULL

         || epcgRasterOut == NULL

         || epcgEndPage == NULL

         || epcgEndJob == NULL) {

         debuglog(("Failed to dlsym"));

         fprintf(f, "Failed to dlsym\n");

         break;

      }

      resFunc.size = sizeof(EPS_RES_FUNC);

      resFunc.memAlloc = memAlloc;

      resFunc.memFree = memFree;

      resFunc.getLocalTime = getLocalTime;

      resFunc.resOpen = resOpen;

      resFunc.resRead = resRead;

      resFunc.resSeek = resSeek;

      resFunc.resClose= resClose;

      

      debuglog(("Model name : %s", PPD->modelname));

      error = epcgInitialize (PPD->modelname, &resFunc);

      if (error) {

         fprintf(f, "epcgInitialize() failed\n");

         break;

      }

   } while (0);

   if(error && lib_handle) {

      dlclose (lib_handle);

      lib_handle = NULL;

   }

   *handle = lib_handle;

      

   debuglog(("TRACE OUT=%d", error));

   return error;

}

```

Now after trying to print test page from cupsd web interface (localhost:631) I have this:

```

# cat /opt/epson-inkjet-printer-201401w/cups/lib/filter/debug/load_core_library.txt 

library: /opt/printer/lib64/libEpson_201401w.so.1.0.0

Failed to dlopen(libEpson_201401w.so.1.0.0)->(null)

dlerror: |(null)|

```

As you can see dlerror doesn't provide any information and returns null. Please advice on how to use this printer.[/url]

----------

## gerard27

Hi ilya1966616,

Had similar problem with Epson XP-750.

Epson uses "lsb" which Gentoo doesn't use.

To make Gentoo compatible you need to run as root 

```

ln -sf /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
```

This will make Gentoo lsb3.2 compatible.

Good luck.

Gerard.

----------

## ilya1966616

Unfortunately it didn't help. What other things I can do to make system lsb compliant? By editing source code of filter itself I discovered that the function that fails is "epcgStartJob". But I cannot debug further because this function is from dynamically loaded shared library for which no source code available.

----------

## ilya1966616

I installed debian in VirtualBox and successfully printed from it. However it is inconvinient this way and I cannot install debian as main system because for some reason it has issues with my hardware during installation and shows disk access related errors.

----------

## gerard27

I used the debian file and unpacked it with deb2targz.

I first tried to install it using rpm directly but it failed.

After having installed the printer in cups it wouldn't print.

I forgot what error it threw.

I then googled and found the lsb3.2 thing.

After that it printed OK.

Sorry I can't tell you more.

Gerard.

----------

## ilya1966616

 *gerard27 wrote:*   

> 
> 
> I then googled and found the lsb3.2 thing.
> 
> After that it printed OK.
> ...

 

Can you tell what exactly you found when googling? The script to make system lsb3.2 compliant or what? Did you save URL?

----------

## grumblebear

Messing around with those legacy epson drivers will be painfull, I guess.

Have an eye on gutenprint (gimp-print). Maybe there will be support for your printer in its next release. From your link I conclude that L132 and L310 could be compatible to some degree and support for L310 seems to be coming.

----------

## gerard27

Hi ilya1966616,

I did not save the URL of this forum post.

As I remember I managed to make cups see my printer.

But when I sent a print command I got a cups error,forgot what it was.

And then after installing the link it printed OK.

The link concerns ld (load) which should be compatible with the software it loads!

I have the latest gutenprint installed also and checked the xml file of supported printers but no XP-750

or L132 or L310.

Maybe you should clean all of cups and start over again.

Gerard.

Edit:

grumblebear,these are NOT legacy drivers,far from it.

Epson used to have a website with nonWindows software but it was discontinued.

----------

## ilya1966616

 *grumblebear wrote:*   

> Messing around with those legacy epson drivers will be painfull, I guess.
> 
> Have an eye on gutenprint (gimp-print). Maybe there will be support for your printer in its next release. From your link I conclude that L132 and L310 could be compatible to some degree and support for L310 seems to be coming.

 

gutenprint is the solution. After emerging it select "Epson L210 - CUPS+Gutenprint v5.2.12 (color)" as the driver.

----------

