Linux USB debug?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6889
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Linux USB debug?

Inlägg av Marta »

Har problem med en USB-driver i en USB-pic. På min lilla netbook och en del andr burkar enumrerar den alltid direkt. På min ordinarie stationära dator däremot blir det oftast error,men efter ett antal försök så fungerar det. Därefter kommunicerar den felfritt.

Dessvärre har Linux USB-debug en "duktighet" som klipper efter ett visst antal bytes, vilket gör att felet undgår registrering.

Skulle behöva registrera HELA enumerationen med tidkod och HELA packets till sista byte.

Hur?
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6889
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Linux USB debug?

Inlägg av Marta »

Finns det något program till Linux för USB-debug som helt enkelt loggar packets på en given enhet och INTE är duktig och hjälpsam på något sätt.

Vill inte se
25=härlistas25bytedata

Det skall vara
data0 åttbytedata
data1 åttbytedata
data0 åttbytedata
data1 enbytedata

Även om det är FEL data0/data1 skall det listas. Annars är det bara värdelöst BLAJ den kräker upp när det gäller att debugga firmware som hanterar protokollet.
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Re: Linux USB debug?

Inlägg av arvidb »

Är det alltså usbmon som klipper datapaketen?

I icke uråldriga kernels (2.6.23+) så ska det finnas ett binär-API till usbmon som inte ska ha någon gräns för datastorleken. Och man ska kunna använda wireshark för att studera trafiken.

Jag har inte använt Wireshark för detta själv, men satt en del med usbmons text-API för ett gäng år sedan.

https://wiki.wireshark.org/CaptureSetup/USB
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6889
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Linux USB debug?

Inlägg av Marta »

Ja, det ä usbmon som "förädlar" informationen innan den visas. Efter lite eftertanke gick det ändå att gissa vad som skedde och problemet är nu löst.

Det fanns två fel i det jag kladdat ihopa.

Det första var att trots hårdvaran inte identifieras som high speed i samband med USB Reset så begär Linux descriptor #6 device_qualifier. Besvarar detta med STALL och den tjatar två gånger till. Mitt misstag gjorde att STALL låg kvar och sändes ytterligare vilket ofsakade fel. Beroende på timing kunde det ibland fungera.

Det andra var att vid USB Reset inte flusha ett FIFO samt släppa ev. avbruten transfer.

När dessa fel var rättade så enumererar den stadigt vid varje inpluggning. USB är stökigt och jag är gammal och trög. Då blir det såhär...
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Re: Linux USB debug?

Inlägg av arvidb »

Ja USB-protokollet är verkligen komplext. Trots att det verkar så enkelt när man pluggar in någon liten USB-pryl!

Bra att du löste det! :tumupp:
Skriv svar