Alex Kalmuk's Embox-Based SIP Phone, Complete with GUI, Runs on an STM32 Microcontroller

Built atop an STM32F769I-Disco evaluation board, this SIP phone took just a couple of days to develop.

Developer Alex Kalmuk has written a guide on making a homebrew Voice-over-IP (VoIP) phone, based on the Session Initiation Protocol (SIP), driven by an STM32 microcontroller — complete with a graphical user interface.

"We have an STM32F769I-Disco [microcontroller evaluation] board. In our mind, it is almost a smartphone," Kalmuk writes. "There is an 800x480 touchscreen, an audio interface, a network interface (even if it is not wireless). There are 2MB flash and 512[kB] RAM on-chip memory, and also 64MB QSPI flash, and 16MB SDRAM on the board."

"So we decided to try how much time it takes us with Embox to develop a SIP-phone with GUI. This article contains two parts. First, we will show how to fit a VoIP phone into the on-chip memory of the STM32F769I MCU. And in the second part, we will tell how to design the SIP-phone with GUI on a host fast and run it on an MCU."

This SIP phone shows just how much functionality you can squeeze into an STM32. (📹: Alex Kalmuk)

The project is built around the Embox operating system, which is designed to bring Linux applications to resource-constrained platforms without rewriting them, and the PJSIP VoIP application. Working from details first published by Embox's Anton Bondarev, Kalmuk's guide walks step-by-step through building the software, launching it on the STM32 board, and adding a graphical user interface using the Nuklear GUI framework.

"[Development] took very little time," Kalmuk writes. "One day for the application on Linux and one more day to improve on the target platform. Yes, Embox already had a display, network card, and audio drivers for this board. But the development of these parts also takes a little time, no more than a week for each driver."

"It takes much more time to develop such features right on the board. In our case, most of the functionality is developed under the convenient host system environment [using QEMU]. It is this that allowed us to significantly reduce the development time."

The full write-up can be found on Medium now.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire:
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles