devnp-ecmplus.so

Driver for the CDC ECM/RMNET USB Ethernet control module

Syntax:

io-pkt-variant -d ecmplus ... &

where variant is one of v4, v4-hc, or v6-hc.

Runs on:

QNX Neutrino

Targets:

x86

Options:

busnum=num
Attach to a specific device on the USB bus with the given number.
classid=num
Attach to the specific class ID with the given value in hexadecimal. This is to support drivers that don't use the Communication class. You should also specify the subclassid option.
ctrlbufsz=num
Set the buffer size for control transfers (default 1024).
ctrlrxurb=num
Set the URB number for control transfers (default 64).
devnum=num
Attach to a specific USB device address.
ign_remove
Ignore the USB removal callback; the user should handle device removal.
intf=num
Set the minimum scan interface.
path=name
Connect to the specified USB stack. The default is /dev/io-usb/io-usb.
pnp
Keep the driver loaded across device insertion and removal.
Note: When you use the pnp option, the DLL remains loaded and connected to the USB stack. Ethernet interfaces are created as devices are inserted. If you use ifconfig ecmX destroy to remove the last interface, the DLL is unloaded. This means that the driver currently doesn't support being removed and inserted again.
receive=N
The number of receive URBs; the default is 64.
subclassid=num
Attach to the specific subclass ID with the given value, in hexadecimal. This is to support drivers that don't use the ECM subclass. You should also specify the classid option.
transmit=N
The number of transmit URBs; the default is 64.
verbose
Be verbose. The output goes to slogger; invoke sloginfo to view it.
wait=num
Wait num seconds for the USB stack (default 60 seconds).

Description:

The devnp-ecmplus.so driver manages the CDC ECM USB Ethernet control module. This is a native io-pkt driver; its interface names are in the form ecmX, where X is an integer.

Launcher applications that get notifications of device insertions and removals can use the busnum and devnum options. These applications mount the DLL to target specific devices connected to the USB. When the device is removed, it is expected that the launcher will also unmount the interface associated with interface. For io-pkt* drivers, you can't use umount to unload the DLL, but you can use ifconfig's destroy command to unload DLL.

The driver provides an additional interface serecmX under /dev for AT commands or vendor-specific commands, such as Qualcomm QMI messages. You can send commands and receive responses through this interface.

Note: For RMNET devices, you should specify the classid and subclassid options.

Some devices support hardware checksums, although some might do so in only one direction; to determine if your device does, type:

ifconfig ecmX

and look for the following in the list of supported options:

You can then use ifconfig to enable or disable whichever of these options your device supports.

Note: Native io-pkt and ported NetBSD drivers don't put entries into the /dev/io-net namespace, so a waitfor command for such an entry won't work properly in buildfiles or scripts. Use if_up -p instead; for example, instead of waitfor /dev/io-net/ecm0, use if_up -p ecm0.

Examples:

Start the v4 TCP/IP variant of io-pkt using the devnp-ecmplus.so driver:

io-pkt-v4-hc -d ecmplus verbose -ptcpip &
ifconfig ecm0 10.184

Unload the DLL:

ifconfig ecm0 down
ifconfig ecm0 destroy