Mac-OS X HoRNDIS



Mac-OS X HoRNDIS ~ Microsoft RNDIS

The USB-tethering driver HoRNDIS for Mac-OS X 10.10 from Joshua Wise is working properly in the first tests expect for one small issue!

  • He accepts USB-RNDIS devices using:

    function class / subclass / protocolvalue
    INTERFACE_CLASS_WIRELESS0xE0
    INTERFACE_SUBCLASS_RF_CONTROL0x01
    INTERFACE_PROTOCOL_RF_RNDIS0x02

    in the interface-association- and in the first interface-descriptor (from usb.org defined class codes)
    as well as the specified Microsoft declaration (Microsoft RNDIS declaration).

    function class / subclass / protocolvalue
    INTERFACE_CLASS_CDC_CONTROL0x02
    INTERFACE_SUBCLASS_CDC_ACM0x02
    INTERFACE_PROTOCOL_VENDOR_SPECIFIC0xff

    The Microsoft declaration is commented in the source code as "those stupid Galaxy S IIs".
    The other RNDIS declarations (from usb.org defined misc class codes):

    function class / subclass / protocolvalue
    INTERFACE_CLASS_MISC0xEF
    INTERFACE_SUBCLASS_MISC_RNDIS0x04
    INTERFACE_PROTCODE_RNDIS_...0x01 ... 0x07

    are not supported.
  • Only the use of the interrupt endpoint is slightly out of focus. This endpoint is to inform the host that the answer to the last EP0-encapsulated-request is ready to be collected in order to liberate the EP0 of interim unnecessary polls.

  • To be noted is in USB devices with alternate configs as "RNDIS / CDC-Ethernet / EEM" that RNDIS is the last choice of the Mac OS X operating system.

    From the implementation, Linux can learn something :-) !

    Stand 07/2015