Rarely do I have a “lazy” time in the recent months. This month already started with a blast with me going to FOSDEM 2024 where I delivered a talk and had an opportunity to meet a ton of like-minded folks! Later this month I might tease some news about upcoming OSPO projects in my company but that is still WiP and wishful thinking on my side…

Brussels daytrip

I arrived in Brussels early on Friday morning and was forced to travel all the way from Charelroi airport (including standing in 1,5 hour queue just to get on a bus) where said bus would drive me around Brussels' suburbs for yet another 1,5 hour until we arrived in the Brussels Midi station. Thankfully, these were the only inconveniences of the upcoming day.

I won’t bore you about all the usual tourist crap, instead let me just leave you with several pictures and the recommendation to eat Belgian fries, drink a Belgian Dubbel or Trippel (or a Blonde) and visit the Magritte museum to get a dessert in form of abstract art.

Rainy Brussels. Brussels European Council. Brussels station.

Also some works of Magritte that caught my eye (pissed pig or pre-Minecraft voxels):

Pissed off pig. Matches ad. Voxelmania.

FOSDEM in general

I have been encouraged to come to FOSDEM for several years already and heard only superlatives about this conference - mainly because it is Free as the F in FOSS and because it has Beer as .* in FOSS 😁. I must say I was not disenchanted by a single bit (or byte) as during my entire stay at the premises of the ULB where it took place, people have been more than helpful and everyone was in the networking and learning mood that I all so enjoy.

Szymon was supposed to join me but was forced to cancel his talk due to blockers that he faced in the course of his thesis development (the talk was based on his thesis progress) - but worry not, he will come next year (even if he does not know that yet :D). Also MichaΕ‚, who is not really a developer of FOSS software but rather its user, considered coming, since travelling to Brussels from London is fairly quick and still not very expensive (by train).

I must say I am quite envious of my Western European friends who happen to travel from Germany or France to Brussels by train instead of an airplane, but then we have other benefits by being slightly more remote πŸ˜„ Let’s not get sidetracked though and let’s get to the main course of this blogpost - my talk on the role of Open Source in the development of 5G and LTE networks.

Me Campus Network track packed.

There were hallmarks of FOSS everywhere!

Don't drink Belgian beer or you will end up like the VLC cone!

My talk

Even though it was quite short (around 20 minutes as the Network track was very packed this year), my talk garnered the audience of around 300 people that is the biggest so far. This has also been a talk that was more day-job related than my previous ones so I could finally boast of my experience in FlexRAN’s development for Intel or other work around 5G and ORAN networks. If you were to remember one thing from the talk here it is: “It’s great that we have some established projects in the Core Network like ONAP or Sylva, but we really need a solid open source foundation in the lowest layer of the processing chain!"

After this call to action you know the gist of my talk, though re-watching it could give you more insight about the current state of the telecom industry and the problems and opportunities that it is currently facing. Apart from the said call-to-action, I explain how 5G (and especially L1) works and why we care about opening of the ecosystem. I also go over several foundational projects like DPDK, ARM RAL or CESNET’s ORAN MPlane libraries that all start to form the open source core of L1 in 5G and soon 6G.

I am leaving you here with 2 pictures related to the 5G protocol stack and network topology so that you may at least have a glimpse into the complex world of 5G. The picture below depicts the overall structure of the network with the main components depicted:

  • Radio Unit - the most physical part of the network, think very complex physical calculations being done in real-time, so quick that it is implemented on ASICs/FPGAs most of the time.
  • Distributed Unit - depending on the network split, more or less calculations are performed here - this is the interface to the UPF. Usually up to L2/L3 layers are implemented here.
  • User Plane Function - tasked with higher-level functions of the network, such as packet filtering or quality of service.
  • Core Network - here be dragons - so many distinct things happening here, from security, to network management, updates and other things that are deemed important by the network operators. Also makes sure your packets are routed to the outside world and that you receive your data 😁
RU(radio)DU(process)UEgNB - the base stationUPF(user plane function, packets inspection, QoS etc.)5GCDN(Data Network)

(If you cannot see some parts of the images, please toggle the Dark/Light theme settings in the context menu - they are .svg so have a transparent background)

Now please take a look at the protocol stack and where exactly is L1 in all this mess:

PHYMACRLCPDCPRRCNASSDAPL3L2L1

In all honesty, if you are at least slightly interested in 5G networks and about their current state, my talk will give you at least some knowledge and point you to proper resources to learn more. And if said topics are something that resonate with you, we will be more than happy than work with you (we meaning my current employer - Tietoevry).

Zephyr, Emulators and Retrocomputing

