#15696·librealsense

[Bug] [macOS 27] Kernel panic in IOUSBHostFamily during D435i firmware update / USB re-enumeration

Author: MengyangGaoCreated Sep 19, 2026Updated Sep 19, 2026
Labelsbug

Camera Model

D435i

LibRealSense SDK Version

2.58.1

Firmware Version

5.17.3.10

Operating System

MacOS

Kernel Version (Linux Only)

No response

MIPI Driver Version (NVIDIA Jetson Only)

No response

Platform

Other ARM (specify in description)

Connection Type

USB3

Language

C++

Application Segment

Robotics

Issue Description

I encountered a macOS kernel panic while updating the firmware of a RealSense D435i using rs-fw-update.

Environment:

  • macOS 27.0 (26A428)
  • Apple M4 Pro
  • librealsense 2.58.1
  • Homebrew libusb 1.0.30
  • FORCE_RSUSB_BACKEND=ON
  • USB 3.2 direct connection

I updated the D435i firmware from 5.12.7.150 to 5.17.3.10 using rs-fw-update.

The firmware update reached 100%, and the tool then waited for the camera to reconnect. During the USB disconnect / re-enumeration stage, macOS kernel-panicked and rebooted.

The panic report contains:

panic(...): Kernel data abort

Kernel Extensions in backtrace: com.apple.iokit.IOUSBHostFamily(1.2)

After reboot, the firmware update had completed successfully. The camera currently enumerates normally:

Firmware Version: 5.17.3.10 USB Type Descriptor: 3.2

librealsense was built with FORCE_RSUSB_BACKEND=ON and is dynamically linked against Homebrew libusb 1.0.30:

/opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib

I also sometimes see the following message after rs-fw-update -l / rs-enumerate-devices exits:

Dispatcher exception caught: mutex lock failed: Invalid argument

Possibly related issues:

  • librealsense #14648
  • libusb/libusb #1762

I have not intentionally attempted to reproduce the firmware-update kernel panic again because repeatedly flashing firmware solely to reproduce a kernel panic carries unnecessary risk.

I can provide a sanitized full kernel panic log if needed.

Steps to Reproduce

I have not intentionally reproduced the issue again because repeatedly flashing firmware solely to reproduce a kernel panic carries unnecessary risk.

  1. Connect a RealSense D435i directly to an Apple Silicon Mac over USB 3.x.

  2. Build librealsense 2.58.1 on macOS with: FORCE_RSUSB_BACKEND=ON BUILD_TOOLS=ON

  3. Confirm the camera is detected normally: rs-enumerate-devices

  4. Start a firmware update from 5.12.7.150 to 5.17.3.10 using: sudo ./Release/rs-fw-update
    -s <camera_serial>
    -f Signed_Image_UVC_5_17_3_10.bin

  5. Wait for the firmware update to reach 100%.

  6. After the update completes, rs-fw-update waits for the camera to disconnect/reboot and reconnect.

  7. During this USB re-enumeration/reconnect stage, macOS kernel-panics and reboots.

  8. After reboot, reconnect/check the camera. In my case, the firmware update had actually completed successfully and the D435i reported: Firmware Version: 5.17.3.10 USB Type Descriptor: 3.2

Expected Behavior

No response

Actual Behavior

No response

Relevant Log Output

bash

Additional Context

No response

Source: realsenseai/librealsense