Difference between revisions of "Using USB ethernet gadget to communicate"

From IGEP - ISEE Wiki

Jump to: navigation, search
m
Line 1: Line 1:
= Connect using USB Ethernet Gadget/RNDIS driver =
+
== Overview ==
  
The Linux kernel has a class of drivers called USB Gadgets (http://www.linux-usb.org/gadget/) that allow you to use USB as a transport for a number of different protocols like serial, virtual file systems, and Ethernet devices.  
+
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.
+
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.  
  
Following article explains how to get the Ethernet over USB connection working in different Operating Systems
+
== Requirements  ==
  
= Linux Host USB Network Configuration  =
+
There are some requisites to follow this guide:
  
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 Processor Board
 +
*Host PC
  
== Ubuntu 10.04 LTS Lucid Lynx  ==
+
{{Message/Information Message|title=|message= In this guide is used [[ IGEP firmware Yocto ]]}}
  
In the file /etc/network/interfaces, you should add a section which looks like this:
+
== Connect to IGEP device<br>  ==
  
  auto usb0
+
=== Linux ===
iface usb0 inet static
 
  address 192.168.7.1
 
  network 192.168.7.0
 
  netmask 255.255.255.0
 
  broadcast 192.168.7.255
 
  gateway 192.168.7.1
 
  
Connect to the board using ssh
+
'''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.
  
  ssh -l root 192.168.7.2
+
*In the file /etc/network/interfaces, you should add:
   
+
<pre>iface usb0 inet dhcp</pre>
  The authenticity of host '192.168.7.2 (192.168.7.2)' can't be established.
+
*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.
  RSA key fingerprint is 9d:0e:ba:02:2a:76:e4:5f:d1:c1:9b:2d:85:6c:83:d4.
+
*If you use IGEP&nbsp;SDK&nbsp;VM you need to attach the [http://labs.isee.biz/index.php/IGEP_SDK_Virtual_Machine#Attach_removable_devices_to_Virtual_Machine removable device] RNDIS driver.
 +
*Type in a terminal:
 +
<pre>sudo ifup usb0</pre>
 +
*Revise that:
 +
<pre>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)
 +
...</pre>
 +
*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
 
  Are you sure you want to continue connecting (yes/no)? yes
  Warning: Permanently added '192.168.7.2' (RSA) to the list of known hosts.
+
  Warning: Permanently added '192.168.7.1' (ECDSA) to the list of known hosts.
  root@192.168.7.2's password: [enter] (no password)
+
  root@igep00x0:~# uname -a
  root@igep0030:~#
+
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.&nbsp;
 +
 
 +
===== NFS in root filesystem  =====
 +
 
 +
Don't use NFS in root filesystem combined with USB Ethernet Gadget
 +
 
 +
=== Windows and MAC OSX<br>  ===
  
= Windows Host USB Network Configuration  =
+
You should use [[IGEP SDK Virtual Machine|IGEP&nbsp;SDK&nbsp;Virtual Machine]] to develop under IGEP&nbsp;Technology, but you can use these alternatives too:
  
== Windows 7  ==
+
==== Windows 7  ====
  
 
*http://robosavvy.com/forum/viewtopic.php?p=28788
 
*http://robosavvy.com/forum/viewtopic.php?p=28788
  
== Windows XP  ==
+
==== 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.  
 
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.  
Line 55: Line 97:
  
 
'''''Thanks to Iñigo Lazkanotegi from Tecnalia (Donostia - San Sebastián) for this contribution.'''''
 
'''''Thanks to Iñigo Lazkanotegi from Tecnalia (Donostia - San Sebastián) for this contribution.'''''
 
== Mac OS X Host USB Network Configuration  ==
 
 
Please contribute ...
 
 
= 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.2 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.&nbsp;
 
 
= See also =
 
*[[Using SSH to communicate]]
 
*[[Using serial debug port to communicate]]
 
*[[Using IGEP WLAN to communicate]]
 
*[[IGEP_module_standalone]]
 
 
[[Category:USB]]
 
[[Category:How to forge]]
 

Revision as of 16:02, 27 August 2012

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
Information.jpg In this guide is used IGEP firmware Yocto

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.