Zephyr

Having talked more than 2 hours with folks after my talk I managed to catch up with people from the Zephyr project and we even went for a dinner where we discussed our recent experiences with various chips (I could prattle about my struggles with ESP32C6 and lack of support for it - yet). If any of you is into embedded development and is currently searching for a great and friendly project - search no more - Zephyr got you covered. Meeting with them reminded me to push the PRs that enhance the documentation to the HTTP server samples which I have currently been porting to my newest project.

I managed to catch several hours of sleep (next to the European Council - the Schumann station) and went for another busy day which I spent almost entirely on two tracks - Emulators and then Retrocomputing. Every time I meet folks that do these things I get a small impostor syndrome - how can you be an electronics, system, and game developer at the same time?! Well, it turns out that with dedication and commitment (and a ton of curiosity) such people are molded. Needless to say, mark my words, my next project will be in the emulation area (but more on that in future blogposts 😁)…

Zephyr Dinner!

Emulators

I won’t cover all talks from these tracks but rather focus on the most eyebrow raising ones:

The Emulator track opened with talks on my beloved GameBoy emulation and getting started with that. Firstly we had a talk on Nintendo 3DS emulator - Panda3DS including a very in-depth discussion about various 3DS internals and peripherals. Probably the most important useless fact is that Nintendo did software SHA calculation even though they had a hardware chip to EXACTLY DO THAT 😁

Next up, there was a talk on approaching emulation and reverse-engineering Android operating system including the oh-so-dreaded Primary Bootloader, which turns out to be a very complex code when disassembled. I really enjoyed the talk because we could have a glimpse how a national institution approaches such problems - and believe me they do it very professionally. Also, it included using Ghidra and live patching the binary with scripts, Unicorn and Qiling to make the program behave as the researcher deemed it. I also learned a new word (or a neologism) Concolic execution - which is a conjunction of concrete and symbolic. Basically it means that we choose heuristics to progress with the program execution to cover all of our desired paths (though I know it is still complex…)

There was also a talk on how Microsoft recently started supporting ARM64EC (which stands for emulated code), where I could learn about the pleasures (or lack of them) in marrying x86 instruction set with ARM64 one with both of them having different register/flag and caller/callee register preserving conventions. I highly recommend watching it if you like to listen how Microsoft chose the proper way to approach a problem that is solved by the rest of us in a totally different way 😁

Retrocomputing

The next half of the day was dedicated to retrocomputing machines, such as Z80, GameBoy Advanced one more time and the mysterious Sanco 6003 computer. The hero of the first talk was a Commodore CBM II. I don’t stop to be amazed by the ingenuity of older computer designs - and I was not disappointed now - this machine had a possibility for connecting a secondary CPU to be working either as the main one or a co-processor!

If you are curious about other such examples, I highly recommend The Bald Engineer and his talk from last year’s Hackaday Supercon about bringing the Apple ][ machine to life. (It’s a link to his video on that topic - could not find the actual recording…)

The talk on GBA mostly tackled tooling and resources for folks who want to hack around with this retro piece of console (like me) that I will shamelessly plug in here:

  • gbdev.io - community page for GBA hackers
  • CTR - a Complete Technical Reference for GBA
  • romhacking - a collection of hacked ROMs that are free to use and peruse (and to contribute of course πŸ˜„)
  • assembly - GB Assembly for modern Game Developer
  • GB ASM tutorial - how to make GB games from scratch

Lastly, I really enjoyed and kept grinning when 2 guys were presenting their thrash-prize - Sanco computer that turned out to be Franco-Japanese machine that (no surprise here) had scarce documentation. They reverse engineered the schematic (**from the traces on the board!!!*) and continue to add support and documentation for it. When they were talking about solutions on printing the characters to the screen and how the characters are stretched vertically or horizontally using very simple combinatorial circuits, for a moment I wished I was back at Uni doing Boolean tables and digital circuit optimization. But worry not, this moment passed as quickly as it arrived 😁

Summary

Although this was the first FOSDEM I ever attended, it surely won’t be the last - Michal and Szymon, shame on you if you don’t come next year! The sheer number of people attending this event made me feel a part of something greater even more so than during my last year’s GDC. What’s better, this event was all about FREE technologies that happen to power most of our modern world and are ever so important while, sadly, often overlooked. Being part of these conferences always makes me want more and gives me food for thought and new projects ideas 😁 Speaking of, I need to get back to the ZLED project that already started gathering some dust as I didn’t shine these LEDs while being sucked in by the Zephyr’s networking stack. Worry not, we will have a shiny 3D printed case for the frame soon . Until then!