Eu consegui fazer isso com uma regra do udev, depois de algum truque (e usando lsusb
para descobrir o fornecedor e o ID do produto do dispositivo no modo flash):
$ cat /etc/udev/rules.d/nxt.rules
# disable NXT in flash mode
ACTION=="add", ATTR{idVendor}=="03eb", ATTR{idProduct}=="6124", RUN="/bin/sh -c '/bin/echo -n $kernel:1.0 | /usr/bin/tee /sys/bus/usb/drivers/cdc_acm/unbind | /usr/bin/logger -t nxt-flashmode'"
Esta regra é acionada quando um bloco NXT é conectado no modo flash, ou colocado no modo flash enquanto conectado. Ele não impede que cdc_acm
o pegue, mas imediatamente depois diz para liberar o dispositivo, então fwflash
pode acessá-lo.
Eu não descobri o que é o :1.0
e por que usar isso e não :1.1
, que também aparece no sysfs. No entanto, eu queria compartilhar uma solução funcional (para mim). Ambiente: Debian instável a partir do final de outubro de 2014 (ou seja, praticamente Debian jessie).