urndis of Open/Free BSD



Open/Free BSD urndis ≠ Microsoft RNDIS

BSD writes:
The urndis driver provides Ethernet access over Remote NDIS (RNDIS), allowing mobile devices such as phones and tablets to provide network access. It is often referred to as USB tethering, and in most cases must be explicitly enabled on the device.
urndis should work with any USB RNDIS devices, such as those commonly found on Android devices. It does not support different media types or options. For more information on configuring this device, see ifconfig(8).


But after some tests... Open/Free BSD urndis is not equal to Microsoft RNDIS !

commandfrom Microsoft RNDIS spec. (param/description)Open/Free BSD
REMOTE_NDIS_INITIALIZE_MSGThis message MUST be sent by the host to initialize the device.But this is not send by Open/Free BSD !
REMOTE_NDIS_QUERY_MSGRequestID (4 bytes):
A 32-bit integer value, generated by the host, used to match the host's sent request to the response from the device.
But this is alltimes 0 by Open/Free BSD (ok - it's not mandatory...)
InformationBufferLength (4 bytes):
The length, in bytes, of the input data required for the OID query. This MUST be set to 0 when there is no input data associated with the OID.
But this is never set to more than 0 by Open/Free BSD if data are requested or not !
REMOTE_NDIS_..._CMPL responseany not malformed response is to accept and to analyseon any unexpected ..._CMPL response (like error-status instead of data) the Open/Free BSD does not close the class-specific EP0 control-transfer with the status stage !
More tests are not possible with a clean Microsoft RNDIS compatible USB-device...



I hope I can make a real test with Linux and MAC-OS soon.

And here a correct RNDIS start-up USB-trace part (big screen-shot).

Stand 05/2015