SANE-AIRSCAN(5) AirScan (eSCL) and WSD SANE backend SANE-AIRSCAN(5)

sane-airscan - بک‌اند SANE برای اسکنرها و دستگاه‌های چندمنظوره (MFP) مبتنی بر AirScan (eSCL) و WSD

بک‌اند sane-airscan یک بک‌اند سراسری برای اسکن اسناد به‌صورت «بدون درایور» (driverless) است. در حال حاضر این بک‌اند از دو پروتکل پشتیبانی می‌کند:

1. eSCL, also known as AirScan or AirPrint scan
2. WSD, also known as WS-Scan

ابزار sane-airscan فایل‌های پیکربندی خود را از مکان‌های زیر بارگذاری می‌کند:

1. /etc/sane.d/airscan.conf
2. /etc/sane.d/airscan.d/*

نحو (syntax) فایل پیکربندی بسیار شبیه به فایل‌های .INI است. این فایل از بخش‌ها تشکیل شده و هر بخش شامل چند متغیر است. کامنت‌ها با نویسه‌های # یا ; آغاز می‌شوند و تا انتهای خط ادامه دارند

# This is a comment
[section 1]
variable 1 = value 1  ; and another comment
variable 2 = value 2

فاصله‌های خالی ابتدا و انتهای نام متغیر و مقدار آن حذف می‌شوند. اگر می‌خواهید آن‌ها را حفظ کنید، نام یا مقدار را داخل گیومه قرار دهید ("مانند این").

اگر اسکنر و رایانه به یک بخش یکسان از شبکه محلی (LAN segment) متصل باشند، انتظار می‌رود همه‌چیز بدون نیاز به هیچ پیکربندی دستی، به‌صورت خودکار کار کند.

با این حال، در برخی موارد پیکربندی دستی می‌تواند مفید باشد. برای مثال:

1. If computer and scanner are connected via IP router
2. There are a lot of devices on a corporate network, but
   only few of them are interesting
3. Automatic discovery works unreliable

برای پیکربندی دستی یک دستگاه، بخش زیر را به فایل پیکربندی اضافه کنید:

[devices]
"Kyocera eSCL" = http://192.168.1.102:9095/eSCL, eSCL
"Kyocera WSD" = http://192.168.1.102:5358/WSDScanner, WSD
"Device I do not want to see" = disable

بخش [devices] شامل تمام دستگاه‌های پیکربندی‌شده به‌صورت دستی است، یک خط برای هر دستگاه؛ هر خط شامل نام دستگاه در سمت چپ تساوی و آدرس URL دستگاه در سمت راست است، که پس از آن پروتکل (eSCL یا WSD) می‌آید. اگر پروتکل ذکر نشود، eSCL فرض می‌شود. همچنین می‌توانید با استفاده از کلمه کلیدی disable به‌جای آدرس URL، دستگاه خاصی را غیرفعال کنید.

علاوه بر این، می‌توانید بدون افزودن دستگاه به فایل پیکربندی، با ارسال مستقیم آدرس URL آن در قالب نام دستگاه، آن را به‌صورت دستی پیکربندی کنید. این روش قالب protocol:Device Name:URL را می‌گیرد. مثال‌های بالا را می‌توان به‌صورت escl:Kyocera eSCL:http://192.168.1.102:9095/eSCL و wsd:Kyocera WSD:http://192.168.1.102:5358/WSDScanner نوشت.

برای یافتن آدرس‌های URL دستگاه‌های موجود، ساده‌ترین راه اجرای ابزار airscan-discover(1) روی رایانه‌ای است که به همان بخش شبکه محلی اسکنر متصل است. در صورت موفقیت، این برنامه فهرستی از دستگاه‌های کشف‌شده را در قالبی مناسب برای درج در فایل پیکربندی در خروجی استاندارد خود چاپ می‌کند.

اگر اجرای airscan-discover(1) در همان بخش شبکه محلی اسکنر ممکن نباشد، باید روش دشوارتر را پیش بگیرید. مدیر شبکه شما باید نشانی IP دستگاه را بداند، راهنمای دستگاه را برای پورت eSCL بررسی کند، و مسیر URL به احتمال زیاد "/eSCL" است، گرچه ممکن است در برخی دستگاه‌ها متفاوت باشد. کشف آدرس‌های URL مربوط به WSD با این روش بسیار سخت‌تر است، زیرا حدس زدن پورت TCP و مسیر URL در مقایسه با eSCL بسیار دشوار است.

برای دستگاه‌های eSCL، نشانی URL می‌تواند از طرحواره unix:// نیز استفاده کند، مانند unix://scanner.sock/eSCL. بخش «host» از آدرس URL، نام فایلی است که در دایرکتوری مشخص‌شده توسط socket_dir (به زیر نگاه کنید) جستجو خواهد شد. هنگام اتصال به اسکنر، تمام ترافیک به‌جای اتصال TCP به سوکت یونیکس مشخص‌شده ارسال می‌شود.

به‌طور پیش‌فرض، sane-airscan با تمام اسکنرها به عنوان دستگاه‌های راه دور (remote) رفتار می‌کند. این رفتار هنگام پیکربندی یک پروکسی که پروتکل eSCL/WSD را به پروتکل SANE ترجمه می‌کند می‌تواند نامطلوب باشد، زیرا saned(8) هر دستگاهی را که به‌صورت محلی متصل نشده باشد نادیده می‌گیرد. با تنظیم pretend-local = true، بک‌اند sane-airscan می‌تواند دستگاه‌های خود را در دسترس دیمن شبکه SANE قرار دهد.

گزینه‌های متفرقه همگی در بخش [options] قرار می‌گیرند. در حال حاضر گزینه‌های زیر پشتیبانی می‌شوند:

[options]
; If there are a lot of scanners around and you are only
; interested in few of them, disable auto discovery and
; configure scanners manually.
discovery = enable | disable
; Choose what SANE apps will show in a list of devices:
; scanner network name (the default) or hardware model name.
model = network | hardware
; If device supports both eSCL and WSD protocol, sane-airscan
; may either choose the "best" protocol automatically, or
; expose all variants for user, allowing manual protocol selection.
; The default is "auto".
protocol = auto | manual
; Discovery of WSD devices may be "fast" or "full". The "fast"
; mode works as fast as DNS-SD discovery, but in some cases
; may be unreliable. The "full" mode is slow and reliable.
; It is also possible to disable automatic discovery
; of WSD devices. The default is "fast".
ws-discovery = fast | full | off
; Scanners that use the unix:// schema in their URL can only
; specify a socket name (not a full path). The name will be
; searched for in the directory specified here.
; The default is /var/run.
socket_dir = /path/to/directory
; Configure whether eSCL and WSD devices should be treated as
; if they were attached locally. The default behavior considers
; them as remote devices that are accessed over the network.
; This option has to be changed when exporting a scanner through
; saned. The default is "false"
pretend-local = false | true

اگر در شبکه بسیار بزرگی هستید و دستگاه‌های زیادی در اطراف شما وجود دارند، در حالی که فقط به تعداد کمی از آن‌ها نیاز دارید، این قابلیت می‌تواند مفید باشد.

[blacklist]
model = "Xerox*"       ; blacklist by model name
name  = "HP*"          ; blacklist by network name
ip    = 192.168.0.1    ; blacklist by address
ip    = 192.168.0.0/24 ; blacklist the whole subnet

نام‌های شبکه از DNS-SD به دست می‌آیند و WS-Discovery این اطلاعات را ارائه نمی‌دهد. برای اینکه فیلتر کردن بر اساس نام شبکه کار کند، Avahi باید فعال باشد و دستگاه از طریق DNS-SD قابل کشف باشد (نه لزوماً به عنوان اسکنر، حتی اگر اسکنر WSD به عنوان چاپگر از طریق DNS-SD قابل کشف باشد کافی است).

لیست سیاه تنها بر کشف خودکار اثر می‌گذارد و تأثیری بر دستگاه‌های پیکربندی‌شده به‌صورت دستی ندارد.

بک‌اند sane-airscan ابزارهای بسیار خوبی برای عیب‌یابی بدون دسترسی فیزیکی به دستگاه مشکل‌دار فراهم می‌کند.

امکانات اشکال‌زدایی را می‌توان با استفاده از بخش [debug] در فایل پیکربندی کنترل کرد:

[debug]
; Enable or disable console logging
enable = false | true
; Enable protocol trace and configure output directory
; for trace files. Like in shell, to specify path relative to
; the home directory, start it with tilda character, followed
; by slash, i.e., "~/airscan/trace". The directory will
; be created automatically.
trace = path
; Hex dump all traffic to the trace file (very verbose!)
hexdump = false | true

/etc/sane.d/airscan.conf, /etc/sane.d/airscan.d/*
فایل‌های پیکربندی بک‌اند
/usr/LIBDIR/sane/libsane-airscan.so
کتابخانه اشتراکی پیاده‌سازی‌کننده این بک‌اند

اگر این متغیر روی true یا یک مقدار عددی غیرصفر تنظیم شود، پیام‌های اشکال‌زدایی را فعال می‌کند که در stderr چاپ می‌شوند
این متغیر مسیر جستجو برای فایل‌های پیکربندی را تغییر می‌دهد. این مقدار فهرستی از دایرکتوری‌ها است که با دونقطه (:) از هم جدا شده‌اند. این دایرکتوری‌ها برای فایل پیکربندی airscan.conf و زیرپوشه airscan.d، پیش از جستجوی مسیر استاندارد (/etc/sane.d) بررسی می‌شوند.
این متغیر در صورت تنظیم، تمام دستگاه‌های پیکربندی‌شده به‌صورت دستی در فایل‌های پیکربندی را نادیده می‌گیرد و کشف خودکار را غیرفعال می‌کند.
این متغیر از سه پارامتر تشکیل شده که با دونقطه (:) از یکدیگر جدا می‌شوند:
"PROTO:DEVICE NAME:URL"
به‌طوری که:
- PROTO یا escl است یا wsd.
- DEVICE NAME در فهرست دستگاه‌ها نمایش داده خواهد شد.
- URL آدرس اینترنتی دستگاه است که از طرحواره‌های http: یا https: استفاده می‌کند.
مثال‌ها:
"escl:Kyocera eSCL:http://192.168.1.102:9095/eSCL" (eSCL)
"wsd:Kyocera WSD:http://192.168.1.102:5358/WSDScanner" (WSD)
هدف اصلی این متغیر، آزمون خودکار بک‌اند sane-airscan است.

اگر اشکالی پیدا کردید، لطفاً یک Issue در صفحه پروژه در گیت‌هاب ثبت کنید: https://github.com/alexpevzner/sane-airscan

sane(7), saned (8), scanimage(1), xsane(1), airscan-discover(1)

Alexander Pevzner <pzz@apevzner.com>

April 2026