Peripheral Discovery
make87 supports a wide variety of hardware peripherals. These are automatically discovered at runtime using system APIs, device files, and network probing techniques.
Supported Peripheral Types
Peripheral Type | Description | Discovery Method |
---|---|---|
Camera | USB, Raspberry Pi CSI, IP (ONVIF, SSDP), and GigE Vision cameras | v4l2-ctl , lsusb , ONVIF/SSDP/GigE multicast discovery |
Codec | Hardware decoders/encoders (e.g. H.264/H.265) | Identified by name in v4l2-ctl and codec support enumeration |
ISP | Devices with image signal processing (e.g. denoise, scale) | Detected via v4l2-ctl --all feature parsing |
GPIO | GPIO chip and line info via Linux GPIO interface | gpiodetect , gpioinfo , and /dev/gpiochip* |
GPU | NVIDIA, Jetson, and AMD GPUs | nvidia-smi , /etc/nv_tegra_release , rocm-smi |
I2C | I2C bus adapters | /sys/class/i2c-adapter , checks /dev/i2c-* nodes |
Keyboard | USB or embedded keyboards | /proc/bus/input/devices with capability filtering |
Mouse | USB or embedded mice | /proc/bus/input/devices with relative axis filtering |
RealSense | Intel RealSense USB cameras | lsusb , matched vendor/product ID, udevadm , v4l2-ctl |
GenericDevice | Any /dev device not matched to a known type |
/dev directory scan, filters block/char devices not already seen |
How Discovery Works
Peripheral discovery is automatic and continuously monitored in the background:
- System calls like
v4l2-ctl
,gpiodetect
, ornvidia-smi
are executed if available. - Known device paths (e.g.,
/dev/video0
,/dev/input/event*
) are scanned. - Network discovery uses multicast probes (ONVIF, SSDP, GigE Vision).
- RealSense cameras are matched via vendor/product ID and
udevadm
for serials. - Unrecognized devices in
/dev
are added as GenericDevice if they are block/char nodes.
System Requirements
The following tools are recommended for optimal peripheral auto-discovery. If these tools are not available, peripherals can still be manually mounted as GenericDevice types:
- v4l2-ctl (v4l-utils package) - for camera and video device discovery
- lsusb (usbutils package) - for USB device enumeration
- gpioinfo/gpiodetect (gpiod package) - for GPIO interface discovery
- nvidia-smi - for NVIDIA GPU detection and management
Manual Mounting Alternative
If these discovery tools are not installed, you can still access peripherals by mounting them manually as GenericDevice types in your application configuration. This requires knowing the specific /dev
paths of your hardware.
Installation of Discovery Tools
Ubuntu/Debian
Fedora
CentOS/RHEL
For NVIDIA GPU Support
Install NVIDIA drivers and tools according to your distribution's instructions. The nvidia-smi
command should be available after proper NVIDIA driver installation.
Access Permissions
Access to many peripherals requires appropriate permissions:
- video group membership for camera devices
- input group membership for keyboard/mouse devices
- gpio group membership for GPIO access
- dialout group membership for serial devices
The make87 installation process automatically configures these permissions for the make87
user through udev rules and group memberships.
Network-Based Peripherals
- IP cameras must be reachable over the local network (same subnet)
- ONVIF cameras are discovered via multicast discovery protocols
- GigE Vision cameras use their own discovery mechanism
- Network discovery may take additional time during node startup
Vendor-Specific Devices
Some specialized devices may require additional setup:
- Intel RealSense cameras require Intel RealSense SDK
- Luxonis devices may need specific drivers or firmware
- MyriadX accelerators require Intel OpenVINO toolkit
These devices will be detected as GenericDevice if their specific drivers are not available, allowing manual configuration in your applications.