périphérique USB non identifié (PUNI ?)
Le
LECOQ Vincent
Bonjour,
J'ai récupéré un PDA (Pocket gear 2060) d'occaz.
Un se connecte au PC via un cable USB.
Il n'est pas reconnu par windows (meme avec le driver constructeur )
qui voit bien un périphérique USB mais qui n'est pas capable de l'utiliser.
Idem avec Linux qui detecte bien lui aussi un périphérique USB mais il
n'arrive pas a l'identifier (seul dmesg me permet de le savoir, usbview
est muet)
Il a juste un numero de client du bus USB qui lui est attribué.
Je songe a m'écrire le driver pour linux.
Mais avant cela je voudrait savoir si il existe un soft qui permette
d'envoyer des commandes simples a un périphérique USB (genre reglage de
la cible, envoi de commande standard, envoi de données en brut etc ).
Vous croyez que ca existe ?
Merci :)
J'ai récupéré un PDA (Pocket gear 2060) d'occaz.
Un se connecte au PC via un cable USB.
Il n'est pas reconnu par windows (meme avec le driver constructeur )
qui voit bien un périphérique USB mais qui n'est pas capable de l'utiliser.
Idem avec Linux qui detecte bien lui aussi un périphérique USB mais il
n'arrive pas a l'identifier (seul dmesg me permet de le savoir, usbview
est muet)
Il a juste un numero de client du bus USB qui lui est attribué.
Je songe a m'écrire le driver pour linux.
Mais avant cela je voudrait savoir si il existe un soft qui permette
d'envoyer des commandes simples a un périphérique USB (genre reglage de
la cible, envoi de commande standard, envoi de données en brut etc ).
Vous croyez que ca existe ?
Merci :)

Poser une question


