Home / Community / Blog

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.

Będąc szczęśliwym posiadaczem USBprog działającego jako AVR ISP mkII któregoś dnia przekonałem się, że zmiana go w inne urządzenie jest banalnie prosta.

Powodem "przekonania się" było rozprogramowanie się urządzenia (tak całkiem "samo się" nie popsuło - podałem mu za wysokie napięcie "od tyłu" - przez złącze ISP). Efektem było regularne mruganie, zaraz po włączeniu, diody sygnalizującej pracę które oznacza, że dział bootloader

Rozwiązanie jest banalne: wystarczy ponownie zainstalować oprogramowanie AVR ISP mkII. W tym celu:

  1. Ściągnąłem źródła narzędzia do programowania
    wget http://download.berlios.de/usbprog/usbprog-dev.tar.gz
    
  2. Miałem zamiar kompilować, ale okazało się po rozpakowaniu
    tar -xzf usbprog-dev.tar.gz
    
    , że wewnątrz jest kompilowany gotowiec
    usbprog-dev/usbprog_tools/usbprog-old/usbprog
  3. Ściągnąłem "wsad":
    wget http://www.ixbat.de/usbprog/avrispmk2.bin
    
    inne, np.: analizator stanów logicznych, są dostępne na stronie domowej)
  4. Zaprogramowałem układ poleceniem
    usbprog-dev/usbprog_tools/usbprog-old/usbprog avrispmk2.bin
    

W efekcie dostałem działający "znowu" programator.

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"

Just my blog...

Mon Tue Wed Thu Fri Sat Sun
          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
31