Running Kodak Scanmate i940 on Linux (updated october 2021)

Update of August 2020:

I was surprised to find a new driver (V7.1) for this printer on the kodak website.

I looked there last time about a year ago and did not find a driver version with support for any recent linux distribution and considered support as discontinued.

Luckily this was not the case.

The latest driver claims to support Ubuntu 18.04 and colleagues of that time. Well, not recent, but MUCH better than the v4.0 driver I was still able to run on Fedora 32 (with issues).

So I tried this recent driver on Fedora 32. After having had to uninstall the old driver via dnf the setup script run flawlessly. I am also quite happy that I can now do color scans again without receiving a garbled image. Happy now! Btw: Full duplex scan is working using simple-scan – but it also was before.

Although there is no official support for recent distros (again), it will probably work.

As Kodak is lagging behind with modern distributions the situation might worsen again with more modern distribution releases.

As this blog post seems to be the only resource on the web concerning the i940 scanner on linux (and the statistics say that people are still looking for this), I would like to encourage you to report to me or in the comments on what distributions you were able to install the i940 with what driver version. I will keep this post updated.

Update of september 2020:

Ubuntu 20.04 seems not to be supported properly according to comments.

Update of january 2021:

Debian 10 Buster is reported to be working with some manual work. Check comment of david below.

Update of april 2021:

One comment shares insights on how to get the scanner working in Ubuntu 20.04.

Update of october 2021:

David reports  easy success on Debian 11.

Update of december 2021:

Huan reports how to run the driver on Ubuntu 21.10.

Obsolete older content (2014):

I just want to share some insights about using the Scanmate i940 scanner using a linux distribution.  Kodak is claiming Linux support for that scanner and is providing a driver here.On its website Kodak states that specifically Ubuntu 12.04 LTS is supported. But this is only partially true. Here is what I found out about this driver:

  • The drivers is x86 32-bit only! This is a major drawback. You can run the scanner with a 64-bit system, but you have to install sane and all applications which are supposed to access the scanner in 32-bit. There is not much hope of being able to run the scanner using an ARM based Raspberry Pi too.
  • The driver actually contains a setup script, which supports far more than just Ubuntu. Judging from the code It is able to handle Debian, Ubuntu, Fedora (and RedHat-Clones) and OpenSuse out of the box
  • BUT it requires the existence of a and aborts when it cannot be installed. This causes the setup script to break on ALL RECENT linux distributions. The has been phased out for from Ubuntu 13.04 and Fedora 18 upwards

So far, so bad. The linux driver is outdated. At last judging from the look of the windows installer, this is true for the windows driver too (still, that one works).

I managed to get the scanner running with Fedora 20 64-bit. This are the steps which resulted in success.

  • Install a in the system. I forced in a package from a previous Fedora version. A similar step should work on other operating systems too.
  • Modify the setup script in a way that it does not break because of a missing and does not try to install it. Make sure it runs through.
  • Make sure the sane binaries and all applications which should be able to see the scanner are installed in 32-bit and have dependencies fullfilled

After that the scanner worked for me. I tested it under Windows too and the image quality looks like the same. So at least no drawback here. But I see another bigger bug with the linux driver: full duplex scanning does not work. The scanner is able to scan both sides of a page – but that does not work with linux driver. Duplex scanning works only in xsane, but not in more user-friendly apps like simple-scan.

I contacted the Kodak support about the problems of their linux driver. On the positive side they were quick to respond and supportive. A updated linux driver for Ubuntu 14.04 is in the works but there is not date when it can be expected.

As long as there is no updated driver available (I update this article as soon as I get it), I cannot recommend buying this scanner if you want to run it with linux. Not as long as you are not comfortable with the steps outlined above to make it work.

Update 25.1.2015:

I just found the updated driver 3.1 for the kodak i940 on the kodak webpage. It says it supports Ubuntu 14.04 and there is a 64-bit driver. So this driver finally comes out of the stoneage.

