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

# if\_ndis(4)

NDIS miniport driver wrapper

## NAME

**ndis** – NDIS miniport driver wrapper

## SYNOPSIS

**options NDISAPI** **device ndis** **device wlan**

## DESCRIPTION

The **ndis** driver is a wrapper designed to allow binary Windows® NDIS miniport network drivers to be used with FreeBSD. The **ndis** driver is provided in source code form and must be combined with the Windows® driver supplied with your network adapter. The **ndis** driver uses the ndisapi(9) kernel subsystem to relocate and link the Windows® binary so that it can be used in conjunction with native code. The ndisapi(9) subsystem provides an interface between the NDIS API and the FreeBSD networking infrastructure. The Windows® driver is essentially fooled into thinking it is running on Windows®. Note that this means the **ndis** driver is only useful on x86 machines.

To build a functional driver, the user must have a copy of the driver distribution media for his or her card. From this distribution, the user must extract two files: the *.SYS* file containing the driver binary code, and its companion *.INF* file, which contains the definitions for driver-specific registry keys and other installation data such as device identifiers. These two files can be converted into a *ndis\_driver\_data.h* file using the ndiscvt(8) utility. This file contains a binary image of the driver plus registry key data. When the **ndis** driver loads, it will create [sysctl(3)](/sysctl/3.md) nodes for each registry key extracted from the *.INF* file.

The **ndis** driver is designed to support mainly Ethernet and wireless network devices with PCI and PCMCIA bus attachments. (Cardbus devices are also supported as a subset of PCI.) It can support many different media types and speeds. One limitation however, is that there is no consistent way to learn if an Ethernet device is operating in full or half duplex mode. The NDIS API allows for a generic means for determining link state and speed, but not the duplex setting. There may be driver-specific registry keys to control the media setting which can be configured via the [sysctl(8)](/sysctl/8.md) command.

## DIAGNOSTICS

- ndis%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.

## SEE ALSO

[arp(4)](/arp/4.md), [netintro(4)](/netintro/4.md), [ng\_ether(4)](/ng_ether/4.md), [ifconfig(8)](/ifconfig/8.md), ndiscvt(8), ndisapi(9) *NDIS 5.1 specification*, http://www.microsoft.com.

## HISTORY

The **ndis** device driver first appeared in FreeBSD 5.3.

## AUTHORS

The **ndis** driver was written by Bill Paul ⟨wpaul@windriver.com⟩.
