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