alexpevzner/sane-airscan

Scanner Access Now Easy - universal driver for eSCL (Apple AirScan) and WSD

369

stars

1,495

commits

C

primary language

Sep 7, 2026

updated

README

sane-airscan -- SANE backend for AirScan (eSCL) and WSD document scanners

Similar to how most modern network printers support "driverless" printing, using the universal vendor-neutral printing protocol, many modern network scanners and MFPs support "driverless" scanning.

Driverless scanning comes in two flavors:

  • Apple AirScan or AirPrint scanning (official protocol name is eSCL)
  • Microsoft WSD, or WS-Scan (term WSD means "Web Services for Devices)

This backend implements both protocols, choosing automatically between them. It was successfully tested with many devices from Brother, Canon, Dell, Kyocera, Lexmark, Epson, HP, OKI, Panasonic, Pantum, Ricoh, Samsung and Xerox both in WSD and eSCL modes.

For eSCL devices, Apple maintains a comprehensive list of compatible devices, but please note, this list contains not only scanners and MFP, but pure printers as well.

This backend doesn't require to install and doesn't conflict with vendor-provided proprietary software like ScanGear from Canon, HPLIP from HP and so on.

Features

  1. One backend for two different protocols, eSCL and WSD
  2. Automatic and manual device discovery and configuration
  3. Scan from platen and ADF, in duplex and simplex modes, multi-page scan from ADF supported as well
  4. Scan in color and gray scale modes
  5. Line-by-line image unpacking, for low memory footprint
  6. The cancel operation is as fast as possible, depending on your hardware
  7. Both IPv4 and IPv6 are supported

Compatibility

Any eSCL and WSD capable scanner expected to work. Here is a list of devices that were actually tested. If you have success with a scanner not included into this list, please let me know.

In most cases, devices were tested with network connection. However, most (all?) of the eSCL devices will also work over USB, if IPP-over-USB daemon is installed on your computer. WSD-only devices cannot be used with the IPP-over-USB daemon.

The IPP-over-USB comes with the ipp-usb package and often installed by default. If your distro comes without ipp-usb, please visit the project page to figure out alternative ways to obtain it: ipp-usb

Legend:

  • Yes - device works perfectly
  • No - protocol not supported by device
  • ? - device works with sane-airscan, but protocol is not reported by user
  • Space - author has no information on this mode/device combination
DeviceeSCL modeWSD mode
Brother ADS-2700WNoYes
Brother ADS-4300NYesYes
Brother DCP-7055WNoYes
Brother DCP-7070DWNoYes
Brother DCP-9020CDWNoYes
Brother DCP-J552DWNoYes
Brother DCP-L2530DWYesYes
Brother DCP-L2540DWNoYes
Brother DCP-L2550DN / DCP-L2550DWYes
Brother DCP-L2660DWYes
Brother HL-L2380DW seriesNoYes
Brother HL-L2395DW seriesYes
Brother MFC-7360NNoYes
Brother MFC-8710DWNoYes
Brother MFC-J1012DWYes
Brother MFC-J1300DWYes
Brother MFC-J4410DWNoYes
Brother MFC-J4540DWYes
Brother MFC-J4620DWNoYes
Brother MFC-J470DWNoYes
Brother MFC-J485DWYes
Brother MFC-J5730DWYesYes
Brother MFC-J625DWNoYes
Brother MFC-L2700DWNoYes
Brother MFC-L2710DN seriesNoYes
Brother MFC-L2710DWYesYes
Brother MFC-L2720DWNoYes
Brother MFC-L2750DWYesYes
Brother MFC-L3740CDWEYes
Brother MFC-L3750CDWNoYes
Brother MFC-L3780CDWNoYes
Brother MFC-T910DWYesYes
Canon D570Yes
Canon G600 seriesYes
Canon imageCLASS MF642C/643C/644CYes
Canon imageCLASS MF743cdwYes1
Canon imageRUNNER 2625/2630YesYes
Canon imageRUNNER ADVANCE 4545/4551YesYes
Canon imageRUNNER ADV C5550/5560Yes
Canon imageRUNNER C3120LYesYes
Canon i-SENSYS MF4780wNoYes4
Canon i-SENSYS MF641CNoYes2
Canon LiDE 300Yes3
Canon LiDE 400Yes3
Canon MB5100 seriesYes
Canon MB5400 seriesYesYes
Canon MF110/910Yes
Canon MF240 SeriesNoYes4
Canon MF260 SeriesYesYes4
Canon MF270 SeriesYes11Yes4
Canon MF410 SeriesYesYes
Canon MF440 SeriesYesYes
Canon MF645CxYes
Canon MF650C SeriesYes
Canon MF660C SeriesYes
Canon MF745C/746CYesYes
Canon MG5200 seriesNoYes
Canon MG5300 seriesNoYes
Canon MG5700 seriesYes
Canon MX470 seriesNoYes
Canon PIXMA G3000 seriesNoYes
Canon PIXMA G4010 seriesYes3
Canon PIXMA MG3600 seriesYes
Canon PIXMA MG5500 SeriesNoYes
Canon PIXMA MG7700 SeriesYes
Canon PIXMA TS5000 SeriesYes
Canon PIXMA TS 9550 SeriesYes
Canon TR4527Yes
Canon TR4529 (PIXMA TR4500 Series)YesYes
Canon TR4700 seriesYes
Canon TR7500 SeriesNoYes
Canon TR8600 ScannerYes
Canon TS 3100Yes
Canon TS 3300Yes
Canon TS 3400 seriesYes
Canon TS 6151Yes
Canon TS 6200 seriesYesYes
Canon TS 6300 seriesYes
Canon TS 6400 seriesYes
Canon TS 8230 seriesNoYes
Dell C1765nfw Color MFPNoYes
Dell C2665dnf Color Laser PrinterNoYes
Dell C3765dnf Color MFPNoYes
Dell E514dwNoYes
EPSON ET-2650 SeriesYesYes
EPSON ET-2710 SeriesNoYes
EPSON ET-2750 SeriesYes
EPSON ET-2760 SeriesYes
EPSON ET-2810 SeriesNoYes
EPSON ET-2850 SeriesYes
EPSON ET-3750 SeriesYes
EPSON ET-4750 SeriesNoYes
EPSON ET-4850 SeriesYes
EPSON ET-M2170 SeriesYes
EPSON EW-M752T SeriesNoYes
EPSON L3250 SeriesNoYes12
EPSON L6570 SeriesYesYes
EPSON Stylus SX535WDNoYes
EPSON WF-2760 SeriesYes
EPSON WF-3620 SeriesNoYes
EPSON WF-7710 SeriesNoYes
EPSON WorkForce ES-580WNoYes13
EPSON XP-2100 SeriesNoYes
EPSON XP-340 SeriesYes
EPSON XP-352 355 SeriesNoYes
EPSON XP-442 445 SeriesYes
EPSON XP-5100 SeriesYes
EPSON XP-6100 SeriesYes
EPSON XP-7100 SeriesYes
EPSON XP-8600 SeriesYes
HP Color Laserjet MFP 178 178Yes
HP Color LaserJet MFP M182nwYes
HP Color LaserJet MFP M281fdwYes
HP Color LaserJet MFP M283fdwYes
HP Color LaserJet MFP M477fdwYesYes
HP Color LaserJet Pro M478f-9fYes
HP Color LaserJet Pro MFP M277dwYes
HP DeskJet 2540Yes
HP DeskJet 2600 seriesYes
HP DeskJet 2700 seriesYes
HP Deskjet 3520 seriesYes
HP DeskJet 3700 seriesYes
HP DeskJet 4100 seriesYes
HP DeskJet 5000 seriesYes
HP DeskJet 5200 seriesYes
HP ENVY 4500Yes
HP ENVY 5055 seriesYes
HP ENVY 5530 seriesYes
HP ENVY 5540Yes
HP ENVY 5640Yes
HP ENVY 6000 seriesYes
HP ENVY Photo 6200 seriesYes
HP ENVY Photo 7800 seriesYes
HP ENVY Pro 6400 seriesYes
HP Color Laser MFP M178nwYes
HP LaserJet 200 colorMFP M276nNoYes
HP LaserJet MFP E62655Yes
HP LaserJet MFP M130fnYesYes
HP LaserJet MFP M130fwYesYes
HP LaserJet MFP M140wYes
HP LaserJet MFP M227sdnYes
HP LaserJet MFP M426dwYes
HP LaserJet MFP M630Yes
HP LaserJet Pro M28aYes3
HP LaserJet Pro M28wYesYes
HP LaserJet Pro M329Yes9
HP LaserJet Pro MFP 148fdwYes
HP LaserJet Pro MFP M125 seriesNoYes
HP LaserJet Pro MFP M127fnNoYes
HP LaserJet Pro MFP M225dnNoYes
HP LaserJet Pro MFP M428dwYes9
HP LaserJet Pro MFP M521 seriesNoYes
HP Laser MFP 131 133 135-138Yes
HP Neverstop Laser MFP 1202nwYes
HP OfficeJet 3830 seriesYes
HP Officejet 4630Yes
HP Officejet 5740 seriesYes
HP Officejet Pro 6970Yes
HP OfficeJet Pro 6978Yes
HP OfficeJet Pro 7740YesNo
HP OfficeJet Pro 8010 seriesYes
HP OfficeJet Pro 8020 SeriesYes
HP OfficeJet Pro 8730YesYes
HP OfficeJet Pro 9010 seriesYes
HP ScanJet Pro 2000 s2Yes3
HP ScanJet Pro 3500 fn1Yes3
HP ScanJet Pro 4500 fn1Yes
HP Smart Tank 5100 seriesYes
HP Smart Tank Plus 550 seriesYes
Kyocera ECOSYS M2035dnNoYes5
Kyocera ECOSYS M2040dnYesYes5
Kyocera ECOSYS M2640idwYesYes5
Kyocera ECOSYS M5521cdwYesYes5
Kyocera ECOSYS M5526cdwYes
Kyocera FS-1028MFPNoYes5
Kyocera TASKalfa 3051ciNoYes5
Lexmark CX310dnNoYes6
Lexmark CX317dnYes6Yes6
Lexmark MB2236adwYes
Lexmark MC2535adweYes
Lexmark MC3224adweYes
Lexmark MC3326adweYes
OKI-MB471NoYes
OKI-MC332dnNoYes
OKI-MC362dnNoYes
OKI-MC853Yes
Panasonic KV-S1058YNoYes
Pantum BM5100ADW seriesYesYes
Pantum M6500W seriesYes
Ricoh MP C3003NoYes7
Samsung M2070 SeriesNoYes
Samsung M267x 287x SeriesNoYes
Samsung M288x SeriesNoYes
Samsung M337x 387x 407x SeriesNoYes8
Samsung SCX-3400 SeriesNoYes
SHARP MX-3060NYes9
Xerox B205YesYes
Xerox B215YesYes10
Xerox C235Yes
Xerox C315YesYes
Xerox VersaLink B405Yes
Xerox WorkCentre 3025NoYes
Xerox WorkCentre 6027NoYes10
Xerox WorkCentre 6515Yes
TODO

[1]: this device requires manual activation of AirPrint scanning on its web console: Home->Menu->Preferences->Network->TCP/IP Settings->Network Link Scan Settings->On.

[2]: WS-Scan needs to be manually enabled on this device: Home->Menu->Preferences->Network->TCP/IP Settings->WSD Settings->Use WSD Scanning->ON

[3]: this device is USB-only, but it works well with the IPP-over-USB daemon.

[4]: by default, WS-Scan is disabled on this device and needs to be enabled before use: open web console, Click [Settings/Registration], Click [Network Settings]->[TCP/IP Settings], Click [Edit] in [WSD Settings], enable [Use WSD Scanning] checkbox, Click [OK]

[5]: this device requires manual action on its front panel to initiate WSD scan: Send->WSD Scan->From Computer

[6]: when low in memory, this device may scan at 400 DPI instead of requested 600 DPI. As sane-airscan reports image parameters to SANE before actual image is received, and then adjust actual image to reported parameters, image will be scaled down by the factor 2/3 at this case. Lower resolutions works well.

[7]: by default, WS-Scan is disabled on this device and needs to be enabled before use: open web console, Click [Configuration], click [Initial Settings] under [Scanner], and then set [Prohibit WSD Scan Command] to [Do not Prohibit] (from http://support.ricoh.com/bb_v1oi/pub_e/oi_view/0001047/0001047003/view/scanner/int/0095.htm)

[8]: with old firmware (tested with V4.00.01.04 APR-09-2013) ADF scan causes device reboot. Firmware update helps, version V4.00.02.20 MAY-27-2020 known to work.

[8]: eSCL needs to be manually enabled on this device: System-settings->Network settings->Airprint settings->Airscan

[9]: Scanning remotely and with IPP-over-USB active is disabled by default. In the Embedded Web Server: Settings->Security->Administrator Settings->Enable Scan from a Computer or Mobile Device->Apply

[10]: WSD scan is disabled by default. In the Embedded Web Server: Properties->Connectivity->Protocols->WSD->Enable

[11]: requires manual activation of AirPrint scanning on its web console: open web console, Click [Settings/Registration], Click [Network Settings]->[TCP/IP Settings], Click [Edit] in [Network Link Scan Settings], enable [Use Network Link Scan] checkbox, Click [OK]

[13]: WSD scan is disabled by default. Enable it in the Embedded Web Server: Services->Protocol->WSD Settings->Enable WSD

[12]: WSD scan is disabled by default. Enable it in the Embedded Web Server: Network Security->Protocol->WSD Settings->Enable WSD. Before scanning, tap the Home icon on the device (if necessary), then select WSD.

Distros that come with sane-airscan

The following distros (in alphabetical order) include sane-airscan officially:

  • ALT Linux (Sisyphus and p9)
  • Arch Linux (in extra repository)
  • Debian 10+
  • Fedora 32+
  • Gentoo (emerge media-gfx/sane-airscan)
  • NixOS
  • Ubuntu 20.10+

This list is constantly growing and may be very incomplete.

Also, sane-airscan works on BSD and included into FreeBSD, NetBSD and OpenBSD ports.

Installation from pre-build binaries

If you use one of the following Linux distros:

  • Debian (9.0 and 10)
  • Fedora (29, 30, 31 and 32)
  • openSUSE (Leap and Tumbleweed)
  • Ubuntu (16.04, 18.04, 19.04, 19.10 and 20.04)

Follow this link, where you will find packages and very detailed installation instructions.

Note, after a fresh build this link sometimes takes too long to update, so if you encounter "Resource is no longer available!" problems, there is a direct link to repositories: https://download.opensuse.org/repositories/home:/pzz/

I strongly recommend you to choose "Add repository and install manually" option rather that "Grab binary packages directly", because it will enable automatic updates of the sane-airscan package.

Linux Mint users may use Ubuntu packages:

  • Linux Mint 18.x - use packages for Ubuntu 16.04
  • Linux Mint 19.x - use packages for Ubuntu 18.04
  • Linux Mint 20.x - use packages for Ubuntu 20.04

Big thanks to openSUSE Build Service for providing package build infrastructure.

If your distro is not listed, see Installation from sources section below.

Installation from sources

Install required libraries - Fedora and similar

As root, execute the following commands:

dnf install gcc git make pkgconf-pkg-config
dnf install avahi-devel
dnf install libxml2-devel
dnf install libjpeg-turbo-devel libpng-devel libtiff-devel
dnf install gnutls-devel
dnf install sane-backends-devel

Install required libraries - Ubuntu, Debian and similar

As root, execute the following commands:

apt-get install gcc git make pkg-config
apt-get install libavahi-client-dev
apt-get install libxml2-dev
apt-get install libjpeg-dev libpng-dev libtiff5-dev
apt-get install libsane-dev
apt-get install gnutls-dev

Download, build and install sane-airscan

git clone https://github.com/alexpevzner/sane-airscan.git
cd sane-airscan
make
make install

Contribution

All contributions are welcome and greatly appreciated, assuming the following:

  1. Feature that you propose has a general interest for many people
  2. Your code is well-formatted and has a good quality

Please note, this project has two branches:

Stable branch accepts mostly bug fixes and minor features with small change in code base. Major features should be contributed into the development branch.

If your business depends on my project, and you require any specific feature not currently implemented here, you may consider contracting me on a paid basis.

PVS-Studio

PVS-Studio is a static code analyser, supporting C, C++, C# and Java.

Once upon a time I was chatting with its authors in Russian software development forum and told them, that if their tool will find something interesting in my code, I will put a reference to their project here.

Their tool actually found a couple real bugs, so I had to fulfill my promise :-)

Now I regularly test this code with PVS-Studio, and it really helps. Their product is not free, but they offer free licenses for open source projects.

Reporting bugs

To report a bug, please create a new GitHub issue

To create a helpful bug report, please perform the following steps:

  1. Enable protocol trace in the sane-airscan, by adding the following entries into the configuration file
    (/etc/sane.d/airscan.conf):
[debug]
trace = ~/airscan/trace ; Path to directory where trace files will be saved

You may use an arbitrary directory path, assuming you have enough rights to create and write this directory. The directory will be created automatically.

  1. Reproduce the problem. Please, don't use any confidential documents when problem is being reproduces, as their content will be visible to others.

  2. Explain the problem carefully

  3. In the directory you've specified as the trace parameter, you will find two files. Assuming you are using program xsane and your device name is "Kyocera MFP Scanner", file names will be "xsane-Kyocera-MFP-Scanner.log" and "xsane-Kyocera-MFP-Scanner.tar". Please, attach both of these files to the new issue.

References

The eSCL protocol is not documented, but this is simple protocol, based on HTTP and XML, easy for reverse engineering. There are many Internet resources around, related to this protocol, and among others I want to note the following links:

  • kno10/python-scan-eSCL - a tiny Python script, able to scan from eSCL-compatible scanners
  • SimulPiscator/AirSane - this project solves the reverse problem, converting any SANE-compatible scanner into eSCL server. Author claims that it is compatible with Mopria and Apple clients
  • markosjal/AirScan-eSCL.txt - document, describing eSCL protocol, based on reverse engineering. Not complete and not always accurate, but gives the good introduction

Contributors

(top 30 of 47)

alexpevzner

1,400 commits

espindola

14 commits

yetamrra

9 commits

zdohnal

7 commits

alexpevzner/sane-airscan

Scanner Access Now Easy - universal driver for eSCL (Apple AirScan) and WSD

369

stars

1,495

commits

C

primary language

Sep 7, 2026

updated

README

sane-airscan -- SANE backend for AirScan (eSCL) and WSD document scanners

Similar to how most modern network printers support "driverless" printing, using the universal vendor-neutral printing protocol, many modern network scanners and MFPs support "driverless" scanning.

Driverless scanning comes in two flavors:

  • Apple AirScan or AirPrint scanning (official protocol name is eSCL)
  • Microsoft WSD, or WS-Scan (term WSD means "Web Services for Devices)

This backend implements both protocols, choosing automatically between them. It was successfully tested with many devices from Brother, Canon, Dell, Kyocera, Lexmark, Epson, HP, OKI, Panasonic, Pantum, Ricoh, Samsung and Xerox both in WSD and eSCL modes.

For eSCL devices, Apple maintains a comprehensive list of compatible devices, but please note, this list contains not only scanners and MFP, but pure printers as well.

This backend doesn't require to install and doesn't conflict with vendor-provided proprietary software like ScanGear from Canon, HPLIP from HP and so on.

Features

  1. One backend for two different protocols, eSCL and WSD
  2. Automatic and manual device discovery and configuration
  3. Scan from platen and ADF, in duplex and simplex modes, multi-page scan from ADF supported as well
  4. Scan in color and gray scale modes
  5. Line-by-line image unpacking, for low memory footprint
  6. The cancel operation is as fast as possible, depending on your hardware
  7. Both IPv4 and IPv6 are supported

Compatibility

Any eSCL and WSD capable scanner expected to work. Here is a list of devices that were actually tested. If you have success with a scanner not included into this list, please let me know.

In most cases, devices were tested with network connection. However, most (all?) of the eSCL devices will also work over USB, if IPP-over-USB daemon is installed on your computer. WSD-only devices cannot be used with the IPP-over-USB daemon.

The IPP-over-USB comes with the ipp-usb package and often installed by default. If your distro comes without ipp-usb, please visit the project page to figure out alternative ways to obtain it: ipp-usb

Legend:

  • Yes - device works perfectly
  • No - protocol not supported by device
  • ? - device works with sane-airscan, but protocol is not reported by user
  • Space - author has no information on this mode/device combination
DeviceeSCL modeWSD mode
Brother ADS-2700WNoYes
Brother ADS-4300NYesYes
Brother DCP-7055WNoYes
Brother DCP-7070DWNoYes
Brother DCP-9020CDWNoYes
Brother DCP-J552DWNoYes
Brother DCP-L2530DWYesYes
Brother DCP-L2540DWNoYes
Brother DCP-L2550DN / DCP-L2550DWYes
Brother DCP-L2660DWYes
Brother HL-L2380DW seriesNoYes
Brother HL-L2395DW seriesYes
Brother MFC-7360NNoYes
Brother MFC-8710DWNoYes
Brother MFC-J1012DWYes
Brother MFC-J1300DWYes
Brother MFC-J4410DWNoYes
Brother MFC-J4540DWYes
Brother MFC-J4620DWNoYes
Brother MFC-J470DWNoYes
Brother MFC-J485DWYes
Brother MFC-J5730DWYesYes
Brother MFC-J625DWNoYes
Brother MFC-L2700DWNoYes
Brother MFC-L2710DN seriesNoYes
Brother MFC-L2710DWYesYes
Brother MFC-L2720DWNoYes
Brother MFC-L2750DWYesYes
Brother MFC-L3740CDWEYes
Brother MFC-L3750CDWNoYes
Brother MFC-L3780CDWNoYes
Brother MFC-T910DWYesYes
Canon D570Yes
Canon G600 seriesYes
Canon imageCLASS MF642C/643C/644CYes
Canon imageCLASS MF743cdwYes1
Canon imageRUNNER 2625/2630YesYes
Canon imageRUNNER ADVANCE 4545/4551YesYes
Canon imageRUNNER ADV C5550/5560Yes
Canon imageRUNNER C3120LYesYes
Canon i-SENSYS MF4780wNoYes4
Canon i-SENSYS MF641CNoYes2
Canon LiDE 300Yes3
Canon LiDE 400Yes3
Canon MB5100 seriesYes
Canon MB5400 seriesYesYes
Canon MF110/910Yes
Canon MF240 SeriesNoYes4
Canon MF260 SeriesYesYes4
Canon MF270 SeriesYes11Yes4
Canon MF410 SeriesYesYes
Canon MF440 SeriesYesYes
Canon MF645CxYes
Canon MF650C SeriesYes
Canon MF660C SeriesYes
Canon MF745C/746CYesYes
Canon MG5200 seriesNoYes
Canon MG5300 seriesNoYes
Canon MG5700 seriesYes
Canon MX470 seriesNoYes
Canon PIXMA G3000 seriesNoYes
Canon PIXMA G4010 seriesYes3
Canon PIXMA MG3600 seriesYes
Canon PIXMA MG5500 SeriesNoYes
Canon PIXMA MG7700 SeriesYes
Canon PIXMA TS5000 SeriesYes
Canon PIXMA TS 9550 SeriesYes
Canon TR4527Yes
Canon TR4529 (PIXMA TR4500 Series)YesYes
Canon TR4700 seriesYes
Canon TR7500 SeriesNoYes
Canon TR8600 ScannerYes
Canon TS 3100Yes
Canon TS 3300Yes
Canon TS 3400 seriesYes
Canon TS 6151Yes
Canon TS 6200 seriesYesYes
Canon TS 6300 seriesYes
Canon TS 6400 seriesYes
Canon TS 8230 seriesNoYes
Dell C1765nfw Color MFPNoYes
Dell C2665dnf Color Laser PrinterNoYes
Dell C3765dnf Color MFPNoYes
Dell E514dwNoYes
EPSON ET-2650 SeriesYesYes
EPSON ET-2710 SeriesNoYes
EPSON ET-2750 SeriesYes
EPSON ET-2760 SeriesYes
EPSON ET-2810 SeriesNoYes
EPSON ET-2850 SeriesYes
EPSON ET-3750 SeriesYes
EPSON ET-4750 SeriesNoYes
EPSON ET-4850 SeriesYes
EPSON ET-M2170 SeriesYes
EPSON EW-M752T SeriesNoYes
EPSON L3250 SeriesNoYes12
EPSON L6570 SeriesYesYes
EPSON Stylus SX535WDNoYes
EPSON WF-2760 SeriesYes
EPSON WF-3620 SeriesNoYes
EPSON WF-7710 SeriesNoYes
EPSON WorkForce ES-580WNoYes13
EPSON XP-2100 SeriesNoYes
EPSON XP-340 SeriesYes
EPSON XP-352 355 SeriesNoYes
EPSON XP-442 445 SeriesYes
EPSON XP-5100 SeriesYes
EPSON XP-6100 SeriesYes
EPSON XP-7100 SeriesYes
EPSON XP-8600 SeriesYes
HP Color Laserjet MFP 178 178Yes
HP Color LaserJet MFP M182nwYes
HP Color LaserJet MFP M281fdwYes
HP Color LaserJet MFP M283fdwYes
HP Color LaserJet MFP M477fdwYesYes
HP Color LaserJet Pro M478f-9fYes
HP Color LaserJet Pro MFP M277dwYes
HP DeskJet 2540Yes
HP DeskJet 2600 seriesYes
HP DeskJet 2700 seriesYes
HP Deskjet 3520 seriesYes
HP DeskJet 3700 seriesYes
HP DeskJet 4100 seriesYes
HP DeskJet 5000 seriesYes
HP DeskJet 5200 seriesYes
HP ENVY 4500Yes
HP ENVY 5055 seriesYes
HP ENVY 5530 seriesYes
HP ENVY 5540Yes
HP ENVY 5640Yes
HP ENVY 6000 seriesYes
HP ENVY Photo 6200 seriesYes
HP ENVY Photo 7800 seriesYes
HP ENVY Pro 6400 seriesYes
HP Color Laser MFP M178nwYes
HP LaserJet 200 colorMFP M276nNoYes
HP LaserJet MFP E62655Yes
HP LaserJet MFP M130fnYesYes
HP LaserJet MFP M130fwYesYes
HP LaserJet MFP M140wYes
HP LaserJet MFP M227sdnYes
HP LaserJet MFP M426dwYes
HP LaserJet MFP M630Yes
HP LaserJet Pro M28aYes3
HP LaserJet Pro M28wYesYes
HP LaserJet Pro M329Yes9
HP LaserJet Pro MFP 148fdwYes
HP LaserJet Pro MFP M125 seriesNoYes
HP LaserJet Pro MFP M127fnNoYes
HP LaserJet Pro MFP M225dnNoYes
HP LaserJet Pro MFP M428dwYes9
HP LaserJet Pro MFP M521 seriesNoYes
HP Laser MFP 131 133 135-138Yes
HP Neverstop Laser MFP 1202nwYes
HP OfficeJet 3830 seriesYes
HP Officejet 4630Yes
HP Officejet 5740 seriesYes
HP Officejet Pro 6970Yes
HP OfficeJet Pro 6978Yes
HP OfficeJet Pro 7740YesNo
HP OfficeJet Pro 8010 seriesYes
HP OfficeJet Pro 8020 SeriesYes
HP OfficeJet Pro 8730YesYes
HP OfficeJet Pro 9010 seriesYes
HP ScanJet Pro 2000 s2Yes3
HP ScanJet Pro 3500 fn1Yes3
HP ScanJet Pro 4500 fn1Yes
HP Smart Tank 5100 seriesYes
HP Smart Tank Plus 550 seriesYes
Kyocera ECOSYS M2035dnNoYes5
Kyocera ECOSYS M2040dnYesYes5
Kyocera ECOSYS M2640idwYesYes5
Kyocera ECOSYS M5521cdwYesYes5
Kyocera ECOSYS M5526cdwYes
Kyocera FS-1028MFPNoYes5
Kyocera TASKalfa 3051ciNoYes5
Lexmark CX310dnNoYes6
Lexmark CX317dnYes6Yes6
Lexmark MB2236adwYes
Lexmark MC2535adweYes
Lexmark MC3224adweYes
Lexmark MC3326adweYes
OKI-MB471NoYes
OKI-MC332dnNoYes
OKI-MC362dnNoYes
OKI-MC853Yes
Panasonic KV-S1058YNoYes
Pantum BM5100ADW seriesYesYes
Pantum M6500W seriesYes
Ricoh MP C3003NoYes7
Samsung M2070 SeriesNoYes
Samsung M267x 287x SeriesNoYes
Samsung M288x SeriesNoYes
Samsung M337x 387x 407x SeriesNoYes8
Samsung SCX-3400 SeriesNoYes
SHARP MX-3060NYes9
Xerox B205YesYes
Xerox B215YesYes10
Xerox C235Yes
Xerox C315YesYes
Xerox VersaLink B405Yes
Xerox WorkCentre 3025NoYes
Xerox WorkCentre 6027NoYes10
Xerox WorkCentre 6515Yes
TODO

[1]: this device requires manual activation of AirPrint scanning on its web console: Home->Menu->Preferences->Network->TCP/IP Settings->Network Link Scan Settings->On.

[2]: WS-Scan needs to be manually enabled on this device: Home->Menu->Preferences->Network->TCP/IP Settings->WSD Settings->Use WSD Scanning->ON

[3]: this device is USB-only, but it works well with the IPP-over-USB daemon.

[4]: by default, WS-Scan is disabled on this device and needs to be enabled before use: open web console, Click [Settings/Registration], Click [Network Settings]->[TCP/IP Settings], Click [Edit] in [WSD Settings], enable [Use WSD Scanning] checkbox, Click [OK]

[5]: this device requires manual action on its front panel to initiate WSD scan: Send->WSD Scan->From Computer

[6]: when low in memory, this device may scan at 400 DPI instead of requested 600 DPI. As sane-airscan reports image parameters to SANE before actual image is received, and then adjust actual image to reported parameters, image will be scaled down by the factor 2/3 at this case. Lower resolutions works well.

[7]: by default, WS-Scan is disabled on this device and needs to be enabled before use: open web console, Click [Configuration], click [Initial Settings] under [Scanner], and then set [Prohibit WSD Scan Command] to [Do not Prohibit] (from http://support.ricoh.com/bb_v1oi/pub_e/oi_view/0001047/0001047003/view/scanner/int/0095.htm)

[8]: with old firmware (tested with V4.00.01.04 APR-09-2013) ADF scan causes device reboot. Firmware update helps, version V4.00.02.20 MAY-27-2020 known to work.

[8]: eSCL needs to be manually enabled on this device: System-settings->Network settings->Airprint settings->Airscan

[9]: Scanning remotely and with IPP-over-USB active is disabled by default. In the Embedded Web Server: Settings->Security->Administrator Settings->Enable Scan from a Computer or Mobile Device->Apply

[10]: WSD scan is disabled by default. In the Embedded Web Server: Properties->Connectivity->Protocols->WSD->Enable

[11]: requires manual activation of AirPrint scanning on its web console: open web console, Click [Settings/Registration], Click [Network Settings]->[TCP/IP Settings], Click [Edit] in [Network Link Scan Settings], enable [Use Network Link Scan] checkbox, Click [OK]

[13]: WSD scan is disabled by default. Enable it in the Embedded Web Server: Services->Protocol->WSD Settings->Enable WSD

[12]: WSD scan is disabled by default. Enable it in the Embedded Web Server: Network Security->Protocol->WSD Settings->Enable WSD. Before scanning, tap the Home icon on the device (if necessary), then select WSD.

Distros that come with sane-airscan

The following distros (in alphabetical order) include sane-airscan officially:

  • ALT Linux (Sisyphus and p9)
  • Arch Linux (in extra repository)
  • Debian 10+
  • Fedora 32+
  • Gentoo (emerge media-gfx/sane-airscan)
  • NixOS
  • Ubuntu 20.10+

This list is constantly growing and may be very incomplete.

Also, sane-airscan works on BSD and included into FreeBSD, NetBSD and OpenBSD ports.

Installation from pre-build binaries

If you use one of the following Linux distros:

  • Debian (9.0 and 10)
  • Fedora (29, 30, 31 and 32)
  • openSUSE (Leap and Tumbleweed)
  • Ubuntu (16.04, 18.04, 19.04, 19.10 and 20.04)

Follow this link, where you will find packages and very detailed installation instructions.

Note, after a fresh build this link sometimes takes too long to update, so if you encounter "Resource is no longer available!" problems, there is a direct link to repositories: https://download.opensuse.org/repositories/home:/pzz/

I strongly recommend you to choose "Add repository and install manually" option rather that "Grab binary packages directly", because it will enable automatic updates of the sane-airscan package.

Linux Mint users may use Ubuntu packages:

  • Linux Mint 18.x - use packages for Ubuntu 16.04
  • Linux Mint 19.x - use packages for Ubuntu 18.04
  • Linux Mint 20.x - use packages for Ubuntu 20.04

Big thanks to openSUSE Build Service for providing package build infrastructure.

If your distro is not listed, see Installation from sources section below.

Installation from sources

Install required libraries - Fedora and similar

As root, execute the following commands:

dnf install gcc git make pkgconf-pkg-config
dnf install avahi-devel
dnf install libxml2-devel
dnf install libjpeg-turbo-devel libpng-devel libtiff-devel
dnf install gnutls-devel
dnf install sane-backends-devel

Install required libraries - Ubuntu, Debian and similar

As root, execute the following commands:

apt-get install gcc git make pkg-config
apt-get install libavahi-client-dev
apt-get install libxml2-dev
apt-get install libjpeg-dev libpng-dev libtiff5-dev
apt-get install libsane-dev
apt-get install gnutls-dev

Download, build and install sane-airscan

git clone https://github.com/alexpevzner/sane-airscan.git
cd sane-airscan
make
make install

Contribution

All contributions are welcome and greatly appreciated, assuming the following:

  1. Feature that you propose has a general interest for many people
  2. Your code is well-formatted and has a good quality

Please note, this project has two branches:

Stable branch accepts mostly bug fixes and minor features with small change in code base. Major features should be contributed into the development branch.

If your business depends on my project, and you require any specific feature not currently implemented here, you may consider contracting me on a paid basis.

PVS-Studio

PVS-Studio is a static code analyser, supporting C, C++, C# and Java.

Once upon a time I was chatting with its authors in Russian software development forum and told them, that if their tool will find something interesting in my code, I will put a reference to their project here.

Their tool actually found a couple real bugs, so I had to fulfill my promise :-)

Now I regularly test this code with PVS-Studio, and it really helps. Their product is not free, but they offer free licenses for open source projects.

Reporting bugs

To report a bug, please create a new GitHub issue

To create a helpful bug report, please perform the following steps:

  1. Enable protocol trace in the sane-airscan, by adding the following entries into the configuration file
    (/etc/sane.d/airscan.conf):
[debug]
trace = ~/airscan/trace ; Path to directory where trace files will be saved

You may use an arbitrary directory path, assuming you have enough rights to create and write this directory. The directory will be created automatically.

  1. Reproduce the problem. Please, don't use any confidential documents when problem is being reproduces, as their content will be visible to others.

  2. Explain the problem carefully

  3. In the directory you've specified as the trace parameter, you will find two files. Assuming you are using program xsane and your device name is "Kyocera MFP Scanner", file names will be "xsane-Kyocera-MFP-Scanner.log" and "xsane-Kyocera-MFP-Scanner.tar". Please, attach both of these files to the new issue.

References

The eSCL protocol is not documented, but this is simple protocol, based on HTTP and XML, easy for reverse engineering. There are many Internet resources around, related to this protocol, and among others I want to note the following links:

  • kno10/python-scan-eSCL - a tiny Python script, able to scan from eSCL-compatible scanners
  • SimulPiscator/AirSane - this project solves the reverse problem, converting any SANE-compatible scanner into eSCL server. Author claims that it is compatible with Mopria and Apple clients
  • markosjal/AirScan-eSCL.txt - document, describing eSCL protocol, based on reverse engineering. Not complete and not always accurate, but gives the good introduction

Contributors

(top 30 of 47)

alexpevzner

1,400 commits

espindola

14 commits

yetamrra

9 commits

zdohnal

7 commits

Languages

C

97.1%

Roff

1.2%