Setting up a VoIP communication between a Raspberry Pi and an IP phone using an Asterisk IP PBX server
Student project carried out as part of studies at the University of Technology of Compiègne (UTC)
Guillaume Nibert
Supervisor: Dr. Ahmed Lounis
English article: https://guillaume.nibert.fr/voip-asterisk-rpi-ipphone-project/
English PDF report: Download
English PDF presentation material: Download
French article: https://guillaume.nibert.fr/fr/voip-asterisk-rpi-ipphone-projet/
French PDF report: Download
French PDF presentation material: Download
Telegraph, analogue telephone, digital telephone, IP telephone with wired or wireless modes, telephony is currently a widely used and very convenient global link, indispensable for fast and real-time exchanges, for all purposes. It is quite reliable, not too expensive, and offers ever more extensive possibilities at an ever faster rate.
The aim of this project is to use the IP protocol used in the Internet, to make devices communicate with each other (commonly called endpoints). This project will therefore implement two endpoints with the following hardware characteristics:
- endpoint 1: Alcatel IP Touch 4018 EE phone;
- endpoint 2: Raspberry Pi 3 Model B+.
Below is a global diagram of the infrastructure architecture in the 192.168.1.0 network (the router is not shown for readability reasons):
Simply, without going into detail, in this diagram there are two clients: the end points which are the Alcatel IP Touch 4018 EE and the Raspberry Pi. When there is a telephone communication between these two devices, the protocol used for the initiation of the communication is SIP (Session Initiation Protocol) for the application layer and UDP for the transport layer of the Internet protocol stack. This initiation goes through an intermediary: the SIP initiation server (Asterisk) which is accessible on the Debian Asterisk Server virtual machine on port 5060 (in blue). Once the initiation is done, the two devices connect to each other directly to let the audio pass via the RTP protocol (in green).
An important point concerns the Alcatel phone part, which needs at each startup to check its firmware and configuration files allowing it to connect to the Asterisk server. These files are stored in the Debian virtual machine and are available to the Alcatel via the HTTP server on port 80 (in orange).
This project details the architecture of the system as well as the implementation of the entire IP telephony infrastructure allowing communication between these two devices. Firstly, some theoretical elements on the protocols used will be looked at, in particular on the role and functioning of SIP in VoIP and RTP. Secondly, the interest of using the Asterisk system in the design of this infrastructure and its implementation will be evaluated, then the two clients (Raspberry Pi and Alcatel phone) will be configured and tested. Finally a user-friendly SIP client in JavaScript for the Raspberry Pi will be designed.