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 станет вашим надёжным помощником. Убедитесь, что у вас установлены необходимые пакеты, и начните изучать её возможности уже сегодня!