Felsöka USB-enhet som använder libusb [LÖST]
Postat: 07 apr 2010, 14:48
Jag har byggt en programmerare av en AVR-mikrokontroller som kopplas till datorn och emulerar en USB-enhet.
Den insatte kan läsa mer här: http://www.fischl.de/usbasp/ och http://www.obdev.at/products/vusb/index.html
Problemet är att den bara fungerar ibland. Det verkar vara i princip helt slumpmässigt, men jag har fått för mig att det går bättre om man kopplar in den och sen låter den vara i några minuter, utan att försöka ansluta till den med programmet avrdude (som kommunicerar med den via libusb)
När den kopplas in visas följande i dmesg:
Enheten enumereras alltså korrekt. Om allt fungerar visas ingenting mer och avrdude kan ansluta till programmeraren. Om avrdude misslyckas ger programmet följande utskrift:
och i dmesg visas:
Då är det "kört" och jag måste dra ur och koppla in enheten igen. lsusb när allt är som det ska:
lsusb när den inte fungerar:
När jag körde lsusb gav det denna utskrift i dmesg:
Hela tiden error -71, vad betyder det? Eftersom den faktiskt fungerar utan problem ibland tror jag inte att det är ett hårdvarufel, men jag kan ju ha fel.
Lite mer info:
Ibland visas error -71 direkt vid inkoppling:
dmesg när enheten inte kan enumereras (för att jag kopplat bort mikrokontrollern):
Att det är en low speed-enhet identifieras av pullup-motståndet på D- till 3.3V (se schemat på första länken).
libusb version (vet inte vilken av de två som används):
Hoppas att infon räcker för att någon ska se vad felet är!
Den insatte kan läsa mer här: http://www.fischl.de/usbasp/ och http://www.obdev.at/products/vusb/index.html
Problemet är att den bara fungerar ibland. Det verkar vara i princip helt slumpmässigt, men jag har fått för mig att det går bättre om man kopplar in den och sen låter den vara i några minuter, utan att försöka ansluta till den med programmet avrdude (som kommunicerar med den via libusb)
När den kopplas in visas följande i dmesg:
Kod: Markera allt
[39708.928076] usb 3-1: new low speed USB device using uhci_hcd and address 52
[39709.303884] usb 3-1: configuration #1 chosen from 1 choice
Kod: Markera allt
$ avrdude -c usbasp -p m168
avrdude: Warning: cannot query manufacturer for device: error sending control message: Protocol error
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc
Kod: Markera allt
[39476.392142] usb 3-1: usbfs: USBDEVFS_CONTROL failed cmd avrdude rqt 128 rq 6 len 255 ret -71
Kod: Markera allt
$ lsusb -vs 003:052
Bus 003 Device 052: ID 16c0:05dc VOTI USBasp AVR Programmer
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x16c0 VOTI
idProduct 0x05dc USBasp AVR Programmer
bcdDevice 1.03
iManufacturer 1 www.fischl.de
iProduct 2 USBasp
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 18
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 50mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Device Status: 0x0000
(Bus Powered)
Kod: Markera allt
$ lsusb -vs 003:055
Bus 003 Device 055: ID 16c0:05dc VOTI USBasp AVR Programmer
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x16c0 VOTI
idProduct 0x05dc USBasp AVR Programmer
bcdDevice 1.03
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 18
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 50mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
cannot read device status, Protocol error (71)
Kod: Markera allt
[40803.665148] usb 3-1: usbfs: USBDEVFS_CONTROL failed cmd lsusb rqt 128 rq 6 len 255 ret -71
[40803.669124] usb 3-1: usbfs: USBDEVFS_CONTROL failed cmd lsusb rqt 128 rq 6 len 255 ret -71
[40803.673099] usb 3-1: usbfs: USBDEVFS_CONTROL failed cmd lsusb rqt 128 rq 0 len 2 ret -71
Lite mer info:
Ibland visas error -71 direkt vid inkoppling:
Kod: Markera allt
[41691.941458] usb 3-1: new low speed USB device using uhci_hcd and address 62
[41692.087877] usb 3-1: device descriptor read/all, error -71
Kod: Markera allt
[40998.032086] usb 3-1: new low speed USB device using uhci_hcd and address 58
[40998.152137] usb 3-1: device descriptor read/64, error -71
[40998.380099] usb 3-1: device descriptor read/64, error -71
[40998.596123] usb 3-1: new low speed USB device using uhci_hcd and address 59
[40998.716117] usb 3-1: device descriptor read/64, error -71
[40998.940068] usb 3-1: device descriptor read/64, error -71
[40999.156075] usb 3-1: new low speed USB device using uhci_hcd and address 60
[40999.568055] usb 3-1: device not accepting address 60, error -71
[40999.680125] usb 3-1: new low speed USB device using uhci_hcd and address 61
[41000.088057] usb 3-1: device not accepting address 61, error -71
[41000.088093] hub 3-0:1.0: unable to enumerate USB device on port 1
libusb version (vet inte vilken av de två som används):
Kod: Markera allt
$ aptitude show libusb-0.1-4
Paket: libusb-0.1-4
Tillstånd: installerat
Automatiskt installerade: nej
Version: 2:0.1.12-14
Prioritet: nödvändigt
Sektion: libs
Underhållare: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uppackad storlek: 98,3k
Beroende: libc6 (>= 2.4)
Konfliktar: libccid (< 0.9.2-3), libusb0
Ersätter: libusb0
Beskrivning: userspace USB programming library
Library for programming USB applications without the knowledge of Linux kernel internals.
Webbplats: http://www.linux-usb.org/
$ aptitude show libusb-1.0-0
Paket: libusb-1.0-0
Tillstånd: installerat
Automatiskt installerade: ja
Version: 2:1.0.6-1
Prioritet: valfri
Sektion: libs
Underhållare: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uppackad storlek: 115k
Beroende: libc6 (>= 2.8)
Beskrivning: userspace USB programming library
Library for programming USB applications without the knowledge of Linux kernel internals.
Webbplats: http://www.linux-usb.org/