Consulta usbasp unclaimed

55 views
Skip to first unread message

Carlos Pantelides

unread,
Apr 9, 2020, 7:53:31 PM4/9/20
to Embebidos32
Hola:

Hace pocos años programé exitosamente un ATMega328p con un modulito genérico USBasp que debería aparecer como /dev/ttyACMx o incluso /dev/ttyUSBx pero no lo hace.

He intentador recuperar su uso y me encuentro con que no se registra correctamente ante el kernel, supongo.

Esta es la regla, que debe ser la que me funcionaba antes pues salvo el group era igual:

$ grep -i usbasp -A 1  /lib/udev/rules.d/60-avrdude.rules
# USBasp
SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", GROUP="plugdev", MODE="0660"

No están en blacklists

$ grep -i 16c0 /lib/udev/rules.d/77-mm-usb-device-blacklist.rules
$ grep -i 05dc /lib/udev/rules.d/77-mm-usb-device-blacklist.rules

No parece haber colisión con teensy que tiene mismo vendor:

/etc/udev/rules.d/49-teensy.rules:ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
/etc/udev/rules.d/49-teensy.rules:ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1"
/etc/udev/rules.d/49-teensy.rules:SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", MODE:="0666"
/etc/udev/rules.d/49-teensy.rules:KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", MODE:="0666"

igual probé desactivando esa regla.

Probé usar una regla exactamente igual pero con idProduct de usbasp, nada. Lo que siempre obtengo es (ojo que bus y más device pueden no coincidir en los siguientes listados por ser conexiones distintas):

$sudo  udevadm monitor
KERNEL[123.971778] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1 (usb)
KERNEL[123.973479] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0 (usb)
UDEV  [124.405419] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1 (usb)
UDEV  [124.407306] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0 (usb)


Contrastando, teensy me da

KERNEL[1893.130889] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1 (usb)
KERNEL[1893.132670] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0 (usb)
KERNEL[1893.132830] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.1 (usb)
UDEV  [1893.649654] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1 (usb)
UDEV  [1893.654287] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.1 (usb)
KERNEL[1893.691237] add      /module/cdc_acm (module)
UDEV  [1893.691943] add      /module/cdc_acm (module)
KERNEL[1893.692642] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0/tty/ttyACM0 (tty)
KERNEL[1893.692742] add      /bus/usb/drivers/cdc_acm (drivers)
UDEV  [1893.692943] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0 (usb)
UDEV  [1893.693677] add      /bus/usb/drivers/cdc_acm (drivers)
UDEV  [1893.695432] add      /devices/pci0000:00/0000:00:12.0/usb3/3-1/3-1:1.0/tty/ttyACM0 (tty)

Esto dice lshw

$ sudo lshw
              *-usb:0 UNCLAIMED
                   description: Generic USB device
                   product: USBasp
                   vendor: www.fischl.de
                   physical id: 1
                   bus info: usb@3:1
                   version: 1.02
                   capabilities: usb-1.10
                   configuration: maxpower=50mA speed=1Mbit/s

Este es mi sistema

$ uname -a
Linux a10 4.4.0-128-generic #154-Ubuntu SMP Fri May 25 14:15:18 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


Si me dijeran que puede estar roto, mmh, puede ser, pero ¿dos? tengo dos y actúan igual.

En dmesg no tengo nada raro

[ 2068.522457] usb 3-1: new low-speed USB device number 8 using ohci-pci
[ 2068.693151] usb 3-1: New USB device found, idVendor=16c0, idProduct=05dc
[ 2068.693157] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2068.693161] usb 3-1: Product: USBasp
[ 2068.693164] usb 3-1: Manufacturer: www.fischl.de



sudo lsusb -v

Bus 003 Device 007: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x16c0 Van Ooijen Technische Informatica
  idProduct          0x05dc shared ID for use with libusb
  bcdDevice            1.02
  iManufacturer           1 www.fischl.de
  iProduct                2 USBasp
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           18
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               50mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         0 (Defined at Interface level)
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
Device Status:     0x0000
  (Bus Powered)

¿Alguna pista de qué puede estar ocurriendo, cómo seguir diagnosticando?


Gracias y saludos

Charli


sebastian Oldani

unread,
Apr 10, 2020, 7:57:30 AM4/10/20
to embeb...@googlegroups.com
Hola, la verdad que no se ve nada extraño

Te comento solo un par de cosas, las reglas del udev solo son permisos, con lo que si antes te lo listaba en /dev/ con o sin permisos lo deberia listar. De todas formas proba tirar un ls en /dev/ como superusuario

En dmesg se ve que inicia bien, con lo que si estuviera roto ahi te daría algún error, cuando lo conectas esos datos que te muestra como el id de producto y el vendor los obtiene del endpoint0, con lo que en principio esta andando.

Yo probaría dos cosas, primero la obvia, que es hacer un ls como root en /dev/ con y sin el dispositivo conectado, y asegurarme si aparece algo nuevo o no.

Y la segunda opción iria a la configuración de la bios de la PC y pondría en la configuración del usb que funcionen en modo legacy o usb1.0 lo más viejo posible y probaría todo otra vez.

El resto no se ve nada fuera de lo normal, al menos para mi.

Saludos!

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/embebidos32/9a8d6d87-7111-4610-800a-1094290e7228%40googlegroups.com.

Carlos Pantelides

unread,
Apr 10, 2020, 4:42:29 PM4/10/20
to Embebidos32
Sebastián, muchas gracias

No, permisos parece todo ok

BIOS ok, legacy estaba activo

Pensé que Lo había corregido parcialmente con SYMLINK+="USBasp" pero luego comprendí que no hacía falta.

En conclusión, no tengo idea qué cambió, ahora anda, puedo programar tanto desde avrdude directo como desde arduino ide, los dos USBasp andan ok, probé tres atmegas ok, otro que no, luego veré.

Si sé (ahora, despues de haber pasado por muchas horas de trabajo) que avrdude lo halla solito, que arduinoide usa avrdude y que hay cosas copadas para investigar de udev, se podría hacer un precario sistema de "llave de acceso", no hay login/sshd hasta que insertás un dispositivo usb de determinadas características.

Es aburrido, pero registré en https://seguridad-agile.blogspot.com/2020/04/diagnosticando-avrdude-usbasp-arduino.html los recursos de los que me valí para diagnosticar.

Saludos






--

Miguel Grassi

unread,
Apr 10, 2020, 6:31:43 PM4/10/20
to Embebidos32
Hola Carlos,

Con respecto a los atmega con los que no funciona, es probable que sea un tema de fuses. El seteo de velocidad de éstos debe coincidir con el hardware de click de la placa en que instales el micro. 

Cuando los micros son nuevos, solo los podes grabar en baja velocidad (el usbasp tiene un jumper para eso). Usando ese modo seteas los fuses de acuerdo a tu placa y ya podes pasar el jumper a alta. 

Saludos,

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.

Miguel Grassi

unread,
Apr 10, 2020, 6:32:26 PM4/10/20
to Embebidos32
Donde dice click quise poner clock...

Carlos Pantelides

unread,
Apr 11, 2020, 1:44:52 PM4/11/20
to Embebidos32
ok, veré los de los fuses, que de paso lo estoy viendo para usar todos los pines posibles como I/O (en realidad sólo el reset puedo recuperar), muchas gracias
Reply all
Reply to author
Forward
0 new messages