Skip to main content

Set up the working environment

USBnet setup

We have enabled RNDIS and DHCP on the system by default in order to use USB network.


  1. Connect the Duo to the computer via Type-C cable

  2. The "RNDIS" device appear in the Device Manager


  1. Select "RNDIS" and right click to update the driver


  1. Select "Browse my computer for drivers"


  1. Select "Let me pick from a list of available drivers on my computer"


  1. Select "Network adapters"


  1. Manufacturer/Model: Microsoft/USB RNDIS Adapter


  1. Ignore warning message and click "Yes"


  1. Driver update successful


  1. Check "USB RNDIS Adapter"


  1. Find the IP and test the network using ping



In general, Linux can use RNDIS without configuration.

You can use command ip to check the usb0 network.

neko@milk-v:~ sudo dmesg | grep usb0
[1055270.386719] rndis_host 1-2.1:1.0 usb0: register 'rndis_host' at usb-0000:00:14.0-2.1, RNDIS device, aa:53:5d:bb:7f:28
[1055270.423753] rndis_host 1-2.1:1.0 enxaa535dbb7f28: renamed from usb0
neko@milk-v:~ ip addr show enxaa535dbb7f28
15: enxaa535dbb7f28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 42:a2:79:19:7f:e3 brd ff:ff:ff:ff:ff:ff
inet brd scope global dynamic noprefixroute enp0s20f0u1
valid_lft 3569sec preferred_lft 3569sec
inet6 fe80::3c92:ed74:3475:cb9c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
neko@milk-v:~ ping -c 5
PING ( 56(84) bytes of data.
64 bytes from icmp_seq=1 ttl=64 time=0.334 ms
64 bytes from icmp_seq=2 ttl=64 time=0.287 ms
64 bytes from icmp_seq=3 ttl=64 time=0.275 ms
64 bytes from icmp_seq=4 ttl=64 time=0.287 ms
64 bytes from icmp_seq=5 ttl=64 time=0.266 ms

--- ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4096ms
rtt min/avg/max/mdev = 0.266/0.289/0.334/0.031 ms


There is no official driver for RNDIS. We need to install HoRNDIS.

  1. Download HoRNDIS driver
  1. Disable System Integrity Protection

    a. Enter macOS recovery

    Please refer macOS User Guide -> Recovery to enter recovery mode.

    b. Open the terminal and type the following command

     csrutil disable

    csrutil enable --without kext

    c. Restart the Mac

  2. Install the Kext extension in the zip pack

  3. Check the network settings


  1. Open the terminal, type ssh [email protected], and answer yes


  1. Enter the password milkv

    (The password will not be displayed on the screen)


  1. Login successful


Modify the IP address of RNDIS

The default IP address of USB network RNDIS is If you need to modify this address, for example, when the same computer is connected to multiple Duo devices, the RNDIS IP of each Duo needs to be set to a different one. This can be achieved by modifying the following two files in the Duo device:


/etc/ device >> /tmp/rndis.log 2>&1
/etc/ probe rndis >> /tmp/rndis.log 2>&1
/etc/ start rndis >> /tmp/rndis.log 2>&1

sleep 0.5
ifconfig usb0

count=`ps | grep dnsmasq | grep -v grep | wc -l`
if [ ${count} -lt 1 ] ;then
echo "/etc/init.d/S80dnsmasq start" >> /tmp/rndis.log 2>&1
/etc/init.d/S80dnsmasq start >> /tmp/rndis.log 2>&1

Serial Console

USB to TTL serial cable

Each pin of a USB-to-TTL cable is defined as follows:



Connect USB to TTL serial cable as shown below. Do not connect the red wire.

Milk-V Duo<--->USB to TTL
TX (pin 16)<--->White wire
RX (pin 17)<--->Green wire
GND (pin 18)<--->Black wire


The default serial setting for Duo u-boot and kernel console is:

baudrate: 115200
data bit: 8
stop bit: 1
parity : none
flow control: none
  • carbonfix
  • u0076
  • hokamilkv
  • milkrisc-v
  • logan-milkv