Eye-Fi(デジカメ)から自宅サーバのOwncloudへ自動転送する


仮想WindowsマシンにEye-Fiアダプタを認識させる(USBリダイレクト)

Eye-FiサーバからPCに写真を転送させるようにするためには、Eye-Fiマネージャをインストールした上で、Eye-FiカードをそのPCのUSBに挿しておかなければなりません。
仮想マシンから、実物のEye-Fiカードを見えるようにしなければならないわけです。

「USBパススルー」「PCIパススルー」「USBリダイレクト」など、いくつか方法が考えられますが、前者2つはうまくいかず、3つめで行いました。(マザーがIOMMUに対応していませんでした)

Spicy(SPICEではなく)という仮想マシン接続ツールを使います。そいつにはSPICEには無い、ホストのUSBデバイスを選択するメニューが付いていて、仮想マシン接続と同時にUSBデバイスをあてがうことができます。これを使いました。

またこのspicy接続ソフトはネットワーク経由でも接続できますので、手元のマシンに挿したEye-Fiカードを、ネットワークの向こうにある仮想マシンに認識させることができます。
VPS環境の自前サーバでも実現できる、有効な方法だと思います。

手順はだいたい以下の通り。

  • パッケージの準備
  • KVMゲストのxmlファイルへの追記
  • 追加設定ファイルの作成
  • Eye-FiカードのUSBへの装着
  • scpicy起動
  • USBデバイスの仮想マシンへの接続

usbredir、spice-gtk、spice-gtk-tools の3パッケージが必要です。

パッケージの準備

# yum install usbredir spice-gtk spice-gtk-tools

KVMゲストのxmlファイルへの追記

仮想マシンの設定に以下を追加。

# virsh edit Wezen
※右辺値は仮想マシンの名前。任意。

<domain type='kvm'>
↓
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

※</domain>の直前に以下を追加
<qemu:commandline>
   <qemu:arg value='-readconfig'/>
   <qemu:arg value='/etc/qemu/ich9-ehci-uhci.cfg'/>
   <qemu:arg value='-chardev'/>
   <qemu:arg value='spicevmc,name=usbredir,id=usbredirchardev1'/>
   <qemu:arg value='-device'/>
   <qemu:arg value='usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=ehci.0,debug=3'/>
   <qemu:arg value='-chardev'/>
   <qemu:arg value='spicevmc,name=usbredir,id=usbredirchardev2'/>
   <qemu:arg value='-device'/>
   <qemu:arg value='usb-redir,chardev=usbredirchardev2,id=usbredirdev2,bus=ehci.0,debug=3'/>
   <qemu:arg value='-chardev'/>
   <qemu:arg value='spicevmc,name=usbredir,id=usbredirchardev3'/>
   <qemu:arg value='-device'/>
   <qemu:arg value='usb-redir,chardev=usbredirchardev3,id=usbredirdev3,bus=ehci.0,debug=3'/>
</qemu:commandline>

追加設定ファイルの作成

上記の設定の中で読み込む設定ファイル(ich9-ehci-uhci.cfg)を作成。

# vi /etc/qemu/ich9-ehci-uhci.cfg

[device "ehci"]
driver = "ich9-usb-ehci1"
addr = "1d.7"
multifunction = "on"

[device "uhci-1"]
driver = "ich9-usb-uhci1"
addr = "1d.0"
multifunction = "on"
masterbus = "ehci.0"
firstport = "0"

[device "uhci-2"]
driver = "ich9-usb-uhci2"
addr = "1d.1"
multifunction = "on"
masterbus = "ehci.0"
firstport = "2"

[device "uhci-3"]
driver = "ich9-usb-uhci3"
addr = "1d.2"
multifunction = "on"
masterbus = "ehci.0"
firstport = "4"

コメントを残す

メールアドレスが公開されることはありません。