Printing works perfectly, but scanning refuses to start. Ubuntu sees your all-in-one printer, documents come out fine, yet the scanner app says no scanner is detected or the scan fails halfway. This split problem is very common, because printing and scanning use different software, different drivers, and often different network rules.
The good news is that the network itself is probably fine, since printing already proves your computer can reach the device. You just need to help Ubuntu find the scanning side of the machine. This guide covers checking SANE support, installing the right backend, adding the scanner by its IP address, and fixing the firewall and permission issues that block scans.
Quick Answer
Install the SANE tools with sudo apt install sane-utils libsane-extras, then find your device with scanimage -L. If nothing appears, add the scanner manually by editing the correct backend file in /etc/sane.d/ and entering the printer’s IP address, then restart and test again. For USB-connected network models, also check that your user is in the scanner group.
Why Printing Works but Scanning Does Not
It helps to understand that your all-in-one is really two devices sharing one box.
Different Drivers for Different Jobs
Printing on Ubuntu is handled by CUPS, often with driverless IPP that needs almost no setup. Scanning is handled by SANE, a separate system with its own backends for each brand. A printer can be fully supported for printing and only partly supported, or supported through a different backend, for scanning.
Different Network Discovery
CUPS finds printers using one discovery method, while SANE relies on the escl, AirScan, or brand-specific backends. If multicast traffic is filtered, or if the device advertises printing but not scanning on the service Ubuntu checks first, you get exactly this symptom: print yes, scan no.
Firewall and Permission Blocks
Scanning often needs the device to talk back to your computer, which a firewall can block. USB scanners add another layer, because your user account needs permission to access the device. Network scanners avoid the USB problem but still depend on the correct backend knowing where to look.
Step 1: Confirm the Basics and Get the IP Address
- Confirm you can still print a test page. If printing also fails now, fix the network connection first.
- Find the device IP address from its screen, its printed network report, or your router’s connected devices list.
- Ping it from a terminal with a command like
ping -c 4 192.168.1.45, using your real address. - Open that address in a browser. Most all-in-one devices show a web page with a scanning or Webscan section.
- Try a scan from that web page. If web scanning works, the hardware and network are fine, and the fault is in Ubuntu’s scanner setup.
Also make sure the device is awake and shows no error. Wake it before you test.
Step 2: Check What SANE Can See
Ubuntu’s scanning system is called SANE. Two commands tell you most of what you need to know.
- Install the tools with
sudo apt update && sudo apt install sane-utils. - List detected scanners with
scanimage -L. Wait a few seconds, as network discovery is not instant. - If your device is listed, test it with
scanimage --testor simply open Document Scanner and try a scan. - Check backend support information with
sane-find-scannerfor USB devices, noting that this tool does not detect most network scanners.
If scanimage -L finds the scanner but your app does not, the problem is usually the app or permissions, not detection. If the command finds nothing, move on to installing or enabling the right backend. The device list maintained by the SANE project supported devices database tells you which backend your model needs and whether support is complete or only basic.
Step 3: Install and Enable the Right Backend
Modern devices usually work with the driverless escl backend, which Ubuntu calls AirScan. Older or brand-specific models need their own backend or vendor software.
For Driverless AirScan Devices
- Install the backend with
sudo apt install sane-airscan. - Open
/etc/sane.d/dll.confwithsudo nano /etc/sane.d/dll.confand confirm thatesclis listed without a # symbol in front of it. - Run
scanimage -Lagain and look for an entry mentioning airscan or escl.
For Brother, Epson, Canon, and HP Devices
HP devices usually work best after running hp-setup from the hplip package. Brother scanners often need Brother’s brscan driver matched to your model number, plus a network configuration command from Brother. Epson models may need Epson Scan 2 or the epsonscan2 backend, and Canon models often use the pixma backend. Always match the driver to your exact model, not just the brand. Our guide to installing scanner drivers on Linux walks through the brand differences in more detail.
Step 4: Add the Scanner Manually by IP Address
When automatic discovery fails, tell SANE exactly where the scanner lives. The exact file depends on your backend.
- For the pixma backend, open
sudo nano /etc/sane.d/pixma.confand add a line likebjnp://192.168.1.45with your address. - For Epson’s net backend, open
/etc/sane.d/net.confand related backend files as documented for your model, adding the host address. - For Brother network scanners installed with brscan, run Brother’s configuration tool, for example
sudo brsaneconfig4 -a name=Home model=MFC-L3770CDW ip=192.168.1.45, replacing the model and address with yours. - For AirScan, create or edit
/etc/sane.d/airscan.confand add a device entry with the name and the full device address shown in the file’s examples. - Save the file, wait ten seconds, and run
scanimage -Lagain.
Give the printer a fixed IP address in your router once this works. Otherwise the address can change after a reboot, and your carefully added scanner entry will point at empty space.
Step 5: Fix Firewall, Groups, and App Problems
- Firewall: If you use UFW, check its status with
sudo ufw status. Temporarily disable it for one test withsudo ufw disable. If scanning works with it off, add a rule allowing traffic from your printer’s address instead of leaving the firewall off. - User groups: For USB and some network setups, add yourself to the scanner and lpadmin groups with
sudo usermod -aG scanner,lpadmin $USER, then log out and back in. - Try another app: Test with Document Scanner, then with XSane installed via
sudo apt install xsane. If one works and the other does not, reinstall or reset the failing app. - Flatpak permissions: If your scanner app is a Flatpak, it may be sandboxed from the network device. Install the system package version for testing.
The Ubuntu community scanning guide is a useful second reference for permissions and backend files if your model behaves unusually.
Step 6: Test the Scan Properly
- Place a clear, high-contrast page on the glass so you can judge quality, not just success.
- Open Document Scanner, select your device from the list, and choose a moderate setting such as 300 DPI for text.
- Run the scan and check that the full page appears without cut-off edges.
- If you have a document feeder, test one page through the feeder as well, because feeder scanning uses a separate source option.
- Save the file, then reboot both the computer and the printer and scan once more, to prove the fix survives a restart.
Common Mistakes and Useful Tips
- Editing the wrong backend file: Ubuntu loads many backends. Adding your IP to a file your device does not use changes nothing. Confirm the backend name first.
- Forgetting to remove the # symbol: A backend listed in dll.conf but commented out is disabled. This one character blocks everything.
- Using a changing IP address: Manual entries need a fixed address. Reserve it in the router.
- Testing while the device sleeps: Wake the device before each test, or results will look random.
- Mixing Snap packages: Some Snap-packaged apps cannot reach the scanner cleanly. Test with a standard package before deep troubleshooting.
- Skipping a simple USB test: A short USB test separates network problems from driver problems in two minutes.
Conclusion
When printing works but scanning fails in Ubuntu, the fix is almost always in SANE, not in your network. Check what scanimage -L sees, enable or install the correct backend for your model, add the device by a fixed IP address if discovery fails, and clear any firewall or group blocks. Finish with a real test scan after a reboot, and your all-in-one will finally do both of its jobs.
Frequently Asked Questions
Why does scanimage find my scanner but Document Scanner does not?
The backend is working, so the problem is in the app layer. Restart the app, remove and reselect the device, or test with XSane. If the app is a Snap or Flatpak, try the regular system package.
Do I need to install a driver for AirScan?
Usually you only need the sane-airscan package and an enabled escl backend. The device must support AirScan or eSCL, which most network all-in-one models from the last several years do.
What does no SANE devices found mean?
It means no enabled backend could reach a scanner. Enable the right backend, add the IP address manually if discovery is blocked, and confirm the device is awake and on the same network.
Can I scan over Wi-Fi or must I use a cable?
Wi-Fi scanning works fine when the backend knows the device address and the firewall allows the return traffic. A wired test is only a troubleshooting step, not a permanent requirement.
Why do scans start and then fail halfway?
Half-finished scans often point to a weak Wi-Fi signal, deep sleep kicking in, or very high DPI settings over a slow connection. Move the device closer, disable deep sleep for testing, and try 300 DPI first.


Leave a Reply