Description:

Recently I bought Epson EcoTank L14150 because of supporting such features as: A3 format, image scanner, continuous ink system, WiFi support. The list of obstacles I was running into:

  1. The funniest. Adding printer to a system - is a privileged process (cups asks for password/other auth mechanism). On my system I use Rutoken HSM and pam_p11 with different security purposes. So, when I added printer inside cups web interface (http://localhost:631 by default), cups daemon tried to auth me through token by itself ... and locked my HSM after 10 tries. When I decided to kill cupsd I noticed that systemd-journald consumed the whole core and all my tries to do sudo su couldn't be performed. I had to pull out HSM module and add printer with password.
  2. The printer doesn't work with IPP Everywhere. I have to use Epson Inkjet Printer Driver 2 (ESC/P-R) which supports different set of options like paper types.
  3. I decided to use native scanner application epsonscan2 for scanning over network, but it didn't work from the beginning.

Why:

  • Slonko gentoo package media-gfx/epsonscan2 doesn't contain non-free tool: es2netif (figured it out when did some strace of epsonscan2 binary). That tools can be found in separate package: media-gfx/epsonscan2-non-free-plugin. You can see epsonscan2 debug messages if you create "secret" directory /tmp/epson (thanks strace again):
mkdir /tmp/epson
epsonscan2 --get-status <IP_ADDRESS>

[2023/12/24 23:39:56.206][epsonscan2      ][DbgLog.cpp                                   ; 568][P7CDbgLog                                    ][00102F05][-ERROR-] LoadModule Path:[/usr/bin/epsonscan2] Ver:[1.0.0]
[2023/12/24 23:39:56.221][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 7531 PID = 3
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 7531 PID = 2
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 8457 PID = 2066
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 1105 PID = 33088
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 1105 PID = 33088
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 7531 PID = 3
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 16700 PID = 34053
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 9583 PID = 50770
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 1390 PID = 284
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 8457 PID = 10258
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 2697 PID = 48
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 1105 PID = 33090
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 16700 PID = 42243
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 1105 PID = 33090
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 11802 PID = 19457
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 32903 PID = 41
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 4152 PID = 4832
[2023/12/24 23:39:56.222][epsonscan2      ][UsbFinder.cpp                                ;  48][Start                                        ][00102F05][-TRACE-] USB device found VID = 7531 PID = 2
[2023/12/24 23:39:57.245][epsonscan2      ][DeviceResolver.cpp                           ;  67][Resolve                                      ][00102F05][-TRACE-] Resolve 192.168.101.196
[2023/12/24 23:39:57.245][epsonscan2      ][Engine.cpp                                   ; 354][LoadSDModule                                 ][00102F05][-TRACE-] Enter
[2023/12/24 23:39:57.247][epsonscan2      ][ES2CommandAPI.cpp                            ;  33][ESCreateScanner                              ][00102F05][-TRACE-] ENTER : ESCreateScanner
[2023/12/24 23:39:57.248][epsonscan2      ][Engine.cpp                                   ; 371][LoadSDModule                                 ][00102F05][-TRACE-] Leave
[2023/12/24 23:39:57.248][epsonscan2      ][Engine.cpp                                   ; 251][InitWithDeviceInfoDict                       ][00102F05][-TRACE-] Enter = {
    "ConnectionSetting": [
        {
            "Address": {
                "string": "<IP_ADDRESS>"
            },
            "ConnectType": {
                "int": 1
            }
        }
    ]
}
...
  • Even with es2netif tool epsonscan2 refused to detect scanner over the network. Then I tracked all binary executions with help of execsnoop (part of dev-util/bcc package).

Found this:

sh               1063620 1063615   0 /bin/sh -c avahi-browse -r -p -t _scanner._tcp 2>/dev/null
avahi-browse     1063621 1063620   0 /usr/bin/avahi-browse -r -p -t _scanner._tcp

Despite I used direct IP-address, tools invoked avahi-browse for MDNS requests. After I enabled local avahi-daemon service epsonscan2 started seeing my scanner and even work :)

epsonscan2