Not long ago, I myself bought a Canon scanner Lide 300. The driver installation for Lide 400 include the same steps.
In my first attempt to install the Linux drivers for my Canon scanner, I failed miserably multiple times. But the scanner worked flawlessly with Windows driver. Over the short period of time, trying and failing, I finally found a way to make the scanner work with Linux.
This is my quick guide, how to make the scanner work with Linux system(I tested it on Ubuntu 18.04)! Please, just follow the steps. Should one of the steps not work, try to do the troubleshooting suggestions.
DO NOT continue with the next step, until the previous one is working.
Step 1 - Scanner recognition
First, all necessary packages have to be installed:
sudo apt update
sudo apt install sane-utils libusb-dev usbutils
In order to recognize the connected devices via USB, you can use the command lsusb. The scanner from Canon can be filtered out by running:
lsusb | grep '04a9'
The identifier 04a9 is specific for Canon devices. If no output line is shown after execution of previous command, the device is not recognized.
Troubleshooting suggestions:
Check the connection between scanner and computer.
Restart the system, but be sure, that the scanner is properly connected to the computer.
The scanner make some noise adjusting the header during the system start. If that is not the case, try to plug in the scanner in a different USB slot.
If you have a Windows system, try to test the USB connection by installing the scanner driver. Canon don't support Linux, but has a good implemented Windows driver.
Step 2 - Scanner identification
Now, you can run the command lsusb in your terminal and should see the
output of the lsusb. The yellow framed output line shows the scanner connection. By inserting the bus and device number specific to your system, you can make the request about the permission settings for the particular connection. For example, in my case the bus ID is 001 and device ID is 002. The resulting command line is based on informations about my system is:
getfacl /dev/bus/usb/001/002
Remember to use your own connection specifications for the request!!!
The output of the command will show you the group, you have to join as a user. In my case, it is the group lp, so I join the saned group(scanner management group) and lp.
sudo usermod -aG saned,lp $USER
sane-find-scanner will recognize the scanner and show the correct output.
Troubleshooting suggestions:
- You can see the groups, you as a user are participating in, if you type in
cat /etc/group | grep $USER. The groups saned and lp should be in the list. If not, try to execute the usermod command again.
Step 3 - Software equipment
Although the scanner was found, in my case, the identification of scanner by running scanimage -L failed. This has to do with the sane software.
The suggestion from markling to use the repository(Install Canon LiDE 300 / 400 on Ubuntu 18.04) worked for me. However, the compilation and installation of the latest sane is in my opinion the cleaner solution.
As preparation, you have to install the prerequisites:
sudo apt install build-essential libieee1284-3 gphoto2 autoconf automake libtool gettext git autopoint autoconf-archive pkg-config libjpeg-dev
Now, you can enter the folder of your choice and run:
git clone https://gitlab.com/sane-project/backends.git
cd backends
./autogen.sh
BACKENDS="canon pixma" ./configure
make
make install
After the installation, you should be able to identify your scanner. The output of scanimage -L should look like this:

If you ran scanimage -V, you will get the information about the sane backend version. In my case, by compiling the newest version, the backend status changed from 1.0.27 to 1.0.29.
Step 4 - Additional Software(optional)
By the way, the scan utility I like the most is SimpleScan:
sudo apt simple-scan