Skip to main content
The Universal Serial Bus (USB) supports data exchange and power supply between electronic devices at speeds from 1.5 Mbps (low speed) up to 10 Gbps (SuperSpeed Plus). The IQ-9075 uses the Synopsys DesignWare Core SuperSpeed USB 3.x controller connected to USB2 PHY (UTMI) and USB3 PHY (PIPE) interfaces. The board features three USB connectors: two Type-C (USB0, USB1) and one micro-USB (USB2).

Controllers

ControllerAddressMax SpeedHS PHY RailsSS PHY Rails
USB00xa600000USB 3.x SuperSpeedL7A (0.88V), L6C (1.8V), L9A (3.3V)L1C, L7A
USB10xa800000USB 3.x SuperSpeedL7A (0.88V), L6C (1.8V), L9A (3.3V)L1C, L7A
USB20xa400000USB 2.0 High SpeedVDD_A_USBHS_2_1P8, VDD_A_USBHS_2_3P1

Features

Hardware Features

FeatureDescription
Dual-Role Device (DRD)Host and device modes with dynamic role detection
USB 3.1 Gen1SuperSpeed 5 Gbps on USB0 and USB1
USB 2.0 High Speed480 Mbps on all controllers
xHCIeXtensible Host Controller Interface compliance
Transfer typesControl, bulk, interrupt, isochronous
Link Power ManagementASPM-style LPM for power savings

Software Features

Peripheral mode: Mass Storage, Diagnostics (FunctionFS), RNDIS, NCM Host mode: xHCI, HID/MS/Hub class drivers, UVC (USB camera), Link Power Management

Architecture

LayerKey Components
User Spacediag-router, qusb — service management, composition switching
VFS/dev/ffs-*, /sys/kernel/config — dynamic config, endpoint access
Kerneldwc3-qcom, xHCI, Gadget Framework — dual-role, power management
HardwareDWC3 Controllers, Femto/QMP PHYs

Configuration

Runtime Power Management

# Enable autosuspend
echo auto > /sys/bus/platform/devices/a600000.usb/power/control
echo 2000 > /sys/bus/platform/devices/a600000.usb/power/autosuspend_delay_ms

# Check status
cat /sys/bus/platform/devices/a600000.usb/power/runtime_status
Runtime PM is not supported for Type-C ports on IQ-9075.

Enable Remote Wake-up (Host Mode)

# Enable wake-up for xHCI
echo enabled > /sys/bus/platform/devices/xhci-hcd.X.auto/power/wakeup

# Enable wake-up for root hubs
echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup

Prevent Suspend During Composition Switch

echo on > /sys/bus/platform/devices/a600000.usb/power/control
# Perform composition switch
echo auto > /sys/bus/platform/devices/a600000.usb/power/control

USB Camera

The IQ-9075 supports USB cameras that comply with the USB Video Class (UVC) standard via the uvcvideo kernel driver, exposing devices as /dev/videoX.

Detect and Configure

1

Detect the camera

lsusb
v4l2-ctl --list-devices
ls -l /dev/v4l/by-id/
2

Check supported formats

yavta /dev/video2 --enum-formats
3

Capture or stream video

# MJPEG capture
yavta -f MJPEG -s 1280x720 -t 1/30 -c10 -F/home/ubuntu/test.jpeg /dev/video2

# YUYV capture
yavta -f YUYV -s 1280x720 -t 1/5 -c10 -F/tmp/test.yuv /dev/video2
For multi-stream inference with USB cameras, see the Qualcomm IM SDK and the gst-usb-single-camera-app.

Verification

Host Mode

lsusb                              # List connected USB devices
cat /sys/kernel/debug/usb/devices  # Detailed device info
ls /sys/bus/usb/devices/           # USB device tree

Device Mode

cat /sys/kernel/debug/usb/a600000.usb/mode        # Check USB mode
cat /sys/kernel/debug/usb/a600000.usb/link_state  # Check link state
qusb showpid                                       # List compositions

Debugging

Enable USB Tracing

mount -t debugfs none /sys/kernel/debug

# Enable traces
echo 1 > /sys/kernel/debug/tracing/events/dwc3/enable
echo 1 > /sys/kernel/debug/tracing/events/xhci-hcd/enable
echo 1 > /sys/kernel/debug/tracing/events/gadget/enable

cat /sys/kernel/debug/tracing/trace

Collect Register Dumps

mkdir -p /tmp/usb_debug
cat /sys/kernel/debug/usb/a600000.usb/regdump    > /tmp/usb_debug/regdump.txt
cat /sys/kernel/debug/usb/a600000.usb/lsp_dump   > /tmp/usb_debug/lsp_dump.txt
cat /sys/kernel/debug/usb/a600000.usb/mode       > /tmp/usb_debug/mode.txt
cat /sys/kernel/debug/usb/a600000.usb/link_state > /tmp/usb_debug/link_state.txt
dmesg > /tmp/usb_debug/dmesg.txt
lsusb -v > /tmp/usb_debug/lsusb.txt

Troubleshooting

cat /sys/kernel/debug/usb/a600000.usb/mode
cat /sys/kernel/debug/usb/a600000.usb/link_state
dmesg | grep -i usb
  • Rebind gadget: qusb unbind && qusb bind
  • Change composition: qusb setpid <PID>
  • Check cable connection and power rails
lsusb
ls /dev/video*
dmesg | grep -i uvc
lsmod | grep uvcvideo
  • Ensure uvcvideo driver is loaded
  • Try a different USB port
  • Verify camera is UVC-compliant
cat /sys/bus/platform/devices/a600000.usb/power/runtime_status
cat /sys/bus/platform/devices/a600000.usb/power/control
Enable autosuspend:
echo auto > /sys/bus/platform/devices/a600000.usb/power/control
echo 2000 > /sys/bus/platform/devices/a600000.usb/power/autosuspend_delay_ms
Prevent suspend during the switch:
echo on > /sys/bus/platform/devices/a600000.usb/power/control
qusb setpid <PID>
echo auto > /sys/bus/platform/devices/a600000.usb/power/control

Resources