Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 17 jul 2019, 12:43

Kategoriregler


I detta forum diskuterar vi frågor relaterade till fysisk hårdvara.
Ubunturelaterade frågor ska ställas i Hårdvara



Svara på tråd  [ 2 inlägg ] 
 Felsöka USB-enhet som använder libusb [LÖST] 
Författare Meddelande

Blev medlem: 28 apr 2009, 21:47
Inlägg: 2550
Ort: Lund
OS: Arch Linux
Svara med citat
 Felsöka USB-enhet som använder libusb [LÖST]  Tråden är löst
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:
Kod:
[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

Enheten enumereras alltså korrekt. Om allt fungerar visas ingenting mer och avrdude kan ansluta till programmeraren. Om avrdude misslyckas ger programmet följande utskrift:
Kod:
$ 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

och i dmesg visas:
Kod:
[39476.392142] usb 3-1: usbfs: USBDEVFS_CONTROL failed cmd avrdude rqt 128 rq 6 len 255 ret -71

Då är det "kört" och jag måste dra ur och koppla in enheten igen. lsusb när allt är som det ska:
Kod:
$ 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)

lsusb när den inte fungerar:
Kod:
$ 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)

När jag körde lsusb gav det denna utskrift i dmesg:
Kod:
[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

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:
Kod:
[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

dmesg när enheten inte kan enumereras (för att jag kopplat bort mikrokontrollern):
Kod:
[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

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):
Kod:
$ 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/

Hoppas att infon räcker för att någon ska se vad felet är!


Senast redigerad av m!rage 07 apr 2010, 16:38, redigerad totalt 1 gång.



07 apr 2010, 14:48
Profil

Blev medlem: 28 apr 2009, 21:47
Inlägg: 2550
Ort: Lund
OS: Arch Linux
Svara med citat
Inlägg Re: Felsöka USB-enhet som använder libusb
Skitsamma, det var ett hårdvarufel trots allt. En annan programmerare som användes för att programmera programmeraren ( ;D) var inkopplad och störde, dvs resettade mikrokontrollern vid uppstart så den inte var beredd då datorn började skicka usb-signaler


07 apr 2010, 16:37
Profil
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 2 inlägg ] 

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 3 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011