libusb

Библиотека libusb для работы с USB-устройствами в пользовательском пространстве. Предоставляет API для взаимодействия с USB-оборудованием без необходимости написания драйверов ядра.

Подпакеты
Имя Краткое описание
libusb-devel Описание отсутствует
lib32-libusb 32-битные библиотеки для libusb

Домашняя страница: http://sourceforge.net/projects/libusb

Доступные версии
Версия Релиз Архитектура Лицензия Дата сборки Размер Версии ОС Подробности
1.0.27 1.niceos5 x86_64 LGPLv2+ 24 апр. 2025 г. 198,011 МиБ Подробности
Описание

Обзор библиотеки libusb

Библиотека libusb представляет собой кроссплатформенную библиотеку с открытым исходным кодом, предназначенную для упрощения работы с USB-устройствами в пользовательском пространстве. Она предоставляет разработчикам удобный и мощный API для взаимодействия с USB-оборудованием без необходимости разрабатывать драйверы на уровне ядра. В контексте Найс.ОС, пакет libusb доступен через пакетный менеджер dnf и широко используется в приложениях, требующих доступа к USB-устройствам, таких как сканеры, принтеры, камеры и другие периферийные устройства.

Основные возможности libusb

Библиотека libusb поддерживает широкий спектр функций, которые делают её незаменимым инструментом для разработчиков. Вот ключевые особенности:

  • Кроссплатформенность: поддержка различных операционных систем, включая Linux (в том числе Найс.ОС), Windows и macOS.
  • Доступ к USB-устройствам на низком уровне: работа с устройствами через конечные точки (endpoints) для передачи данных.
  • Поддержка различных типов передачи: синхронная и асинхронная передача данных, включая bulk, interrupt и isochronous режимы.
  • Управление конфигурациями и интерфейсами USB-устройств.
  • Обнаружение подключённых устройств и получение информации о них (производитель, модель, серийный номер).

Установка libusb на Найс.ОС

Для установки библиотеки libusb на системе Найс.ОС используется пакетный менеджер dnf. Выполните следующую команду для установки пакета:

sudo dnf install libusb

После установки вы также можете установить пакет разработчика libusb-devel, если планируете писать собственные приложения с использованием этой библиотеки:

sudo dnf install libusb-devel

Пакет libusb-devel содержит заголовочные файлы и документацию, необходимые для компиляции программ, использующих libusb.

Использование libusb в разработке

Основы работы с API

Библиотека libusb предоставляет API на языке C, который позволяет инициализировать контекст USB, перечислять устройства, открывать их для взаимодействия и выполнять передачу данных. Вот пример простого кода на C, который перечисляет все подключённые USB-устройства:

#include 
#include 

int main() {
    libusb_device **devs;
    libusb_context *ctx = NULL;
    int r;
    ssize_t cnt;

    r = libusb_init(&ctx);
    if (r < 0) {
        return r;
    }

    cnt = libusb_get_device_list(ctx, &devs);
    if (cnt < 0) {
        libusb_exit(ctx);
        return (int)cnt;
    }

    printf("Найдено %zd USB-устройств\n", cnt);
    libusb_free_device_list(devs, 1);
    libusb_exit(ctx);
    return 0;
}

Этот код инициализирует контекст libusb, получает список всех подключённых USB-устройств и выводит их количество. Для компиляции такого кода на Найс.ОС используйте следующую команду:

gcc -o usb_list usb_list.c -lusb-1.0

Пример передачи данных

Более сложные задачи, такие как передача данных на устройство или с устройства, также поддерживаются библиотекой. Например, вы можете использовать libusb для отправки управляющих команд на устройство или чтения данных с конечной точки. Это особенно полезно при работе с нестандартными USB-устройствами, для которых нет готовых драйверов.

Пример сценария: разработка приложения для взаимодействия с USB-сканером штрих-кодов. С помощью libusb вы можете открыть устройство, выбрать нужный интерфейс и считывать данные через конечную точку типа interrupt.

Примеры приложений, использующих libusb

Библиотека libusb лежит в основе многих популярных инструментов и приложений. Вот несколько примеров:

  • SANE (Scanner Access Now Easy): используется для работы со сканерами.
  • GPhoto2: библиотека для взаимодействия с цифровыми камерами через USB.
  • OpenOCD: инструмент для отладки и программирования микроконтроллеров через USB-адаптеры.

Эти приложения демонстрируют универсальность libusb и её способность поддерживать сложные сценарии взаимодействия с оборудованием.

Преимущества и ограничения

Преимущества

  • Простота интеграции в проекты благодаря хорошо документированному API.
  • Поддержка широкого спектра USB-устройств и протоколов.
  • Активное сообщество разработчиков и регулярные обновления.

Ограничения

  • Требуются права суперпользователя для доступа к некоторым устройствам в Linux (можно настроить через udev).
  • Не поддерживает разработку драйверов на уровне ядра — только пользовательское пространство.

Для настройки прав доступа к USB-устройствам без необходимости использования sudo вы можете создать правила для udev. Например, создайте файл /etc/udev/rules.d/99-usb-access.rules с содержимым:

SUBSYSTEM=="usb", GROUP="users", MODE="0666"

После этого перезапустите службу udev:

sudo systemctl reload systemd-udev

Заключительные замечания

Библиотека libusb является мощным инструментом для разработчиков, работающих с USB-устройствами в Найс.ОС и других системах. Она предоставляет гибкость и удобство для создания приложений, взаимодействующих с оборудованием, будь то простое перечисление устройств или сложная передача данных. Установка через dnf делает её доступной для всех пользователей Найс.ОС, а документация и примеры кода упрощают процесс интеграции.

Если вы разрабатываете приложение, требующее взаимодействия с USB, libusb станет вашим надёжным помощником. Убедитесь, что у вас установлены необходимые пакеты, и начните изучать её возможности уже сегодня!