[linux] Hoe een usb port te resetten, "claim"

Paul Slootman paul+nospam op wurtel.net
Wo Sep 25 10:34:46 CEST 2019


On Wed 25 Sep 2019, Geert Stappers wrote:
> On Mon, Sep 23, 2019 at 08:34:49AM +0200, Paul Slootman wrote:
> > On Sun 22 Sep 2019, Geert Stappers wrote:
> > > On Tue, 20 Aug 2019, 10:50 Paul Slootman, wrote:
> > > >
> > > > Het zal wel een hardware probleem zijn.
> > > 
> > > Ik vind niet dat we het uitschakelen (of loskoppelen)
> > > en weer inschakelen (of aankoppelen) van een Arduino
> > > een hardware probleem moeten noemen.
> > 
> > Ik heb op mijn pc ook een paar USB ports die soms "vastlopen", niks wat
> > je er op aansluit wordt dan nog herkend (geen meldingen in dmesg).
> > Dat noem ik een hardware probleem, en dit leek er veel op.
> > 
> > 
> > > > > Ik zou het ding dan via een USB hub aansluiten. Dan hoef je
> > > > > waarschijnlijk alleen de USB hub er even uit te halen en weer terug.
> > > 
> > > Onwaarschijnlijk. Mijn inschatting is het volgende
> > > * Arduino aangesloten
> > > * Arduino IDE doet bij opstart een scan naar serial ports
> > > * Er wordt er eentje gevonden, zeg /dev/ttyUSB2
> > > * Programma start verder op
> > > * Men gaat aan het werk
> > > * Iets claimt  /dev/ttyUSB2
> > > * Arduino wordt losgekoppelt
> > > * Dat wat /dev/ttyUSB2 claimt
> > >   komt NIET op het idee om de claim los te laten.
> > > * Arduino wordt aangekoppelt
> > > * Omdat /dev/ttyUSB2 nog "locked" is,
> > >   zal er een andere USB serial port dan /dev/ttyUSB2 komen
> > > * Arduino IDE heeft geen reden om een nieuwe scan
> > >   naar serial ports te doen
> > > * Men is aan de rand van waar deze thread begon
> > > 
> > 
> > Als iets /dev/ttyUSB2 claimt: als je die device verwijdert dan bestaat
> > die device node ook niet meer. Dan valt er ook weinig te "claimen" (wat
> > dat ook zou mogen betekenen).
> 
> Het is "device node" versus "file descriptor".
> "hotplug code" zorgt dat de device node er is en ruimt die device node
> ook weer op. Op een moment wordt die device node gebruikt in een file
> descriptor. Dat is wat ik "claimen" noem. Betere beschrijving welkom.
> Het stuk software wat de file descriptor open heeft zal niet bij
> elke I/O actie controleren of de onderliggende device node er nog is.
> Dat is waar "lock" resulteert in "lock up".

Zodra de device fysiek niet meer aanwezig is, dan krijgt het process dat
die open heeft een interrupt en stopt dus. Het is dus geen kwestie van
steeds kijken of die device node bestaat, zo ver komt het niet.


Paul


Meer informatie over de Linux maillijst