---
name: "cdce"
section: "4"
platform: "linux"
package: "freebsd-manpages"
version: "6.0-5"
release: "Debian 4.0 (Etch)"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/cdce"
---

# cdce(4)

USB Communication Device Class Ethernet driver

## NAME

**cdce** – USB Communication Device Class Ethernet driver

## SYNOPSIS

To compile support for the

**cdce** driver into your kernel, place the following lines in your kernel configuration file:

**device uhci** **device ohci** **device usb** **device cdce**

Alternatively, to load the

**cdce** driver at boot time, place the following line in [loader.conf(5)](/loader.conf/5.md):

```
if_cdce_load="YES"
```

## DESCRIPTION

The **cdce** driver provides support for USB Host-to-Host (aka USB-to-USB) and USB-to-Ethernet bridges based on the USB Communication Device Class (CDC) and Ethernet subclass.

The USB bridge appears as a regular network interface on both sides, transporting Ethernet frames.

For more information on configuring this device, see [ifconfig(8)](/ifconfig/8.md).

USB 1.x bridges support speeds of up to 12Mbps, and USB 2.0 speeds of up to 480Mbps.

Packets are received and transmitted over separate USB bulk transfer endpoints.

The **cdce** driver does not support different media types or options.

## HARDWARE

The following devices are supported by the **cdce** driver:

- Prolific PL-2501 Host-to-Host Bridge Controller

- Sharp Zaurus PDA

- Terayon TJ-715 DOCSIS Cable Modem

## DIAGNOSTICS

- cdce%d: no union descriptor

  The driver could not fetch an interface descriptor from the USB device. For a manually added USB vendor/product, the CDCE\_NO\_UNION flag can be tried to work around the missing descriptor.

- cdce%d: no data interface

  - cdce%d: could not read endpoint descriptor

  - cdce%d: unexpected endpoint

  - cdce%d: could not find data bulk in/out

  For a manually added USB vendor/product, these errors indicate that the bridge is not compatible with the driver.

- cdce%d: watchdog timeout

  A packet was queued for transmission and a transmit command was issued, however the device failed to acknowledge the transmission before a timeout expired.

- cdce%d: no memory for rx list -- packet dropped!

  Memory allocation through MGETHDR or MCLGET failed, the system is running low on mbufs.

- cdce%d: abort/close rx/tx pipe failed

  - cdce%d: rx/tx list init failed

  - cdce%d: open rx/tx pipe failed

  - cdce%d: usb error on rx/tx

  ## SEE ALSO

[arp(4)](/arp/4.md), [intro(4)](/intro/4.md), [netintro(4)](/netintro/4.md), [usb(4)](/usb/4.md), [ifconfig(8)](/ifconfig/8.md) *Universal Serial Bus Class Definitions for Communication Devices*, http://www.usb.org/developers/devclass\_docs/usbcdc11.pdf. *Data sheet Prolific PL-2501 Host-to-Host Bridge/Network Controller*, http://tech.prolific.com.tw/visitor/fcabdl.asp?fid=20679530.

## HISTORY

The **cdce** device driver first appeared in OpenBSD 3.6, NetBSD 3.0 and FreeBSD 6.0.

## AUTHORS

The **cdce** driver was written by Craig Boston ⟨craig@tobuj.gank.org⟩ based on the [aue(4)](/aue/4.md) driver written by Bill Paul ⟨wpaul@windriver.com⟩ and ported to OpenBSD by Daniel Hartmeier ⟨dhartmei@openbsd.org⟩.

## CAVEATS

Many USB devices notoriously fail to report their class and interfaces correctly. Undetected products might work flawlessly when their vendor and product IDs are added to the driver manually.
