3M AT9000 Document Reader

I am trying to get a 3M AT9000 Document Reader (http://multimedia.3m.com/mws/media/611505O/sell-sheet-at9000.pdf) working via a RaspberryPi B+.

The device is detected properly and i can install the drivers. If i run the 3M troubleshooting tool which is included it detects the device OK. But when i do a Camera test i get an error.

Unfortunately i cannot find any relevant logging on client nor server side. So i do not have much to go on. Any suggestions what to check?

#2

what operating system are you using client side? e.g windows,linux or osx?

You might have to try windows 10 if possible. The reason is there is a new driver for that which is more compatible with these sorts of devices and also on your raspberry pi, make sure you have the latest firmware like this

sudo apt-get update;sudo apt-get upgrade -y;sudo rpi-update;sync;sudo reboot

#5

Ok, i tried the following:
- update the RaspberryPi B+ to latest firmware
- switch to RaspberryPi 3
- Try Windows 10

But the result is all the same as the initial situation. Isn't there anyway to turn on debug logging or something to further analyse?

#6

Im wondering if its a full speed device with in-bound isochonrous like a microphone. If so there is a bug in raspbian that prevent this from working. To see if this is the case can you ssh to your pi and make sure virutalhere server is not running then type

lsusb -v

and paste the output of that here

#7

<p>Both the Omnikey and the Still Image Device are inside the 3M device. The Still Image Device is the one with the problems.<br />
Bus 001 Device 005: ID 076b:5341 OmniKey AG<br />
Device Descriptor:<br />
bLength 18<br />
bDescriptorType 1<br />
bcdUSB 2.00<br />
bDeviceClass 0 (Defined at Interface level)<br />
bDeviceSubClass 0<br />
bDeviceProtocol 0<br />
bMaxPacketSize0 8<br />
idVendor 0x076b OmniKey AG<br />
idProduct 0x5341<br />
bcdDevice 5.31<br />
iManufacturer 1<br />
iProduct 2<br />
iSerial 5<br />
bNumConfigurations 1<br />
Configuration Descriptor:<br />
bLength 9<br />
bDescriptorType 2<br />
wTotalLength 93<br />
bNumInterfaces 1<br />
bConfigurationValue 1<br />
iConfiguration 3<br />
bmAttributes 0xe0<br />
Self Powered<br />
Remote Wakeup<br />
MaxPower 2mA<br />
Interface Descriptor:<br />
bLength 9<br />
bDescriptorType 4<br />
bInterfaceNumber 0<br />
bAlternateSetting 0<br />
bNumEndpoints 3<br />
bInterfaceClass 11 Chip/SmartCard<br />
bInterfaceSubClass 0<br />
bInterfaceProtocol 0<br />
iInterface 0<br />
ChipCard Interface Descriptor:<br />
bLength 54<br />
bDescriptorType 33<br />
bcdCCID 1.00<br />
nMaxSlotIndex 0<br />
bVoltageSupport 7 5.0V 3.0V 1.8V<br />
dwProtocols 3 T=0 T=1<br />
dwDefaultClock 4800<br />
dwMaxiumumClock 8000<br />
bNumClockSupported 4<br />
dwDataRate 10752 bps<br />
dwMaxDataRate 412903 bps<br />
bNumDataRatesSupp. 106<br />
dwMaxIFSD 254<br />
dwSyncProtocols 00000007 2-wire 3-wire I2C<br />
dwMechanical 00000000<br />
dwFeatures 000207B2<br />
Auto configuration based on ATR<br />
Auto clock change<br />
Auto baud rate change<br />
Auto PPS made by CCID<br />
CCID can set ICC in clock stop mode<br />
NAD value other than 0x00 accepted<br />
Auto IFSD exchange<br />
Short APDU level exchange<br />
dwMaxCCIDMsgLen 271<br />
bClassGetResponse echo<br />
bClassEnvelope echo<br />
wlcdLayout none<br />
bPINSupport 0<br />
bMaxCCIDBusySlots 1<br />
Endpoint Descriptor:<br />
bLength 7<br />
bDescriptorType 5<br />
bEndpointAddress 0x83 EP 3 IN<br />
bmAttributes 3<br />
Transfer Type Interrupt<br />
Synch Type None<br />
Usage Type Data<br />
wMaxPacketSize 0x0008 1x 8 bytes<br />
bInterval 24<br />
Endpoint Descriptor:<br />
bLength 7<br />
bDescriptorType 5<br />
bEndpointAddress 0x84 EP 4 IN<br />
bmAttributes 2<br />
Transfer Type Bulk<br />
Synch Type None<br />
Usage Type Data<br />
wMaxPacketSize 0x0040 1x 64 bytes<br />
bInterval 0<br />
Endpoint Descriptor:<br />
bLength 7<br />
bDescriptorType 5<br />
bEndpointAddress 0x05 EP 5 OUT<br />
bmAttributes 2<br />
Transfer Type Bulk<br />
Synch Type None<br />
Usage Type Data<br />
wMaxPacketSize 0x0040 1x 64 bytes<br />
bInterval 0
</p>
<p>Bus 001 Device 006: ID 0898:0047<br />
Device Descriptor:<br />
bLength 18<br />
bDescriptorType 1<br />
bcdUSB 2.00<br />
bDeviceClass 239 Miscellaneous Device<br />
bDeviceSubClass 2 ?<br />
bDeviceProtocol 1 Interface Association<br />
bMaxPacketSize0 64<br />
idVendor 0x0898<br />
idProduct 0x0047<br />
bcdDevice 4.00<br />
iManufacturer 1<br />
iProduct 2<br />
iSerial 9<br />
bNumConfigurations 1<br />
Configuration Descriptor:<br />
bLength 9<br />
bDescriptorType 2<br />
wTotalLength 32<br />
bNumInterfaces 1<br />
bConfigurationValue 1<br />
iConfiguration 3<br />
bmAttributes 0xc0<br />
Self Powered<br />
MaxPower 0mA<br />
Interface Descriptor:<br />
bLength 9<br />
bDescriptorType 4<br />
bInterfaceNumber 0<br />
bAlternateSetting 0<br />
bNumEndpoints 2<br />
bInterfaceClass 6 Imaging<br />
bInterfaceSubClass 1 Still Image Capture<br />
bInterfaceProtocol 0<br />
iInterface 5<br />
Endpoint Descriptor:<br />
bLength 7<br />
bDescriptorType 5<br />
bEndpointAddress 0x01 EP 1 OUT<br />
bmAttributes 2<br />
Transfer Type Bulk<br />
Synch Type None<br />
Usage Type Data<br />
wMaxPacketSize 0x0200 1x 512 bytes<br />
bInterval 0<br />
Endpoint Descriptor:<br />
bLength 7<br />
bDescriptorType 5<br />
bEndpointAddress 0x81 EP 1 IN<br />
bmAttributes 2<br />
Transfer Type Bulk<br />
Synch Type None<br />
Usage Type Data<br />
wMaxPacketSize 0x0200 1x 512 bytes<br />
bInterval 0
</p>

#8

OK, the camera is bulk which should be ok.

Can you do this:
1. Unplug the scanner from the pi
2. in a ssh session to the pi, watch the syslog file like this tail -f /var/log/syslog
3. Plug the scanner back in, can you see the pi try to bind any drivers to it? E.g a camera driver or a ccid driver?

Im wondering if the pi is binding some image driver or something that is disrupting that device before its shared by virtualhere. If so we can just unload that blacklist that driver on the pi.

#9

Here is the output of syslog and lsmod. Doesn't look like a driver is loaded to me.

Mar 19 04:33:49 raspberrypi kernel: [ 8213.521336] usb 1-1.3: new high-speed USB device number 7 using dwc_otg
Mar 19 04:33:49 raspberrypi kernel: [ 8213.621982] usb 1-1.3: New USB device found, idVendor=0424, idProduct=2514
Mar 19 04:33:49 raspberrypi kernel: [ 8213.622024] usb 1-1.3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Mar 19 04:33:49 raspberrypi kernel: [ 8213.637507] hub 1-1.3:1.0: USB hub found
Mar 19 04:33:49 raspberrypi kernel: [ 8213.637827] hub 1-1.3:1.0: 4 ports detected
Mar 19 04:33:49 raspberrypi kernel: [ 8214.071353] usb 1-1.3.2: new full-speed USB device number 8 using dwc_otg
Mar 19 04:33:49 raspberrypi kernel: [ 8214.254611] usb 1-1.3.2: New USB device found, idVendor=076b, idProduct=5341
Mar 19 04:33:49 raspberrypi kernel: [ 8214.254651] usb 1-1.3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=5
Mar 19 04:33:49 raspberrypi kernel: [ 8214.254671] usb 1-1.3.2: Product: Smart Card Reader USB
Mar 19 04:33:49 raspberrypi kernel: [ 8214.254688] usb 1-1.3.2: Manufacturer: OMNIKEY
Mar 19 04:33:49 raspberrypi kernel: [ 8214.254705] usb 1-1.3.2: SerialNumber: OKCM0033004140354588567345445642
Mar 19 04:33:50 raspberrypi kernel: [ 8214.581374] usb 1-1.3.1: new high-speed USB device number 9 using dwc_otg
Mar 19 04:33:50 raspberrypi kernel: [ 8214.682807] usb 1-1.3.1: New USB device found, idVendor=0898, idProduct=0047
Mar 19 04:33:50 raspberrypi kernel: [ 8214.682847] usb 1-1.3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=9
Mar 19 04:33:50 raspberrypi kernel: [ 8214.682867] usb 1-1.3.1: Product: 3M Document Reader
Mar 19 04:33:50 raspberrypi kernel: [ 8214.682885] usb 1-1.3.1: Manufacturer: 3M
Mar 19 04:33:50 raspberrypi kernel: [ 8214.682901] usb 1-1.3.1: SerialNumber: 61A00002

Module Size Used by
cfg80211 479279 0
rfkill 21508 1 cfg80211
snd_bcm2835 22502 0
bcm2835_gpiomem 3703 0
bcm2835_rng 2207 0
snd_pcm 92861 1 snd_bcm2835
snd_timer 22156 1 snd_pcm
snd 67534 3 snd_bcm2835,snd_timer,snd_pcm
uio_pdrv_genirq 3526 0
uio 10078 1 uio_pdrv_genirq
ipv6 358811 26

#10

ok unfortunately im out of ideas, it looks like it should work ok. I have seen one other smart key not work and i think it was related to timing issues as just a tiny bit more latency in the communications i think was enough to stop the smartcard part working. Maybe there are strict timing contraints on this device and therefore wouldnt be compatible when the comms are sent over IP. I know yours is the camera part but pehaps its the same thing. The last thing to try is use some other device as the server and see if that works e.g a ubuntu desktop machine or something. If that worked then it might be some bug in the raspbian kernel. If the desktop still doesnt work then it must be a latency thing. I did download the sdk for that product and took a look at the "CameraTest.exe" file but i dont know how it works so it didnt give any clues as to the issue.

#11

Thanks for trying. I tried myself with Ubuntu 14.04 LTS but it yielded the same results. So i guess this is a no-go. Too bad as i thought this to be a great solution for the test depart.