Samsung M2070W scanner no longer working in 17.10

I own a Samsung M2070W printer/scanner, which worked in 17.04. After installing 17.10, it prints but is not detected my Simple Scan or Xsane.

The latest drivers from the Samsung website are installed.

It is detected by sane-find-scanner but not scanimage-L. Output from the former:

found USB scanner (vendor=0x04e8 [Samsung Electronics Co., Ltd.], product=0x3469 [M2070 Series]) at libusb:003:003

I tried modifying the .bashrc as suggested in Samsung SCX-4200 Scanner not working (printing OK) 14.04, but it didn't work.

I've seen this issue on several forums but no one seems to have a solution.


Solution 1:

I just got the scanner from Samsung M2070FW running with Ubuntu 18.04. Just follow these steps:

  1. Get UnifiedLinuxDriver-1.00.37.tar.gz from this site and unpack it, open a terminal and do:

    cd /UnifiedLinuxDriver-1.00.37/uld
    sudo ./install.sh
    
  2. After successful installation of the Samsung Driver for the printer and the scanner, you can installer the printer first via Cups. For the scanner however, there should be a new directory with a single file in it:

    /opt/smfp-common/scanner/lib/libsane-smfp.so.1.0.1
    
  3. If you use a 64-bit system (which you probably do), use the terminal again to change to the scanner driver directory. Here you put a symbolic link to the file in /opt:

    cd /usr/lib/x86_64-linux-gnu/sane
    sudo ln -s /opt/smfp-common/scanner/lib/libsane-smfp.so.1.0.1 /usr/lib/x86_64-linux-gnu/sane/libsane-smfp.so.1
    
  4. But things still didn't work, so I had to install a USB library:

    sudo apt install libusb-0.1-4
    

    After that, I made sure that I was in the same network with my printer (via ping) and did scanimage -L:

    $ scanimage -L
    device `smfp:net;192.168.1.20' is a Samsung M2070 Series on 192.168.1.20 Scanner
    
  5. If pinging your scanner works but the command finds nothing, you can start to debug things:

    cd
    export SANE_DEBUG_DLL=255 && scanimage -L &> debug.txt
    grep -n2 "libsane-smf" debug.txt
    

    If everything works correctly, you would get the following output:

    ....
    84-[dll] sane_get_devices
    85-[dll] load: searching backend `smfp' in `/usr/lib/x86_64-linux-gnu/sane'
    86:[dll] load: trying to load `/usr/lib/x86_64-linux-gnu/sane/libsane-smfp.so.1'
    87:[dll] load: dlopen()ing `/usr/lib/x86_64-linux-gnu/sane/libsane-smfp.so.1'
    88-[dll] init: initializing backend `smfp'
    89-[dll] init: backend `smfp' is version 1.0.1
    ....
    

    If not, you might find a hint as to what file is missing or not found.

Solution 2:

See the bug report of this problem and the workaround that I posted in that bug report. Let me sum it up here to help you out:

  1. Link the files libsane-smfp* in the sane folder found at /usr/lib/sane to the sane folder found at /usr/lib/x86_64-linux-gnu/sane.

    sudo ln -sfr /usr/lib/sane/libsane-smfp* /usr/lib/x86_64-linux-gnu/sane
    
  2. As root, edit the file 59-smfp_samsung.rules (you can find it in /etc/udev/rules.d) to include the following code/scanner number along with other Samsung model numbers which are already there:

    ATTRS{idProduct}=="2070", ENV{libsane_matched}="yes"
    

Voila. It should work like a charm.

I believe this bug mostly affects network scanners. Except with minor variations in the name/model numbers of other scanners, this workaround should work for other network scanners too. Check the bug-report link for Brother, Epson, and Xerox scanners.

Solution 3:

For network Samsung scanners, put your scanner's IP address and optionally port anywhere in the file /etc/sane.d/xerox_mfp.conf:

tcp host_address [port] 

It worked with my C460, probably would work also with other scanners, check the respective sane config file and settings here:

  • SANE supported devices
  • sane-xerox_mfp man page