Difference between revisions of "EBC Exercise 02 Out-of-the-Box, Bone"

From eLinux.org
Jump to: navigation, search
m (Switched to ipMasquerade.sh)
m (Added cloning repo)
Line 47: Line 47:
 
You'll see a new network has appeared, '''eth4''' in my case. The IP address of your host is '''192.168.7.1'''.  There's a good chance the Bone is at '''192.168.7.''2'''''.  Try connecting to it.
 
You'll see a new network has appeared, '''eth4''' in my case. The IP address of your host is '''192.168.7.1'''.  There's a good chance the Bone is at '''192.168.7.''2'''''.  Try connecting to it.
 
  host$ '''ssh -X root@192.168.7.2'''
 
  host$ '''ssh -X root@192.168.7.2'''
  beagle$  
+
  bone$  
You are now logged into the Bone through the network.  This is much faster than the serial port (.115M vs. 100M) and supports many interesting network operations.  The only problem is, the Beagle doesn't know how to access the Internet through the host. Get back to the host computer by entering RETURN ~ ^Z.  That is, hit RETURN, then ~ (it's up there near the ESC key) and then Ctrl-Z.  This gets you back to your host, but leaves the ssh connection running.
+
You are now logged into the Bone through the network.  This is much faster than the serial port (.115M vs. 100M) and supports many interesting network operations.  The only problem is, the Beagle doesn't know how to access the Internet through the host. Get back to the host computer by entering RETURN ~ ^Z.  That is, hit RETURN, then ~ (it's up there near the ESC key) and then Ctrl-Z.  This gets you back to your host, but leaves the ssh connection running. You can return to the Beagle with:
  
 +
host$ '''fg'''
 +
ssh -X root@192.168.7.2
 +
(Hit RETURN)
 +
Run commands here, or
 +
bone$ '''exit'''
 +
 +
== Set Up Git ==
 +
 +
We need to run some files that are in the class '''git''' repository.  We'll learn more about using git later.  Here I'll just show you how to get the files. Here we are installing these files on your host computer, later we'll install them on your Beagle.
 +
 +
On my host computer I had to run
 +
 +
host$ '''apt-get install git'''
 +
 +
== Get the Files ==
 +
 +
It only takes one command to pull down all the files.
 +
 +
host$ '''git clone https://github.com/MarkAYoder/BeagleBoard-exercises.git exercises --depth=1'''
 +
(The whole repo is some 550M.  Using '''--depth=1''' you only get the recent history and it only takes 190M.)
 +
 +
This will take a while since it's getting all the course files, including pdf files of the course PowerPoint.
  
 
==== Running ipMasquerade.sh ====
 
==== Running ipMasquerade.sh ====
Now run:
+
Now that the files are installed, run:
 +
host$ '''cd exercises/setup'''
 
  host$ '''./ipMasquerade.sh ''eth0'''''
 
  host$ '''./ipMasquerade.sh ''eth0'''''
This will give you instructions on how to set up your host and will remotely set up your Beagle.
+
This will give you instructions on how to set up your host.
 
Note: If you are using a wireless connection you should use
 
Note: If you are using a wireless connection you should use
  
Line 60: Line 83:
  
 
Once ./ipMasquerade.sh has been run you can:
 
Once ./ipMasquerade.sh has been run you can:
  host$ '''fg'''
+
  host$ '''./firstssh.sh'''
ssh -X root@192.168.7.2
+
Now you should have network access on the Bone.
(Hit RETURN)
+
  bone$ '''ping -c2 google.com'''
  beagle$ '''ping google.com'''
 
  
You should see Google responding. Hit Ctrl-C to stop.
+
You should see Google responding.
  
 
Congratulations!  Your Beagle is now on the network through your host computer.
 
Congratulations!  Your Beagle is now on the network through your host computer.
Line 75: Line 97:
 
If you get an unknown host response when attempting to ping google.com, and you are off campus, try pinging the Google DNS by IP address. Run:
 
If you get an unknown host response when attempting to ping google.com, and you are off campus, try pinging the Google DNS by IP address. Run:
  
  beagle$ '''ping 8.8.8.8'''
+
  bone$ '''ping 8.8.8.8'''
  
 
If you are on campus, run:
 
If you are on campus, run:
  
  beagle$ '''ping 137.112.5.28'''
+
  bone$ '''ping 137.112.5.28'''
  
 
If you now see responses by pinging a specific IP, it is possible that a firewall on your host computer is blocking the Beagle's access to the DNS when attempting to ping by domain name. On Ubuntu/Mint, run:
 
If you now see responses by pinging a specific IP, it is possible that a firewall on your host computer is blocking the Beagle's access to the DNS when attempting to ping by domain name. On Ubuntu/Mint, run:
Line 105: Line 127:
  
 
  host$ '''screen /dev/ttyusb*B 115200'''
 
  host$ '''screen /dev/ttyusb*B 115200'''
  beagle$ '''udhcpc -i usb0'''
