Remote Execution of Linux® Commands
This example shows you how to run remote Linux command on your BeagleBoard™ hardware.
BeagleBoard™ hardware runs an Ubuntu® Linux® distribution as the operating system. Using utilities shipped in the Target for Use with BeagleBoard Hardware, you can remotely execute Linux commands on the BeagleBoard hardware directly from the MATLAB® command line. For example, you can run and stop a Simulink® model, list the contents of a directory, look up the CPU load of a process running on the BeagleBoard hardware, etc. You can also launch an interactive PuTTY SSH session directly from within MATLAB.
We recommend completing Getting Started with BeagleBoard Hardware example.
Target for Use with BeagleBoard Hardware uses an SSH connection over TCP/IP to remotely execute Linux commands while building and running Simulink models on the BeagleBoard hardware. You can use the infrastructure developed for this purpose to communicate with the BeagleBoard hardware.
1. Create a beagle object by executing the following on the MATLAB command line:
h = beagle
The beagle function returns a connection object, h, for BeagleBoard hardware that has been set up using the targetupdater function. The IP address, user name, and password used to construct the beagle object are the default MATLAB session values for these parameters. Target for Use with BeagleBoard Hardware saves one set of communication parameters, i.e. IP address, user name and password, for the BeagleBoard hardware as default MATLAB session values. Note, the default MATLAB session values for the communication parameters are first determined during the firmware update process. The communication parameters may subsequently be changed using the Tools > Run on Target Hardware > Options and are sticky, meaning that once you change the communication parameter values they are saved as default MATLAB session values, and are used for all Simulink models.
You may explicitly specify the host name or IP address, user name, password when you create the beagle object:
h = beagle('<IP address>', '<user name>', '<password>');
The command above shows how to specify host name, user name, and password. You may want to use this form if you have multiple BeagleBoard hardware in your network that you need to distinguish individually.
2. Test connection to your BeagleBoard hardware by executing the following command on the MATLAB command line:
[status, message] = h.connect
If successful, the connect method returns a status of 0 and a message 'Connection successful'. The connect methods execute the "echo Connection successful" Linux command remotely on your BeagleBoard hardware. If the connect method returns a status other than 0, the connection to the BeagleBoard hardware has failed. The returned message provides diagnostics. If the connection has failed, the most likely cause is incorrect IP address. To diagnose connection problems refer to the Troubleshooting Connection Problems section below.
You can use the execute method of the beagle object to execute various Linux commands on the BeagleBoard hardware from MATLAB.
1. Execute the following on the MATLAB command line:
[status, message] = h.execute(['ls -al ~'])
If successful, the command above returns a status of 0 and a message representing the output returned by the executed command. The returned message is a directory listing of the home directory.
2. Execute the following on the MATLAB command line:
h.execute(['ls -al ~'], true)
This command executes the same Linux command as in Step 1 of this task but directly outputs the result on the MATLAB command line rather than returning it in a variable.
The execute method of the beagle object runs a Linux® command on the BeagleBoard hardware using SSH protocol. Alternatively, you can open a PuTTY SSH terminal by executing the following command:
The PuTTY SSH terminal enables you to run interactive Linux commands on BeagleBoard hardware. You may, for example, execute the same Linux commands introduced in the previous section to get a listing of the home directory.
Target for Use with BeagleBoard Hardware generates a Linux executable for each Simulink model you run on the BeagleBoard hardware. The generated executable has the same name as the Simulink model and is stored in a directory under the Build directory you selected. To run/stop a Simulink model, you can use the run and stop methods of the beagle communication object.
1. To run a Simulink model you previously run on the BeagleBoard hardware, execute the following command on the MATLAB command line:
where the string '<model name>' is the name of the Simulink model you want to run on the BeagleBoard hardware. The run method launches the Linux process corresponding to the Simulink model you specified.
2. To stop a Simulink model running on the BeagleBoard hardware, execute the following command on the MATLAB command line:
This command kills the Linux process with the name '<model name>' on the BeagleBoard hardware. Alternatively, you may execute the following command to accomplish the same:
[~, pid] = h.execute('pidof <model name>'); [st, msg] = h.execute(['echo ', h.Password, ' |sudo -S kill -9 ', pid])
1. How do I verify my Ethernet connection?
Verify that the yellow LED on the Ethernet connector on your BeagleBoard hardware is on and that the green LED is blinking. If not, then the other end of the Ethernet connection may not be live or the Ethernet cable might be bad.
2. What are the different Ethernet connection options for the BeagleBoard hardware?
Your BeagleBoard hardware must be connected to:
a) a LAN/WAN network with an Ethernet cable b) the host computer directly with an Ethernet cable
If your BeagleBoard hardware has a direct connection to the host computer, you must set a static IP address for your BeagleBoard hardware. You must also ensure that the Ethernet card in your host computer has been assigned a static IP address.
3. How do I find the IP address of the BeagleBoard hardware?
You may obtain the IP address of the BeagleBoard hardware by pressing and releasing the USER button. The BeagleBoard hardware will then speak its IP address. Note that you must have speakers or headphones connected to the AUDIO OUT connector of the BeagleBoard hardware for you to hear. If you don't hear BeagleBoard hardware speak an IP address, the BeagleBoard hardware did not get an IP address from a DHCP server in your network. If you connected the BeagleBoard hardware directly to your host computer, there is no DHCP server that can provide and IP address. Therefore, you must assign a static IP address to the your Ethernet card on your host computer as described in step 1 above. If you connected your BeagleBoard hardware to a LAN/WAN Ethernet network and you are sure that there is a DHCP server in your network, check if the DHCP server is using MAC address filtering. If so, you can add the MAC address of the BeagleBoard hardware to the list of allowed MAC addresses in your DHCP server or router configuration. To find the MAC address of the BeagleBoard hardware, you need to open a serial PuTTY session (follow instructions in 6 below) and execute the following on the Linux shell:
cat /etc/network/interfaces| grep hwaddress
You can also find the IP address of the BeagleBoard hardware using a serial terminal as described below.
4. How do I test the SSH connection to BeagleBoard hardware?
To test the SSH connection to your BeagleBoard hardware, create a beagle communication object and execute the following command on the MATLAB command line:
[status, message] = h.connect
If successful, the connect method returns a status of 0 and a message 'Connection successful'. If the connect method returns a status other than 0, the connection to the BeagleBoard hardware has failed. The returned message provides diagnostics. If the connection has failed, the most likely cause is the wrong IP address. Follow 2 above to find the IP address. If you found the IP address and still cannot connect to the BeagleBoard hardware, refer to 5.
5. I know the IP address of the BeagleBoard hardware but SSH connection still fails.
There are a couple of likely scenarios. If your BeagleBoard hardware is connected directly to the host computer using an Ethernet cable, you must make sure that the Ethernet card on your host computer to which the BeagleBoard hardware is connected has a static IP address. For instructions on how to assign a static IP address to your Ethernet card under Windows refer to the following guide. You must also ensure that the BeagleBoard hardware and your computer is on the same subnet. For example, if you assigned a static IP address of 192.168.1.1 to your Ethernet card on the host computer, and the subnet mask is set to 255.255.255.0, you must assign an IP address in the range 192.168.1.2 to 192.168.1.254 to the BeagleBoard hardware and a subnet mask that matches that of your host computer (usually 255.255.255.0).
If you are on a LAN/WAN network and cannot establish an SSH connection to the BeagleBoard hardware, check that you do not have a firewall or anti-virus program that blocks TCP/IP port 22 used by the PuTTY SSH client. If you do, add this port to the list of TCP/IP ports that are not blocked or disable your firewall or anti-virus program. If SSH connection still fails, check that the SSH daemon is running on the BeagleBoard hardware. To do this, execute the following on a PuTTY serial terminal:
initctl list | grep ssh
This command returns the status of the ssh server. You should see an output similar to the following if the ssh server is running:
ssh start/running, process 882
If ssh server is not running for some reason, try restarting the server by executing the following command on the serial terminal:
sudo /etc/init.d/networking restart
6. How do I open a serial terminal to communicate with the BeagleBoard hardware?
To open a serial terminal, use the PuTTY application shipped with MATLAB. To open a PuTTY interactive terminal, execute the following commands on the MATLAB command line:
h = beagle h.openShell('serial')
This command opens up the PuTTY terminal client. Set the parameters of the serial connection as shown below, making sure to set the 'Serial line' parameter to the COM port number on your computer that is connected to your BeagleBoard hardware:
The serial communication parameters are:
Speed (Baud rate): 115200 Data bits : 8 Stop bits : 1 Parity : None Flow control : None
Click Open to open the serial terminal.
On the serial terminal, enter the username and the password of your BeagleBoard hardware. If you are using the BeagleBoard Ubuntu firmware image from MathWorks, execute the following on the MATLAB command line to find the user name and the password of the board:
h = beagle
7. How do I find the IP address of the BeagleBoard hardware using the serial connection?
Open a serial terminal using PuTTY as described above. Execute the following command on the PuTTY serial terminal to find the IP address:
This command lists the Ethernet parameters for each Ethernet network interface on your BeagleBoard hardware. Find the 'inet addr' for network interface 'eth0'. This is the IP address of your BeagleBoard hardware. Alternatively, you can execute the following Linux command to find the IP address: