Firmerware for better SIP phones

By: Rick van Rein, OpenFortress

What is this?

Digital phones are basically small computers. They may be equiped with dedicated input/output hardware, but still they are network-connected computer equipment.

This means that a lot more is possible with them than mere simulation of analog phones. Strangely, the imagination of most users does not make them ask for more, and since the average telco earns money from the analog phone principle, progress has come to a halt.

The "firmerware" that is presented here, is intended as an alternative software basis for precisely those phones. Depending on the make and model of your phone, your mileage may vary, but we expect to be able to upgrade more phones as we progress. The inguiniety of reverse engineers is incredible, and we are hoping for their support! Also, we are hoping to win the support of evermore manufacturers of hardware.

Once upgraded, the phone is ready for 0cpm telephony. This means that they will use the new generation Internet, which makes peer-to-peer connections much easier. The result is that the analog-telephony backbone with its per-minute charges can be bypassed by going over the Internet.

Project Context

This project is part of the 0cpm project, which aims for telephony that occurs purely over the Internet, using IPv6 and with end-to-end encryption.

The philosophy of online freedom that underpins the 0cpm development project matches fluently with the upcoming Internet Wide Organisation which aims for online freedom, self-control and independency across a plethory of protocols. The practical projects behind this will be rolled out on the ARPA2 Demo Platform and the ARPA2 Development Platform.

The 0cpm components, including the 0cpm Firmerware, are very likely to occur as an ARPA2 plugin.


We have a separate page with our motivations.


Project status:

  • All the hardware of the BT200 has been reverse engineered.
  • GXP models appear to follow a similar architecture, but introduce a graphical display (which has not been reverse engineered yet). Newer models also introduce "HD sound", but that boils down to a higher sampling frequency, a better codec and perhaps analog modifications. Doing HD on other phones should be no problem.
  • Major stumbling block was/is driving the sound chip TLV320AIC20K. As it turns out, I was starting its framesync signals before resetting the chip, and that confused it. The rest was due to a somewhat awkward chip design and confused chip documentation that was virtually useless in locating the problem.
  • Early tests (sending port I/O) now give the expected sounds. These are available in git. Playing sound over DMA works; reading microphone input does not work yet. Still need to finish the common sound path (codec, RTP, DMA).
  • Still need to integrate ZRTP.
  • Still need to create a (graphical) user interface.

Technical status:

  • Working aspects: Sound DMA, networking, frequency regime, LCD display,
  • IPv6 connectivity on any network.
  • SIP: initial successes with call setup and answering.
  • Made the codec selection for this firmware; added them as modules.
  • Implemented the RTT special codec.

If you would want to try to port it on a real platform, look for a platform that supports these things:

  1. You need a toolchain for building applications
  2. You need a way to upload the code

We are working on a few platforms, including Android and a few hardware models.

The easiest platforms are those that run Linux (including Android) or another UNIX flavour (like IOS) already; for a completely embedded phone you may have a bit of extra work to do. Let us know if you get it working -- I'd be happy to setup a Hall of Fame with your projects!

Trying it

Please be sure to understand that this is currently pre-alpha firmware, and your mileage in trying it may vary. I am working hard on it, and you should see it improve over time.

But if you are interested, you should probably read the HOWTO guide first. (Also available as PDF.) Currently, developer skills are still required.


The context of this project is the 0cpm service, which will host Internet calling in the best possible traditions of SIP over IPv6, with lots of features. This work on firmerware is not a goal in itself, but generally good to do. This has provided us with the support of a few parties, for which we thank them: