Summary: | avrdude was compiled without usb support | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Alexandr <nesterenko_sasha> |
Component: | avrdude | Assignee: | Evgeny Sinelnikov <sin> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | grizlik78, lav, sin, viy, week |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux |
Description
Alexandr
2017-09-28 18:54:59 MSK
На Sisyphus. Что значит "На Sisyphus"? А почему вы считаете, что нет поддержки USB? Как это посмотреть? Например с USBASP у меня avrdude работает нормально. И, к тому же: $ ldd /usr/bin/avrdude | grep usb libusb-1.0.so.0 => /lib/libusb-1.0.so.0 (0xb773c000) У меня выдает сообщение, что avrdude скомпилирована без поддержки usb А команду, которая это сообщение выдаёт, можно увидеть? И версию пакета. avrdude 6.3 устанавливал через Synaptic avrdude -p t13 -c stk500v2 -P avrdoper (In reply to comment #7) > avrdude 6.3 устанавливал через Synaptic > avrdude -p t13 -c stk500v2 -P avrdoper avrdude: Version 6.3, compiled on Aug 9 2017 at 16:49:59 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "/etc/avrdude.conf" User configuration file is "/home/alex/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : avrdoper Using Programmer : stk500v2 avrdude was compiled without usb support. avrdude done. Thank you. Ага, понятно. Разные части avrdude написаны с использованием разных библиотек. SUBasp использует libusb-1.0, а stk500v2 требует старой libusb. Нужно добавить в сборочные зависимости libusb-compat-devel и пересобрать пакет. А как это сделать? (В ответ на комментарий №9) > Ага, понятно. Разные части avrdude написаны с использованием разных библиотек. > SUBasp использует libusb-1.0, а stk500v2 требует старой libusb. В мне это непонятно. Из чего следует, что "Разные части avrdude написаны с использованием разных библиотек"? > Нужно добавить в сборочные зависимости libusb-compat-devel и пересобрать пакет. [sin@centrit006 ~]$ rsync rsync://rsync.altlinux.org/ALTLinux/Sisyphus/files/x86_64/RPMS/avrdude-6.3* Welcome to ALT Linux Team public rsync archive! -rw-r--r-- 281,035 2017/07/27 12:06:02 avrdude-6.3-alt1.S1.x86_64.rpm [sin@centrit006 ~]$ rsync rsync://rsync.altlinux.org/ALTLinux/Sisyphus/files/x86_64/RPMS/avrdude-6.3* . Welcome to ALT Linux Team public rsync archive! [sin@centrit006 ~]$ rpm -qpR avrdude-6.3-alt1.S1.x86_64.rpm /bin/sh /bin/sh /lib64/ld-linux-x86-64.so.2 libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.15)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.7)(64bit) libelf.so.1()(64bit) >= set:kg3IPkqeRua1X8UFX5Tf8qLKEZBe1i3IDysd1 rpmlib(SetVersions) libelf.so.1(ELFUTILS_1.0)(64bit) libelf.so.1(ELFUTILS_1.5)(64bit) libftdi1.so.2()(64bit) >= set:kg1x6Lx22DeyL1S4EtsPUhUmvso5vOKeW6p11 libm.so.6(GLIBC_2.2.5)(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libreadline.so.6()(64bit) >= set:nlIfCiwp4 libusb-1.0.so.0()(64bit) >= set:kgIXMHqbFAsqD2uB7H4xwDp9f rtld(GNU_HASH) rpmlib(PayloadIsLzma) [sin@centrit006 ~]$ rpm -q --whatprovides "libusb-1.0.so.0()(64bit)" libusb-1.0.21-alt0.M80P.1 Так, что надо разобраться, почему так получилось, что вот этот код, срабатывает после сборки: stk500v2.c-#if defined(HAVE_LIBUSB) stk500v2.c- serdev = &usb_serdev; stk500v2.c- pinfo.usbinfo.vid = USB_VENDOR_ATMEL; stk500v2.c- pinfo.usbinfo.flags = 0; stk500v2.c- pinfo.usbinfo.pid = USB_DEVICE_AVRDRAGON; stk500v2.c- pgm->fd.usb.max_xfer = USBDEV_MAX_XFER_MKII; stk500v2.c- pgm->fd.usb.rep = USBDEV_BULK_EP_READ_MKII; stk500v2.c- pgm->fd.usb.wep = USBDEV_BULK_EP_WRITE_MKII; stk500v2.c- pgm->fd.usb.eep = 0; /* no seperate EP for events */ stk500v2.c-#else stk500v2.c: avrdude_message(MSG_INFO, "avrdude was compiled without usb support.\n"); stk500v2.c- return -1; stk500v2.c-#endif (В ответ на комментарий №11) > (В ответ на комментарий №9) > > Ага, понятно. Разные части avrdude написаны с использованием разных библиотек. > > USBasp использует libusb-1.0, а stk500v2 требует старой libusb. > > А мне это непонятно. Из чего следует, что "Разные части avrdude написаны с > использованием разных библиотек"? Ну я код смотрел, оттуда предположение. В usbasp.c используется макрос HAVE_LIBUSB_1_0 и подключается libusb-1.0/libusb.h из libusb-devel В stk500v2.c ориентируются на макрос HAVE_LIBUSB. В configure HAVE_LIBUSB выставляется если удалось использовать -lusb из libusb-compat-devel, а HAVE_LIBUSB_1_0 если удалось использовать -lusb-1.0 из libusb-devel. Почему используются две разные версии библиотеки я не знаю, можно ли избавиться от libusb-compat-devel тоже. Но вроде в одной программе они уживаются, я попробовал собрать с обеими, работа USBasp не сломалась, а stk500v2 больше не ругается на отсутствие поддержки USB (этого программатора у меня здесь нет). Ну и насколько я понял по коду, если оставить только libusb-compat-devel, а libusb-devel убрать, то USBasp будет использовать compat-библиотеку. Остальные места не смотрел, возможно есть кто-то, кому нужна именно libusb-1.0. В ft245r.c, похоже, подходит только libusb-1.0. Так что, вроде, получается, что для полной поддержки USB нужны обе версии библиотеки. Либо патчить код. Да, всё верно... обе либы нужно добавить, вот так: http://git.altlinux.org/people/sin/packages/avrdude.git?p=avrdude.git;a=commitdiff;h=34c83dd749b0c08032c953d1b872dbb69015e5e1;hp=8c792bf19a7aa5e1ddb3bd39d292b4a5249a9a80 Отправил на сборку в сизиф: #189872 BUILDING #1 [locked] sisyphus avrdude.git=6.3-alt2%ubt avrdude-6.3-alt2.S1 -> sisyphus: Sun Oct 01 2017 Evgeny Sinelnikov <sin@altlinux.ru> 6.3-alt2.S1 - Rebuild with libusb-compat-devel due needs for stk500v2 (ALT #33937) Как его теперь установить, чтоб проверить? (В ответ на комментарий №16) > Как его теперь установить, чтоб проверить? Спасибо! Всё работает отлично. |