Jak już kiedyś pisałem, można sobie porobić ładnie regułki dla urządzeń USB. Powstaje tylko pytanie skąd wziąć dane do reguł. Wiedziałem jak to robić dla przejściówki z USB na RS-232, ale z programatorem AVR ISP mkII było gorzej - on nie tworzył urządzenia. Okazało się, że nazwa może też być ścieżką względem /dev/, czyli poleceniem

udevadm test --action=add `/sbin/udevadm info --query=path \
--name=bus/usb/005/006`

(dokładniejsza) lub

/sbin/udevadm info --query=all --name=bus/usb/005/006

(wole tą metodę) w moim przypadku zmienił się numer seryjny.

Wcześniej opisałem gotowca, ale te magiczne numerki podane do wpisania do pliku 99-permissions.rules nie biorą się znikąd. Teraz podłączyłem interfejs ELM327 i oczywiście widoczny był jako /dev/ttyUSB0 (ale na końcu mógłby być większy numerek). Żeby zawsze widać go było pod tą samą nazwą sprawdziłem co tak naprawdę podpiąłem:

udevadm test --action=add `/sbin/udevadm info --query=path \
--name=ttyUSB0

i ładnie napisało m.in:

udevadm_test: ID_VENDOR=FTDI
udevadm_test: ID_VENDOR_ID=0403
udevadm_test: ID_MODEL_ID=6001
udevadm_test: ID_REVISION=0600
udevadm_test: ID_SERIAL_SHORT=A400huOr

pytanie można zadać tez w taki sposób:

/sbin/udevadm info --query=all --name=ttyUSB0

dane są te same, tylko w trochę innej postaci.

Teraz już wiadomo, że do pliku 99-permissions.rules muszę dopisać:

# ELM 327
KERNEL=="ttyUSB*", ENV{ID_VENDOR_ID}=="0403", \
ENV{ID_MODEL_ID}=="6001", MODE="0666", SYMLINK+="elm327"

W końcu się wziąłem za niesforne urządzenia USB: a to nie mam prawa zapisu do programatora AVR/ARM, a to pendrive nie wiem gdzie zamontowany bo dwa sie nazywają "disc", a to porty szeregowe na przejściówkach numerują się jak chcą w zależności który pierwszy wpięty. Zacząłem grzebać.

Najpierw utworzyłem (pusty) plik

/etc/udev/rules.d/99-permissions.rules

i tu od razu uwaga: najpierw chciałem nadać niską nazwę (40- zamiast 99-), ale wtedy reguły nie działają.

Zacząłem od programatorów: powinny mieć automatycznie ustawione dobre uprawnienia i powinny się jakoś ładniej nazywać. Dopisałem do tego pliku:

#turtelizer2
KERNEL=="ttyUSB*", ENV{ID_VENDOR_ID}=="0403", \
ENV{ID_MODEL_ID}=="bdc8", MODE="0666", \
SYMLINK+="turtelizer2rs232"


SUBSYSTEM=="usb",  ENV{ID_VENDOR_ID}=="0403", \
ENV{ID_MODEL_ID}=="bdc8", \
ENV{ID_SERIAL_SHORT}=="FTRDT8M5", MODE="0666", \
GROUP="dialout",  SYMLINK+="turtelizer2usb"


#AVR ISP mkII 03eb:2104
SUBSYSTEM=="usb",  ENV{ID_VENDOR_ID}=="03eb", \
ENV{ID_MODEL_ID}=="2104", \
ENV{ID_SERIAL_SHORT}=="0000A00128255", MODE="0666", \
GROUP="dialout",  SYMLINK+="AVR-ISP-mkII"

ustawiam grupę "dialout" bo taką samą system (Mandriva 2010) nadaje przejściówkom USB->RS232.

Jak widać skonfigurowałem na razie tylko turtelizer'a (a w zasadzie jego kopię) oraz AVR ISP mkII (oczywiście kopię na bazie USBprog'a) reszta musi poczekać, bo się już jutro zrobiło :-)

Ten kto umie pisze kod, ten kto nie umie pisze książki..., albo blog.

Pon Wt Śr Czw Pt So N
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
eZ Publish™ copyright © 1999-2024 eZ Systems AS