In the previous posts on this topic I have taken a look at ‘over the top’ voice calling, how much jitter IP packets have when they arrive at the destination and which codec is used. Most over the top voice call options seem to use WebRTC as a general framework for the voice call, and WebRTC in turn uses the free Opus codec to transmit the speech path. Opus in turn uses the NetEQ jitter buffer framework to adapt to changing network conditions. So what does that mean?
Continue reading Opus and the Jitter Buffer – OTT Voice Observations – Part 5Ubuntu 26.04 – An Encrypted Separate Home Partition – Part 2

In the previous post, I’ve had a look at how to create a new Ubuntu 26.04 installation with an encrypted system partition and a separate partition for the user directory that is also encrypted. A cool way to get this done is to bring up an installation in a virtual machine first and then move a copy of it to a physical computer. While this is my installation and configuration method of choice going forward, I have now also found out now how to do this directly on a physical device.
Continue reading Ubuntu 26.04 – An Encrypted Separate Home Partition – Part 2XMPP Voice Call Setup Tracing – OTT Voice Observations – Part 4
In the previous post, I’ve had a look at how the voice calls codec and other parameters are exchanged and negotiated between two XMPP clients such as the Conversations messenger running on Android. As I operate my own XMPP server, I can trace right in the middle and while there is end to end encryption for message content and voice calls, most parts of the signaling message for a voice call setup are going through the server in plain text. I use the Prosody XMPP server and there are several ways to trace there:
Continue reading XMPP Voice Call Setup Tracing – OTT Voice Observations – Part 4Which Voice Codec? OTT Voice Observations – Part 3

In part 1 and 2 on this topic, I’ve been looking at how over the top voice services such as the Signal messenger or the Conversations messenger packetize and send data over the cellular network and the resulting graphs look pretty neat. But which codec is actually used for the voice channel? I’ve been looking a bit into the source code of both messengers and both use WebRTC for the voice channel. But which voice codec is actually negotiated? The Internet ‘knows’ that Opus is used, but is that really so? I decided to have a closer look.
Continue reading Which Voice Codec? OTT Voice Observations – Part 3Ubuntu 26.04 – An Encrypted Separate Home Partition

I’m still running on Ubuntu 22.04 and it’s time to upgrade to something more recent after the release of Ubuntu 26.04 earlier this year. I’ve decided to start with a clean installation and make a number of improvements to my setup. So far, I’m using an ext4 system partition and a separate ext4 LUKS encrypted partition for the home directory. The benefit of this is that I can use Clonezilla to quickly back-up or copy the relatively small boot and system partitions and restore them on another SSD. This gives me a working system in a few minutes that is configured exactly as I want it, and I can then restore the home partition that holds more than 1.5 TB of data at my leisure. The problem: The system partition is not encrypted, which I have compensated so far by using the SSD hardware encryption with a password on power-on. This works for me, but an encrypted system partition would be even better. The challenge: The Ubuntu desktop installer does not have an option to create a system with separate system and home partitions and encrypt them both. A pity. But with the experience gained by experimenting with installing, backing-up and restoring physical SSDs to virtual machines and vice versa over the past years, I have found an elegant solution:
Continue reading Ubuntu 26.04 – An Encrypted Separate Home PartitionOnlyOffice Online: Adding Fonts
These days, I use my server based instance of OnlyOffice in combination with Nextcloud more often than the locally installed LibreOffice. The main reason is that I edit many documents on more than one device, so having them on my own server and to be able to edit them from anywhere is a game changer. Also, OnlyOffice’s Word, Excel and Powerpoint compatibility is significantly better than that of LibreOffice to the point that it is almost perfect. One little thing that was missing so far, however, was the use of extra fonts that are not included in the package. Unfortunately, that is sometimes necessary when I get documents from other people that are not using standard and free fonts. On my notebook, adding fonts is simple: Just copy them to a certain directory and it’s done. Turns out that the same approach also works very nicely for a dockerized OnlyOffice on the server.
Continue reading OnlyOffice Online: Adding FontsVisualizing Voice Packetization – OTT Voice Observations – Part 2

In part 1 on this topic, I’ve done a first high level comparison of how the Signal messenger app and the Conversations messenger app use WebRTC for real time voice calling. In that post, I showed that Signal packetizes the voice channel in 60 ms chunks while Conversations uses a packetization of 20 ms. The two graphs in this post show how this can be seen with the help of a Wireshark trace that I took on my Wi-Fi router at home.
Continue reading Visualizing Voice Packetization – OTT Voice Observations – Part 2Signal vs. Conversations – OTT Voice Observations – Part 1

In my simple universe, I always thought that all apps using Android’s built-in WebRTC stack for voice and video calls would pretty much use the same parameters and hence, the encrypted data stream would pretty much look the same. It turns out, however, that this is not at all the case. This discovery made me go off on quite a bit of a tangent, and I decided to have a look at a number of different related things, including cellular network handover behavior and other things. But let’s start at the beginning, the use of WebRTC by different ‘Over the Top’ voice applications. Personally, I use two messengers: Signal and Conversation and it turns out they use WebRTC quite differently!
Continue reading Signal vs. Conversations – OTT Voice Observations – Part 1Disconnecting Mouse Moves

Here’s yet another ‘mouse’ story, these devices seem to be much more tricky to handle than they look, at least for me. So here’s the story: For the past few years, I’ve had this very strange behavior that when traveling, my mouse would work better on some surfaces than others. Particularly, when I would lift the mouse, move it and then put it down again, it would, on some surfaces, take a few seconds before it was working again. For several years I blamed this on the reflectance of the surface, as this behavior seemed to mostly happened on such surfaces. But over the years doubt has crept in if that was the real reason for this.
Continue reading Disconnecting Mouse MovesMy AI Learning Journey – Part 12 – Kagi’s Privacy Minded LLM Search Assistant

In a previous post I’ve taken a look at how I can combine a private LLM with Internet search. My setup: An Open WebUI instance hosted at home together with Ollama, the Llama3 LLM and Brave as a search front-end. While this works well for some kinds of searches and not so well for others, I was wondering if there are also other options for private search with LLM capabilities that require less self hosting. Here’s an interesting option I came across: Kagi.
Continue reading My AI Learning Journey – Part 12 – Kagi’s Privacy Minded LLM Search Assistant