TLDR; This blog post is confirming that the Xerox DocuMate 3220 does work on Ubuntu and shows how to add permissions for non root users to use it.
——————————————-
I was using my wife’s old printer/scanner all in one for scanning documents and it worked well but it was a pain to scan multiple documents so I decided to get a business scanner with auto feed and duplex scanning.
I went for the Xerox DocuMate 3220 as it stated it was SANE compatible so would work on Linux.
With an RRP of ~€310 I managed to get a refurbished model for €98 delivered from ebay but sadly I didn’t do enough research as the scanner is not SANE supported.
In my research in trying to add the scanner to the xerox_mfp SANE backend config (which didn’t work) I discovered that VueScan was available for Linux and it’s supported scanners did list some of the Xerox DocuMate series. I had used VueScan on my old MacBook Pro and was very happy with so I gave it a shot. Note that VueScan is not Open Source and not free but it is excellent software and well worth the €25 purchase price.
Lo and behold it found the scanner and it supported all of the scanner’s features.
- Flatbed scanning
- Auto feed
- Duplex auto feed
However VueScan would only detect the scanner when run as root due to libusb permissions.
To add permissions for non root users to use the scanner I made the following changes. This guide should also be helpful when changing permissions for any USB device. The following changes were made on an Ubuntu 17.10 machine.
# Add myself to the scanner group. You can do this through the “Users and Groups” GUI too.
philroche@bomek:$ sudo usermod -a -G scanner philroche
# Find the scanner vendor id and product id
Running dmesg we can see the scanner listed with idVendor=04a7 and idProduct=04bf
philroche@bomek$ dmesg usb 1-2.4.3: new high-speed USB device number 26 using xhci_hcd usb 1-2.4.3: New USB device found, idVendor=04a7, idProduct=04bf usb 1-2.4.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-2.4.3: Product: DM3220 usb 1-2.4.3: Manufacturer: Xerox usb 1-2.4.3: SerialNumber: 3ASDHC0333
Note: The device number will most likley be different on your system.
Running lsusb
we can see that the scanner is also listed as “Visioneer”
philroche@bomek:$ lsusb Bus 001 Device 026: ID 04a7:04bf Visioneer
Note: As with the the device number, the Bus used is likley to be different on your system.
We can see above that the device is on bus 001 as device 026. Using this info we can get full udev (Dynamic device management) info.
philroche@bomek:$ udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/001/026) looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.4/1-2.4.3': KERNEL=="1-2.4.3" SUBSYSTEM=="usb" DRIVER=="usb" ATTR{authorized}=="1" ATTR{avoid_reset_quirk}=="0" ATTR{bConfigurationValue}=="1" ATTR{bDeviceClass}=="00" ATTR{bDeviceProtocol}=="00" ATTR{bDeviceSubClass}=="00" ATTR{bMaxPacketSize0}=="64" ATTR{bMaxPower}=="0mA" ATTR{bNumConfigurations}=="1" ATTR{bNumInterfaces}==" 1" ATTR{bcdDevice}=="0001" ATTR{bmAttributes}=="c0" ATTR{busnum}=="1" ATTR{configuration}=="" ATTR{devnum}=="26" ATTR{devpath}=="2.4.3" ATTR{idProduct}=="04bf" ATTR{idVendor}=="04a7" ATTR{ltm_capable}=="no" ATTR{manufacturer}=="Xerox" ATTR{maxchild}=="0" ATTR{product}=="DM3220" ATTR{quirks}=="0x0" ATTR{removable}=="unknown" ATTR{serial}=="3ASDHC0333" ATTR{speed}=="480" ATTR{urbnum}=="1251" ATTR{version}==" 2.00"
This is the info we need to create our udev rule
# Add Udev rules allowing non root users access to the scanner
Create a new udev rule
philroche@bomek:$ sudo nano /etc/udev/rules.d/71-xeroxdocument3220.rules
Paste the following text to that new file
SUBSYSTEM=="usb", ATTR{manufacturer}=="Xerox", ATTR{product}=="DM3220", ATTR{idVendor}=="04a7", ATTR{idProduct}=="04bf", MODE="0666", GROUP="scanner"
This adds a rule to allow any user in the “scanner” group (which we added ourselves to earlier) permission to use the usb device with vendor 04a7 and product 04bf.
Note you will have to log out and log in for any group changes to take effect or run su - $USER
# Reload the udev rules
philroche@bomek:$ sudo udevadm control --reload-rules
# Test these new udev rules
philroche@bomek:$ udevadm test $(udevadm info -q path -n /dev/bus/usb/001/026)
You shouldn’t see any permissions related errors.
Now when you run VueScan as a non-root user you should see no permissions errors.
# Start VueScan
philroche@bomek:$ ./vuescan