nuttx/boards/arm/sama5/sama5d3-xplained/helpers/netusb-up.sh

36 lines
1011 B
Bash
Raw Normal View History

CDC ECM Ethernet over USB High Speed for SAMA5D36-Xplained #68 Author: Alan Carvalho de Assis <acassis@gmail.com> Run nxstyle against .c .h files and fix it Author: Adam Feuer <adam@starcat.io> Summary Adds CDC ECM Ethernet over USB High Speed for SAMA5D36-Xplained (and maybe other boards) (most of the code was there already, but didn't work out of the box for the SAMA5D36-Xplained) Only SAMA5D36-Xplained has been tested so far Impact None if you don't use the CDC ECM Ethernet driver On SAMA5D36-Xplained, this adds high-speed Internet connectivity over USB 2.0 High Speed. via the USB CDC ECM Gadget driver. It may work on other boards too. This also fixed full-speed (low-speed) mode for the board too. Limitations Hasn't been tested on anything other than SAMA5D36-Xplained board. TODO Ideally this would include a composite RNDIS device so it would also work seamlessly on Windows. That is for a future PR Ideally this would include software to help configuration via mDNS/DNS-SD for plug and play compatibility with Linux and macOS. That is for a future PR. Detail Only a few lines of C driver code needed to be changed, since the capability was there already. The rest is config and documentation. Changes the SAMA5D3-Xplained board bringup to match the SAMA5D3-EK board bringup A helper script to configure Linux routing and iptables NAT is also provided, along with documentation on how to use it. Testing Manual, on a Ubuntu Linux 19.10 system and MacOS 10.14.6 Mojave MacBook Pro. How To Verify Follow the new CDC ECM Ethernet over USB instructions in the board README.txt file Commits: remove non-UTF-8 chars in comment and reformat removed unneeded comment markers instructions for using the defconfigs removed EMAC from config - to prove this example only needs the CDC ECM Ethernet over USB to work added CDC-ECM Ethernet over USB info to README added U-Boot image added netusb helper script - this can configure the Linux network interface and routes so you can ping or access the NuttX system via TCP/IP. renamed defconfig dirs to be ethernet-over-usb - was usb-over-ethernet which is not right added USB DMA to defconfigs updated readme with autoboot and debugging info bringing ethernet-over-usb examples into parity added cdc ecm ethernet over usb with telnetd config added defconfig only use phy interrupt if netdevices is ethernet - because now netdevice could be CDC ECM ethernet over usb which has no PHY interrupt add bringup to Makefile add bringup app init cleanup init cdc ecm driver and rndis driver; some cleanup fixed some typos and odd characters usb over ethernet working over usb 2.0 hs
2020-01-10 11:13:37 +01:00
#!/bin/bash
set -x
# This script can be used to set up the USB Ethernet Gadget interfaces
# on Linux. Tested on Ubuntu 19.10, kernel 5.3.0-24-generic
CDC ECM Ethernet over USB High Speed for SAMA5D36-Xplained #68 Author: Alan Carvalho de Assis <acassis@gmail.com> Run nxstyle against .c .h files and fix it Author: Adam Feuer <adam@starcat.io> Summary Adds CDC ECM Ethernet over USB High Speed for SAMA5D36-Xplained (and maybe other boards) (most of the code was there already, but didn't work out of the box for the SAMA5D36-Xplained) Only SAMA5D36-Xplained has been tested so far Impact None if you don't use the CDC ECM Ethernet driver On SAMA5D36-Xplained, this adds high-speed Internet connectivity over USB 2.0 High Speed. via the USB CDC ECM Gadget driver. It may work on other boards too. This also fixed full-speed (low-speed) mode for the board too. Limitations Hasn't been tested on anything other than SAMA5D36-Xplained board. TODO Ideally this would include a composite RNDIS device so it would also work seamlessly on Windows. That is for a future PR Ideally this would include software to help configuration via mDNS/DNS-SD for plug and play compatibility with Linux and macOS. That is for a future PR. Detail Only a few lines of C driver code needed to be changed, since the capability was there already. The rest is config and documentation. Changes the SAMA5D3-Xplained board bringup to match the SAMA5D3-EK board bringup A helper script to configure Linux routing and iptables NAT is also provided, along with documentation on how to use it. Testing Manual, on a Ubuntu Linux 19.10 system and MacOS 10.14.6 Mojave MacBook Pro. How To Verify Follow the new CDC ECM Ethernet over USB instructions in the board README.txt file Commits: remove non-UTF-8 chars in comment and reformat removed unneeded comment markers instructions for using the defconfigs removed EMAC from config - to prove this example only needs the CDC ECM Ethernet over USB to work added CDC-ECM Ethernet over USB info to README added U-Boot image added netusb helper script - this can configure the Linux network interface and routes so you can ping or access the NuttX system via TCP/IP. renamed defconfig dirs to be ethernet-over-usb - was usb-over-ethernet which is not right added USB DMA to defconfigs updated readme with autoboot and debugging info bringing ethernet-over-usb examples into parity added cdc ecm ethernet over usb with telnetd config added defconfig only use phy interrupt if netdevices is ethernet - because now netdevice could be CDC ECM ethernet over usb which has no PHY interrupt add bringup to Makefile add bringup app init cleanup init cdc ecm driver and rndis driver; some cleanup fixed some typos and odd characters usb over ethernet working over usb 2.0 hs
2020-01-10 11:13:37 +01:00
# USB Ethernet Gadget interface
IF_USB=ens35u2
# external interface
IF_HOST=ens33
IP_NET="10.0.0.0/24"
IP_NETMASK="255.255.255.0"
IP_BROADCAST="10.0.0.255"
IP_HOST="10.0.0.1"
IP_NUTTX="10.0.0.2"
sudo ifconfig $IF_USB up
ifconfig -a
sudo ifconfig $IF_USB add $IP_HOST
sudo ifconfig $IF_USB:0 broadcast $IP_BROADCAST netmask $IP_NETMASK
sudo ip route delete $IP_NET
ip route add $IP_NET dev $IF_USB src $IP_HOST
sudo ip route add $IP_NET dev $IF_USB src $IP_HOST
sudo ip route add $IP_NUTTX/32 dev ens35u2 src $IP_HOST
# nat to allow NuttX to access the internet
sudo iptables -t nat -A POSTROUTING -o $IF_HOST -j MASQUERADE
sudo iptables -A FORWARD -i $IF_HOST -o $IF_USB -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $IF_USB -o $IF_HOST -j ACCEPT
ip route show
# pinging the nuttx system should work now
#ping -c 1 $IP_NUTTX