Linux Kernel & OS

OpenBSD introduces uncm(4) driver for Android USB tethering

Key Takeaway

The new uncm(4) driver enables OpenBSD to support USB tethering on modern Android devices using the CDC NCM protocol without requiring proprietary firmware blobs.

Summary

OpenBSD has added the uncm(4) driver to support USB network control mode (CDC NCM), a protocol used by most Android devices for USB tethering since Android 6. This driver was contributed by Jan Schreiber and quickly integrated into the main tree. Notably, the driver does not require any firmware blobs, allowing it to be included in the amd64 installer kernel. This enables users to establish network connectivity via an Android phone during the installation process, even on hardware that lacks network firmware.

Technical details of uncm(4)

  • Protocol Support: The driver implements CDC NCM (Communication Device Class Network Control Model), replacing the older urndis(4) method for modern Android tethering.
  • Code Refactoring: To improve modularity, certain definitions and structures were moved from mbim.h to a new usbcdc.h header, preventing unnecessary mobile broadband dependencies for other drivers.
  • Firmware-free Operation: Unlike many wireless or ethernet drivers, uncm(4) operates without requiring external firmware blobs, making it ideal for bootstrap environments.
  • Installer Integration: The driver has been integrated into the amd64 installer kernel for the upcoming OpenBSD 8.0 release.

Why it matters

This development solves a 'catch-22' for OpenBSD users installing the OS on new hardware that requires firmware for network access. By using an Android phone as a firmware-free network bridge, users can complete installations and fetch necessary packages more easily.

Original reference: undeadly.org →