+
  bone$ '''udhcpc -i usb0'''
  beagle$ '''ping google.com'''
+
  bone$ '''ping google.com'''
  
 
This is all nicely shown [http://www.youtube.com/watch?v=Cf9hnscbSK8&feature=youtu.be here] in this silent YouTube movie.
 
This is all nicely shown [http://www.youtube.com/watch?v=Cf9hnscbSK8&feature=youtu.be here] in this silent YouTube movie.
Line 156: Line 178:
 
Login as root and run the following:
 
Login as root and run the following:
  
  beagle$ '''echo "nameserver 8.8.8.8" > /etc/resolv.conf'''
+
  bone$ '''echo "nameserver 8.8.8.8" > /etc/resolv.conf'''
  beagle$ '''echo "nameserver 8.8.8.4" >> /etc/resolv.conf'''
+
  bone$ '''echo "nameserver 8.8.8.4" >> /etc/resolv.conf'''
  beagle$ '''/sbin/route add default gw 192.168.7.1'''
+
  bone$ '''/sbin/route add default gw 192.168.7.1'''
  beagle$ '''ping google.com'''
+
  bone$ '''ping google.com'''
  
 
If 'ping:unknown host google.com' occurs, run this instead:
 
If 'ping:unknown host google.com' occurs, run this instead:
  
  beagle$ '''echo "nameserver 137.112.4.196" > /etc/resolv.conf'''
+
  bone$ '''echo "nameserver 137.112.4.196" > /etc/resolv.conf'''
  beagle$ '''/sbin/route add default gw 192.168.7.1'''
+
  bone$ '''/sbin/route add default gw 192.168.7.1'''
  beagle$ '''ping google.com'''
+
  bone$ '''ping google.com'''
  
 
Congratulations, you now have a connection from your BeagleBone through your Linux host to the Internet.
 
Congratulations, you now have a connection from your BeagleBone through your Linux host to the Internet.
  
 
{{YoderFoot}}
 
{{YoderFoot}}

Revision as of 08:57, 7 September 2016

thumb‎ Embedded Linux Class by Mark A. Yoder


3.8 Kernel

These instructions are for the 3.8 kernel. EBC Exercise 02 Out-of-the-Box, Bone 3.2 Kernel has instructions for the 3.2 kernel.

Getting Started

We'll be running the 3.8 kernel, check out these instructions for getting started. Then come back here to get your network set up.

Internet Connection

One of the slickest features of the Bone is its ability to access the Internet through the USB (tether) connection. You should have already used it following the instructions above. Below shows how to set up your host and Bone so the bone can access the internet through your host.

Linux

ifconfig

Run:

host$ ifconfig
eth0     Link encap:Ethernet  HWaddr 00:18:8b:72:b8:c2  
         inet addr:137.112.41.109  Bcast:137.112.41.255  Mask:255.255.255.0
         inet6 addr: fe80::218:8bff:fe72:b8c2/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:8481193 errors:0 dropped:0 overruns:0 frame:0
         TX packets:1871287 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:3172154531 (3.1 GB)  TX bytes:203188180 (203.1 MB)
         Interrupt:19 

eth4     Link encap:Ethernet  HWaddr d4:94:a1:39:ff:ff  
         inet addr:192.168.7.1  Bcast:192.168.7.3  Mask:255.255.255.252
         inet6 addr: fe80::d694:a1ff:fe39:ffff/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:8 errors:0 dropped:0 overruns:0 frame:0
         TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:2775 (2.7 KB)  TX bytes:1234 (1.2 KB)

lo       Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:16436  Metric:1
         RX packets:37315 errors:0 dropped:0 overruns:0 frame:0
         TX packets:37315 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:3665320 (3.6 MB)  TX bytes:3665320 (3.6 MB)

ssh

You'll see a new network has appeared, eth4 in my case. The IP address of your host is 192.168.7.1. There's a good chance the Bone is at 192.168.7.2. Try connecting to it.

host$ ssh -X root@192.168.7.2
bone$ 

You are now logged into the Bone through the network. This is much faster than the serial port (.115M vs. 100M) and supports many interesting network operations. The only problem is, the Beagle doesn't know how to access the Internet through the host. Get back to the host computer by entering RETURN ~ ^Z. That is, hit RETURN, then ~ (it's up there near the ESC key) and then Ctrl-Z. This gets you back to your host, but leaves the ssh connection running. You can return to the Beagle with:

host$ fg
ssh -X root@192.168.7.2
(Hit RETURN)

Run commands here, or

bone$ exit

Set Up Git

We need to run some files that are in the class git repository. We'll learn more about using git later. Here I'll just show you how to get the files. Here we are installing these files on your host computer, later we'll install them on your Beagle.

On my host computer I had to run

host$ apt-get install git

Get the Files

It only takes one command to pull down all the files.

host$ git clone https://github.com/MarkAYoder/BeagleBoard-exercises.git exercises --depth=1

(The whole repo is some 550M. Using --depth=1 you only get the recent history and it only takes 190M.)

This will take a while since it's getting all the course files, including pdf files of the course PowerPoint.

Running ipMasquerade.sh

Now that the files are installed, run:

host$ cd exercises/setup
host$ ./ipMasquerade.sh eth0

This will give you instructions on how to set up your host. Note: If you are using a wireless connection you should use

host$ ./ipMasquerade.sh wlan0

Once ./ipMasquerade.sh has been run you can:

host$ ./firstssh.sh

Now you should have network access on the Bone.

bone$ ping -c2 google.com

You should see Google responding.

Congratulations! Your Beagle is now on the network through your host computer.

Troubleshooting

Unknown Host

If you get an unknown host response when attempting to ping google.com, and you are off campus, try pinging the Google DNS by IP address. Run:

bone$ ping 8.8.8.8

If you are on campus, run:

bone$ ping 137.112.5.28

If you now see responses by pinging a specific IP, it is possible that a firewall on your host computer is blocking the Beagle's access to the DNS when attempting to ping by domain name. On Ubuntu/Mint, run:

host$ sudo ufw disable
Firewall stopped and disabled on system startup

You should get a response, such as above, that the firewall will be disabled upon next startup. After saving anything important, restart your host through the start menu or run:

host$ reboot

Repeat this exercise and attempt to ping Google by domain name again. If you now receive responses, then the firewall was indeed the issue. Otherwise, the internet is your friend. Use your host computer to try and find a solution. Feel free to add solutions here when you find them

OSX

I haven't checked these instructions this year. Please report your results and update if needed.

  1. go to System Preferences and select Network
  2. You should see RNDIS/...Gadget. This is the network connection to the Beagle. Select it
  3. Wait for the IP address 192.168.7.1 to appear
  4. Click Show All and select Sharing
  5. Select Internet Sharing
  6. Select RNDIS/Ethernet Gadget

In a terminal window connect to the serial port

host$ screen /dev/ttyusb*B 115200
bone$ udhcpc -i usb0
bone$ ping google.com

This is all nicely shown here in this silent YouTube movie.

Congratulations, you now have a connection from your BeagleBone to the Internet.

Windows 7

I haven't checked these either. Please report results and update if needed.

There are several ways of running ssh on Windows 7. Below are a couple of tools that you can use.

Environment Setup

You can either run ssh from a bash terminal (i.e. C:\Program Files\Git\Git Bash or C:\cygwin\Cygwin.bat), or you can add the bin directories to your path and run from the Windows command prompt (i.e. add C:\Program Files\Git\bin or C:\cygwin\bin to your path).

Note: Be careful adding multiple bin directories to your path

First time setup

  1. Run regedit
  2. Navigate to Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters
  3. Change IPEnableRouter from 0 to 1
  4. Close regedit
  5. Run services
  6. Make sure the following are set to Automatic and are started
    1. Routing and Remote Access
    2. Internet Connection Sharing (ICS)

Connecting to the Internet

After ejecting

  1. Navigate to Control Panel\Network and Internet\Network and Sharing Center\Change adapter settings
  2. Right click your wired/wireless internet connection and go to Properties
  3. Go to the Sharing tab
  4. Check the box to Allow other network users to connect through this computer's Internet connection
  5. Select your bone's local area connection for the Home networking connection (if you cannot choose the local area connection, turn your internet connection sharing off and then back on)
  6. Return to Change adapter settings
  7. Right click your Bone's internet connection and go to Properties
  8. Select Internet Protocol Version 4 (TCP/IPv4) and choose Properties
  9. Choose Obtain an IP address automatically and Obtain DNS server address automatically

Open a command prompt or bash terminal and run the following:

host$ ping 192.168.7.2

If this ping times out then disable and re-enable your bone's local area connection and try again. Once it works run the following:

host$ ssh root@192.168.7.2

Login as root and run the following:

bone$ echo "nameserver 8.8.8.8" > /etc/resolv.conf
bone$ echo "nameserver 8.8.8.4" >> /etc/resolv.conf
bone$ /sbin/route add default gw 192.168.7.1
bone$ ping google.com

If 'ping:unknown host google.com' occurs, run this instead:

bone$ echo "nameserver 137.112.4.196" > /etc/resolv.conf
bone$ /sbin/route add default gw 192.168.7.1
bone$ ping google.com

Congratulations, you now have a connection from your BeagleBone through your Linux host to the Internet.




thumb‎ Embedded Linux Class by Mark A. Yoder