Skip to main content
  • Products
  • Evaluate our Software
  • Downloads
  • Free Utilities
  • Purchase
  • Support
  • About Us
  • Blog
  • Forum
  • Search
    • Contact Us
    • Forum
    • Wiki
    • Web Shop
    • Newsletter
    • RSS
  •   Jobs
  •   Videos
  •   Blog
  •   Sustainability
  • emUSB-Device
  • RNDIS Class
  • Technology
  • Add-Ons
SEGGER emUSB-Device product-icon

emUSB-Device Add-Ons – RNDIS Class

emUSB-Device RNDIS allows a USB device to act as a virtual network adapter. This can be used to run any TCP/IP based application via USB. The most noteworthy application is a USB based webserver.

  • Makes any TCP/IP application available via USB
  • No host driver needed for Windows & Linux
  • Small footprint
  1. 1.Typical Applications
  2. 2.Application Samples emUSB-Device RNDIS
  3. 3.USB based webserver
  4. 4.IP Addresses
  5. 5.Components
ethernet 2 usb

Typical Applications

  • Router/gateway
  • USB2Ethernet Adapter
  • Configuring a USB device via web browser

Application Samples emUSB-Device RNDIS

USB 2 Ethernet Adapter

USB to Ethernet Adapter

Router

Router/Gateway

USB based webserver

The most noteworthy application is a USB based webserver. The USB webserver allows users to configure their device and to view data using a webbrowser. This saves development costs as there is no need to develop an application for every major operating system which would allow the user to interact with the USB device. The hardware costs can also be reduced as an Ethernet interface is not required.

IP Addresses

The RNDIS device requires two IP addresses. One IP address is used for the RNDIS virtual network interface, the second one for the actual device. IP addresses are defined by configuration. The default configuration uses 10.0.0.10 for the virtual host running the servers and 10.0.0.11 for the RNDIS virtual network interface.

RNDIS NetworkConnections

An emUSB-RNDIS device connected to a PC running the Windows operating system is listed as a separate network interface in the "Network Connections" window as shown in this screenshot.

RNDIS Ping

The ping command line utility can be used to test the connection to target as shown below. If the connection is correctly established the number of the lost packets should be 0.

RNDIS NetworkConnections Ubuntu scaled

Screenshot of the popular Linux distribution Ubuntu.

RNDIS Network Connections OSX scaled

emUSB-RNDIS being used on macOS.

RNDIS Webserver Screen Window scaled

Browser page opened via emUSB-RNDIS

Components

emUSB-Device RNDIS comes as a whole package and contains the following components:

  • RNDIS device class implementation
  • Network interface driver which uses emNet as a TCP/IP stack
  • A sample application demonstrating how to work with RNDIS

The Remote Network Driver Interface Specification (RNDIS) is a USB class protocol created by Microsoft. A TCP/IP stack like emNet is required on the USB device side to handle the actual IP communication. Any available IP protocol (UDP, TPC, FTP, HTTP, etc.) can be used to exchange data.

USB RNDIS is supported by all Windows operating systems starting with Windows XP, as well as by Linux with kernel versions newer than 2.6.34. An .inf file is required for the installation on Microsoft Windows systems older than Windows 7. The emUSB-Device RNDIS package includes .inf files for Windows versions older than Windows 7, newer versions are supported out-of-the-box. With macOS a third-party driver can be used to get RNDIS to work. The driver can be downloaded from here. Because this is a third-party driver we can not guarantee correct functionality of the HoRNDIS driver.

One Bulk IN, one Bulk OUT and one Interrupt IN endpoint are required for emUSB-Device RNDIS.

emUSB-Device RNDIS can be used in combination with other interfaces (Bulk, CDC, MSD, MTP, HID) without any issues.

On a typical Cortex-M CPU running at 120MHz a transfer speed of about 5 MB/s can be achieved when using a high-speed USB connection.

Components required to use RNDIS class:

  • emUSB RNDIS
  • emUSB-Device core
  • emUSB target driver
  • emNet (IP stack)

Resource usage

emUSB Device rndis class structure graph

More Information

Purchase

  • Pricing

Technology

  • Combining Interfaces/Addons
  • Samples
  • Drivers
  • Performance
  • Resource usage
  • WebUSB

Add-Ons

  • Audio
  • Bulk Component
  • CDC Class
  • CDC-ECM Class
  • CDC-NCM Class
  • DFU Class
  • HID Class
  • IP-over-USB
  • MSD Class
  • MTP Class
  • Printer Class
  • RNDIS Class
  • Video
  • VirtualMSD Component
  • CCID
  • MIDI

About us

  • The Company
  • Partners
  • Job Offers
  • Media
  • Contact us

Support

  • Technical Support
  • Blog
  • Forum
  • Wiki

Downloads

  • Application Notes
  • Embedded Studio
  • embOS
  • emCompress
  • emCrypt
  • emFile
  • emLib
  • emLoad
  • emModbus
  • emNet
  • emPower
  • emSecure
  • emSSH
  • emSSL
  • emUSB-Device
  • emUSB-Host
  • emVNC
  • emWin
  • Flasher
  • Free Utilities
  • IoT
  • J-Link / J-Trace
  • Linux Studio
  • SystemView
  • CE / REACH

Social Media

Headquarters

SEGGER Microcontroller GmbH

Ecolab-Allee 5
40789 Monheim am Rhein, Germany
info@segger.com
Tel.: +49-2173-99312-0
Fax: +49-2173-99312-28

Locations

USA: SEGGER Microcontroller Systems LLC

Boston area
101 Suffolk Lane
Gardner, MA 01440, USA
us-east@segger.com
Tel.: +1-978-874-0299
Fax: +1-978-874-0599

Silicon Valley
Milpitas, CA 95035, USA
us-west@segger.com
Tel.: +1-408-767-4068

China: SEGGER Microcontroller China Co., Ltd.

Room 218, Block A, Dahongqiaoguoji
No. 133 Xiulian Road
Minhang District, Shanghai 201199, China
china@segger.com
Tel.: +86-133-619-907-60

ISO 9001 certified

ISO 9001

30+ years of experience

First-class embedded software tools since 1992
  • Imprint
  • Disclaimer
  • Privacy Policy

© 2023 SEGGER - All rights reserved.