インストール • クイックスタート • Web UI • 設定 • プロトコル仕様 • 🇺🇸 English
ScanSnap iX500 の Wi-Fi スキャンを支えていた ScanSnap Connect Application は提供を終了していました。現在公開されているScanSnap Homeは iX500 をサポートしておらず、無線LANによるスキャンをする術を失ってしまいました。 AirScap は、 iX500 を含むレガシーな ScanSnap を AirScan プロトコルに対応させ、無線経由のスキャンを蘇らせるプロトコルブリッジです。
ScanSnap iX500 が Wi-Fi で使用する独自プロトコル VENS を Go でネイティブ実装し、標準的な eSCL (AirScan) ネットワークスキャナとして公開します。
| プラットフォーム | クライアント |
|---|---|
| macOS | イメージキャプチャ、プレビュー |
| Linux | SANE (sane-airscan)、scanservjs |
| Windows | Windows Scan (WSD) |
flowchart TB
A[macOS イメージキャプチャ] & B[Linux SANE] & C[Windows Scan]
subgraph airscap["AirScap"]
E[eSCL Server] --- F[mDNS _uscan] --- G["Web UI (:8080)"]
end
A & B & C -- "eSCL (HTTP)" --> airscap
airscap -- "VENS (UDP/TCP)" <--> S[ScanSnap iX500]
- ドライバ不要 — eSCL/AirScan 対応クライアントからそのまま利用可能
- ゼロコンフィグ — ネットワーク上の ScanSnap を自動検出して接続
- 多彩なスキャン — カラー / グレースケール / 白黒、両面、PDF / JPEG / TIFF 出力、JPEG 画質調整、白紙スキップ、裏写り軽減に対応
- 物理ボタン対応 — スキャナ本体のボタンを押してスキャンジョブを実行。保存先はローカル / FTP / Paperless-ngx から選択
- Web UI — ブラウザから設定変更やステータス確認が可能(英語 / 日本語)
- シングルバイナリ — Pure Go、CGO 不要でクロスコンパイル可能。systemd サービスユニット同梱
開発・テストは ScanSnap iX500 と macOS イメージキャプチャで行っています。同じ VENS プロトコルを使用する他の ScanSnap モデルでも動作する可能性がありますが、未検証です。他のクライアントソフトウェア(SANE、Windows Scan 等)との互換性も保証されていません。
Tip
Linux で USB 接続する場合: USB 接続であれば SANE の標準ドライバ sane-epjitsu が ScanSnap iX500 をサポートしています。AirScap は Wi-Fi 経由でのスキャンを実現するためのものなので、USB 接続の場合は SANE ドライバをお使いください。
Releases ページから .deb パッケージをダウンロード:
# 最新リリースをダウンロード
curl -LO https://github.com/mzyy94/airscap/releases/latest/download/airscap_amd64.deb
# インストール
sudo dpkg -i airscap_amd64.deb
# 設定を編集
sudo vi /etc/airscap/env
# サービスを起動
sudo systemctl enable --now airscapdeb パッケージにはバイナリ、systemd サービスユニット、デフォルト設定ファイルが含まれます。
Go 1.25 以上が必要です。
git clone https://github.com/mzyy94/airscap.git
cd airscap
go mod vendor
CGO_ENABLED=0 go build -mod=vendor -overlay=build/overlay.json -o airscap ./cmd/airscap/Note
CGO が有効な環境(libjpeg / libpng がインストール済み)では、vendor や overlay なしでもビルドできます:
go build -o airscap ./cmd/airscap/sudo cp airscap /usr/local/bin/
sudo cp dist/airscap.service /etc/systemd/system/
sudo mkdir -p /etc/airscap
sudo cp dist/env.example /etc/airscap/env
sudo vi /etc/airscap/env
sudo systemctl daemon-reload
sudo systemctl enable --now airscap# スキャナを自動検出、パスワードをシリアル番号から自動導出
./airscap
# パスワードを明示的に指定
AIRSCAP_PASSWORD=0700 ./airscap
# スキャナの IP を直接指定
AIRSCAP_PASSWORD=0700 AIRSCAP_SCANNER_IP=192.168.1.100 ./airscap起動すると AirScap は以下を行います:
- ローカルネットワーク上の ScanSnap を検出(または指定 IP に接続)
- スキャナのパスワードでペアリング
- ポート 8080 で eSCL サーバーを起動
- mDNS 登録でクライアントから自動検出可能に
http://localhost:8080/ui/で Web UI を提供
Important
スキャナ本体の Wi-Fi 初期設定(アクセスポイントへの接続)は AirScap では行えません。 事前に ScanSnap のセットアップツールまたは WPS ボタンを使用して、スキャナをネットワークに接続しておいてください。
http://<host>:8080/ui/ で管理画面にアクセスできます。
- ステータス — 接続状態、ADF の用紙有無、エラー状態(紙詰まり・カバーオープン・重送検知)
- デバイス情報 — スキャナ名、シリアル番号、IP、ファームウェアリビジョン
- ボタンスキャン設定 — カラーモード、解像度、用紙サイズ、出力形式、JPEG 画質、両面、白紙スキップ、裏写り軽減
- 保存先 — ローカルフォルダ / FTP / Paperless-ngx のボタンスキャン保存先設定
- AirScan 設定 — 用紙サイズ自動検出、裏写り軽減、白黒濃度の AirScan クライアント向けオーバーライド
- eSCL エンドポイント — eSCL クライアント手動設定用の URL
- 多言語対応 — 英語 / 日本語切り替え
スキャナーの探索や起動などに関する設定は環境変数で行います。
| 変数 | デフォルト | 説明 | 注釈 |
|---|---|---|---|
AIRSCAP_PASSWORD |
自動導出 | スキャナのペアリングパスワード | * |
AIRSCAP_PASSWORD_FILE |
— | パスワードファイルのパス | * |
AIRSCAP_SCANNER_IP |
自動検出 | スキャナの IP アドレス | |
AIRSCAP_LISTEN_PORT |
8080 |
HTTP リッスンポート | |
AIRSCAP_DEVICE_NAME |
スキャナから取得 | mDNS 表示名 | |
AIRSCAP_LOG_LEVEL |
info |
ログレベル(debug / info / warn / error) |
|
AIRSCAP_DATA_DIR |
永続化しない | 設定永続化ディレクトリ | ** |
* デフォルトパスワードから変更している場合は、設定したパスワードを指定する必要があります。いずれか片方で指定してください。
** systemdで起動している場合は、未指定でも STATE_DIRECTORY に保存され永続化されます。
テンプレートは dist/env.example を参照。
# mDNS 登録の確認(macOS)
dns-sd -B _uscan._tcp
# eSCL ケーパビリティの確認
curl -s http://localhost:8080/eSCL/ScannerCapabilities | head -20
# SANE でスキャン
scanimage -L
scanimage --device 'airscan:e0:ScanSnap iX500' --format=jpeg -o scan.jpgAirScap は VENS プロトコルを実装しています。これは富士通/リコーの ScanSnap スキャナが Wi-Fi 通信で使用する独自バイナリプロトコルで、公式アプリケーションのパケットキャプチャを解析して実装しました。
プロトコルの詳細仕様:
- protocol.md(日本語)
- protocol.en.md(English)
本ソフトウェアは以下のオープンソースライブラリを使用しています:
| ライブラリ | ライセンス |
|---|---|
| go-mfp | BSD 2-Clause |
| go-pdf/fpdf | MIT |
| zeroconf | MIT |
| jlaffaye/ftp | ISC |
| golang.org/x/image | BSD 3-Clause |
| Alpine.js | MIT |
| Bulma | MIT |
| Feather Icons | MIT |