This repository contains the STM32 embedded firmware demonstration of a virtual network with a single lwIP server (DNS, DHCP, HTTP) presented on the USB network adapter interface. It's meant to be a starting point for IP over USB applications (using CDC-NCM protocol) and a low-cost IP stack development platform.
There are two possible supported software configurations:
- A bare-metal implementation using the lwIP native API.
- An RTOS implementation using FreeRTOS and the lwIP netconn API.
- Build and flash the image on an STM32F4DISCOVERY or a 32L476GDISCOVERY (easily portable to other STM32 targets)
- Connect to PC via USB
- Fix any driver issues, see below
- Go to http://www.lwip.home
- Using NCM implementation of USBDevice (double-buffered, efficient, simple API)
- lwIP 2.1.0 with additional dummy DHCP server for out of the box operation
- DNS server implementation allows domain name based access
- Reprogramming via USB supported by DFU interface (DFU standard implementation to reboot to ROM)
- FreeRTOS variant allows the choice of any lwIP APIs to be used by the application
Even though NCM is a standardized USB protocol (unlike RNDIS), and the necessary driver is already included by Microsoft, Windows doesn't bind the appropriate driver to it automatically. Here's a step by step guide to install the correct driver:
- Find the NCM interface device in Device Manager under "Other devices" (it goes under the name "LwIP gateway"
- Browse the computer for driver software
- Pick from available driver list
- Select "Network adapters" as device type
- Select "MSFT" manufacturer (it's code for Microsoft), "UsbNcm Host Device" model
- Profit
In case you also want to use the bootloader functionality, you have to perform these steps for the "STM32 BOOTLOADER" device as well. The parameters are:
- Device type = Universal Serial Bus devices
- Manufacturer = STMicroelectronics
- Model = STM32 BOOTLOADER