ScanSnap iX500 を VirtualBox 内の Windows 8 から使う
ScanSnap iX500 と Windows 8 を買った。 サーバ的に使っている Linux マシンの VirtualBox 内に Windows 8 をインストールして、そこから iX500 を使っている。
Linux から全く使えないわけではなくて、sane を使うとスキャンはできる。 現時点で最新のリリース版である 1.0.23 は iX500 の発売より前のリリースなので、当然対応しておらず、HEAD をビルドする必要がある。
ただし、本当に画像としてスキャンができるだけで、サイズを自動的に調節したりカラーと白黒の判別を自動的にしたり OCR をかけて pdf にしたりといったことができないため、俺は勧めない。
なので素直に Windows 8 から使うようにした。ただし VirtualBox 内の。 準備として、まず Oracle Extension Pack をインストールする。これはリモートから VirtualBox のゲストマシンに VRDP で接続するのに必要なため。 また、ホストマシンに差した USB をゲストマシンから使う際にユーザが vboxusers グループに属している必要があるので、これも行っておく。
% yaourt -S virtualbox virtualbox-ext-oracle
# gpasswd -a eagletmt vboxusers
次に仮想マシンを用意する。VirtualBox では VBoxManage
でコマンドラインから操作できる。
% VBoxManage createvm --name Win8 --ostype Windows8_64 --register
% VBoxManage modifyvm Win8 --memory 2048 --boot1 dvd --nic1 nat --acpi on --vrde on --usb on --usbehci on --cpus 2 --vram 64
% VBoxManage createhd --filename Win8.vdi --size 40960
% VBoxManage storagectl Win8 --name Win8sata1 --add sata --bootable on
% VBoxManage storageattach Win8 --storagectl Win8sata1 --port 1 --type hdd --medium ~/VirtualBox\ VMs/Win8/Win8.vdi
% VBoxManage storageattach Win8 --storagectl Win8sata1 --port 2 --type dvddrive --medium /tmp/win8.iso
ここでやっていることは、
- Win8 という名前の仮想マシンを作成する
- Win8 という仮想マシンの設定を行う
- メモリは 2GB
- ブートの順序の最初は dvd
- ネットワークアダプタの割り当ては NAT
- ACPI をサポート
- VRDP をサポート (リモートから
rdesktop-vrdp
でゲストマシンに接続できる) - USB コントローラを有効化
- USB 2.0 (EHCI) コントローラを有効化
- CPU は2つ (最初1コアでやったらスキャンがだいぶ遅れることがあったので)
- VRAM は 64MB (デフォルトでは足りなかったので適当に増やした)
- Win8.vdi という 40GB のディスクイメージを作成
- Win8sata1 という仮想 SATA コントローラを作成
というもの。EHCI コントローラを有効にし忘れると、iX500 を接続したのになぜか認識されないということになる。
そして
% VBoxHeadless --startvm Win8
で起動できる。 クライアントからは
% rdesktop-vrdp $REMOTE_IP
で接続できるので、Windows 8 のインストール作業を行う。VirtualBox Guest Additions もインストールしておく。
USB デバイスをゲストマシンに認識させるには、さらに USB デバイスフィルタを設定する必要がある。 まず VirtualBox がちゃんと USB デバイスを認識できてるかどうかを確認する。
% VBoxManage list usbhost
Host USB Devices:
UUID: 0d4dadeb-a48e-4be1-a412-b79b28f1c917
VendorId: 0x04c5 (04C5)
ProductId: 0x132b (132B)
Revision: 1.0 (0100)
Port: 5
USB version/speed: 2/2
Manufacturer: Fujitsu
Product: ScanSnap iX500
Address: sysfs:/sys/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.6//device:/dev/vboxusb/003/006
Current State: Available
これが表示されないときは、ユーザが vboxusers グループに所属していない可能性がある。 iX500 だけをパスさせるようにするため、vendor id と product id を指定してフィルタを作る。
% VBoxManage usbfilter add 0 --target Win8 --name ScanSnap --vendorid 04C5 --productid 132B
ちなみにこの vendor id と product id は lsusb
でも調べられる。
そうしてから Win8 を立ち上げる。すると、usbhost の Current State が Captured に変化するはずである。
% VBoxHeadless --startvm Win8 &
[1] 16562
Oracle VM VirtualBox Headless Interface 4.2.16_OSE
(C) 2008-2013 Oracle Corporation
All rights reserved.
VRDE server is listening on port 3389.
% VBoxManage list usbhost
Host USB Devices:
UUID: 33fd08be-3bab-4280-8545-290ffffe4a8a
VendorId: 0x04c5 (04C5)
ProductId: 0x132b (132B)
Revision: 1.0 (0100)
Port: 5
USB version/speed: 2/2
Manufacturer: Fujitsu
Product: ScanSnap iX500
Address: sysfs:/sys/devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.6//device:/dev/vboxusb/003/006
Current State: Captured
この状態ならゲストマシンから iX500 を認識できているはずなので、iX500 のインストールディスクを VBoxManage storageattach
で繋げてインストール作業をすれば使えるようになる。
スキャンしたデータは共有したいので、VirtualBox の共有フォルダ機能を使った。
% VBoxManage sharedfolder add Win8 --name scansnap --hostpath ~/scansnap
ゲストマシンでは \\VBOXSVR\scansnap にスキャンデータを置くようにする。 俺の場合はさらに ~/scansnap をホスト側で NFS で export するようにしている。
こんなかんじで iX500 を使ってますが、それなりに快適です。
参考
- Chapter 7. Remote virtual machines http://www.virtualbox.org/manual/ch07.html
- Chapter 8. VBoxManage http://www.virtualbox.org/manual/ch08.html