Introduction
Today's tutorial will show you how to control your Raspberry PI from your HP Chromebook (and to be honest pretty much any other Chromebook).
What you will need
For this tutorial you will need a Raspberry PI running Raspbian Wheezy. (Read this guide which shows how to set up the Raspberry PI).
You will also need a working internet connection on the Raspberry PI. (Read this guide which shows how to set up a wireless connection on the Raspberry PI).
Last but not least, you will need a Chromebook.
You will also need a working internet connection on the Raspberry PI. (Read this guide which shows how to set up a wireless connection on the Raspberry PI).
Last but not least, you will need a Chromebook.
SSH
There is some preparatory work that needs to be done on the Raspberry PI to enable you to connect to it from the Chromebook.
On the Raspberry PI run raspi-config from a terminal window. If you don't normally run a graphical desktop you can run this straight from the terminal window. If you run from a graphical desktop open a terminal by clicking on the LXTerminal icon on the desktop.
Enter the following into the terminal window:
sudo raspi-config
A screen similar to the one above should appear.
The "SSH" menu item is now hidden in "Advanced Options" so scroll down to option 8 and press the return key on the keyboard.
You will now see the option for "SSH" as menu item A4. Select this option and press return.
When the "SSH" screen appears make sure that it is set to enabled.
A message will appear telling you that SSH is now enabled. Exit out of the raspi-config tool.
To be able to connect to the Raspberry PI from the Chromebook you will need to know its IP address. From within the terminal window type the following:
ifconfig
If you are connecting via ethernet cable the IP address will appear under eth0. If you are connecting via wireless the IP address appears under wlan0.
If you look at the image above you will see the IP address for my Raspberry PI shows as 192.168.1.108. If you reboot your Raspberry PI at any point that IP address may change so you cannot guarantee it is the same IP address every time.
I have a method to get around this which I will show you later.
SSH to the Raspberry PI from the Chromebook
You will need an SSH client on the Chromebook in order to connect to the Raspberry PI.
Open up the Chromebook store by clicking the applications launcher in the bottom left corner and then click on the "Store" icon.
When the store opens type "ssh" into the search box in the top left corner.
There are a number of tools available. I installed the one called "Secure Shell".
After installing the secure shell application open it by clicking on the application launcher. It usually appears straight away in the launcher but if it doesn't, try clicking on the tabs at the bottom until you find it.
To connect to the Raspberry PI enter the username you normally use to connect to the pi. (It is the box on the left, in the image above the user I use to connect is shown as pi).
In the second box enter the IP address for the Raspberry PI. Enter 22 as the port number.
Click on "Connect".
You may receive a message stating that the authenticity of the connection cannot be established. Enter "yes" to continue.
You will then be asked to enter the password for the account you wish to connect to.
Installing VNC Server on the Raspberry PI
You should now have a connection to the Raspberry PI from the Chromebook using SSH. This is great for doing command line stuff but if you want to do things in a graphical environment you will need a few more tools installed.
The first thing that needs to be installed is VNC Server. Make sure you are connected using SSH.
Type the following to install the VNC Server:
sudo apt-get install tightvncserver
You will be asked if you are sure you want to continue. Press "Y" to continue.
The VNC Server will be installed.
At this point I would advise writing a script that you can run whenever you want to as typing the whole command that you need to run the VNC server is something you only really want to do once.
Type the following to open the nano editor:
sudo nano /etc/init.d/vncserver
Enter the following script into the editor:
#!/bin/sh -ePress CTRL and O to save the script and CTRL and X to exit nano.
export USER="pi"
# parameters for tightvncserver
DISPLAY="1"
DEPTH="16"
GEOMETRY="1200x720"
NAME="VNCserver"
OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:{$DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stopping vncserver for user '${USER}' on localhost:{$DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
I don't advise copying and pasting scripts into your computer without knowing what they are doing so I will do my best to explain.
The VNCServer takes a number of parameters. In the script above we use three of them. "DISPLAY" is used to determine which port number to use. VNCServer by default runs on port 5900. By setting display to 1 you are specifying that VNCServer will run on port 5901. The DEPTH variable specifies the colour depth. Finally the GEOMETRY option specifies the screen resolution to use.
By specifying these options early in the script it makes it easy to adjust them to suit your needs.
The OPTIONS line takes all of the parameters and appends them as input parameters for the VNCServer command.
There is now a case statement. The case statement will look at the argument provided when you run the script and will run the appropriate code dependent upon the argument you specified. For example if you type vncserver start the code after start) will run. If you run vncserver stop the code after stop) will run. I think you get the idea now.
When you specify the start option a message is sent to the terminal stating that the VNC server is starting. The user is then switched to the user account specified by the export USER command and the VNC Server is started with the options specified as that user.
The stop option kills the server. The restart option, stops and restarts the VNC Server.
In order to be able to run the script at all you need to make it executable. To do this type the following:
sudo chmod +x /etc/init.d/vncserver
To make sure you haven't made any mistakes enter the following:
sudo /etc/init.d/vncserver start
If any errors appear then the script hasn't been entered correctly. Make sure the script matches the script above and try again.
It is likely that as this is your first time running VNC server that you will be asked to enter a password for connecting to the PI. You will also be asked if you want to create a readonly password. It is up to you if you want to do this.
VNC to the Raspberry PI from the Chromebook
To VNC onto the Raspberry PI you will need to install a VNC client onto the Chromebook. To do this click the application launcher and open the store.
When the store loads enter "vnc" into the search box in the top left corner. I installed the "VNC Viewer for Google Chrome" application.
To run the VNC Viewer open the application launcher and click on VNC Viewer. If it doesn't appear straight away click on the tabs at the bottom until it appears.
Enter the IP address for the Raspberry PI into the address field and click "Connect". For example enter 192.168.1.101:5901.
You will receive a warning about security as VNC isn't the most secure way to connect two devices together.
Click "Connect" to continue.
You will be asked to enter the password required to connect to the VNC Server.
You should now be able to see a visual representation of your Raspberry PI. To get a full screen view click on the second icon from the right (looks like 4 arrows).
Running the VNC Server at startup
The VNC server is currently running but as soon as you shut down the Raspberry PI that is it. The next time you start the Raspberry PI you won't be able to VNC to it.
There are two things you can do. The first is to SSH onto the Raspberry PI and run the startup script again. The second is to set the VNC Server to start when the Raspberry PI starts.
My preferred method is to use SSH. Simply connect via SSH to the Raspberry PI and then enter the following command when you want to VNC onto the Raspberry PI:
sudo /etc/init.d/vncserver start
I think this is the best way as it only leaves VNC open for connection when you actually plan to use it as opposed to leaving it open all the time.
If however you want to always be able to connect via VNC you can run the following command into the terminal just once and the VNC server will start when the Raspberry PI starts:
sudo update-rc.d vncserver defaults
Get your IP address sent to your email account
As I mentioned earlier one of the problems you will encounter is that your Raspberry PI's IP address can and will change when you restart it.
You can use trial and error to find the Raspberry PI if you wish by trying 192.168.1.101 and then 192.168.1.102, 192.168.1.103 and so on until you get connected.
The next bit is entirely optional but will help you if you need your PI's IP address.
First things first you will need a piece of software called SSMTP installed. Connect to the Raspberry PI via SSH and enter the following:
sudo apt-get install ssmtp
The conf file needs to be edited to be able to set up the outgoing email settings. Type the following:
sudo nano /etc/ssmtp/ssmtp.conf
Add the following lines to the end of the file:
Press CTRL + O and CTRL + X to save and exit the file.
Now you will need to edit the file /etc/ssmtp/revaliases. To do this type the following:
sudo nano /etc/ssmtp/revaliases
Add the following line somewhere within the file:
pi:pi@everydaylinuxuser.com:smtp.gmail.com:587
Replace the bit that says pi@everydaylinuxuser.com with a user and host name that you want emails to look like they come from. Replace the smtp.gmail.com:587 with the smtp details of your outgoing mail server.
Again save the file by pressing CTRL + O and CTRL + X.
Change the permissions on the ssmtp.conf file to enable emails to be sent:
sudo chmod 774 /etc/ssmtp/ssmtp.conf
Now create a file called sendmyIP.sh by typing the following:
sudo nano /etc/profile.d/sendmyip.sh
Enter the following into the editor:
ifconfig | mail -s "Your PI IP " emailaddresstosendmailto.com
Replace the emailaddresstosendmailto.com to your email address.
Press CTRL + O and then CTRL + X to save and exit the file.
Change the permissions to enable the script to run by typing the following:
sudo chmod +x /etc/profile.d/sendmyip.sh
Now every time your PI starts it should send you an email with the internal IP address for the PI.
Another option is to set the IP address for the Raspberry PI as static. Follow this guide to find out how to set a static IP address.
Summary
You should now be able to connect to the Raspberry PI from your Chromebook. Feel free to adjust the geometry settings but they seem to work well enough on the HP Chromebook 14.
These instructions should work from any computer or device but you will need to have an SSH client and VNC client installed.
Thankyou for reading.
0 comments:
Post a Comment