/proc/bus/usb/ est fait pour ça, et la libusb permet un accès plus générique
et portable.
/proc/bus/usb/devices :
T: Bus Lev Prnt Port Cnt Dev#= 1 SpdH0 MxCh= 6
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendor 00 ProdID 00 Rev= 2.06
S: Manufacturer=Linux 2.6.10-3mdksmp ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber 00:00:13.2
C:* #Ifs= 1 Cfg#= 1 AtrÀ MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
E: Ad(I) Atr(Int.) MxPS= 2 Ivl%6ms
T: Bus Lev Prnt Port Cnt Dev#= 1 Spd MxCh= 3
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendor 00 ProdID 00 Rev= 2.06
S: Manufacturer=Linux 2.6.10-3mdksmp ohci_hcd
S: Product=OHCI Host Controller
S: SerialNumber 00:00:13.1
C:* #Ifs= 1 Cfg#= 1 AtrÀ MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
E: Ad(I) Atr(Int.) MxPS= 2 Ivl%5ms
T: Bus Lev Prnt Port Cnt Dev#= 2 Spd MxCh= 0
D: Ver= 1.00 Cls (>ifc ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendorf0 ProdID04 Rev= 1.00
S: Manufacturer=Hewlett-Packard
S: ProductÞskJet 930C
S: SerialNumber=CN13T1S1VGJJ
C:* #Ifs= 1 Cfg#= 1 Atr@ MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 2 Cls(print) Sub Prot Driver=usblp
E: Ad(I) Atr(Bulk) MxPS= 64 Ivl=0ms
E: Ad(O) Atr(Bulk) MxPS= 64 Ivl=0ms
I: If#= 0 Alt= 1 #EPs= 2 Cls(print) Sub Prot Driver=usblp
E: Ad(O) Atr(Bulk) MxPS= 64 Ivl=0ms
E: Ad(I) Atr(Bulk) MxPS= 64 Ivl=0ms
T: Bus Lev Prnt Port Cnt Dev#= 1 Spd MxCh= 3
B: Alloc= 24/900 us ( 3%), #Int= 3, #Iso= 0
D: Ver= 1.10 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendor 00 ProdID 00 Rev= 2.06
S: Manufacturer=Linux 2.6.10-3mdksmp ohci_hcd
S: Product=OHCI Host Controller
S: SerialNumber 00:00:13.0
C:* #Ifs= 1 Cfg#= 1 AtrÀ MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
E: Ad(I) Atr(Int.) MxPS= 2 Ivl%5ms
T: Bus Lev Prnt Port Cnt Dev#= 2 Spd MxCh= 0
D: Ver= 1.10 Clsÿ(vend.) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendora9 ProdID"0d Rev= 1.00
S: ManufacturerÊnon
S: ProductÊnoScan
C:* #Ifs= 1 Cfg#= 1 Atr MxPwrP0mA
I: If#= 0 Alt= 0 #EPs= 3 Clsÿ(vend.) Sub Protÿ Driver=(none)
E: Ad(I) Atr(Int.) MxPS= 1 Ivlms
E: Ad(I) Atr(Bulk) MxPS= 64 Ivl=0ms
E: Ad(O) Atr(Bulk) MxPS= 64 Ivl=0ms
T: Bus Lev Prnt Port Cnt Dev#= 3 Spd MxCh= 4
D: Ver= 1.10 Cls (hub ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendor51 ProdID46 Rev= 1.10
C:* #Ifs= 1 Cfg#= 1 Atrà MxPwr0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls (hub ) Sub Prot Driver=hub
E: Ad(I) Atr(Int.) MxPS= 1 Ivl%5ms
T: Bus Lev Prnt Port Cnt Dev#= 4 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls (>ifc ) Sub Prot MxPS= 8 #Cfgs= 1
P: Vendor5e ProdID 2b Rev= 1.14
S: Product=Microsoft Internet Keyboard Pro
C:* #Ifs= 2 Cfg#= 1 Atr MxPwr0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls(HID ) Sub Prot Driver=usbhid
E: Ad(I) Atr(Int.) MxPS= 8 Ivlms
I: If#= 1 Alt= 0 #EPs= 1 Cls(HID ) Sub Prot Driver=usbhid
E: Ad(I) Atr(Int.) MxPS= 3 Ivlms
cad ... il y est pas ...
infos de dmesg lors du branchement :
usb 2-3: new low speed USB device using ohci_hcd and address 3
usb 2-3: device not accepting address 3, error -110
usb 2-3: new low speed USB device using ohci_hcd and address 4
usb 2-3: device not accepting address 4, error -110
usb 2-3: new low speed USB device using ohci_hcd and address 5
usb 2-3: device descriptor read/64, error -110
usb 2-3: device descriptor read/64, error -110
usb 2-3: new low speed USB device using ohci_hcd and address 6
usb 2-3: device descriptor read/64, error -110
usb 2-3: device descriptor read/64, error -110
je cherche la signification de error -110, je n'arrive pas a trouver une
table de correspondance.
le vais jeter un oeil a libusb :)
Merci !
Comme souvent avec le noyau, ce sont des opposés de valeurs d'errno, la
correspondance est donc dans errno.h et les fichiers inclus, en l'occurence
asm-generic/errno.h : 110 est ETIMEDOUT, ce qui signifie que le device ne
répond pas dans les temps. C'est probablement un problème matériel.
zarb :-/
d'après les premières lignes, il n'accepte pas l'adresse proposée, donc
qu'il reponds ...
Puis il accepte les suivantes, donc il a toujours l'air de repondre ...
Mais il a effectivement un soucis : le windows qui est dessus est crashé
et ne démarre plus ... donc la logique qui va derrière ne reponds
effectivement plus ...
Mon but est de justement faire un driver USB pour pouvoir le flasher et
dons le réinstaller ...
Arg ...
Non. Si l'erreur est ETIMEDOUT, ça veut dire justement qu'il ne réponds
pas dans la frame ou la requête a été envoyée (dans la milli-seconde,
donc). Il faut savoir qu'un device USB est libre de répondre ou pas aux
requêtes.
Dans ton cas, il ne répond jamais (la requete qui lui donne une addresse
est toujours la première requête: on ne peut rien faire d'un device
sans addresse). Il faut déjà que tu le mettes en état de répondre, sinon
tu ne pourras jamais rien faire avec.