Epsonのスキャナ（DS-310）をLinux（Ubuntu）で使う

## TL;DR

[Epson公式][epson-net]でLinux向けのドライバーが提供されているので、それとsaneをインストールすれば使える

## 経緯

マニュアルなどの書類を手軽にデータ化して捨てられるよう、スキャナを導入することにした。

問題は筆者がLinuxをメインで使っていること。Linuxでスキャナを使うには[SANE][sane-official]というライブラリを使うのだが、例によってハードウェアのサポート状況はまちまち。[SANEのサポート機器のリスト][sane-support-device-list]確認しながら買ったのだが、案の定簡単には動かなかった。

## 買ったもの

[A4コンパクト ドキュメントスキャナー DS-310][product-ds-310]

購入の決め手は以下

- 小型でありながら、連続給紙が可能。
- [SANEのサポート機器][sane-support-device-list]では`Complete`[^unsupported]となっている。
- ちょうどAmazonのアウトレットで安く買えた。

## PC情報

```
$ uname -a
Linux unau 5.19.0-26-generic #27-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 23 20:44:15 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
$ $ scanimage --version
scanimage (sane-backends) 1.1.1-debian; backend version 1.1.1
```

なお、手順1まではRaspberry pi Debianでも検証したが、saneだけでは認識が安定しないのは同様だった。

## 手順1: Saneのインストール

```
sudo apt install sane sane-utils
```

まずは普通にsaneをインストール

`scanimage -L`で認識しているデバイスを確認できる。

```
$ scanimage -L
device `epsonds:libusb:004:004' is a Epson DS-310 ESC/I-2
```

この時点では無事認識している。

スキャナのフロントエンドはGnome標準の[Document Scanner](https://apps.gnome.org/app/simple-scan/)がインストールされていたため、それで試しにスキャンをしたところ動いた。

無事動いて一安心、と思いきや、まともに動いたのは最初だけ。気づくとスキャナが認識されなくなっていた。

再度`scanimage -L`を実行すると、見つからなくなっている。

```
$ scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
```

`sane-find-scanner`という別のコマンドをみると、USBスキャナとして認識自体はできている模様。

```
$ sudo sane-find-scanner 
# 略
found possible USB scanner (vendor=0x04b8, product=0x0159 [DS-310]) at libusb:004:005
# 略
```

`scanimage -L`は対応するドライバがないと見つけられないらしいので、`epsonds`のサポートが不完全で安定しない模様。

USBの抜き差しや不要なドライバのコメントアウトなどを試したが、何度やっても認識するのはUSBをつなぎなおした直後のみ。スキャン中にデバイスが認識できなくなるためか、Document Scannerが落ちてまともにスキャンができない。最初の一回目が成功したのは奇跡だったらしい。

[ArchWiki](https://wiki.archlinux.jp/index.php/SANE/%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%8A%E3%83%BC%E5%88%A5%E3%81%AE%E5%95%8F%E9%A1%8C)によるとEpsonには他にも2つ、`iscan/epkowa` `imagescan/utsushi`というパッケージがsaneのバックエンドとして使えるとのこと。
とはいえUbuntuには該当のパッケージはなく、そもそも`DS-310`はどちらのサポート対象にも記載されていない。公式のドライバーも、[公式のダウンロードページ](https://www.epson.jp/support/portal/download/ds-310.htm)を見る限りはLinuxはサポートしていない。さてどうしたものか。

## 公式のドライバー

とりあえずArchwikiにあったパッケージの代替がDebian系に無いか探してみた[^package-name]ら、[DebianのWikiのScannerのページ（英語）](https://wiki.debian.org/Scanner)に普通に情報が載っていた。


上記の公式のダウンロードページの他にも[エプソン公式と思われるページ][epson-net][^epson-net]があり、こちらで提供されているのが使えるとのこと。実際に`DS-310`も探したらあった。

X64のDebian系とdebやRedhat系のrpmに加え、Raspbian用のパッケージなどもあり、なければソースからコンパイルしろとのこと、見つかりにくい割にサポートはしっかりされている印象。

さっそくダウンロードして、解凍、インストールをする。

```console
$ tar zvxf  ~/Downloads/epsonscan2-bundle-6.7.0.0.x86_64.deb.tar.gz
$ cd ~/Downloads/epsonscan2-bundle-6.7.0.0.x86_64.deb
$ sh install.sh 
Selecting previously unselected package epsonscan2.
(Reading database ... 325956 files and directories currently installed.)
Preparing to unpack .../epsonscan2_6.7.0.0-1_amd64.deb ...
Unpacking epsonscan2 (6.7.0.0-1) ...
Selecting previously unselected package epsonscan2-non-free-plugin.
Preparing to unpack .../epsonscan2-non-free-plugin_1.0.0.5-1_amd64.deb ...
Unpacking epsonscan2-non-free-plugin (1.0.0.5-1) ...
Setting up epsonscan2 (6.7.0.0-1) ...
Setting up epsonscan2-non-free-plugin (1.0.0.5-1) ...
Processing triggers for desktop-file-utils (0.26-1ubuntu4) ...
Processing triggers for mailcap (3.70+nmu1ubuntu1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu3) ...
```

特にエラーなどもなくインストールが完了。
さっそく認識されているか確認してみる。

```console
$ scanimage -L
device `epsonds:libusb:004:005' is a Epson DS-310 ESC/I-2
device `epsonscan2:DS-310:004:005:esci2:usb:ES013E:345' is a EPSON DS-310:004:005 flatbed scanner
```

epsonscan2という新しいドライバが認識された。ただ、うまく動かないほうの`epsonds`も検出されてしまっているので、削除しておく。

```diff:/etc/sane.d/dll.conf
  # エプソン関係と思われるドライバをコメントアウトして無効化
  # 略
- epjitsu
+ #epjitsu
  #epson
- epson2
+ #epson2
- epsonds
+ #epsonds
  # 略
```

```
$ scanimage -L
device `epsonscan2:DS-310:004:005:esci2:usb:ES013E:345' is a EPSON DS-310:004:005 flatbed scanner
```

これで普通に使えるようになった。

## 余談

マニュアルとかカタログとか、いつか必要になるかもしれないけど原本を持っておく必要もない資料を簡単に取り込んで捨てられるのは非常に良い。これで書類の断捨離が捗る…捗ったらいいなあ[^spring-cleaning]


[^unsupported]: 対応するドライバーが`unmaintained`となっていたので、正直イヤな予感はしていた。

[^package-name]: ディストリビューションごとに収録パッケージが違うのはもちろんだが、パッケージ名が違うので見つからないだけというケースもあったりなかったりする。

[^epson-net]: 他のエプソンのページ（[corporate.epson](https://corporate.epson/ja/)や[epson.jp](https://www.epson.jp/)）とドメインが違うが、これらのサイトマップ中に[epson.netドメインのページ](https://support.epson.net/fun/ja/)が含まれているため、公式であるのは間違いなさそう。ドメイン移行前の旧サイトかとも思ったが、2022年時点で更新はされている模様。

[^spring-cleaning]: このタイミングで大掃除ほっておいてこの記事を書いている時点で、年末年始中の整理はまず無理そうという…。

[sane-official]:http://www.sane-project.org/
[sane-support-device-list]:http://www.sane-project.org/sane-mfgs.html
[product-ds-310]:https://www.epson.jp/products/scanner/ds310/
[epson-net]:http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX