Jak změnit jméno zařízení USB v /dev?

d.petr d.petr na post.cz
Čtvrtek Duben 10 10:14:47 CEST 2014


	Dobrý den.
	Mám více stejných periférií USB. Při startu systému jsou pojmenovány 
způsobem xUSB0, xUSB1, xUSB2 atd. (konkrétně ttyUSB0, ...). Když se 
např. xUSB1 a xUSB2 za běhu odpojí a znovu připojí, ale v opačném pořadí 
(i když do původních konektorů USB), dostanou ta zařízení prohozená 
jména v /dev. A já potřebuji svým c-čkovým programem ta jména vrátit do 
původního stavu. Má někdo myšlenku, kudy na to? Nějak se mi nedaří najít 
žádnou radu.

	Doplňkové informace: Nemám udev, hal &spol. Systém pracuje samostatně, 
nikdo nemůže fyzicky vytahovat a zastrkovat konektory, aby se názvy 
zařízení samy porovnaly (k odpojení zařízení dojde např. výpadkem jeho 
externího napájení). Kdyby odpadlo xUSB1 a xUSB2 a následně by se už 
xUSB1 nevzpamatovalo, není normálně síla, která by tomu xUSB2 po jeho 
připojení přidělila jméno xUSB2, už by stále dostávalo jen xUSB1; tento 
případ potřebuji také vyřešit, že se nepřipojilo xUSB1, to poznám podle 
použitého konektoru (portu) v /sys/kernel/debug/usb/devices. Tedy v 
podstatě potřebuji zjistit topologii připojení a názvů při funkčním 
stavu a tuto strukturu potom zachovávat i v případě 
připojování/odpojování těch periférií, restartu programu a restartu systému.

	Co se mi nechce: Mohl bych odpojit vnitřní USBhub (použitím unbind 
někde v /sys), tím by odpadly všechny USB a pak by se znovu připojovaly 
ve správném pořadí, bohužel ale je to hodně brutální řešení (které 
odhodí i ostatní USB, jako např. flash apod.) a navíc nepomůže v případě 
trvalé nefunkčnosti některé periférie (ty "za ní" se už nikdy neočíslují 
správně). Také bych si mohl tvořit různé symlinky podle aktuálního 
stavu, ale s nimi je potíž při restartu programu (neznal by aktuální 
stav USB), kdyby si ty symlinky program poznamenal pro případ svého 
restartu, byl by s nimi problém při restartu celého systému (neplatilo 
by, co je poznamenáno). Také lze jednoduše přejmenovat soubory v /dev, 
ale poněkud to systému zamotá hlavu :-) , takže takto také ne.

	Je tedy nějaká možnost manipulace s názvy v /dev (tak, aby tomu 
odpovídaly i údaje v /sys)?

PM


Další informace o konferenci Linux