Our database contains 1 drivers for Android USB Ethernet/RNDIS. For uploading the necessary driver, select it from the list and click on ‘Download’ button. Please, assure yourself in the compatibility of the selected driver with your current OS just to guarantee its correct and efficient work.
RNDIS is short for “Remote Network Driver Interface Specification”. It is a Microsoft proprietary protocol, which is often used on top of USB. As a protocol, RNDIS provides a virtual Ethernet link to most versions of the Windows, Linux, Android and FreeBSD operating systems. Put in the RNDIS driver into the modbros image so that this process will be very simple. @Seraksab.5: Both of these have the problem of dealing with “Network profile” not being able to be set for the network the Pi makes (when using RNDIS, USB Ethernet of course). The package provides the installation files for ACER USB Ethernet / RNDIS Driver version 1.0.10.0. In order to manually update your driver, follow the steps below (the next steps). Samsung Mobile USB Gadget Serial Driver driver in. USB Ethernet/RNDIS Gadget Remote Network Driver Interface Specification RNDIS is a Microsoft proprietary protocol used mostly on top of USB.
Drivers List for Android USB Ethernet/RNDISPages: 1 |
Pages: 1
In this post I’ll document the RNDIS control message sequence between the USB RNDIS gadget driver and the device.
For those who are not familiar with RNDIS I refer you to Microsoft’s RNDIS page or the downloadable spec. In particular, you’ll need to become familiar with how RNDIS is mapped to USB. You’ll also need to have good familiarity with the USB.
This list summarizes the mapping
- USB Device
- Interface #0
- Endpoint #0 - Control endpoint, id 0x80 (IN) or 0x00 (OUT)
- Endpoint #1 - Interrupt transfer, id 0x81 (IN)
- Interface #1
- Endpoint #3 - Bulk data transfer, id 0x03 (OUT)
- Endpoint #2 - Bulk data transfer, id 0x82 (IN)
- Interface #0
The above can be reproduced quite easily using the lsusb -v
command in Linux.
Usb Ethernet/rndis Gadget Driver
Armed with that information I used Wireshark to sniff the USB bus. The USB capture is usually very verbose, I used the filter usb.data_flag 'present (0)'
to get to the relevant packets.
Here’s the sequence of control messages that establish RNDIS communication. The first four bytes in the hex stream is the message id, in little endian order.
The REMOTE_NDIS_INITIALIZE_MSG
sent by the driver, over EP 0x00
The REMOTE_NDIS_INITIALIZE_CMPLT
message sent by the device, over EP 0x80
A REMOTE_NDIS_QUERY_MSG
message sent by the driver over EP 0x00. The OID is 0x00010202 (no official documentation)
The REMOTE_NDIS_QUERY_CMPLT
message sent by device as a reply, over EP 0x80
Status is RNDIS_STATUS_NOT_SUPPORTED
.
The REMOTE_NDIS_QUERY_MSG
message sent by the driver to discover the MAC address, over EP 0x00
The OID queried is OID_802_3_PERMANENT_ADDRESS
.
The REMOTE_NDIS_QUERY_CMPLT
message sent by device with the MAC address, over EP 0x80
Query status is RNDIS_STATUS_SUCCESS
.
The REMOTE_NDIS_SET_MSG
message send by the driver, over EP 0x00
The OID being set is OID_GEN_CURRENT_PACKET_FILTER
, with the value NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_BROADCAST | NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_DIRECTED
.
The REMOTE_NDIS_SET_CMPLT
message sent by the device in reply, over EP 0x80
Linux Usb Ethernet/rndis Gadget Drivers
After the control message sequence is completed with success, rest of the communication is done using the REMOTE_NDIS_PACKET_MSG
message (0x00000001) over the bulk transfer endpoints.