I was able to run the setup script on Fedora 21 flawlessly. The scanner now finally is able to scan several pages in one run. Unfortunately the full-duplex scanning is still only working in xsane where you can choose the (driver specific) mode for that.


  1. When you say “you have to install sane and all applications which are supposed to access the scanner in 32-bit. ” what really did you do?
    I’m trying following your steps, but i’m not having sucess.
    Could you explain with more details?

    Tks all

    1. I installed the 32-bit version of xsane and simple-scan – of course 32-bit sane was installed too. How to do that is distribution specific. On RH/Fedora based distribution you have to install simple-scan.i686 to get the 32-bit version.

  2. I installed Software i900_v4.0.x86_64.deb.tar.gz 64 bits on Linux openSUSE 13.2 x64 , but when the installation goes the legend “the instalation is compliant Not with your operating system.”
    Time ago I had the scanner installed via USB without problem , I do not remember if it was the same driver version.
    Could anyone help?
    thank you

  3. Hi there,
    Thank you for your posts!
    I recently updated from Ubuntu 19xx on two machines (where I got the scanner working by changing the symbolic links) to 20.4 (one update, one fresh install).
    Now, the script provided by Kodak/Alaris has troubles to install libopenusb as well as the obsolete mono-runtime environment that seems to be needed for a GUI (not necessary for use in xsane).
    This seems to be due to lack of 32-bit support in 20.4…
    Tried to figure out different things, but it seems that I have to dump the former working horse from my office. This bugs me a bit, because alternatives with a document feed that could be shown to work in 20.4 are way beyond 200€/$.

    1. You can skip the mono installation for sure.

      Concerning libopenusb, that is odd. On my Fedora 32 installation I have a x86_64 package installed by that script. In the 64-bit debian package there is also a amd64 version of that package. Are you sure you got the 64bit version of the driver package?

      Maybe you can trick the script by installing libopenusb from that archive manually. If it finds it installed it should skip installation – or you can modify the script and force it to skip. (something I had to do before 2014 I think)

  4. Dear Björn,

    Thank you so much for your reply! I actually managed to install the driver (without mono) on the “unfresh” 20.4 Ubuntu installation. I forced the installation of the packages of the LinuxSoftware_i900_v7.1.x86_64.deb.tar.gz as you suggested (but all of them). Then I relaunched the installation script – this worked (I don’t know why).
    However, on the fresh install, libudev0 seems to be the problem… I just can’t get it to work, libopenUSB needs the installation of libudev0/there are dependencies that seem to be not resolveable (with dpkg/apt/aptitude). After forcing installation of libudev0 manually (this seems to be canceled at some point, though), the installation script identifies libudev0 to be installed, but again, libopenusb won’t install. There seems to be a problem with multiarch-support – maybe this is just my machine since I had some dpkg-related problems lately…
    If you have any suggestions, this would still be highly recommended – but I guess I should post this in a Ubuntu-forum…


    1. Hi,

      this reminds me very much of the problems with the 4.1 driver on Fedora 30 (or 29? can’t remember).

      I think I got it resolved by strictly trying to provide the missing dependencies. Even if the dependencies are not resolvable by apt, there are usually packages downloadable somewhere that you can install. Not the nicest thing from a system integrity point of view, but it worked.

      So, my advice is to try to fulfill the dependencies by any means necessary.

      Additionally it is odd enough that this driver relies in a libudev0 package from 2013. If anything fails you might force the installation of the actual driver kodak_i900- and check whether it works nonetheless.

      A mixture of both measures brought my scanner back to life two years ago in a previous Fedora version. I always feared this would stop working at some time – but now there were was this new driver and life is good.


      Björn Ruber

      1. Hi there,
        Just an update – managed to install the necessary packages finally.

        Downloaded the most recent (…2016ish or so) libudev0-package from:
        (see the release dates and pick the most recent one for your architecture…)
        and installed it using:
        sudo dpkg -i /path/to/package

        Then I used
        and installed it with
        sudo dpkg -i multiarch-support_2.27-3ubuntu1.2_amd64.deb

        I also used
        sudo dpkg –add-architecture i386
        at some point, but can’t remember in which order and if this changed something.

        Nevertheless, it works now in Ubuntu 20.04! And hope some folks might benefit from my experience…
        Thanks again for this great blog!

  5. Thanks for keeping this topic alive!
    It’s not possible to install ob Ubuntu 20.04.1 LTS 64bit on a RaspberyPi … processor type ARM is not supported

  6. I managed to install this printer in Debian 10 (Buster).

    – Get the new libudev0 shim from the current Debian testing (Bullseye) and install it (
    – Unpack libopenusb_1.1.16-0_amd64.deb into a directory by doing
    ar x libopenusb_1.1.16-0_amd64.deb
    – Unpack the control.tar.gz from the package with
    tar xf control.gar.gz
    – Edit the ‘control’ file and change ‘libudev0 (>= 147)’ to ‘ libudev0 (>= 1)’ with a text editor
    – Repack control.tar.gz by doing
    tar cvzf control.tar.gz postinst postrm md5sums control
    (order is important!)
    – Repack Debian package by doing
    ar rcs libopenusb_1.1.16-0_amd64.deb debian-binary control.tar.gz data.tar.gz

    The installer should run fine with this new package. Skip the mono part and make sure the scanner is not connected during installation. If the installer does not work, install manually.

    Scanner works fine with xsane and on the CLI with ‘scanimage’. Duplex also works with ‘scanimage’ by doing

    scanimage -d kds_i900:i900 –duplex both –resolution 300 –format=tiff -b

  7. I have been unsuccessful at installing v7.1 on KDE neon 5.21. I’m mentioning this to give another example of someone who uses this equipment, rather than try and detail the various steps that I tried. (The way I currently use the i940 is on a Win 8.1 guest on virtualbox.)

  8. Hi there, first have to say thank you all for sharing.

    Following #comment-1926 I was able to install the driver on Linux Mint 20.2. Just need to mention the order as libudev0 requieres multiarch.

    $ dpkg -i multiarch-support_2.27-3ubuntu1.2_amd64.deb
    $ dpkg -i libudev0_175-0ubuntu9.10_amd64.deb

    Prior to run setup tweaked some files, /etc/lsb-release, /etc/issue and /etc/os-release, to make the installer think it was running on Ubuntu 18.04

    After complete setup succesfully tweaked all three files back to its original state.

  9. Another little update: With Debian 11 (bullseye) it’s actually easier than ever before:

    – apt install libudev0 sane xsane
    – Download 64bit deb from website and unpack LinuxSoftware_i900_v7.1.x86_64.deb.tar.gz
    – dpkg -i libopenusb_1.1.16-0_amd64.deb
    – dpkg -i twaindsm.deb
    – dpkg -i kodak_i900-

    That’s it, you don’t need to run the ‘setup’ program at all.

  10. I was able to use the printer on Ubuntu 21.10 with some minor modifications. One minor issue I had was the sane library path, which can be easily fixed by creating two symbolic links.

    Another issue I encountered was that my system has too many CPU cores (a large /proc/cpuinfo file), which accidentally caused a crash in the driver (buffer overflow). The printer driver writes its log into the “/var/kodak/kds_i900/twain” folder; each scan job creates a new folder with timestamp as its name. If you saw the “lexexe is gone” message in “/var/kodak/kds_i900/twain/log.20XXXXXXXX/driver/driver_kds_i900.log” and the scanner refuses to work (the message I had was “scanimage: open of device kds_i900:i900 failed: Invalid argument”), then you also have this bug. I had to patch the driver executable to work around the issue.

    These are all the steps I did on Ubuntu 21.10:

    # First follow the instruction David posted above:
    sudo apt install libudev0 sane xsane
    # Download 64bit deb driver and unpack LinuxSoftware_i900_v7.1.x86_64.deb.tar.gz, then install the 3 .deb files:
    sudo dpkg -i libopenusb_1.1.16-0_amd64.deb
    sudo dpkg -i twaindsm.deb
    sudo dpkg -i kodak_i900-
    # The sane library path is changed, so we must manually link it:
    cd /usr/lib/x86_64-linux-gnu/sane
    sudo ln -s /usr/lib/sane/
    sudo ln -s /usr/lib/sane/
    # Patch the driver binary to avoid a buffer overflow crash
    cd /tmp
    echo “0000b951: eb .” > lexexe.hexpatch
    sudo xxd -c1 -r lexexe.hexpatch /opt/kodak/kds_i900/lib/lexexe
    rm lexexe.hexpatch
    # Now the scanner works!
    scanimage -d kds_i900:i900 -b –format png –mode Color –duplex both –resolution 300

    It also works in the “Document scanner” app shipped with Ubuntu.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s