J'ai un scanner usb Canon CanoScan 4400F et je n'ai pas trouvé le moyen de le faire fonctionner depuis GNU/Linux. Donc je scanne a traver une VM Windows 10 via l'hyperviseur KVM.
Depuis mon système, le scanner est monté avec les droits root. Donc pour pouvoir l'utiliser avec la machine virtuelle KVM, nous devons changer les droits de root à simple utilisateur (puisque le KVM sera lancé avec les droits utilisateur).
[user@host ~]$ lsusb | grep "Canon" Bus 002 Device 002: ID 04a9:2228 Canon, Inc. CanoScan 4400F
[user@host ~]$ ls -l /dev/bus/usb/002/002
crw-rw-r-- 1 root root 189, 129 31 oct. 09:20 /dev/bus/usb/002/002
La solution temporaire consiste à changer manuellement les droits avec la commande chown. Le problème est que nous devrons entrer la commande après chaque redémarrage.
root@host:~# chown user:user /dev/bus/usb/002/002
Pour que la modification soit définitive nous allons créer une règle udev.
root@host:~# udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/bus/usb/002/002) Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device. looking at device '/devices/pci0000:00/0000:00:14.0/usb2/2-10': KERNEL=="2-10" SUBSYSTEM=="usb" [...] ATTR{idProduct}=="2228" ATTR{idVendor}=="04a9" [...]
Une fois les attributs récupérés nous allons pouvoir créer notre règle udev.
SUBSYSTEM=="usb", ATTR{idVendor}=="04a9", ATTR{idProduct}=="2228", OWNER="user", GROUP="user"
root@host:~# udevadm control --reload
root@host:~# udevadm test $(udevadm info --query=path --name=/dev/bus/usb/002/002) | less [...] Reading rules file: /etc/udev/rules.d/80-scanner.rules [...]
[user@host ~]$ ls -l /dev/bus/usb/002/002
crw-rw-r-- 1 user user 189, 129 31 oct. 09:20 /dev/bus/usb/002/002
root@host:~# pacman -S qemu; modprobe virtio
root@host:~# qemu-img create -f raw WIN_HDD01 20G
root@host:~# qemu-img resize -f raw WIN_HDD01 +30G
Ces pilotes permettent de voir le disque et d'obtenir de meilleurs performances.
Lien ici : Drivers
root@host:~# wget 'https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso'
[user@host ~]$ qemu-system-x86_64 -smp 2 -net nic,model=e1000,macaddr=52:54:00:12:34:56 -net user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9,hostfwd=tcp::5555-:3389 -cpu host -vga cirrus -m 4096 -cdrom /data/en_windows_10_enterprise_ltsc_2019_x64_dvd_74865958.iso -enable-kvm -boot order=d -drive file=/data/WIN_10_LTSB_HDD01,index=0,media=disk,if=virtio,format=raw -drive file=/tmp/virtio-win.iso,media=cdrom,index=3
[user@host ~]$ lsusb | grep "Canon" Bus 001 Device 003: ID 04a9:2228 Canon, Inc. CanoScan 4400F
[user@host ~]$ qemu-system-x86_64 -smp 2 -net nic,model=e1000,macaddr=52:55:01:11:34:53 -net user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9 -cpu host -vga cirrus -m 4096 -enable-kvm -boot order=d -drive file=/vdisks/WIN_HDD01,index=0,media=disk,if=virtio,format=raw -device nec-usb-xhci -device usb-host,hostbus=1,hostaddr=3
Il sera plus facile d'utiliser notre machine virtuelle depuis un client RDP.
[user@host ~]$ qemu-system-x86_64 -smp 2 -net nic,model=e1000,macaddr=52:55:01:11:34:53 -net user,id=mynet0,net=192.168.76.0/24,dhcpstart=192.168.76.9,hostfwd=tcp::5555-:3389 -cpu host -vga cirrus -m 4096 -enable-kvm -boot order=d -drive file=/vdisks/WIN_HDD01,index=0,media=disk,if=virtio,format=raw -device nec-usb-xhci -device usb-host,hostbus=1,hostaddr=3
Ici deux exemples avec rdesktop et xfreerdp.
Les commandes activent la redirection de dossier, c'est-à-dire que le dossier /tmp/share sera visible depuis Windows :
[user@host ~]$ mkdir /tmp/share;rdesktop 127.1:5555 -r disk:docs=/tmp/share -0 -r sound:remote
[user@host ~]$ mkdir /tmp/share;xfreerdp /v:127.0.0.1:5555 /w:1900 /h:1024 /cert-ignore /drive:share,/tmp/share
Contact :