USBasp, bubuntu i udev

Kupiłem sobie ostatnio w nettigo zabawkę, czyli programator USBasp i jakieś kostki ATtiny 2313. Właściwie bez konkretnego planu, ot tak, żeby się pobawić dla zabicia czasu.
Wszystkiego bym się spodziewał, ale nie tego, że pół dnia będę kombinował jak to podpiąć do komputera (w sposób cywilizowany), a jeszcze nie wiem ile czasu zajmie mi podpięcie tego cuda do attiny. 😀 No to, żeby nie zapomnieć.

Kupiłem sobie ostatnio w nettigo zabawkę, czyli programator USBasp i jakieś kostki ATtiny 2313. Właściwie bez konkretnego planu, ot tak, żeby się pobawić dla zabicia czasu.
Wszystkiego bym się spodziewał, ale nie tego, że pół dnia będę kombinował jak to podpiąć do komputera (w sposób cywilizowany), a jeszcze nie wiem ile czasu zajmie mi podpięcie tego cuda do attiny. 😀 No to, żeby nie zapomnieć.

Problem sprowadza się do tego, że po podpięciu programatora, próba zaprogramowania (powietrza) kończy się dość popularnym jak się okazuje komunikatem:

wariat@lipa:~$ avrdude -p t2313 -c usbasp -v  empty2313at8.hex
(...)
         Using Port                    : /dev/parport0
         Using Programmer              : usbasp
avrdude: Warning: cannot query manufacturer for device: error sending control message: Operation not permitted
avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

avrdude done.  Thank you.

I niby nic i żaden powód do tych kilku godzinnych poszukiwań (ok, w pracy między klientami, ale budujemy napięcie right? :D), gdyby nie to, że wszystko co udało mi się wygooglać to jakże odkrywcze rozwiązanie problemu: użyj sudo.
No nie, tak to się nie będziemy bawić. 😀

W każdym razie powyższe rozwiązanie działa, a to oznacza, że po prostu zwykły użyszkodnik nie ma praw do gadania z programatorem i trzeba to zmienić. Tylko tyle. Po kolei.

Jest sobie programator:

root@lipa:~# lsusb -s 002:007
Bus 002 Device 007: ID 16c0:05dc VOTI shared ID for use with libusb

i faktycznie gadać może do niego tylko root:

root@lipa:~# ls -l /dev/bus/usb/002/007
crw-rw-r-- 1 root root 189, 134 cze 19 12:05 /dev/bus/usb/002/007

Całe halo to dowiedzieć się z kim mamy do czynienia:

root@lipa:~# udevadm info -ap /sys/bus/usb/devices/2-1
(...)
 looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
    KERNEL=="2-1"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
(...)
    ATTR{authorized}=="1"
    ATTR{manufacturer}=="www.fischl.de"
    ATTR{product}=="USBasp"
(...)

I dopisać jedną regułkę udev:

root@lipa:~# cat /etc/udev/rules.d/99-usbasp.rules 
SUBSYSTEM=="usb", DRIVER=="usb", ATTR{manufacturer}=="www.fischl.de", ATTR{product}=="USBasp", GROUP="dialout"

Odłączyć, podłączyć i po robocie:

root@lipa:~# ls -l /dev/bus/usb/002/012
crw-rw-r-- 1 root dialout 189, 139 cze 19 12:43 /dev/bus/usb/002/012

Dlaczemu dialout? A bo arduino po zainstalowaniu kazało dodać usera do tej grupy, a że jedno i drugie leżało obok siebie to mimo, że grupa jak gdyby trochę od pały to w sumie czemu nie.
Teraz zostaje mi spięcie tego z ATtiny, to dopiero może być wyzwanie … dla mnie znaczy. 😀

Hacker rzekł był…

Poszliśmy dziś na spacer, w drodze powrotnej Hacker miał na plecach flagę z reklamą piwa i generalnie dotyczącą tej piłkarskiej imprezy która wszędzie wokół. Ludzie myśleli zapewne, że kibic… ach gdyby wiedzieli, że nie kibic tylko super bohater, a flaga mogłaby być równie dobrze kuchenną ścierką, bo chodzi tylko o to, żeby powiewała kiedy się biegnie. 😀 Nieważne. W pewnym momencie młody staje przed domem przystrojonym tym razem z okazji święta kościelnego, patrzy patrzy i…

Hacker: Hmmm! To jakieś nieporozumienie!
– Ale co?
– Flaga powinna być biało czerwona, a nie niebieska!

😀 Nieporozumienie … 😀