Using USB ethernet gadget to communicate

From IGEP - ISEE Wiki

Revision as of 16:11, 27 August 2012 by Pau (talk | contribs) (Windows XP)

Jump to: navigation, search
Information.jpg In this guide is used IGEP firmware Yocto

Overview

The Linux kernel has a class of drivers called USB Gadgets that allow you to use USB as a transport for a number of different protocols like serial, virtual file systems and Ethernet devices.

The USB OTG connector supports using the Ethernet Gadget to create a networking device over USB. From the client's (and host's) perspective this driver simply appears as another Ethernet device, enabling us to have Ethernet access on the board by hooking them up to a desktop, so this USB slave device can communicate with a properly configured USB host.

Requirements

There are some requisites to follow this guide:

  • IGEP Processor Board
  • Host PC

Connect to IGEP device

Linux

NOTE: You should have the usbnet module available for your Linux kernel. On most distributions, this is the case by default. If this is not the case for your distribution, you will need to enable USB networking support in the kernel. If you build your own kernel then you want 'CDC Ethernet support' in USB Network adaptors. IGEP SDK Virtual Machine has this module enabled.

  • In the file /etc/network/interfaces, you should add:
iface usb0 inet dhcp
  • Plug an USB Type-A to USB Type-A mini cable between your host PC and the USB OTG from IGEP device. Use a powered USB Hub if you use IGEP COM MODULE or PROTON Board.
  • If you use IGEP SDK VM you need to attach the removable device RNDIS driver.
  • Type in a terminal:
sudo ifup usb0
  • Revise that:
jdoe@ubuntu ~ $ ifconfig
...
usb0      Link encap:Ethernet  HWaddr 66:cc:f2:be:51:b6  
          inet addr:192.168.7.10  Bcast:192.168.7.255  Mask:255.255.255.0
          inet6 addr: fe80::64cc:f2ff:febe:51b6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2496 (2.4 KB)  TX bytes:8794 (8.7 KB)
...
  • Connect to IGEP device
jdoe@ubuntu ~ $ ssh root@192.168.7.1
The authenticity of host '192.168.7.1 (192.168.7.1)' can't be established.
ECDSA key fingerprint is 80:be:2d:b6:fe:b1:09:c3:3b:ac:0f:1d:f2:43:f2:20.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.7.1' (ECDSA) to the list of known hosts.
root@igep00x0:~# uname -a
Linux igep00x0 2.6.37 #1 Thu Jul 19 09:07:47 CEST 2012 armv7l GNU/Linux
root@igep00x0:~# 

Troubleshooting

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

In the case of the SSH client in Linux, a changed host key results in the client refusing to connect and showing an remote host identification has changed error

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
8d:0b:29:f0:0a:a1:f5:56:0c:12:18:b0:26:02:6d:9d.
Please contact your system administrator.
Add correct host key in /home/eballetbo/.ssh/known_hosts to get rid of this message.
Offending key in /home/eballetbo/.ssh/known_hosts:57
RSA host key for 192.168.7.1 has changed and you have requested strict checking.

To fix the problem edit your ~/.ssh/known_hosts and remove the line corresponding to this host. 

NFS in root filesystem

Don't use NFS in root filesystem combined with USB Ethernet Gadget

Windows and MAC OSX

You should use IGEP SDK Virtual Machine to develop under IGEP Technology, but you can use these alternatives too:

Windows 7

Windows XP

1. During the first seconds the module is recognized as OMAP3430. Avoid the installation of this device and wait until RNDIS/Ethernet gadget is detected by the operating system.

2. The following driver INF file from the Gumstix Project works under Windows XP. http://www.davehylands.com/linux/gumstix/usbnet/linux.inf

3. In Control Panel/Network Connections and after driver installation set up the TCP/IP properties of the Local Network Connection (Linux USB Ethernet/RNDIS Gadget) as follow:

IP address 192.168.7.1

Netmask 255.255.255.0

Gateway 192.168.7.1 

4. Use PuTTy to connect via SSH (192.168.7.2)

Thanks to Iñigo Lazkanotegi from Tecnalia (Donostia - San Sebastián) for this contribution.

See also