Re: sane : Couldn't access LM983x registers.

Top Page

Reply to this message
Author: Nicolas Rougnon-Glasson
Date:  
To: guilde
Subject: Re: sane : Couldn't access LM983x registers.
Bonsoir,

https://anonscm.debian.org/git/sane/sane-backends.git/tree/tools/check-usb-chip.c

La section concernant le LM983x est aux lignes 1004 à 1213.

Le test d'accès aux registres du LM983x se situe entre les lignes 1177
et 1185. Il consiste en 2 écritures de configuration, dans les registres
0x07 et 0x08, puis 2 lectures de ces registres (sans vérification de la
valeur lue), puis enfin 1 lecture du registre 0x69. Une erreur est
détectée au cours de ces 5 accès, avant même que la valeur du registre
0x69 ne soit testée.

L'erreur doit être produite par un appel de la fonction
libusb_bulk_transfer (cf lignes 1006 à 1046, les fonctions
d'écriture/lecture des registres) : valeur de retour négative, ou nombre
d'octets transférés ne correspondant pas à ce qui était demandé.

==> Quelqu'un a-t-il connaissance de problèmes avec cette fonction
libusb_bulk_transfer ?

À plus,

--
Nicolas Rougnon-Glasson

Le 31/10/2017 à 11:43, anne.guilde@??? a écrit :
> Le 08/10/2017 à 16:57, anne.guilde@??? a écrit :
>> Le 11/08/2017 à 19:07, anne.guilde@??? a écrit :
>>> Le 08/08/2017 à 17:18, anne.guilde@??? a écrit :
>>>> bonjour,
>>>>
>>>> J'ai mis sane sur mon serveur pour pouvoir scanner.
>>>>
>>>> J'ai 2 serveurs, un en 32 bits et l'autre en 64.
>>>>
>>>> Depuis une maj, impossible d'accès au scanner sur celui en 64 bits.
>>>> J'avais donc brancher le scanner usb sur celui en 32 bits
>>>>
>>>> Les commandes :
>>>> ---
>>>> # sane-find-scanner
>>>>
>>>>    # sane-find-scanner will now attempt to detect your scanner. If the
>>>>    # result is different from what you expected, first make sure your
>>>>    # scanner is powered up and properly connected to your computer.

>>>>
>>>>    # No SCSI scanners found. If you expected something different, 
>>>> make sure that
>>>>    # you have loaded a kernel SCSI driver for your SCSI adapter.

>>>>
>>>> found USB scanner (vendor=0x04b8 [EPSON], product=0x010f [EPSON 
>>>> Scanner 010F], chip=LM9832/3) at libusb:003:017
>>>> found USB scanner (vendor=0x0bda [Generic], product=0x0129 
>>>> [USB2.0-CRW]) at libusb:001:004
>>>>    # Your USB scanner was (probably) detected. It may or may not be 
>>>> supported by
>>>>    # SANE. Try scanimage -L and read the backend's manpage.

>>>>
>>>>    # Not checking for parallel port scanners.

>>>>
>>>>    # Most Scanners connected to the parallel port or other 
>>>> proprietary ports
>>>>    # can't be detected by this program.
>>>> ----

>>>>
>>>> Il a bien trouvé mon scanner
>>>> found USB scanner (vendor=0x04b8 [EPSON], product=0x010f [EPSON
>>>> Scanner
>>>>
>>>> ---
>>>> # scanimage -L
>>>>
>>>> No scanners were identified. If you were expecting something
>>>> different,
>>>> check that the scanner is plugged in, turned on and detected by the
>>>> sane-find-scanner tool (if appropriate). Please read the documentation
>>>> which came with this software (README, FAQ, manpages).
>>>> ---
>>>>
>>>> Il ne le trouve plus.
>>>>
>>>> Sur le serveur 32 bits
>>>> ---
>>>> ]# scanimage -L
>>>> device `plustek:libusb:002:004' is a Epson Perfection 1250/Photo
>>>> flatbed scanner
>>>> ---
>>>>
>>>> Je suis en train d'essayer de comprendre le problème.
>>>>
>>>> sur le serveur en 32 bits
>>>> ---
>>>> # sane-find-scanner -v -v
>>>> ...
>>>> <device descriptor of 0x04b8/0x010f at 002:003 (EPSON EPSON Scanner 
>>>> 010F)>
>>>> bLength               18
>>>> bDescriptorType       1
>>>> bcdUSB                1.10
>>>> bDeviceClass          255
>>>> bDeviceSubClass       0
>>>> bDeviceProtocol       255
>>>> bMaxPacketSize0       8
>>>> idVendor              0x04B8
>>>> idProduct             0x010F
>>>> bcdDevice             1.00
>>>> iManufacturer         1 (EPSON)
>>>> iProduct              2 (EPSON Scanner 010F)
>>>> iSerialNumber         0 ()
>>>> bNumConfigurations    1
>>>>   <configuration 0>
>>>>   bLength              9
>>>>   bDescriptorType      2
>>>>   wTotalLength         39
>>>>   bNumInterfaces       1
>>>>   bConfigurationValue  1
>>>>   iConfiguration       0 ()
>>>>   bmAttributes         192 (Self-powered)
>>>>   MaxPower             2 mA
>>>>    <interface 0>
>>>>     <altsetting 0>
>>>>     bLength            9
>>>>     bDescriptorType    4
>>>>     bInterfaceNumber   0
>>>>     bAlternateSetting  0
>>>>     bNumEndpoints      3
>>>>     bInterfaceClass    255
>>>>     bInterfaceSubClass 0
>>>>     bInterfaceProtocol 255
>>>>     iInterface         0 ()
>>>>      <endpoint 0>
>>>>      bLength           7
>>>>      bDescriptorType   5
>>>>      bEndpointAddress  0x81 (in 0x01)
>>>>      bmAttributes      3 (interrupt)
>>>>      wMaxPacketSize    1
>>>>      bInterval         16 ms
>>>>      bRefresh          0
>>>>      bSynchAddress     0
>>>>      <endpoint 1>
>>>>      bLength           7
>>>>      bDescriptorType   5
>>>>      bEndpointAddress  0x82 (in 0x02)
>>>>      bmAttributes      2 (bulk)
>>>>      wMaxPacketSize    64
>>>>      bInterval         0 ms
>>>>      bRefresh          0
>>>>      bSynchAddress     0
>>>>      <endpoint 2>
>>>>      bLength           7
>>>>      bDescriptorType   5
>>>>      bEndpointAddress  0x03 (out 0x03)
>>>>      bmAttributes      2 (bulk)
>>>>      wMaxPacketSize    64
>>>>      bInterval         0 ms
>>>>      bRefresh          0
>>>>      bSynchAddress     0

>>>>
>>>> <trying to find out which USB chip is used>
>>>>      checking for GT-6801 ...
>>>>      this is not a GT-6801 (bDeviceSubClass = 0x0)
>>>>      checking for GT-6816 ...
>>>>      this is not a GT-6816 (bDeviceClass = 255, bInterfaceClass = 255)
>>>>      checking for GT-8911 ...
>>>>      this is not a GT-8911 (check 1, bDeviceClass = 255, 
>>>> bInterfaceClass = 255)
>>>>      checking for MA-1017 ...
>>>>      this is not a MA-1017 (bDeviceClass = 255, bInterfaceClass = 255)
>>>>      checking for MA-1015 ...
>>>>      this is not a MA-1015 (bcdUSB = 0x110)
>>>>      checking for MA-1509 ...
>>>>      this is not a MA-1509 (bDeviceSubClass = 0x0)
>>>>      checking for LM983[1,2,3] ...
>>>> <This USB chip looks like a LM9832/3 (result from sane-backends 
>>>> 1.0.21)>

>>>>
>>>> found USB scanner (vendor=0x04b8 [EPSON], product=0x010f [EPSON
>>>> Scanner 010F], chip=LM9832/3) at libusb:002:003
>>>> ...
>>>> ---
>>>>
>>>> il a trouvé le chip LM9832/3.
>>>>
>>>> sur le serveur 64 bits
>>>> ----
>>>> # sane-find-scanner -v -v
>>>> ...
>>>> <device descriptor of 0x04b8/0x010f at 003:015 (EPSON EPSON Scanner 
>>>> 010F)>
>>>> bLength               18
>>>> bDescriptorType       1
>>>> bcdUSB                1.10
>>>> bDeviceClass          255
>>>> bDeviceSubClass       0
>>>> bDeviceProtocol       255
>>>> bMaxPacketSize0       8
>>>> idVendor              0x04B8
>>>> idProduct             0x010F
>>>> bcdDevice             1.00
>>>> iManufacturer         1 (EPSON)
>>>> iProduct              2 (EPSON Scanner 010F)
>>>> iSerialNumber         0 ()
>>>> bNumConfigurations    1
>>>>   <configuration 0>
>>>>   bLength              9
>>>>   bDescriptorType      2
>>>>   wTotalLength         39
>>>>   bNumInterfaces       1
>>>>   bConfigurationValue  1
>>>>   iConfiguration       0 ()
>>>>   bmAttributes         192 (Self-powered)
>>>>   MaxPower             2 mA
>>>>    <interface 0>
>>>>     <altsetting 0>
>>>>     bLength            9
>>>>     bDescriptorType    4
>>>>     bInterfaceNumber   0
>>>>     bAlternateSetting  0
>>>>     bNumEndpoints      3
>>>>     bInterfaceClass    255
>>>>     bInterfaceSubClass 0
>>>>     bInterfaceProtocol 255
>>>>     iInterface         0 ()
>>>>      <endpoint 0>
>>>>      bLength           7
>>>>      bDescriptorType   5
>>>>      bEndpointAddress  0x81 (in 0x01)
>>>>      bmAttributes      3 (interrupt)
>>>>      wMaxPacketSize    1
>>>>      bInterval         16 ms
>>>>      bRefresh          0
>>>>      bSynchAddress     0
>>>>      <endpoint 1>
>>>>      bLength           7
>>>>      bDescriptorType   5
>>>>      bEndpointAddress  0x82 (in 0x02)
>>>>      bmAttributes      2 (bulk)
>>>>      wMaxPacketSize    64
>>>>      bInterval         0 ms
>>>>      bRefresh          0
>>>>      bSynchAddress     0
>>>>      <endpoint 2>
>>>>      bLength           7
>>>>      bDescriptorType   5
>>>>      bEndpointAddress  0x03 (out 0x03)
>>>>      bmAttributes      2 (bulk)
>>>>      wMaxPacketSize    64
>>>>      bInterval         0 ms
>>>>      bRefresh          0
>>>>      bSynchAddress     0

>>>>
>>>> <trying to find out which USB chip is used>
>>>>      checking for GT-6801 ...
>>>>      this is not a GT-6801 (bDeviceSubClass = 0x0)
>>>>      checking for GT-6816 ...
>>>>      this is not a GT-6816 (bDeviceClass = 255, bInterfaceClass = 255)
>>>>      checking for GT-8911 ...
>>>>      this is not a GT-8911 (check 1, bDeviceClass = 255, 
>>>> bInterfaceClass = 255)
>>>>      checking for MA-1017 ...
>>>>      this is not a MA-1017 (bDeviceClass = 255, bInterfaceClass = 255)
>>>>      checking for MA-1015 ...
>>>>      this is not a MA-1015 (bcdUSB = 0x110)
>>>>      checking for MA-1509 ...
>>>>      this is not a MA-1509 (bDeviceSubClass = 0x0)
>>>>      checking for LM983[1,2,3] ...
>>>>    Couldn't access LM983x registers.
>>>>      checking for GL646 ...
>>>>      this is not a GL646 (bDeviceClass = 255, bInterfaceClass = 255)
>>>>      checking for GL646_HP ...
>>>>      this is not a GL646_HP (bDeviceSubClass = 0x0)
>>>>      checking for GL660+GL646 ...
>>>>      this is not a GL660+GL646 (bDeviceClass = 255, bInterfaceClass 
>>>> = 255)
>>>>      checking for GL84x ...
>>>>      this is not a GL84x (bcdUSB = 0x110)
>>>>      checking for ICM532B ...
>>>>      this is not a ICM532B (check 3, bDeviceSubClass = 0x0)
>>>>      checking for PV8630/LM9830 ...
>>>>      this is not a PV8630/LM9830 (bDeviceClass = 255)
>>>>      checking for M011 ...
>>>>      this is not a M011 (bcdUSB = 0x110)
>>>>      checking for RTS8822 ...
>>>>      this is not a RTS8822 (bDeviceClass = 255)
>>>>      checking for rts8858c ...
>>>>      this is not a rts8858c (bDeviceClass = 255)
>>>>      checking for SQ113 ...
>>>>      this is not a SQ113 (bDeviceClass = 255)
>>>>      checking for HP4500C/4570C/5500C/5550C/5590/7650 chipset ...
>>>>      this is not a HP4500C/4570C/5500C/5550C/5590/7650 chipset 
>>>> (bcdUSB = 0x110)
>>>>      checking for rts8801/rts8891 ...
>>>>      this is not a rts8801/rts8891 (bDeviceClass = 255)
>>>> <Couldn't determine the type of the USB chip (result from 
>>>> sane-backends 1.0.21)>

>>>>
>>>> found USB scanner (vendor=0x04b8 [EPSON], product=0x010f [EPSON
>>>> Scanner 010F]) at libusb:003:015
>>>> ...
>>>> ---
>>>>
>>>> Il ne trouve pas le chip
>>>>      checking for LM983[1,2,3] ...
>>>>    Couldn't access LM983x registers.

>>>>
>>>> c'est quoi un register et pourquoi il n'y aurait pas accès
>>>>
>>>> Si quelqu'un a une idée pour continuer les recherches...
>>>>
>>
>> Je reviens sur mon problème avec sane
>> Couldn't access LM983x registers.
>>
>> Pourquoi avec mon serveur en 64 bits il n'a pas accès au registers
>> et un registers c'est quoi et comment cela fonctionne
>>
>
> Nicolas Rougnon-Glasson m'a posté :
> ----
> La datasheet du LM983x : www.ti.com/lit/ds/symlink/lm9833.pdf
>
> La liste des registres se trouve aux pages 11 à 21.
>
> Un registre, c'est un peu comme une cellule mémoire, mais dont le
> contenu est lié au circuit électronique environnant,
>
> - soit pour le régler et le commander (registre de contrôle,
> accessible en lecture/écriture),
>
> - soit pour rendre compte de son état (registre de statut, accessible
> en lecture seule).
>
> Dans le cas du LM983x, le registre à l'adresse 0x69 contient un numéro
> de version, c'est probablement en lisant ce registre que la version 32
> bits de sane-find-scanner arrive à déterminer qu'il s'agit d'un LM9832
> ou LM9833. Mais pourquoi la version 64 bits n'y arrive pas ?????
> ----
>
> Si quelqu'un avait une idée ...
>
> quelle commande faire?
>
> Merci
> Anne
>
>
>