The story of a fight against obsolescence
Posted on May 11, 2025 • 4 minutes • 845 words • Other languages: Français
I use Linux 🐧 operating systems and it’s a daily pleasure. It’s always fluid, performant, modern and it also allows me to conserve my hardware much longer. However, for the first time I was confronted with the software obsolescence of a scanner running Ubuntu.
A good ten years ago, I made the choice to abandon the ugly printer-scanner which, for me, is the perfect reflection of programmed obsolescence and electronic waste. Discarding a printer-scanner when only one of its two functions is out of order was nonsense to me. Following the example of my coffee machine and separate coffee grinder, I decided to buy a tiny black and white laser printer and a Brother DS-620 mobile scanner.
This scanner works perfectly — it’s fast, reliable, easy to store, in short, an excellent tool. Unfortunately, it’s a 100% proprietary Brother device, although the manufacturer did make the effort to provide a Linux driver. That’s why I bought it. The driver dates from 2015 and I’m sharing it with you here, in case it ever disappears from Brother’s website.
To scan under Linux environments, the OS usually uses SANE (Scanner Access Now Easy), which is an API that standardizes access to scanning hardware. The most commonly used associated library I know of is libsane. The website still looks like it’s from back in 1996!
This library allows for separation between the user interface (frontend) and the hardware interface (backend). You can therefore use any scanning software. My personal preference is the scanning tool built into Gnome: Simple Scan .
As I mentioned earlier, Brother is one of the few manufacturers that makes the effort to provide proprietary drivers for Linux. The small .deb
package provided by the manufacturer back in 2013 allows SANE to properly communicate with the scanner. The package installs proprietary drivers so that libsane can interface correctly with the backend. It also adds udev
rules for these four scanner models: DS-620, DS-720D, DS820W, and DS-920DW.
Unfortunately, since Ubuntu 22.04, I started encountering dependency issues when trying to use my scanner ☹️
My scanner was no longer being detected, and here’s the error I got when installing Brother’s .deb
package:
Note: selecting 'libsane-dsseries' instead of './libsane-dsseries_1.0.5-1_amd64.deb'
Some packages could not be installed. This may mean that you have
requested an impossible situation or, if you are using the unstable
distribution, that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libsane-dsseries : Depends: libsane (>= 1.0.17) but it is not installable
It seems that the libsane
package has now been replaced by libsane-common
within the Ubuntu distribution. The dependency is therefore broken.
You now have at least two options for getting your scanner to work, which is what I’m going to develop here.
Installing the package in forced mode
sudo dpkg -i --force-all Téléchargements/libsane-dsseries_1.0.5-1_amd64.deb
By installing the package in this way, the scanner is once again detected and functional. The disadvantage of this method is that it breaks your dependencies and consequently your update system will alert you. In short, it’s not sustainable.
Creating a fake package
I’m not the only one in the world to have encountered this problem, I’ve read on many forums people looking for a solution, but I haven’t seen any that were fully functional. Solutions based on symbolic link libscan > libscan-common
or other tweak via udev
are never functional or durable.
I spent a little time finding this solution, which I think is the best: creating a fake package to satisfy the Brother driver dependency.
First install equivs
which is the tool that allows you to build a package.
sudo apt update
sudo apt install equivs
Place yourself in a folder that will serve as a crucible for the construction of your package:
mkdir -p ~/fake-libsane && cd ~/fake-libsane
Generate the skeleton of your package with :
equivs-control libsane
Then modify the libsane
file that has been generated. It’s completely free, especially as it’s a fake package in our case. The important thing is the libsane version number, which must correspond to the dependency we are targeting. My file therefore looks like :
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: libsane
Provides: libsane
Version: 1.0.17
Maintainer: r4ven
Architecture: all
Description: Fake libsane package to satisfy my Brother DS-620 driver dependencies. This fake package exists to satisfy the dependency required by Brother's proprietary scanner driver on Ubuntu + 20.04
From the same folder, all you need to do is build :
equivs-build libsane
The build will generate the package: libsane_1.0.17_all.deb
.
Install it with :
sudo dpk -i libsane_1.0.17_all.deb
Reconnect your scanner and check that it is detected by launching your scanner software or using the command scanimage -L
.
If you wish, you can even lock package updates
libscan
via the command sudo apt-mark hold libsane
.
Well done! So your scanner is still usable, you no longer need to replace it, the planet thanks you and so does your wallet.
💡 You can use this method with older scanners too 💡