SANE - Contributing or: How Can You Help SANE?

We appreciate any help we can get. Here are some topics on which you can work:

Information for Manufacturers

Are you a manufacturer or vendor of scanners and one of your scanners is not supported by SANE yet? In this case please have a look at our information for manufacturers.

Reporting Unsupported Scanners and Adding more information

If you can provide more information for one of the scanners that's listed as "unsupported" in our current list of unsupported scanners or even want to add a new scanner, please send all information you have to us. If you own an unsupported scanner, please send as much information as possible. Especially the output of sane-find-scanner -v -v and/or cat /proc/scsi/scsi (for SCSI scanners) or cat /proc/bus/usb/devices (for USB scanners) can help. If you dare to open the scanner, have a look at the text that's printed on the chips. That may help to identify the chipset. If you know that the scanner is similar to another one (e.g. supported by the same Windows driver), please also mention this fact. Contact us by sending mail to the sane-devel mailing list or file a bug report.

Writing a Backend (Driver)

If your scanner is unsupported by SANE, please consider writing a backend for it. As scanners are very different to each other, you can't expect the SANE developers to write the backend for you. If your scanner is similar to one that already works, it may be easy to add support. But if it's necessary to write a completely new backend, it's up to you.

The time and skills needed for writing a backend depends on the "intelligence" of the scanner. If it's rather high-level, i.e. understand commands like "scan-at-600-dpi", it may be possible to write a basic driver in 10-20 hours. If the protocol is more low-level (e.g. move-motor-one-step), it can take much longer.

You don't need to be an experienced programmer. Backends are usually written in C, so some basic knowledge of this language helps. You need a lot of patience, however, especially if you can't get programmer's documentation from your scanner's manufacturer.

If you intend to write a backend: contact the sane-devel mailing list and let us know. Get all the information about your scanner that's available: chipset application manual (sometimes it's on the web), Windows drivers used (sometimes they tell which chipset is used), programmer's information (if the manufacturer provides those). If you don't have enough information about the protocol used by the scanner, try to find out what the MS Windows driver does. For basic information about how SANE works, get the latest development version of SANE, read man sane and doc/backend-writing.txt. Also have a look at existing backends, e.g. one of the USB backends, if you want to support a USB scanner.

Writing a Frontend

There are already some very capable frontends. So helping with improving the existing frontends may make more sense than to write yet another one. On the other hand there may be reasons to start writing a completely new frontend, like support for a specific widget set, a programming language or a special type of devices (e.g. cameras, slide scanners). In any case, keep the sane-devel mailing list informed of your plans.

Hiring a developer

Some SANE developers have been known to produce backends in exchange for hardware or money. Cost would depend on the developer and the scanner, but could be quite high if the protocol is obtuse or lacking documentation. As a general rule, the cost of the backend is inversely proportional to the cost of the scanner. Cheap USB or parallel-port scanners can take hundreds of hours of frustrating work, only to extract poor quality images. Costly SCSI (or SCSI-over-USB) scanners are generally much easier to support, and their vendors are generally more open with documentation.

If the scanner is rare or expensive, you may need to provide hardware access. Physical access is significantly easier, but remote shell may suffice. If these cannot be arranged, expect to provide packet dumps of the device in action using a protocol sniffer.

If the resultant code is derived from SANE, note that it will still be covered by the GPL/SANE license. Please contact the sane-devel mailing list for more info and to find interested developers.

Reporting Bugs and Missing Features

If you think something in SANE isn't working as it should, please don't hesitate to file a bug report Please provide as many details as possible. Describe which software you are using (operating system + version, distribution, version of sane-backends and of the frontend you use). Explain exactly what doesn't work, is wrong or missing.

Adding and fixing documentation

If you found a bug in any documentation (man pages, web site, READMEs), please contact us using the sane-devel mailing list or file a bug report. Also write us if you think some documentation is missing. Please include a patch in this case, if possible. Don't hesitate to send spelling and grammar mistakes. Most of us are not native English speakers.


The options of the backends can be translated. For some languages, the translations are almost complete, but some are lacking a lot of words and for most languages there is no translation at all. If you want to help to translate the options to your native language (or a language you speak fluently), contact the sane-devel mailing list and have a look at the po/ directory in the source code.

The translations of the man pages are maintained externally by the manpages-l10n project. Currently they maintain translations of the sane-backends package in 9 languages. Please contact the team for how to contribute, even with translations into a language which this project still doesn't support. For any questions about contributions, please contact Mario Blättermann.

Success reports

If you had success using SANE we want to know about that, too. Especially if your scanner is not in the lists yet or is marked "untested". Please send an email to the sane-devel mailing list or file a bug report.

SANE homepage