Feature Request: RTPEngine as a new package in network-telephony

RTPEngine is an open source application often used with Kamailio to transcode media streams and to pass NAT-borders. To run efficiently, it uses a kernel module for handling RTP packets (optionally it runs "user space" only).

1 Like

Hello @doerner and @tkteun

I added a pull request with the package to telephony repo here. If you're still interested and are able to test and provide feedback that would be much appreciated.

Best regards,
Seb

1 Like

Hi Micmac1,
I wanted to try your package, but I'm not too used to compiling openwrt and I don't think I'm doing it right...

I've cloned openwrt and ran "feeds update -a" script.
Then I changed the feeds/telephony folder to "https://github.com/micmac1/telephony" and "git switch rtpengine" which looks good.
But then running "feeds install -a" doesn't touch rtpengine.

So I do have: openwrt/feeds/telephony/net/rtpengine
And I don't have: openwrt/package/feeds/telephony/rtpengine
Nor does it show up in menuconfig...

Do you have any idea of what I'm missing?
I guessed it should be right beside rtpproxy, is that so?

1 Like

Hello @tkteun

Thanks for your reply! Regarding your question, it shouldn't be too hard. Maybe you can restore your setup to the original state and follow me?

First I'd call

./scripts/feeds update -a

This should also update the packages feed. This needs an update because rtpengine needs json-glib, which only recently go added to the packages feed.

Then step out of the buildroot, maybe into your home folder.

cd

Create a directory, maybe call it github

mkdir github
cd github

Then clone my repo:

 git clone https://github.com/micmac1/telephony.git seb-telephony
cd seb-telephony

Now checkout the branch with rtpengine:

git checkout rtpengine

Now copy the rtpengine folder to your OpenWrt buildroot:

cp -r net/rtpengine/ ~/path/to/openwrt/feeds/telephony/net/

Step back into the OpenWrt buildroot:

cd ~/path/to/openwrt/

Reindex telephony feed and install rtpengine:


./scripts/feeds update -i telephony
./scripts/feeds update install rtpengine

This should set up everything needed, including json-glib.

make menuconfig

Select the packages you want. rtpengine and rtpengine-recording you'll find under Network/Telephony. The iptables extension is under Network/Firewall. And the kernel module is under Kernel modules/Netfilter Extensions.

Mind you, though, that the kernel module only works with the exact same kernel, meaning they'd have to be both built at the same time. At least that's my understanding. But you can run rtpengine without the kernel module for starters.

I'm trying to commit rtpengine in the near future. Then a day or two later there should be snapshots available with rtpengine and also the kernel module. Then it'll be easier to test. Although you would still need to install a fresh snapshot for being able to use the kernel module.

At the moment lots of targets are being moved to kernel 5.4. I heard for some devices this doesn't work right yet (they get bricked?). So I'm hesitant myself to install a recent snapshot :slight_smile:

Anyway, thanks for your interest!

Kind regards,
Seb

Hello again @tkteun

Actually I just merged the package into master.

So if you revert the changes you made and afterward run:

./scripts/feeds update -a
./scripts/feeds install rtpengine

it should show up in your menuconfig. Or you could wait a day or two until the packages show up on the mirrors.

Thanks!
Seb