Introduction: Video Calling on Raspberry Pi 3
Since I left my home 5 years ago for my university studies, I realised how difficult it is to be away from family. Video calling is an option for most people, however, as my parents are not in the position to learn how to use a computer, the only option was to build a system that would be as simple as possible for them to operate, wouldn't need maintenance, and it would be inexpensive as well. Additionally, the system had to be able to be connected to a television screen, so my parents will be able to comfortably use it and they won't have to look into a tiny phone screen in order to see me.
Some smart TVs provide a Skype application, however you have to buy a compatible camera, of which the cost is approximately equal with the total cost of this whole system. Furthermore, Skype ditches support for Smart TVs, therefore using a Smart TV with Skype is not an option anymore.
Follow the steps of my first instructable, and video calling will become easy Pi-easy!
Step 1: Picking Up the Parts
Raspberry Pi 3 Model B just came out a few weeks ago, a very promising embedded system, which can be bought at the price of $50. Including a power supply, a case, a couple of heat sinks and a Micro SD card, the total cost is a little more than $90.
Additionally you will need an HDMI cable in order to connect the board to the television screen, and optionally an Ethernet cable for internet connectivity. Although Raspberry Pi 3 Model B is equipped with a Wi-Fi chip, a wired connection is always preferred, as it is more reliable.
Note that Raspberry Pi 3 Model B tends to get hot easily on video calls, therefore a pair of heat sinks is recommended. I'm sorry that I cannot provide you pictures from installing the heat sinks on the board as I had them installed before thinking of writing this instructable guide. However, installing the heat sinks on the board is a very easy job, and there are many guides available online that can help you on how to do it.
*Important notice!*
A common phone charger will NOT do, as Raspberry Pi 3 Model B needs an output of 5.1V and 2.5A, in contrast to most phone chargers that provide an output of 5V and up to 2A.
Attention as well has to be paid to the Micro SD and the Camera, because only specific cards and cameras are compatible with the Raspberry Pi 3 Model B. A Micro SD card with a minimum size of 8 GB is needed for the operating system of the board.
A list of compatible cards, and a list of compatible cameras.
*Another important notice!*
A USB camera with a microphone is preferred, as Raspberry Pi 3 Model B has no audio input if you want to connect a microphone to it!
At last, you will also need a keyboard and a mouse for setting up the system. Later, when the system is ready, only a simple keyboard will be needed in order to safely shutting down the Raspberry Pi board. And of course, you will need a monitor in order to make video calls.
Lets sum up:
- Raspberry Pi 3 Model B
- Compatible Micro SD Card (Class 10 recommended)
- Compatible USB Camera
- HDMI Cable
- Keyboard
- Television or Monitor Compatible with HDMI
- Mouse (Optional, but recommended)
- Official Raspberry Pi Power Supply (Optional, but recommended)
- Raspberry Pi Case (Optional, but recommended)
- Heat Sinks (Optional, but recommended)
- Ethernet Cable (Optional, but recommended)
Step 2: Setting Up the Operating System
Use a computer with an SD card reader and visit the NOOBS webpage and download the latest version of NOOBS either by torrent download or by downloading the zip file.
While NOOBS is downloading, format your Micro SD card using SD Formatter 4.0.
Install SD Formatter, and then insert your Micro SD card to the computer using a Micro SD adapter. In SD Formatter, select the Micro SD card and format it. Be careful to select the right drive letter when formatting the card! An overwrite format is preferred, but a quick format going to work as well.
After the card has been formatted, extract the files from the downloaded NOOBS zip file. Then, select all of the extracted files and drag and drop them into the Micro SD card. When the operation is finished, eject the card and insert it into the Raspberry Pi 3 Model B board.
Connect the HDMI cable, the keyboard, the mouse and the Ethernet cable, and then plug the Micro USB power supply to the board. Alternatively, you can connect via Wi-Fi if a wireless network is available nearby. If a Wi-Fi connection is selected, make sure that it has sufficient signal strength, because video calling can consume a significant amount of bandwidth.
*Important Notice!*
Turn on your monitor before powering up the board! Otherwise, the HDMI output of the board will not be activated.
When the Raspberry Pi boots, a window containing a list of operating systems will appear. Select Raspbian by ticking the box next to it, and click install. A warning message will appear, click on Yes, and make yourself a cup of tea while the operating system is installing. After the installation is complete, the graphical user interface will be loaded automatically. If it won't login using pi as a username and raspberry as a password, and type startx and hit the Enter button.
*Another important Notice!*
In the end of the install process, the Raspberry Pi configuration menu (raspi-config) may be loaded. If so, you can select Internationalisation Options, and set up your language and region settings, such as the timezone. Also, if the graphical user interface is not loaded automatically, you can enter into Boot Options, and select the last option, Desktop Autologin.
Many more settings are available in the Raspberry Pi configuration menu for your Raspberry Pi. To exit the configuration menu, press the Tab button on your keyboard and then select the Finish option. You can enter anytime the Raspberry Pi configuration menu by entering raspi-config on a terminal, however, be careful when changing the settings of the board.
Although I do my best in guiding you through this step, you may still be struggling. Here are Video Instructions for Installing NOOBS, from the Raspberry Pi Foundation, which you may find helpful even if it is a two year old video.
Step 3: Update and Upgrade Raspberry Pi
In order to update and upgrade your Raspberry Pi, open a Terminal and enter the following command:
- sudo apt-get update
and press the Enter button.
When it's finished, enter:
- sudo apt-get upgrade
and press the Enter button again. Notice that after entering the second command, a message will appear, asking Do you want to continue [Y/n]?, press Y and then the Enter button.
Step 4: Install Chromium Browser
Open a terminal and enter the following four commands as they are (with the quotes):
- wget -qO - http://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
- echo "deb http://dl.bintray.com/kusti8/chromium-rpi jessie main" | sudo tee -a /etc/apt/sources.list
- sudo apt-get update
- sudo apt-get install chromium-browser -y
Make sure to enter each one of the previous commands
If any messages appear prompting you to input Y or N, enter to all of them Y and hit the Enter button. At the end of this step, you will have the Chromium Browser installed to your system.
Kudos to kusti8 for creating the repository that we used in this step for installing the Chromium Browser.
Step 5: Introduction to Jitsi Meet
Jitsi Meet is an OpenSource (MIT) WebRTC JavaScript application that uses Jitsi Videobridge to provide high quality, scalable video conferences. Jitsi Meet is like Google Hangouts, except that Jitsi Meet is an OpenSource WebRTC application. Jitsi was selected due to its simplicity, as it works directly within the Chromium Browser, and it does not require any additional downloads. Anyone who has the video call URL can simple join the conversation automatically.
Time to plug the camera to the board.
Set the Chromium Browser to start with a unique Jitsi Meet URL, for example:
Of course, Foo Bar is not really unique, so you'll have to figure out something better. Anyways, there is also the ability to add a Password to the room.
So, let's suppose that we use https://meet.jit.si/FooBar as a room.
In the last two screenshots a simple video call is demonstrated. However, the cameras are disabled for obvious reasons!
Now that we have a simple video calling service available, we have to provide an easier access on it from the Raspberry Pi.
Step 6: Auto Start Chromium After Boot
In order to make the system as simple as possible, some automations can be made.
For example, Chromium Browser can executed after the launch of the graphical user interface, with a predefined URL, in Full Screen (Kiosk) mode.
To achieve that, you have to open a terminal, and type:
- sudo nano ~/.config/lxsession/LXDE-pi/autostart
A file will open in the terminal window, containing lines beginning with "@".
You need to add the following line at the end of the file:
- @chromium-browser --kiosk --disable-session-crashed-bubble --disable-infobars --disable-restore-session-state https://meet.jit.si/FooBar
*Important Notice*
Do not break the line of the text above. The whole sentence has to be entered in a single line.
After entering the sentence, press Ctrl+X, then press Y and then press the Enter Button.
Step 7: Hiding the Mouse Cursor When the Mouse Is Idle
Isn't it quite annoying that the mouse cursor stays in the middle of the screen during a video call?
The solution to this problem is the Unclutter tool. Install the tool by executing the following command in a terminal:
- sudo apt-get install unclutter
If the message "Do you want to continue [Y/n]?" appears, enter Y and hit the Enter button.
When the installation of unclutter is complete, open the same file as in the previous step by executing the following command:
- sudo nano ~/.config/lxsession/LXDE-pi/autostart
Then, add the following line at the end of the file:
- @unclutter -idle 1 -root
The number 1 is indicating the seconds until the mouse cursor is disappeared. You can make the interval shorter or longer for example, 0.1 or 5, depending your personal preferences.
When finished, press Ctrl+X, then press Y and hit the Enter Button.
Step 8: Shut Down the Raspberry Pi... Safely!
Just pulling the plug is not really recommended when it comes down to shut down your Raspberry Pi.
Devote a few minutes in this step, and create a hotkey that when it's pressed it will shut down your Raspberry Pi safely. After all, your Micro SD card does not worth a possible corruption from an improper shut down. Does it?
Open a terminal, and type the following command:
- sudo nano ~/.config/openbox/lxde-pi-rc.xml
Then, navigate through the file until you see the keyboard section, which starts with
Under the keyboard section add the following lines:
- sudo shutdown -h now
As always, save the file by pressing Ctrl+X, then Y and then the Enter button.
Of course you can set any button you like to preform the shut down command. I chose F12, however you can choose another more convenient button, or combination of buttons. A reboot hotkey can be added in the same way by only changing the command to sudo shutdown -r now, instead of sudo shutdown -h now.
Step 9: Bonus Step - Add a Switch (removed)
*** UPDATE: 18/06/2020 ***
Due to a few comments, this step is being removed. If you want to have such a cable/mechanism, find some other instructable, or buy a ready-made cable.
*** End-of-Update ***
Wouldn't it be more convenient, as well as safer, to completely disconnect your Raspberry Pi from the wall outlet after shutting it down? In a power restoration from a possible power outage, the Raspberry Pi would normally boot up and open the Chromium Browser in the selected Jitsi Meet webpage. This doesn't sound like a good situation, especially when there isn't anyone near the system to shut it down again or take care of it. However it isn't very practical to plug and unplug the power adapter every time the system is used.
By adding a switch to the power adapter of the Raspberry Pi, this task is becoming way easier and safer. The switch can guarantee that unpleasant surprises will not occur during a temporary power outage, and it also acts as an ON switch, allowing the user to boot the system easier, without messing with cables.
T̶h̶e̶ ̶p̶a̶r̶t̶s̶ ̶n̶e̶e̶d̶e̶d̶ ̶f̶o̶r̶ ̶t̶h̶i̶s̶ ̶s̶t̶e̶p̶ ̶a̶r̶e̶:̶
Buy a ready-made cable, or find another instructable

Participated in the
First Time Author Contest 2016
29 Comments
Tip 2 years ago on Step 8
To answer some of the questions here for the record:
- use a webcam with integrated microphone
- install Raspi OS instead, it has chromium by default
- to debug webcam use guvcview (also installed by default on raspios)
Tip 2 years ago on Step 9
Hi! thanks for this amazing tutorial. I used it during quarantine to allow my parents to see their grandson learn how to ride a bicycle. There was a recent update to jit.si where you would have a pre-join screen so I changed the url to https://meet.jit.si/FooBar#config.prejoinPageEnabl...
hope this helps.
BR
Arménio
Question 2 years ago on Step 6
Hi,
thanks for the instructions! I still found a lot of references to this one when I looked for a video call solution for my granny. I hope the community is still active after 4 years.
Sound is not mentioned and since the RPi does not have a mic input, a soundcard is needed. Still I am actually getting things to work pretty well - except sound. I am using a fresh RPi3B+ with a cheap "König"-webcam and a noname USB-soundcard. The hardware works without issues when transferring the mic input through to the HDMI-output. But in the Jitsi-Meeting (web-hosted browser-meeting) the sound is noise only.
I tried different hosting servers on the net, but that did not change the noise. I also tried the option "#config.disableAP=true" without success. Could the codec be the problem? How would I find out?
I have no idea, what is left to try. All hints to a solution are welcome!
Thanks in advance!
PuMa
6 years ago
Hi,
good idea and instructions - BUT: The part "how to make a power cable with switch" is not acceptable!
1. You are only allowed to do this if you have a qualification for that!
2.
I see practical errors in the pictures, for example the single wires
are much to tight from cable to terminals and no ferrule is used.
3.
Very dangerous and forbidden: You connected a male connector without
Protective Contact to a female connector with Protective Contact. If
somebody is using a device with Protective Contacts on this cord he
won't be protected in case of a fault! Even if it is "just for the Pi" - I bet some day the cable is used for something else....
Please do not
post such things, because a) they are wrong and b) even if they were
right most people are not qualified for making things like this. Please
delete all information regarding this from the instructions.
Best regards,
Alex
Reply 3 years ago
Agreed, the author updated the post, but still it is not well explained. The author should just simply tell the user to put a 3 pin grounded male plug on the end, so that if the lead is ever used with a grounded appliance, it will just work as intended. NEVER have a female grounded end with a non-grounded male plug on the other end.
Author, please update your article further to simply say, this is not a recommended approach, and instead recommend what is a safe way to do it. There's plenty of leads sold that are fully non grounded or fully grounded at both ends.
Reply 2 years ago
I agree with @alibuba and @redfox05.
The section "Step 9: Bonus Step - Add a Switch" should REMOVE any mentioning/picture of DIY making an electric cable that is in many countries ILLEGAL TO USE BECAUSE DANGEROUS. Change the post to instead advice readers to simply (1) use an off the shelf grounded extension cable and (2) plug in the grounded (unmodified) powerswitch to that extension cable.
If OP is not willing to make that change then Instructables moderators should step in and do it.
Reply 2 years ago
First of all alibuba / Alex this is a project not Ready For Production. If you are not smart enough (qualification) to understand basic wiring then you should not be working with Raspberry Pi / Arduino. If the guy said stick your tongue on the end to see if there's electricity would you do it? Maybe I'm wrong but it looks like the guy is using a European extension cord or plugs. Have you ever used a 2 prong splitter the USA? You know, the one that DOES NOT have a ground? The one you get at Ace Hardware? SMH. Based on my uploaded picture I should be able to plug in 3 Pi power supplies NOT GROUNDED. SMH
6 years ago
Hi,
can this work on Pi2 or B+?
Reply 2 years ago
I just tried it on a Raspberry Pi 2 Mod. B v.1.1 (Raspbian Buster, Chrome 78) and a Logitec C270. It works, but the video runs too slow, in any video quality (low, standard, high). Not usable. It might be different on a Pi 2 v1.2 as it has the newer Cortex A53 CPU.
Little hint:
If you get the "permission not granted" error for the microphone, install and start pavucontrol. This fixed it for me.
Question 3 years ago on Step 9
Hi, I've tried this on a pi 4 with a logitech USB webcam, but it won't record audio and play the other person's voice at the same time. I can either select hdmi as the audio device in the rpi GUI, or the webcam. The former gives me audio out, and the latter gives me microphone recording. Is that a problem that you came across? Any advice would be greatly appreciated! Thanks
Question 3 years ago on Step 6
[ Error writing /home/pi/.config/lxsession/LXDE-pi/autostart: No such file or directory ] i am getting this error even after following all steps what to do please help
Question 4 years ago
I have a Raspicam attached with my Pi and Jitsimeet was not able to access my Cam and microphone too. that is the problem where I stuck.
Answer 4 years ago
I have the same issue...I took a look on internet to find out a solution to this problem but nothing seems to work. any suggestion?
p.s.: using a raspberry pi 3 model B and raspicam v1.3, all the rest is the same as CMelas did (the cam is detected via terminal and it takes shots and records video as well with raspistill)
Reply 4 years ago
Solved: just take a look to this link to see how easily it worked for me if you still have this issue:
https://www.raspberrypi.org/forums/viewtopic.php?t=173181
Question 4 years ago
Hi,
I was looking for this for long. But not exactly this one. I had uploaded a tiny script to transmit video back and forth using gstreamer. (https://github.com/joicemjoseph/videocall )
Gstreamer seems a good candidate because, it uses very little resources.
is it possible to do the same using gstreamer ? what about working around a Tkinter wrapper around it and do the same ?
Answer 4 years ago
Can we stream live videos from both sides (Raspberry Pi and PC) like a video chat using gstreamer??
6 years ago
Has anyone problem with chromium run on raspberry pi 3?
I have install the chromium on pi but it does not run.
I am clicking on the chromium icon but never run.
Reply 5 years ago
Καλησπεραααα
σκεφτομουν να χρησημοποιησω κατι παρομοιω για να κανω κλησεις μεσω fb σε εμενα λειτουργησε κανονικα το chromium στο pi 2 B+ αλλα ειχα θεμα με τν καμερα καμια φορα επιανε και καμια αλλη οχι μοιπως εχεις καμια ιδεα για το γτ συμβαινει αυτο ???
6 years ago
Hi,
I already bought my raspberry pi3 and I am on the process of choosing a webcam that works using Hangouts via Chromium. Could you tell me if the webcam you used in the tutorial is detected correctly by the browser and if the hangouts is working fine?
if yes, could you tell me the exact webcam model you are using?
many thanks!
6 years ago
Hello,
I read your instructions and decided to use the same components and follow your instruction word by word to ensure that it will be working with me. But when I arrived at the part with jitsi i came over the problem that jitsi just wont recognise my webcam. I positively tested the cam (via fswebcam) to see if it is working.
Do you have any ideay where the problem could be?
many thanks in advance