# Sergio Giménez — full content
> Passionate about networks :satellite:, music :guitar:, coding :desktop_computer:, travelling :airplane: and hiking :mountain:
Plaintext dump of all pages and posts, generated for LLM/agent consumption.
Canonical site: http://sergiogimenez.com/
================================================================================
## Uploading Maps to My Garmin Forerunner 965 on Linux
URL: http://sergiogimenez.com/posts/2026/upload-maps-to-garmin-linux/
Date: 2026-02-14
Tags: garmin, linux, debian
I recently got a Forerunner 965 and wanted to load some custom maps for an upcoming trip. Turns out, Garmin devices use MTP instead of standard USB mass storage, so the filesystem doesn't just show up in your file manager.
Here's how I got it working on Debian 13.
## The Setup
First, make sure you have the MTP tools installed:
```bash
apt list --installed | grep -i mtp
```
You should see `mtp-tools`, `jmtpfs`, and `libmtp9`. If not, install them.
## Mounting the Device
```bash
mkdir -p ~/garmin-mount
jmtpfs ~/garmin-mount
```
If you get a "device is busy" error, it's probably already auto-mounted by GVFS. Check with `mount | grep mtp`.
## Copying the Map
Navigate to the mount point and you'll see:
```
~/garmin-mount/
└── Internal Storage/
├── GARMIN/ ← Maps go here
├── Music/
└── ...
```
Copy your `.img` map file to the `GARMIN` folder:
```bash
cp Spain_East_OFM.img ~/garmin-mount/Internal\ Storage/GARMIN/
```
That's it. Unmount with:
```bash
fusermount -u ~/garmin-mount
```
## Quick Commands
```bash
# Check if device is detected
lsusb | grep -i Garmin
# Mount
jmtpfs ~/garmin-mount
# Copy map
cp your-map.img ~/garmin-mount/Internal\ Storage/GARMIN/
# Unmount
fusermount -u ~/garmin-mount
```
The map should now show up in your watch under **Settings → Map → Map Manager**.
================================================================================
## How to Install OpenWrt on the Cudy WR3000 (v1 Retail)
URL: http://sergiogimenez.com/posts/2026/openwrt-cudy-w3000-v1/
Date: 2026-02-12
Tags: openwrt, cudy, wr3000, router
# How to Install OpenWrt on the Cudy WR3000 (v1 Retail)
The Cudy WR3000 is a fantastic budget router for OpenWrt (MediaTek Filogic 820 chipset). In fact I'm surprised how the people from Cudy makes so easy to install OpenWrt. They even provide the openwrt firmware from it website. Honestly, this is how hardware should be.
So installing OpenWrt is pretty straightforward, but we need some considerations.
---
## ⚠️ Important Prerequisites
### 1. Check Your Hardware Version
Flip your router over and check the **Serial Number (S/N)** on the sticker.
* **Safe Zone:** If your S/N is **lower than** `2543...` (e.g., `2536...`), you have the standard v1 hardware. **This guide is for you.**
* **Danger Zone:** If your S/N starts with `2543` or higher (manufactured Nov 2025+), you have the "New Flash" revision. *Do not use this guide; you need specific updated firmware to avoid bricking.*
### 2. Use Ethernet
Do not attempt this over Wi-Fi. Connect your PC to a **LAN** port on the router.
---
## Phase 1: Preparation & Downloads
You need two specific files. Do not mix them up.
### File A: The "Unlocker" (Intermediate Firmware)
This is a Cudy-signed OpenWrt image that bridges the gap between stock software and official OpenWrt.
1. Go to the [Cudy OpenWrt Download Page](https://www.cudy.com/blogs/faq/openwrt-software-download) and open their **Google Drive link**.
2. Navigate to the folder: `OpenWrt Firmware` -> `WR3000+v1 without recovery TFTP`.
* *Note: Ignore folders labeled WR3000E, WR3000P, WR3000S. These are for ISP/Enterprise models.*
3. Download the **Zip file** inside this folder.
4. **Extract the zip.** You will see a `.bin` file approximately **9.5MB** in size.
* *Confusing Name Warning:* Cudy often names this file `...sysupgrade.bin` even though it is used as the factory installation image. If it came from the Cudy Drive folder mentioned above, **this is the correct file for Step 1.**
### File B: The "Real" OpenWrt (Official Stable)
This is the clean, official release that you actually want to run.
1. Go to the [OpenWrt Firmware Selector](https://firmware-selector.openwrt.org/).
2. Search for **Cudy WR3000 v1**.
3. Select **Version 23.05.5** (or the latest **Stable** release).
4. Download the **Sysupgrade Image** (filename ends in `...sysupgrade.bin`).
---
## Phase 2: The Installation
### Step 1: Flash the "Unlocker"
1. Log into the default Cudy Web UI (usually `http://192.168.10.1`).
2. Go to **Advanced Settings** > **System** > **Firmware Upgrade**.
3. Upload **File A** (The 9.5MB extracted file from Cudy's Drive).
4. Wait for the install. The router will reboot.
### Step 2: Access the Temporary OpenWrt
Once the router reboots, your PC IP address will change (likely to the `192.168.1.x` range).
1. Open your browser to `http://192.168.1.1`.
2. Login:
* **User:** `root`
* **Password:** (none/empty)
3. You are now in the "Intermediate" snapshot. **Do not stop here.** This version is often outdated, incomplete, or unstable.
### Step 3: Flash the Official Stable Version
1. In the OpenWrt interface (LuCI), go to **System** > **Backup / Flash Firmware**.
2. Scroll down to the section **"Flash new firmware image"**.
3. Click **"Flash image..."** and select **File B** (The official Sysupgrade file you downloaded from OpenWrt.org).
4. **CRITICAL:** Uncheck the box **"Keep settings and retain the current configuration"**.
5. Click **Flash**.
The router will reboot again (approx 2-3 minutes). You now have a clean, official OpenWrt install!
================================================================================
## OpenWrt on Xiaomi Mi Router 4C (Model R4CM) - 2024 Production Batch
URL: http://sergiogimenez.com/posts/2025/openwrt-mi4c-2024-batch/
Date: 2025-12-18
Tags: openwrt, networking, xiaomi, router, mi4c, guide, homelab
Recently we bought a few units for the 2025 project in AUCOOP. We did a short workshop for the new students and documented the entire process here for future reference.
This is a summary of the workshop btw :)
---
**Device:** Xiaomi Mi Router 4C (Model: R4CM)
**Production Date:** 03/2024
**CPU:** MediaTek MT7628DA
**RAM:** 64MB
## Get Root Access
We first need to gain root access in the router with the xiaomi firmware. We use the [OpenWRTInvasion](https://github.com/acecilia/OpenWRTInvasion) tool. We used the Docker method to avoid Python dependency issues on the host machine.
1. Clone & Build:
```bash
docker build -t openwrtinvasion https://github.com/acecilia/OpenWRTInvasion.git
docker run --network host -it openwrtinvasion
```
2. **Run Exploit:**
```bash
docker run --network host -it openwrtinvasion
```
* **IP:** `192.168.31.1` (default Xiaomi router IP)
* **Stok:** Log in to the router web interface, look at the URL `http://192.168.31.1/cgi-bin/luci/;stok=/...` (note that this might be detected automatically by the tool, so this step might not be necessary to be done manually)
* **Password:** `root`.
## Make Backups!
**Do not skip this.** 2024 units have unique calibration data. If you lose `mtd3`, your WiFi signal will be weak/dead.
1. **SSH into Router:**
* *Note:* We must use legacy encryption flags because the stock SSH server is old.
```bash
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa root@192.168.31.1
```
2. **Create Dumps (Run inside Router):**
```bash
dd if=/dev/mtd0 of=/tmp/ALL_backup.bin
dd if=/dev/mtd1 of=/tmp/Bootloader_backup.bin
dd if=/dev/mtd3 of=/tmp/Factory_eeprom.bin
```
3. **Download to PC (Run on PC):**
```bash
# Run from your local terminal
scp -O -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1:/tmp/*_backup.bin .
scp -O -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.1:/tmp/Factory_eeprom.bin .
```
## Install OpenWrt
We decided to use version 23.05.5 because the 4C has only 64MB RAM. Newer versions (24.x) are heavier. So just in case, we are using OpenWrt 23.05.5. This might be unnecessary, but I don't know, better safe than sorry.
1. **Download Firmware:**
* Target: `ramips/mt76x8`
* File: `openwrt-23.05.5-ramips-mt76x8-xiaomi_mi-router-4c-squashfs-sysupgrade.bin`
Search for tt
2. **Upload to Router (Run on PC):**
```bash
scp -O -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-rsa openwrt-23.05.5-ramips-mt76x8-xiaomi_mi-router-4c-squashfs-sysupgrade.bin root@192.168.31.1:/tmp/firmware.bin
```
3. **Flash (Run inside Router):**
```bash
# Verify partition name is OS1 (usually mtd7)
cat /proc/mtd
# Write firmware
mtd -r write /tmp/firmware.bin OS1
```
## Post-Install
The router will reboot. The LED will start in orange color. If eventually changes to blue, that means OpenWrt is running. If after a few minutes it is still orange, that means the firmware flash failed. You have a bricked router now...
Now you can access with your PC to OpenWrt at `http://192.168.1.1`.
## Next Step
Since you have successfully flashed the device, you should now **store those backup files (`ALL_backup.bin`, `Factory_eeprom.bin`). If you ever mistakenly erase the router's calibration data in the future, those files are the *only* way to restore your WiFi signal strength.
================================================================================
## Accessing Your Homelab: VPN vs Service Exposure Strategies
URL: http://sergiogimenez.com/posts/2025/vpn-homelab/
Date: 2025-11-04
Tags: homelab, networking, vpn
## Introduction
{{< lead >}}
This guide explores two fundamental strategies for accessing your homelab services from outside your local network. Whether you're setting up a new homelab or optimizing an existing one, understanding when to use each approach is crucial for both security and functionality.
{{< /lead >}}
{{< alert "circle-info" >}}
This is likely the first in a series of articles covering homelab remote access. Some friends have been asking questions about this setup, which is a great excuse to document everything properly.
{{< /alert >}}
## Two Strategies for Remote Access
It's important to differentiate between two distinct strategies for accessing your homelab services from the internet:
### 1. Service Exposure (Cloudflare Tunnels)
Exposing a single service or application to the public internet. For example, I serve [https://hahatay.network](https://hahatay.network) directly from my homelab.
**Use Case:** Public-facing services that need to be accessible to anyone on the internet.
### 2. VPN Access (Netmaker/WireGuard)
More sensitive services like my Proxmox web interface are kept behind a VPN. This is much more secure and versatile.
**Use Case:** Private services that only specific people or devices should access.
## When to Use Each Strategy
### Use Cloudflare Tunnels When
- You want to expose a **single service** for multiple people or machines to access from the public internet. For example, making a website like [https://hahatay.network](https://hahatay.network) accessible to everyone, regardless of their location.
- The service is designed for public consumption.
- You need simple, managed SSL/TLS certificates.
### Use a VPN When
- You want to access **multiple services** in your network from outside.
- You need **secure, controlled access** limited to specific users.
- You're accessing sensitive infrastructure (Proxmox, routers, management interfaces).
- You want access to your whole network (access to VMs, LXC containers, devices, etc.).
## Requirements and Considerations
### For VPN Setup
A VPN server requires a **publicly accessible IP address**. There are several options to achieve this:
#### Deploy your own VPS
I use a VPS with a public IP address. Affordable options include **Racknerd**, which offers very competitive pricing (no servers in Spain, but I have used them for years at an unbeatable price), and **IONOS**, another budget-friendly option with servers in Spain.
{{< button href="https://my.racknerd.com/aff.php?aff=15175" target="_blank" >}}
Use Affiliate Link to Create a VPS on Racknerd
{{< /button >}}
#### Request a public IP from your ISP
Some internet service providers can assign you a static public IP, but this may involve additional monthly costs.
#### VPN Provider Solutions
Services like ProtonVPN might be an option (requires further investigation).
I went for the VPS approach because I assume the "worst case" where my ISP uses CGNAT (Carrier-Grade NAT) and there is no way that I can access my home network directly. In fact, this is what we have in Senegal in [https://hahatay.network](https://hahatay.network). It's even impossible to talk with a technical person in the ISP.
### For Cloudflare Tunnels
- You need a **domain managed by Cloudflare**
- The easiest approach is to purchase directly from Cloudflare's domain registrar
- Cloudflare Zero Trust account (free tier available)
{{< button href="https://www.cloudflare.com/products/registrar/" target="_blank" >}}
Get a Cloudflare Domain
{{< /button >}}
## Exposing Services via Cloudflare Tunnels
Cloudflare Tunnels are ideal for exposing a single service, such as:
- Personal website or blog
- Web application
**Requirements:**
- Domain registered with Cloudflare
- Cloudflare Tunnel configured
**Benefits:**
- No need to open ports on your firewall
- Free SSL/TLS certificates
- DDoS protection
- AI Crawler Protection
- Simple setup and management
## Exposing Services via VPN
A VPN solution allows you to expose multiple network elements securely:
- Virtual Machines or LXC containers running on Proxmox
- Network infrastructure (routers, access points)
- IoT devices (smart plugs, sensors)
- Any element within your network
### Setting Up the VPN Server
For those with ISPs using CGNAT, you'll need a VPS:
1. **Choose a VPS Provider**
- Racknerd and IONOS are economical options
- Look for VPS with at least 1GB RAM and 1 CPU core
- Ensure it has a public IPv4 address
2. **Deploy WireGuard VPN**
- I recommend using Netmaker for easy WireGuard deployment
- See guide: **Deploy a WireGuard VPN easily using Netmaker**
### Integration Options
You have two main approaches for integrating VPN with your homelab:
#### Option 1: Router-Level Integration
- **Physical Router**: Install OpenWrt on a physical router
- **Virtualized Router**: Run OpenWrt as a VM
- See guide: **Integrating OpenWrt with Netmaker**
#### Option 2: Expose Entire Proxmox
- Direct integration with Proxmox hypervisor
- See guide: **Exposing your entire Proxmox using a VPN**
## Architecture Overview

## Next Steps
This article provides a high-level overview of the two strategies. In upcoming articles, I'll dive deeper into:
1. **Setting up Cloudflare Tunnels** - Step-by-step guide for exposing public services
2. **Deploying a WireGuard VPN with Netmaker** - Complete VPN server setup
3. **Integrating OpenWrt with Netmaker** - Router-level VPN integration
4. **Exposing Proxmox via VPN** - Secure access to your entire virtualization environment
5. **Security Best Practices** - Hardening your remote access setup
## Conclusion
Choosing between Cloudflare Tunnels and VPN access depends on your specific use case:
- **Cloudflare Tunnels** - Quick, easy, perfect for single public services, forget about managing security and certificates.
- **VPN** - Comprehensive, secure, ideal for private infrastructure access, but you need to deal with DNS and certificates yourself.
================================================================================
## Research Stay at Boston University Fall Semester 2025
URL: http://sergiogimenez.com/posts/2025/research-stay-at-bu/
Date: 2025-09-11
Tags: BU, Boston, 6G-RUPA
My first week at Boston University is already complete, and I'm so happy to be here in Boston! Everyone has been incredibly kind, and the faculty and staff are all super approachable and welcoming.
For the Fall 2025 semester, I'll be spending the next three months on a research stay at BU's MET College. I'm excited to be working with an amazing group: Professor John Day, Dean Lou Chitkushev, and Dr. Maryan Rizinski.
Our project is focused on the future of mobile networks. We'll be working to show that today's network architecture might not be the right fit for the demands of 6G, especially in terms of scalability and mobility. Our goal is to prove that a new, more efficient protocol architecture that we're calling **6G-RUPA** can help future 6G networks scale effectively.
What makes this experience so special is that 6G-RUPA is based on the **Recursive InterNetwork Architecture (RINA)**, which was developed by Professor John Day. It feels like a gift to be able to share and develop ideas with him and the rest of the team on a daily basis.
This work will be a major part of my PhD thesis, and I already know it's going to be an incredible experience, both for my career and for me personally. I'm looking forward to everything that's ahead!
================================================================================
## You Don't Need an Instagram Van to Enjoy the Freedom of Van Life
URL: http://sergiogimenez.com/posts/2025/camper-history/
Date: 2025-08-27
Tags: camper
We've all been there. You open Instagram or YouTube and get bombarded with those perfect camper vans: wooden finishes, warm lighting, designer kitchens, and views of Norwegian fjords. And you think: "I wish I could, but that's not for me." Well, no, you don't need an Instagram van to enjoy the freedom of van life.
My camper story didn't start with a big budget or carpentry skills, but with an ordinary van (we call it "la furgo de los melones" which literally translates to "the melon van" because that's typically what gipsy uses to sell fruit in the rural Spain), which I luckily inherited from a family business, an air mattress, and lots of appetite for adventure. And over the years, it has become our perfect accomplice for getaways.
## 2021: The Chaos of the Beginning
My first solo trip was, honestly, a complete logistical disaster. The "camperization" consisted of an air mattress thrown in the back. There were no furniture, no organization, and to top it off, I forgot to remove the rear seats! The space was minimal and the chaos, maximum.

*That's how it all started: a mattress, the stock seats, and a lot of mess.*
It was Easter week in the Pyrenees and it was too cold to be outside. I decided to cook inside, on an improvised little table, without even having a proper stove. The menu: pasta that, spoiler alert, was a nightmare to clean up afterwards.
{{< two-figures-single-caption "img/desorden_y_cena_dentro.png" "img/cocinando_en_campinggas.png" >}}
The culinary chaos of the early days. At least the dish was good...
{{< /two-figures-single-caption >}}
But the next morning, all that chaos was forgotten. You wake up, open the door and find yourself with this... and then, all troubles fade away.

*The reward: wake-ups that are priceless.*
## 2022: Learning Together on the Road
### Our First Getaway
In 2022, I encouraged Julia to take a van trip together. Our first experience together was a getaway to Pitarque, Teruel. For her, who had never imagined enjoying the *hippie* van life, it was quite a trial by fire. We slept on an air mattress with sleeping bags. Thank goodness I brought my 0-degree sleeping bag, because Julia gets very cold and, although it was summer, the nights in Teruel get quite cool. We cooked with the basics we brought from home.

{{< two-figures-single-caption "img/julia_cocinando_gulas_pitarque.png" "img/julia_feliz_desayunando.png" >}}
Julia happy having breakfast, and cooking some gulas for dinner
{{< /two-figures-single-caption >}}
### Our First Long Trip Together
That summer we embarked on our first big trip together: a route through Navarra, Euskadi, Cantabria and Asturias. We still didn't have a bed frame, so we improvised a base with some Decathlon hammocks.
{{< two-figures-single-caption "img/julia_dormida_baztan_i.png" "img/julia_dormida_baztan_ii.png" >}}
Julia sleeping in the van on the first night of the trip, in the Baztán valley.
{{< /two-figures-single-caption >}}
Without electricity and with very little organization, we needed to plan a bit more, so we alternated van nights with some reserved hotel stays. And that's how we learned, seeing what works and what doesn't, what we were missing. But here we realized that even though we were quite rough around the edges, we could travel wherever we wanted.

Despite not being a 100% camper trip, it was the turning point. Julia discovered that going *hippie* was something she loved, and since then, every summer we look for time to escape with our melon van.
## 2023: Trip to Almería
For the trip to Almería in 2023, we decided no more hotels, that alternating with camping to charge batteries and take a shower would be enough.
So it was time to improve the equipment:
* **A proper bed frame:** Goodbye to sleeping on hammocks
* **A battery and a fridge:** Being able to have cold drinks and proper food without always having to resort to ice and everything being soaked is a good upgrade.

Of course, not everything is perfect on the first try. At home you do your calculations, but reality always teaches you something new. Traveling in summer means the fridge has to work harder, and I soon realized that the battery I had chosen wasn't enough to give us two days of autonomy without going through a campsite. But that's what it's all about, learning on the go.
But as always, in the end you can always manage. Here's a photo of a good meal:

That year we also inaugurated the "beach vermouth kit", an essential that has accompanied us ever since.
{{< two-figures-single-caption "img/moncofar_kit_vermutero.png" "img/moncofar_kit_vermutero_ii.png" >}}
The vermouth kit is quite simple but we use it a lot. The photo is in Moncófar, but the essence is the same.
{{< /two-figures-single-caption >}}
## 2024 - 2025: This is Comfort
Although we haven't taken a long trip in 2024, the getaways have been much more comfortable. The van has reached its best version to date.
Now we have:
* A comfortable bed frame and mattress.
* Two batteries that give us autonomy for a couple of days.
* A fan to combat the heat.
* Good interior lighting.
* More or less good organization...

And yet, it's far from what you see in YouTube videos and Instagram photos... But for us it's a total luxury and we're super comfortable in our melon van :D.
## The Conclusion is Simple
We've gone from an air mattress to having a mini house with just enough to live comfortably. Without homologations, without any construction work, and learning with each trip. So if you're dreaming of van life but are held back by not having the perfect van, forget about that. Start with what you have. A mattress, a couple of boxes, and try to see if you like it. What matters is not how your van looks, but the places it takes you and the experiences you live in it.
================================================================================
## The CCD 2024 project officially closes
URL: http://sergiogimenez.com/posts/2025/ccd-project-officialy-closes/
Date: 2025-07-06
Tags: senegal, ccd, aucoop, hahatay
## The collaboration project with UPC's CCD comes to an end
After months of work, the **2024-A027** project from the Centre de Cooperació per al Desenvolupament (CCD) of the Universitat Politècnica de Catalunya has officially concluded. This project, titled "Deployment of infrastructure for a radio and community network in Gandiol, Senegal", has represented a significant advancement in the technological infrastructure for the Hahatay network.
The project's main objective has been to improve Hahatay's IT and network infrastructure, building upon the work carried out over the previous three years. During this latest iteration of the project, several important milestones have been achieved:
**Network infrastructure strengthening:**
- Implementation of a monitoring, automation and remote management system using **OpenWisp** and **Zabbix**
- Establishment of a new, more robust and stable VPN system for remote access
- Simplification of network maintenance without requiring high technical knowledge
**Coverage expansion:**
- Improvement of WiFi coverage in key points of the association (Aminata, Nité, Radio)
- Extension of intranet and VPN services to Hahatay spaces in Saint Louis (Ndar Weesul and Jang Kom)
- Adaptation to new constructions and spaces that have emerged in the association
**Equipment and resources:**
- Supply of equipment such as computers, screens and keyboards through **Labdoo** and other private entities
- Provision of material for volunteers and association workers
**Construction of an antenna for the Gem Sunu Bopp community radio:**
- With part of the CCD budget, an 11-meter antenna is being built for the Gem Sunu Bopp community radio, which is expected to be operational in the coming months.
### The participating team
The project has involved the participation of five UPC students:
- **Joan Torres**
- **Aitor Da Rocha**
- **Sergio Giménez**
- **Jaume Motje**
- **Roger González**
All participants' evaluations agree in highlighting the experience as tremendously enriching both academically and personally and culturally, emphasizing Hahatay's hospitality and the transformative impact of cultural exchange.
### Continuity perspectives
Although no new project has been submitted for the current call, the team maintains daily contact with Hahatay, monitoring the network and solving problems remotely from Barcelona thanks to the deployed tools.
The main idea is to continue with this telematic support until the next call, evaluating the network's behavior and new technologies that can substantially improve the quality of service.
### Acknowledgments
We want to express our deepest gratitude to the **Centre de Cooperació per al Desenvolupament de la UPC** for making this project possible with a grant of **€3,337.50**, and of course to the entire team of students who have dedicated their time and knowledge to this noble cause.
This project represents a perfect example of how technological cooperation can generate real impact in communities, while greatly enriching those who participate in it.
### More information
To learn more details about the project, including complete participant evaluations and additional technical information, you can consult the official project page at the CCD: [2024-A027 - Deployment of infrastructure for a radio and community network in Gandiol, Senegal](https://ccd.upc.edu/ca/projectes/projectes-llistat/2024-a027-1)
---
*The project was developed between September 1, 2024 and February 14, 2025 in Gandiol, Saint-Louis, Senegal.*
================================================================================
## Deploying a KinD Cluster with External Access
URL: http://sergiogimenez.com/posts/2025/deploy-kind-cluster-with-external-access/
Date: 2025-07-03
Tags: kind, kubernetes
Recently, I needed to deploy a KinD (Kubernetes in Docker) cluster that would be accessible remotely. I had done this before, but never documented the process—so here’s a simple, step-by-step guide for future reference.
{{< alert "circle-info" >}}
I’m running [clabernetes](https://containerlab.dev/manual/clabernetes/quickstart/), but that’s completely irrelevant for this guide.
{{< /alert >}}
## 1. Create a KinD Cluster Config
First install docker, follow the [official docs](https://docs.docker.com/engine/install/ubuntu/)
Next, install kind following the [official docs](https://kind.sigs.k8s.io/docs/user/quick-start/)
For linux, it's just
```bash
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.29.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
```
Then, create a configuration file for your KinD cluster. This file will define the cluster's networking settings and node roles.
Save the following content as `kind-config.yaml`:
```yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
apiServerAddress: "0.0.0.0"
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: ClusterConfiguration
apiServer:
certSANs:
- "172.27.13.254" # <-- REPLACE with your host IP
- "localhost"
- "127.0.0.1"
extraPortMappings:
- containerPort: 6443
hostPort: 6443
listenAddress: "0.0.0.0"
protocol: TCP
- role: worker
- role: worker
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".containerd]
discard_unpacked_layers = false
```
## 2. Create the Cluster
Run:
```bash
kind create cluster --name c9s --config kind-config.yaml
```
Once the cluster is up, run `docker ps` on your host. You should see the `c9s-control-plane` container, and its `PORTS` section should include `0.0.0.0:6443->6443/tcp`. You might also see a `127.0.0.1:RANDOM_PORT->6443/tcp`—this is KinD’s default internal mapping, which you can ignore.
## 3. Export the Kubeconfig
```bash
kind get kubeconfig --name c9s > c9s-external-kubeconfig.yaml
```
Now, **edit `c9s-external-kubeconfig.yaml`**. Find the `server:` line (it will likely point to `https://0.0.0.0:6443`). Change it to use **your host IP** and port **6443**.
## 4. Test Your Setup
To quickly test:
```bash
cp c9s-external-kubeconfig.yaml ~/.kube/config
kubectl get nodes
```
You should see output similar to:
```
NAME STATUS ROLES AGE VERSION
c9s-control-plane Ready control-plane 6m3s v1.33.1
c9s-worker Ready 5m48s v1.33.1
c9s-worker2 Ready 5m48s v1.33.1
```
That’s it! You now have a KinD cluster accessible from outside your host.
================================================================================
## Hahatay Network Showcased at Giga Barcelona's GTEP Science Fair
URL: http://sergiogimenez.com/posts/2025/giga-barcelona/
Date: 2025-06-11
Tags: GIGA, GTEP, AUCOOP, Community Network
{{< alert "link" >}}
This article is based on and translated from content originally published by the Internet Society Catalan Chapter at [isoc.cat/accions/2025/06/11/giga2025/](https://www.isoc.cat/accions/2025/06/11/giga2025/)
{{< /alert >}}
The Hahatay Community Network project was highlighted at the "Science Fair | Government Tech Exchange Program (GTEP)" held on June 11, 2025, at the [Giga Barcelona Technology Center](https://giga.global/) (Ca l'Alier). This international event provided an excellent platform to share our experience connecting underserved communities in Senegal through sustainable, community-driven networking solutions.

The Government Technology Exchange Program (GTEP), a joint initiative between UNICEF and the International Telecommunication Union (ITU), invited our team to share insights from projects like the Hahatay Network, which has been instrumental in providing internet access to the rural region of Gandiol, Senegal.
The June 2025 GTEP cohort included approximately 30 participants from **Mozambique, Namibia, South Africa, and Tanzania**, representing Ministries of Education, Ministries of ICT/Digitalization, and national ICT regulatory bodies.
### Sharing Knowledge and Experiences
At the Science Fair, our presentation showcased how community networks can be effectively implemented in rural contexts through:
- Collaborative approaches involving local communities
- Implementation of network monitoring tools like Zabbix
- Centralized network management with OpenWISP
- Integration of educational resources through partnerships with initiatives like Labdoo
- Volunteers who participated in our Beyond-the-Net funded projects shared firsthand experiences from deployment trips to Senegal, highlighting both technical solutions and community engagement strategies that have made the Hahatay Network successful.
{{< two-figures-single-caption "images/speakin_i.jpeg" "images/speaking_ii.jpeg" >}}
Presenting the Community Network model to Tanzanian officials
{{< /two-figures-single-caption >}}
### Impact Beyond Technology
The presentation emphasized that the Hahatay Network is more than just technical infrastructure—it's a catalyst for social development, enabling:
- Educational opportunities through connected classrooms
- Digital skills development for local youth
- Enhanced communication capabilities for the Hahatay association
- Support for local entrepreneurship initiatives
Support for local entrepreneurship initiatives
This international visibility furthers our commitment to documenting and sharing our methodologies, inspiring similar community network projects in other underserved regions worldwide.
================================================================================
## Visit to the Polytechnic Institute. Labdoo: From Barcelona Classrooms to the Community Network in Gandiol
URL: http://sergiogimenez.com/posts/2025/labdoo-visita-politecnic/
Date: 2025-06-11
Tags: Labdoo, AUCOOP
Recently, we had the opportunity to visit the [Barcelona Polytechnic Institute](https://politecnics.barcelona/es/) to share with vocational training students our experience with the community network project in Gandiol, Senegal. It was a highly enriching day where we could demonstrate firsthand how their work has a real impact on communities thousands of kilometers away.
During our presentation, we explained in detail the structure of our community network: how it works technically, what services it offers to the local population, and what challenges we face in its implementation.
## The Fundamental Role of Labdoo
A central aspect of our talk was highlighting the essential role that Labdoo plays in this entire process. This organization acts as a bridge between laptop donors and recipients like Hahatay, coordinating a network of volunteers who are dedicated to refurbishing and preparing these devices so they can have a second life in educational projects.
In the specific case of the Polytechnic Institute, we discovered something particularly special: it's the students themselves who, as part of their training program, recondition these computers that later reach our project in Gandiol. This direct experience not only allows them to apply technical knowledge but also to participate in a project with real social impact.

## A Virtuous Circle of Learning
What makes this collaboration so valuable is the learning circle it generates: the institute's students improve their technical skills while preparing devices that, in turn, will help young people and adults in Gandiol to train through Hahatay's educational programs. It's a chain of solidarity where knowledge flows and multiplies.
From our team's perspective, we considered it essential that these students could see the final destination of their work. We wanted them to know that those laptops that pass through their hands aren't lost in anonymity, but have names, faces, and stories behind them. Each recovered device means a training opportunity for someone in Gandiol.
This visit has also been an excellent way to close this stage of the project, personally thanking those who make it possible for our community network to continue growing. The exchange of experiences, questions, and reflections allowed us to further appreciate this chain of collaboration that connects Barcelona with Gandiol. This type of encounter reinforces our conviction that technology, when shared and used with purpose, can be a powerful tool for social transformation.

================================================================================
## Hahatay Streamlines Laptop Inventory with eReuse Software
URL: http://sergiogimenez.com/posts/2025/ereuse-hahatay/
Date: 2025-03-21
Tags: eReuse, inventory, laptops, Labdoo
Hahatay is adopting the [eReuse software suite](https://ereuse.org/en/), specifically Devicehub and Workbench, to enhance its inventory management. This marks a significant step forward in efficiently tracking and managing the numerous refurbished laptops received through the Labdoo initiative. Currently in its beta testing phase (as detailed [here](https://ereuse.org/en/2025/02/12/working-new-devicehub/)), the eReuse software is already providing valuable insights to the organization, while we also provide feedback to the developers for further software enhancements. Key benefits experienced by Hahatay include:
* **Devicehub for Inventory Tasks:** Thanks to [the support of the Labdoo initiative](https://platform.labdoo.org/edoovillage?e=108374), Hahatay has received a significant number of laptops. Managing this influx has been challenging, but Devicehub provides a centralized system to accurately track the hardware of every laptop in our inventory.
* **Devicehub for assignment and availability:** Devicehub also facilitates the tracking of laptop assignments to workers and volunteers, as well as the availability of devices. This ensures efficient distribution and eliminates confusion regarding device allocation.
* **Workbench for Diagnostics:** The Workbench component enables the easy reading of technical specifications for each laptop and allows for thorough diagnostics to confirm proper functionality. This significantly streamlines the process of preparing laptops for deployment.

Even in its beta phase, the eReuse software is demonstrating its potential to substantially improve Hahatay's inventory management processes. This increased efficiency allows the team to focus more on our core mission and ensures the effective utilization of received laptops.
Hahatay is proud to be part of the eReuse community and contribute to the development of this powerful open-source tool. The source code for devicehub and workbench is available on the [eReuse GitHub repository](https://github.com/eReuse)
Stay tuned for more updates as Hahatay continues to integrate and utilize the eReuse software.
================================================================================
## Hahatay Inaugurates New Labdoo Classroom
URL: http://sergiogimenez.com/posts/2025/gandiol-labdoo-classroom/
Date: 2025-02-10
Tags: laptops, Labdoo, Tabax Nite
We are thrilled to announce the completion and inauguration of a new classroom in Tabax Nite, which is a project located within Hahatay. This project, which we have been diligently working on, is now ready to serve the community of Gandiol!
{{< two-figures-single-caption "images/aucoop-team.jpeg" "images/laptops.jpeg" >}}
At the left, the AUCOOP team in Tabax Nite. At the right, the refurbished laptops provided by the [the support of the Labdoo initiative](https://platform.labdoo.org/edoovillage?e=108374).
{{< /two-figures-single-caption >}}
The classroom is equipped with refurbished laptops provided by the [Labdoo initiative](https://platform.labdoo.org/edoovillage?e=108374). These laptops will significantly enhance the learning experience of the students in Tabax Nite by providing access to a wealth of educational resources. The classroom will cater to students of all ages participating in the educational programs offered by Hahatay, such as the **Hahatay academie** linked programs such as the European funded project: "**DOUNDEL: Revitaliser la Culture Locale et la Communication Digitale pour un Développement Durable, l’autonomisation et la Formation des Jeunes et Femmes de Gandiol et Saint-Louis"**.
{{< two-figures-single-caption "images/sergio-hablando-inauguracion.jpeg" "images/sergio-happy.jpeg" >}}
At the left, Sergio speaking at the inauguration. At the right, a happy Sergio celebrating the completion of the classroom.
{{< /two-figures-single-caption >}}
This classroom is a testament to the dedication and hard work of all the volunteers involved in this project over the past years. It is equipped with WiFi, utilizing the bandwidth from the community network in Tabax Nite. This marks a significant step forward in the digitalization of the village, and we are incredibly proud of this achievement.
Stay tuned for more updates as we continue to support and develop educational initiatives in Tabax Nite.
================================================================================
## Day 21: Ba benen Yoon
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day21/
Date: 2025-02-08
Tags: senegal travel blog
Today marked our final day in Gandiol, filled with goodbyes.
We woke up without rushing and enjoyed a peaceful breakfast. As you may already know from previous posts, this is the best part of the day: coffee, Touba coffee, sandwiches with oil and spicy salt, and for those with a sweet tooth, chocopain. But, as always, the best part was the company and the conversation.
Lorenzo came specifically to spend the morning with us and say goodbye. We spent the time packing, organizing everything, and preparing for the farewell, which was bittersweet. We felt satisfied with the work we had done: we met our goals, strengthened the network, and improved its resilience and stability—something that was much needed. But, as always, goodbyes are hard because this project has created strong emotional bonds over the years.
Unfortunately, we couldn't have lunch with everyone today since there was an event at Hahatay about TODO. Instead, Salif prepared us some sandwiches with boiled eggs and *petit pois*, made by his aunt. Some of us enjoyed them before getting into the taxi, while others, caught up in the rush of saying goodbye and packing, missed out on them. :(
In the afternoon, Bachir, the same taxi driver who brought us here, picked us up to take us to Saint Louis. Along the way, we made a brief stop in Louga to train the carrier pigeons that Salif had left us. In a few hours, they should find their way back to Saint Louis on their own.

At the airport, the group split up. Aitor, Joan, and Sergio returned to Barcelona with their suitcases full of memories, souvenirs, football jerseys, friperie clothes, and hearts full of emotions. Meanwhile, Jaume and Roger will stay for another week to go on a cycling trip through Casamance. Maybe there will be a bonus track on the blog—who knows?
With this, we say goodbye, hoping that this blog has managed to convey a little of what we feel and do when we are in this wonderful place.
Ba benen Yoon!

================================================================================
## Day 20: Relax, Guen'dar and a new Rack
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day20/
Date: 2025-02-07
Tags: senegal travel blog
Today, the whole team struggled to wake up since dinner went on a bit late, so the morning was a bit more relaxed.
Sergio headed to Saint Louis to visit an old project he collaborated on in 2020 at the Mame Fatime Konté center. He also took the opportunity to buy some souvenirs for his loved ones. Meanwhile, Jaume helped Pablo with the well and the pump. Aitor spent the morning studying for an exam he has right after returning, and Joan caught up on a couple of classes he missed this semester. Later, they joined Pablo to properly document the salinity problem in the well so they could present it to an expert who might suggest possible solutions.
In the afternoon, Aitor and Joan went to see the fishermen in Gen’dar, on the Saint Louis peninsula. Witnessing the arrival of the fishermen in their enormous cayucos after a long day of work was quite an impact. Then, they took a walk around the island before meeting up with the rest of the team at Tabax Nite.


Meanwhile, Jaume, Roger, and Sergio stayed in Tabax Nite, finishing the last details before leaving Gandiol. First, Jaume and Roger drilled a hole in the Fess wall using a drill, metal rods, and a hammer to pass through the Ethernet cable coming from the woman’s house. Later, Sergio arrived with an old empty computer case, which would serve as an improvised "rack."

Until now, the "data center" had been quite exposed and unprotected from external factors like dust. Additionally, this year’s rainy season was particularly strong, causing part of the roof to collapse. To prevent the main network components from being damaged, we decided to repurpose the old computer case, dismantle it, and use it as a "rack" to protect the equipment. We also added a fan to ensure proper cooling. The final result left us very satisfied.
{{< two-figures-single-caption "images/montando_nuevo_rack.JPG" "images/montando_nuevo_rack-ii.JPG" >}}
Sergio and Roger assembling all the network elements in the new 'rack'
{{< /two-figures-single-caption >}}
{{< two-figures-single-caption "images/rack-final-i.JPG" "images/rack-final-ii.JPG" >}}
Y así quedó al final :)
{{< /two-figures-single-caption >}}
================================================================================
## Day 19: Inauguration of the Computer Room, *Guañi Guañi*, and Last Dinner at La Source
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day19/
Date: 2025-02-06
Tags: senegal travel blog
We woke up more calmly today, knowing that everything was going smoothly. We had a relaxed breakfast and got to work.
Roger spent the morning finalizing details in OpenWISP, focusing on analyzing network traffic graphs—both within Gandiol's internal network, the mesh, and the internet—as well as reviewing the number of WiFi users connected throughout Gandiol. Jaume, meanwhile, was troubleshooting some issues in Zabbix, identifying failures in certain switches. At the same time, Joan joined Lorenzo to go to Tabax Nité, where they worked on the final preparations for the inauguration of the computer room.
{{< two-figures-single-caption "images/salle_info_i.JPG" "images/salle_info_ii.JPG" >}}
Computer room at *Tabax Nité* ready for the inauguration
{{< /two-figures-single-caption >}}
{{< two-figures-single-caption "images/salle_info_iii.JPG" "images/salle_info_vi.JPG" >}}
The entire team and the organizations we represent: AUCOOP, CCD UPC, and Labdoo
{{< /two-figures-single-caption >}}
Around midday, we all gathered to attend the inauguration of the computer room. During the event, all the key players who have contributed or will contribute to the development of the project gave brief speeches. Among them were AUCOOP, Hahatay, the director of the Tassinere High School (a local public institution), Amidou (a Senegalese journalist), Estrella (a professor at Kings College), KCD, and the Diputación Foral de Gipuzkoa, which provided financial support for the project. Sergio gave a short presentation on the work AUCOOP has done on the network over the years. Mamadou, as the master of ceremonies, led the event and introduced the different speakers.

In the afternoon, Jaume, Roger, and Aitor went to Saint Louis in search of hidden treasures in the friperie shops. This time, they had the help of Salif, an expert in the field. The trip was a success—they managed to get several items at very competitive prices thanks to the magic words "guañi guañi" (which means "lower, lower" in Wolof). However, Jaume was a little disappointed, as he had expected even more from the experience.

Later, they took a taxi to La Source, where the rest of the team was waiting for them to share one last dinner together. The food (Phaco!) was delicious, and the conversation was even better. The night ended at Pablo’s house, where, accompanied by his drum and Sergio’s guitar, we sang some classics. Definitely a great way to close the day.
================================================================================
## Day 18: Final OpenWISP Tests, Antenna Configuration, and Football Match in Sunukeur
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day18/
Date: 2025-02-05
Tags: senegal travel blog
We woke up knowing it was going to be another intense day full of work and network improvements.
### Aitor & Sergio: Final OpenWISP Tests
Aitor and Sergio headed to Fess to run several tests and ensure everything was working correctly. They simulated an OpenWISP failure to check if the routers would lose their configuration, but everything remained stable, proving the reliability of the system.
Then, they tested the long-awaited **password change feature**, and it was a total success. They simply modified the global variable `password_wifi` in OpenWISP, and within minutes, all WiFi access points in different Gandiol locations had updated their passwords automatically.
With this, one of the main objectives of the OpenWISP project was officially completed.
They also tweaked the templates to update the DNS settings, which Sergio had recently changed. What would have previously been a tedious and manual task—logging into each router individually—was now done in a matter of minutes.
### Joan & Pablo: Configuring New Antennas
Joan and Pablo worked on configuring new antennas to improve the Sunukeur-Aminata connection, which had been unreliable. They prepared everything so that, if needed, replacing the old link would be as simple as installing and aligning the antennas.
After that, Joan added all the routers from the previous day to Zabbix and assigned them fixed IPs.

### Jaume & Roger: Fixing Weesul & JangKom Networks
Jaume and Roger returned to Weesul to fix the issues from the day before. Initially, they tried to recreate the network using OpenWISP hosted in JangKom, but the VPN wasn’t working. In the end, they **rebuilt the entire mesh network from scratch**, adding a couple of extra nodes to improve coverage. The effort paid off, and everything was running smoothly.

At lunchtime, they went to a bar with a terrace overlooking the **Senegal River and Saint-Louis**, where they enjoyed a delicious **spicy chicken and cheese taco**.

After that, they headed to JangKom to add all the routers to OpenWISP and configure them using its templates. While working, they were offered a **hot yogurt with noodles and lots of sugar**, which turned out to be surprisingly good. Maybe that energy boost helped them finish their work quickly and efficiently.
As a farewell from the center, they were also offered **Attaya**, this time with a hint of mint.
To get back to the taxi stop, they took **bus number 8**, a very curious and cheap local bus—the ride only cost **100 CFAS**. Interestingly, the bus cashier was locked inside a small cage.



### Afternoon: Football Match in Sunukeur
In the afternoon, Jaume went to play a football match with the locals. He expected a **casual friendly game**, but instead found himself in a **serious tournament match** where Hahatay was fighting for a spot in the local league semifinals.
The game had an official **referee and two linesmen** to call offsides! Jaume was subbed in during the second half, and as soon as he stepped onto the field, he slipped and fell. After that embarrassing moment, he recovered well and even assisted Salif for an amazing goal—**but it was ruled offside** (a clear mistake by the referee, **worse than the ones Real Madrid pays for!**).
Despite this, **Hahatay won by two goals** and advanced to the semifinals!
### Joan, Pablo & Roger: More Antenna Testing
Meanwhile, Joan and Pablo tested the **compatibility between new and old antennas** to avoid having to replace both in case of failure. They climbed **Mamadou’s rooftop**, aligned a new antenna with an old one, and tried to link them. Unfortunately, they discovered they were **not compatible** due to different radio protocols, despite being from the same brand.
When Roger arrived from Saint-Louis and saw them on the roof, he immediately **climbed up to help**.

### Sunset at Zebra Bar & Special Dinner
To end the day, we decided to go to **Zebra Bar** to watch the sunset. When we returned, a delicious **Ndiebe** was waiting for us—one of the team's favorite meals!


It was a day of great progress and unforgettable experiences. **More adventures await tomorrow!**
================================================================================
## Day 17: Network Improvements in Saint-Louis and Final OpenWISP Setup
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day17/
Date: 2025-02-04
Tags: senegal travel blog
Tuesday started with a long list of tasks, as we wanted to finish everything we had pending before leaving. After breakfast, we divided into groups and got to work.

### Jaume and Joan: Router Update in Saint-Louis
Jaume and Joan traveled to Saint-Louis to work at JangKom, one of Hahatay's facilities in the city. Their main goal was to update the firmware of several Russian routers that had been causing issues. Additionally, they planned to integrate a couple of routers into the mesh network to ensure good connectivity throughout the facility.

At lunchtime, they stopped at a nearby bar to enjoy the dish of the day: rice with typical fish. On their way back, they saw a foosball table and couldn't resist playing a match. Quickly, two local kids approached and invited them to join. The match was very close, ending in a 3-3 tie until Jaume and his partner scored the decisive goal. After saying their goodbyes, they returned to JangKom to finish their work.
Around 5:00 PM, they finished at JangKom and decided to go to Weesul, another Hahatay facility in Saint-Louis. The mission was the same: update the Russian routers and add some to the mesh network. However, after a long day, they weren't as lucky: the main router's connection didn't detect the wired internet. After several attempts, they decided to leave it for the next day. They returned home around 9:00 PM, where a fish and salad dinner, saved for them by their teammates, was waiting.
### Aitor and Roger: OpenWISP Structuring and Backup Routers
While Jaume and Joan worked in Saint-Louis, Aitor and Roger spent the morning at Pablo's house restructuring the device configuration in OpenWISP. Their goal was to create a global template for password change management. They also configured a new router with the new structure to replace the one at Sunukeur Square, which had been failing for days.
Meanwhile, Pablo was welding a structure for a ladder that would be installed at Tabax Nite, and Lorenzo worked with a radial saw.


By the end of the morning, Aitor and Roger began configuring and uploading several backup routers to OpenWISP. This will allow for the quick replacement of any router that fails, ensuring a smooth transition thanks to the OpenWISP templates.
### Afternoon: Final Adjustments and Sunset in Sunukeur
In the afternoon, Roger continued configuring backup routers before heading to Aminata to fix the slave routers and resolve the internet connection issue with the master router. Thanks to OpenWISP, the configuration template solved everything efficiently. On his way back to Sunukeur, he witnessed a beautiful sunset.

Meanwhile, Aitor stayed in Sunukeur reviewing the final structure of OpenWISP with Sergio. After confirming everything was in order, they replicated the setup at JangKom and Weesul. Unlike Sunukeur, these facilities would have two separate organizations, each with only two groups: masters and slaves. Once the structure was set, they tried to add some routers to the system, but VPN issues prevented them from integrating any devices. By the end of the day, along with Roger, who had returned from Aminata, they defined the tasks for the following day and concluded the day, satisfied with the progress and ready to continue moving forward.
================================================================================
## Day 16: Back to Gandiol and Intense Workday
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day16/
Date: 2025-02-03
Tags: senegal travel blog
Today, we woke up without much hurry, enjoying the morning calm before starting the day's plans. Roger and Jaume went out early to buy ferry tickets for their trip to Casamance next week, ensuring their mobility for the next stage of the journey. Meanwhile, Aitor, Joan, and Sergio visited a well-known store to purchase essential materials: Ethernet heads and a cable tester, key elements for continuing our work.

By mid-morning, we met up with Pablo in the Plateau district to set off together by car towards Gandiol. The trip was smooth and without complications.
{{< two-figures-single-caption "images/camino-a-gandiol.jpg" "images/baobabs-en-carretera.jpg" >}}
On the way to Gandiol. The journey rewards us with sights like this baobab forest.
{{< /two-figures-single-caption >}}
Upon arrival, we were greeted with a delicious thieboudiene prepared by Daba. As always, its flavor was spectacular, a true feast for the palate. During lunch, we shared the table with the entire Gandiol community, including Mamadou, whom we hadn’t seen yet as he had been traveling in Spain.
The afternoon was intense and productive. We split into two groups to tackle pending tasks. Roger and Aitor headed to Tabax Nité to reconfigure OpenWISP with a new design better suited to the organizational and technical structure. Meanwhile, Jaume, Joan, and Sergio took inventory of the available routers, aiming to organize and prepare the necessary devices for installing new access points in JanKom and Weesul, in Saint-Louis.

We ended the day with a couscous dinner, enjoying a pleasant after-dinner conversation where we took the opportunity to plan for the next day. A demanding workday is ahead, likely in Saint-Louis, where we will continue our efforts. With that in mind, we retired to rest and prepare for what’s to come.
================================================================================
## Day 15: Second Day in Dakar. Cervantes: Genius or a Lucky Monkey?
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day15/
Date: 2025-02-02
Tags: senegal travel blog
This morning, we woke up without any rush, as last night's party went on longer than expected. We took a stroll around the neighborhood with the intention of eating at the same place as yesterday, but since it was Sunday, the women had closed the stall.
The kiosk owner told us that there was an open place at the end of the street, so we decided to head there. We all ate Thie Bou Djen Rouge together, which, though tasty, did not quite compare to the one Daba usually prepares for us at Hahatay.
With our stomachs full, we returned home to rest for a while and avoid the hottest hours of the day. Everyone, except Sergio, who preferred to stay and rest, went to the laundromat to wash clothes and then exchanged some extra CFAS for the upcoming days.
Later, we met again at a bar with an ocean view, where we witnessed another breathtaking African sunset.
There, the younger mathematicians gave us a formal demonstration of the following statement:
"A monkey would write Don Quixote infinitely many times if it randomly typed on a keyboard for an infinite amount of time."
Roger, Sergio, and Jaume were amazed by the abstract thinking of the young mathematicians. This type of knowledge exchange among all team members allows us all to learn new things, both the more experienced ones and the younger ones alike.
================================================================================
## Day 14: Travel to Dakar
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day14/
Date: 2025-02-01
Tags: senegal travel blog
We woke up very early. Assane Bodge picked us up in Hahatay at 6:00 AM to take us to Saint-Louis, where we would catch the Dem Dikk bus to Dakar. Assane, with a punctuality not particularly common among Senegalese people, arrived right on time.
The trip was quick, with very little traffic, and before long, we arrived at the entrance of Saint-Louis. While waiting, we had a glass of sugar with coffee at a small street stall. Soon after, we boarded the bus, which turned out to be very comfortable. It departed from Saint-Louis towards Dakar.
{{< two-figures-single-caption "images/dem_dik_fuera.jpg" "images/dem_dikk.jpg" >}}
Esperando a subir al autobús. Vamos como los guays del colegio. Los 5 detrás.
{{< /two-figures-single-caption >}}
During the journey, we made a technical stop in Thiès. We had a fataya, a type of fried pastry filled with meat or fish. Shortly after, we arrived in Dakar at noon.
Once in the city, we headed to the apartment. After settling in and chatting with some locals, they recommended a small eatery that serves daily specials. We went there and were served some absolutely delicious Theiu Bou Yapp.

After a brief rest, we took a taxi to the Dakar mosque. We walked through the Sandanga market, immersing ourselves in the bustling and vibrant atmosphere of the city, until we reached Place de l'Indépendance. After the long walk, we sat at a bar to have a drink and share our first impressions of Dakar.

One particularly interesting sight was a baobab tree standing in the middle of a narrow market street. The baobab is a sacred tree for Senegalese people, and they never dare to cut it down. In this case, a baobab was growing right in the middle of the street.

In the evening, we met up with Pablo and Rober, who were also in Dakar. Rober was leaving for Bilbao the next day, and Pablo had accompanied him to say goodbye. They decided to stay the weekend at Joaquín "Giby’s" house, the first volunteer who had been with Hahatay since its inception.
About nine of us gathered and went to dine at a Diola restaurant. The food was exquisite, with delicious dishes at a very reasonable price. Later, we headed to a party to wrap up the night with great company and a festive atmosphere.

================================================================================
## Día 13: Waxtu bu baax, Pablo!
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day13/
Date: 2025-01-31
Tags: senegal travel blog
In the morning, as usual, we split into two groups to tackle the day's tasks:
## Completion of the Daily Report Script
The **monitoring team (Joan and Jaume)** spent the morning finalizing the script that will send a daily report on the network's status.
As a fun detail, we added an **easter egg**: each morning, the report message will randomly greet Pablo in one of five different languages (*Spanish, French, English, Catalan, and Wolof*).

## Progress in OpenWISP and Unexpected Issues
**Aitor and Roger** spent the morning configuring **OpenWISP**, creating different organizations for the routers to keep the various Hahatay installations well-organized. However, during this process, some router configurations were **accidentally deleted**.
This issue turned into a valuable learning experience: they realized the importance of being extremely **strict with the structure of organizations, groups, and devices** within OpenWISP to prevent future errors.
## An Unexpected Visitor
In the afternoon, while working, **Joan and Aitor** received a surprise visit: a **nearly 100-year-old, 50+ kg tortoise**, a resident of the Hahatay facilities, unexpectedly wandered into their room.

## Coffee with Lorenzo and Teamwork
After an enjoyable coffee break with Lorenzo, each team resumed their tasks:
- **Joan** worked on adding all the virtual devices deployed in **Proxmox** to the monitoring network.
- **Jaume** focused on configuring **web services**.
- **Aitor, Roger, and Sergio** defined the ideal structure of **organizations, groups, and devices** in **OpenWISP** so that password changes could be applied globally with a single click.

## Wrapping Up the Day at Teranga
To end the day, we headed to our beloved **Teranga**, this time joined by **Salif**. However, it’s unlikely he’ll come with us again after we overwhelmed him with **philosophical, mathematical, IT-related, and, above all, extremely geeky discussions**. 😆
================================================================================
## Day 12: The mistery of the non working ethernet
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day12/
Date: 2025-01-30
Tags: senegal travel blog
Today was a day of significant progress, with visits to local centers and solutions to key technical problems.
## Updating a Router at Defaratt
In the morning, Joan and Jaume went to **Defaratt**, a recycling center linked to Hahatay, located in the village of Gandiol near the Aminata facilities. There, they set out to reconfigure an old router that required a complete firmware update to be integrated into our network. After a good while of work, they finally managed to get it up and running.

## Creating a Daily Report Service
In the afternoon, Jaume and Joan began working on one of the goals set the previous day: creating an automated service that sends a **daily report** via Telegram at 8 AM, summarizing the network’s current status. This daily summary will be highly useful for Pablo, aka *Hahatay’s handyman*, as it will centralize all information and help quickly identify which router is malfunctioning and why.
## Configuring the Computer Lab and Cable Issues
Meanwhile, Aitor and Roger worked on reconfiguring the router in the **computer lab** and preparing the main node for **Keru Jiggen** (*House of Women* in Wolof). While waiting for the keys to access and configure the other routers in the mesh network, they proceeded with the setup.

Once they gained access and configured the network, they encountered an unexpected issue: **the cable connecting the main node to the servers was not working**. This forced them to adjust their plan and analyze the network infrastructure to pinpoint the problem.
## A New Look
After lunch, Roger gave Jaume a fresh haircut, a **new look** that, according to the group, was long overdue.


With the haircut session finished, Pablo and Roger headed to **Tabax Nite** to investigate why the **Keru Jiggen** cable was not functioning.
## Solving the ethernet non working mistery
After identifying all the cables coming from the server, they traced the underground wiring from the server to **Aula 1**, and from there to **Keru Jiggen**. Eventually, they discovered that **the cable was cut between Aula 1 and Keru Jiggen**, solving the mystery.
The solution was clear: **dig up the cable, reroute it directly to the server, and crimp a new Ethernet cable**. Once the work was completed, everything functioned perfectly, and **Keru Jiggen was successfully connected to the network**.

## A Healthy Dinner and Well-Deserved Rest
To end the day, we enjoyed a **delicious and healthy salad for dinner**, a refreshing break after an intense day of work. With full stomachs and the satisfaction of having solved several important issues, we went to bed, ready to take on a new day in Gandiol.

================================================================================
## Day 11: Technical Advances and New Stories in Saint Louis
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day11/
Date: 2025-01-29
Tags: senegal travel blog
Today, Wednesday, started with a shared breakfast under the typical heat of Senegal, but the team kept their spirits high and motivation strong to continue with the technical progress of the project.
## Future Plans with FDSUT
In the morning, Sergio met with Lorenzo to have a meeting with the [FDSUT](https://fdsut.sn/), explain the project we have been working on together, and explore possible avenues for future collaboration. The meeting was very positive, and many possibilities for future projects in the region were opened.

## Network Advances and Firewall Optimization
Joan and Jaume took a short break from their work with Zabbix to focus on improving the network configuration. They worked on centralizing the firewall rules of the routers with internet access so that, in some Hahatay centers, there would be no internet during non-working hours, and in the residence, from 11:00 PM to 8:00 AM. This implementation had already been done on the master of each mesh, but it had one issue: by blocking the internet access, we couldn’t access routers from other areas when we needed to make configurations. Now, with this new solution, we can access the routers without any problem as we only block internet access.

## The Challenge of Xiaomi Routers
Meanwhile, Roger and Aitor decided to stay in Sunukeur, as yesterday's return left them exhausted. They encountered some problems when trying to configure the Xiaomi routers, which were not receiving OpenWISP commands well. It turns out that Xiaomi released two versions of these routers with minimal hardware differences, causing incompatibilities with the firmware needed to install OpenWISP. The installation and update process continued to be a challenge, but it was a good opportunity to prepare spare routers or replace those that had not yet been reviewed.

## New Ideas and Challenges with Zabbix
After lunch, Joan and Jaume returned to work with Zabbix. Although they did not make significant progress today, they discussed some ideas and began implementing new strategies to optimize network monitoring in the coming days.
## Solving the Problem of Turned Off Radios
In the afternoon, Roger and Aitor focused on a problem that had arisen in several new routers: the radios were turned off. This prevented the routers from broadcasting Wi-Fi and communicating with the mesh network. After several attempts, they found some lines of code in the OpenWISP documentation that could apparently solve the problem, but when implemented, they disabled other necessary interfaces. After much trial and error, they managed to solve the problem, and now the templates for configuring slave and master routers are ready.
## New Server in JangKom
After their workday at Ndar Weesul, Sergio and Lorenzo went to JangKom to install a new server that will allow monitoring and managing the networks of JangKom and Weesul using Zabbix and OpenWISP. The installation was somewhat unorthodox, but everything was finally stable.

## Evening of Football and a Memorable Dinner
At 6:30 PM, Aitor, Jaume, Joan, and Roger took a taxi to Saint Louis to watch the many Champions League matches being played that evening. They went to a very peculiar place called *Le Montagne*. There, they had a big screen where they showed different matches, about 20 minutes each, as they were played simultaneously.

Later, Javier, one of Lorenzo and Pablo's friends who are staying at Hahatay these days, also came. It turned out that Javi works on various cooperation projects and has traveled across half of Africa and many other countries. We spent much of the night listening to his experiences, things he had seen, lived, that had led him to think and believe in a particular way, and he told us with humility and a smile on his face.

The night culminated with a spectacular dinner: three grilled *poissons* that were undoubtedly the best of the day. To finish, we saw many locals with a white concoction that they bought in bulk at the restaurant, and Jaume couldn't resist buying a bottle. It didn't smell or taste very good, but we all tried it, and no one felt bad the next day.


================================================================================
## Day 10: Recovering Defaratt, Progress with OpenWisp, Heat and Sunsets
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day10/
Date: 2025-01-28
Tags: senegal travel blog
The day began with the usual routine: a good breakfast to recharge before getting to work. But today, there was a little surprise on the table: Laura had prepared homemade hummus, a small change that made a difference and lifted everyone's spirits.
## Work in Fess
Aitor and Roger set off early to work in Fess. The 20-minute walk there was pleasant, with perfect weather and a light breeze that made the journey much easier.

Once in Fess, they continued refining the OpenWISP templates to ensure the router configurations left no loose ends. They also worked on reconfiguring some static IPs that had been lost the previous day. Although the results weren’t too promising, at least they reached conclusions that will help improve OpenWISP implementation in the coming days.
The way back, however, was a different story: the warm wind from the Sahara turned the walk into a real ordeal. Without the morning breeze, the heat became almost unbearable.

## Recovery of Defaratt
Meanwhile, Jaume and Joan planned to recover **Defaratt**, a Hahatay center dedicated to plastic recycling. In theory, the site already had an antenna and a master router, so the first step was to check the old *Zabbix* system to see if they were still operational. Fortunately, everything was up and running, so we avoided the trip and stayed in *Sunukeur* to work on the configurations.
However, the router in question was a **Linksys**, the same model that had given us trouble before, and we couldn’t download the necessary packages. After several unsuccessful attempts, we decided to focus on a new implementation in *Zabbix* to detect devices that restart multiple times in a single day, which usually indicates an issue with the wiring or the power connection. To our surprise, we found more problems than expected, so this task will continue in the coming days.
## Rest and Planning
For lunch, we had a typical dish: **theibuiene rouge**.
After eating, the heat was too intense to keep working, so everyone retreated to their rooms for a break. Some took a nap, and around 4:00 PM, we resumed work, using anything we could find to fan ourselves.

At 5:00 PM, when Sergio finished his workday, we all gathered to organize tasks, mark the ones we had completed, update the issues that had arisen, and plan the next day's work. We kept working until 6:00 PM and, after a long and hot day, decided it was time for a break at *Teranga*. We arrived still overheated, but there we could cool down with some cold drinks and relax for a while.


## End of the Day
Dinner was the perfect way to close the day. Plus, we met **Amina**, an artist who came to spend a few days in *Sunukeur* to share, get inspired, and learn from other artists—one of the many interesting initiatives offered by *Hahatay*.
The conversation flowed with laughter and jokes until someone mentioned the movie *Torrente*. The joke turned into a challenge, and we started searching for it to watch. It wasn’t easy, but in the end, we managed to find a clip and ended the day laughing.

Another day of learning, work, and shared moments. Tomorrow, another intense day awaits, but for now, it's time to rest.
================================================================================
## Day 9: A Monday of Challenges and Learning in Senegal
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day9/
Date: 2025-01-27
Tags: senegal travel blog
Today, Monday, we started the week with great energy and motivation after a very relaxing weekend.
## Solving Problems with the Mesh Network in Aminata
In the morning, Jaume and Joan returned to Aminata equipped with a ladder and a clear goal: to make the installations fully operational. Upon arrival, they found that the main node was not properly configured. After resetting it and configuring it correctly, deploying the secondary nodes was relatively straightforward, as these were already almost entirely set up correctly.

In Tafa’s office, while placing one of the secondary nodes, they encountered some unexpected intruders: several nests of African wasps, longer than usual. After mustering up the courage, they managed to install the router properly in the office.
## Challenges and Lessons with OpenWISP
Meanwhile, Aitor and Roger focused on working with OpenWISP configuration templates, tackling specific cases that caused numerous issues. As a result, they had to bother Laura several times to access her office and reconfigure the main router.
Although the problems weren't fully resolved, the OpenWISP team took advantage of the day to gain substantial knowledge about the network management system. This understanding will allow them to move forward more confidently and efficiently in the days ahead.
## Sergio: The Constant Support
Amidst it all, Sergio, who was working remotely today, was a great support for the entire team. He provided advice and clarity whenever the sub-teams encountered problems they couldn’t solve. His expertise and willingness to help always make a difference!
## An Afternoon of Sports and Technical Work
In the afternoon, Joan and Sergio went for a run and later joined Aitor at the Teranga to enjoy another beautiful sunset together.

Meanwhile, Jaume and Roger worked on the tedious process of debricking. They managed to recover only one of the five “bricked” routers.
### What is a Debrick?
The original firmware of the routers doesn’t allow many of the functions required by our community network. Therefore, we “hack” them and install alternative firmware that unlocks many additional features. However, if the installed firmware is not fully compatible with the hardware, the router becomes corrupted and stops working (brick). In such cases, a series of tedious steps is needed to restore it. If we manage to restore the router, we have successfully achieved a "debrick"

## A Math Challenge to End the Day
To wrap up the day, after dinner, Jaume presented a math problem to Aitor and Joan, keeping them engrossed for quite a while. We love these brainteasers that always manage to challenge us.

---
================================================================================
## Day 8: Work in Sunukeur, Zebrabar, and Night Football
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day8/
Date: 2025-01-26
Tags: senegal travel blog
The day started off relaxed, with no rush. We woke up calmly and spent the morning working on pending tasks.
### Jaume and Joan: Synchronizing Zabbix with Telegram
Jaume and Joan focused on continuing the Zabbix setup, successfully synchronizing it with Telegram. They created two notification groups: one to receive all alerts, whether warnings or errors, which will allow us to constantly monitor the network and perform debugging tasks. The second group will only be activated when a router stops working for the entire day, making it easier for the local team to quickly identify network failures.
### Aitor and Sergio: Router Replacement and OpenWISP Issues
Aitor and Sergio worked on updating the Sunukeur network by replacing the master router. However, when they applied the OpenWISP configuration template, the router's graphical interface, LuCI, got misconfigured. They decided to leave the problem for the next day, as they needed more time to fix it properly without risking making the situation worse.
### Zebrabar
At lunchtime, we headed to Zebrabar, where we met up with some of Lorenzo and Pablo's friends, making a total of 24 people. The fish dish of the day was particularly popular.

After lunch, we spent some time at the place, once again enjoying the views and the peaceful atmosphere.


### Return to Sunukeur: Dinner and Football
On our return to Sunukeur, Lorenzo had organized dinner: grilled chicken with French fries and Fataya. After dinner, we set up the football match on a screen in the patio and enjoyed Barça's 7-1 victory.

================================================================================
## Day 7: A Calm Saturday in Senegal
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day7/
Date: 2025-01-25
Tags: senegal travel blog
We started the day without rushing and decided to take a slow morning. It was such a luxury to sleep in, enjoy a relaxed breakfast, and share laughter while reminiscing about the funniest moments from the previous night.
---
## Reflecting on our Achievements
In the morning, we took the opportunity to review the progress we had made throughout the week. It was deeply satisfying to realize just how far we had come:
### Zabbix Configuration
We managed to integrate it with Telegram and add most of the network elements.


### OpenWISP Deployment
We successfully deployed OpenWISP, added all the network routers, and now can configure mesh nodes with surprising ease. With this nearly completed, we just need to finalize the documentation, and this major integration project will be done.
---
## Exploring Saint Louis
In the afternoon, Jaume, Joan, and Aitor went on a trip to Saint Louis, determined to experience the authentic essence of the city while avoiding the typical tourist route on the island of Saint Louis.
### The Local Market: An Organized Chaos
The visit to the local market was an eye-opening experience. We found ourselves in a vibrant and chaotic environment where all kinds of foods were displayed in fascinating ways. Among colors, smells, and voices, we immersed ourselves in the everyday life of Saint Louis and were captivated by the charm of this remarkable market.


### The Bazaar: Good, Cheap, and Beautiful
After the market, we visited the second-hand bazaar again, where we snagged some incredible bargains.
- **Jaume**: scored a jacket, a shirt, and a t-shirt at a great price.
- **Aitor**: found a pair of cropped pants that fit perfectly.
- **Joan**: wasn’t as lucky this time and left the bazaar empty-handed, though he laughed it off.
---
### A Different Way Back
The return to Gandiol was an adventure in itself, as we chose to use a shared taxi, a common mode of transport in Senegal.
How it works:
1. Head to a specific spot where you know taxis are waiting to head to Gandiol.
2. Wait for other passengers heading in the same direction.
3. Once the taxi is full, the journey begins.
It’s an economical, practical, and uniquely cultural experience that gave us yet another anecdote to cherish.
---
## A Quiet Time in Gandiol
Meanwhile, Roger and Sergio stayed in Gandiol. They spent some time working on the VPN project before heading to Teranga, our favorite local bar, to watch the sunset.
---
Every day here in Senegal has its own rhythm, a perfect mix of accomplishments, learning, and discoveries that make this experience unforgettable.
================================================================================
## Day 6: A Productive Day and Celebration at Lakhrar Beach
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day6/
Date: 2025-01-24
Tags: senegal travel blog
Today we continued with the tasks we had planned, and each team made significant progress toward their goals.
## Progress with OpenWISP
The OpenWISP team decided to head to Fess to change the environment and take the opportunity to solve some router issues in the area. After overcoming some difficulties, they managed to access all the necessary rooms and fix several key devices:
* Repaired the router in the computer room.
* Solved problems with the two routers in the radio station.
Additionally, they configured a small two-node mesh network in the radio station, using only OpenWISP. Although one of the older routers became unusable (bricked), the positive takeaway is that we validated OpenWISP as a tool for creating mesh networks easily.
Next steps:
* Use OpenWISP to rebuild all mesh nodes.
* Verify that DNS servers are correctly configured on all routers.
* Ensure the firewall configuration is correct on all routers.
## Progress with Zabbix
Good news: Zabbix is working perfectly. The system has notified us about errors in some routers that would have otherwise gone unnoticed. We’ve documented these issues in the task management system and are continuing to work on finalizing Aminata’s network.
Additionally:
* We customized Zabbix error messages to reduce unnecessary alerts and ensure that notifications are clear and relevant.
* We flashed two additional routers that will be deployed to the *Ndar Weesul* space in Saint Louis.
## An Afternoon at Lakhrar Beach
In the afternoon, we headed to Lakhrar Beach, a spectacular location surrounded by natural beauty, perfect for relaxing and celebrating the progress made during the week with a barbecue. The day was full of activity: while Joan, Sergio, and Aitor ventured into the sea to gather oysters that we would later cook over the fire, Jaume, Roger, and other Hahatay volunteers – Lorenzo, Pablo, and Rober – prepared the area to light the fire and cook the oysters, along with potatoes and steaks.


The sunset at Lakhrar was an unforgettable sight. As night fell, we enjoyed a delicious dinner: Rober had prepared a tortilla earlier in the day as an appetizer, and the fresh oysters, gathered just hours before, were roasted over the fire, followed by steaks that completed an unparalleled feast.

After dinner, we stayed by the bonfire, sharing stories and enjoying the tranquility of the night in an idyllic setting. Once the firewood was used up, we packed our things and headed back home, satisfied and ready to rest after a perfect day.


================================================================================
## Day 5: Work in Sunukeur, Exploring Saint-Louis, and an Improvised Concert
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day5/
Date: 2025-01-23
Tags: senegal travel blog
The day began early in Sunukeur, with breakfast giving us the energy to get started. We split into the same pairs as the previous day and spent the morning tackling the technical tasks on our agenda.
### Jaume and Joan: Progress with Zabbix and Network Maintenance
Jaume and Joan focused on organizing and updating the router registry in Excel while installing the necessary Zabbix packages. They also added all available routers and antennas to the Zabbix server and conducted tests to set up a template with the desired triggers. This will allow us to receive only the most relevant notifications, optimizing network management. They also replaced the Linksys router in the residence with a new Xiaomi router, significantly improving connection stability. Additionally, they flashed two more routers that will soon be integrated into the network.

### Aitor and Roger: OpenWISP Solutions and Firmware Updates
Meanwhile, Aitor and Roger worked on integrating new routers into the OpenWISP server. During the morning, they updated the firmware on two Linksys routers that had been running an outdated OpenWRT version for three years. The process was delicate since any mistake could render the devices unusable (or "bricked," as we call it), but everything went smoothly. They also repaired a router in Sunukeur’s mesh network that lost its configuration during OpenWISP integration. Lastly, they made progress on creating a NetJSON configuration template to automate the process of configuring master routers in the future.

### Afternoon in Saint-Louis: Hahatay Centers and Local Exploration
In the afternoon, we headed to Saint-Louis by taxi. This is where a little anecdote began: there were five of us, but the taxi was designed for four. We decided to squeeze in to avoid splitting up, but the police stopped us during the ride and fined us 1,000 CFA francs for exceeding the passenger limit. Despite this hiccup, we continued on our way and made the most of the afternoon.


Aitor, Sergio, and Joan, along with Lorenzo, visited the two Hahatay centers on the island. There, they took measurements to assess how many routers are needed to optimize connectivity at those facilities. Meanwhile, Jaume and Roger explored the *friperie*, a second-hand clothing market with an impressive variety and affordable prices. It was an interesting and useful experience, especially for those who needed to replenish their wardrobe for the rest of the trip.

Before heading back, we made a stop to buy everything needed for tomorrow’s barbecue.
### Improvised Concert at Hahatay
Back at Hahatay, we were surprised by an impromptu concert. Tafa brought his guitar, and Pablo joined in on the drums. The music filled the air, creating a magical atmosphere. Later, X, a young singer from Dakar currently doing an artist residency at Hahatay, joined in. Her voice added a special touch, and little by little, we all got involved—some clapping, others attempting to sing. It was an unforgettable moment that strengthened the bonds between everyone present.

### Dinner and Sunset
Dinner was another highlight of the day. We enjoyed *petit pois*, a local dish similar to chickpeas, which has become one of our favorites here. The evening continued with more music and good conversations as we reviewed the day’s achievements and planned the tasks for tomorrow.

These days, the sky is especially clear, making the sunsets spectacular. At the end of the day, we spent some time admiring the landscape from Hahatay, another reminder of how lucky we are to be experiencing this adventure.
Finally, we went to bed, satisfied with everything we accomplished and ready to face a new day full of challenges and surprises.
================================================================================
## Day 4: Fixing Aminata, Progress with OpenWISP, Zabbix, and Slam Concert
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day4/
Date: 2025-01-22
Tags: senegal travel blog
In the morning, we split into two groups to tackle the day’s tasks:
### Jaume and Joan Fix Aminata and Take First Steps with Zabbix
Jaume and Joan headed to Aminata with the goal of resolving the issues with the antennas that remained unsolved from the previous day. However, upon arrival, we were informed that there would be no power until 5:00 PM, forcing us to postpone some tasks until tomorrow. Nevertheless, we used the time to install an ethernet cable, which was perfectly secured, while another cable resisted for reasons we still don’t fully understand.
Back in Sunukeur, we focused on setting up a new node in the mesh network. This node was integrated into the Zabbix server created by Sergio on the first day. After configuring it correctly, we ran some notification tests via Telegram, which proved successful.
### Roger and Aitor Advance with OpenWISP
Meanwhile, Roger and Aitor stayed in Sunukeur to address issues with OpenWISP. They managed to register nearly all the routers in the area and, most notably, successfully changed the WiFi password on a test router using OpenWISP. This was one of the day’s main objectives. Tomorrow, we plan to test changing the passwords of multiple routers simultaneously to confirm that the system works efficiently.


### Slam Concert in Aminata
At 5:00 PM, we attended a concert organized in Aminata by residents of Hahatay. It was a unique experience to enjoy traditional music in such a special setting. After the concert, we shared a small snack that made the moment even more enjoyable.

These days, there is very little dust in the air, which is uncommon but makes the sunsets spectacular. This is the view from our house.

We ended the day with a group dinner, reviewing the day’s achievements and planning for tomorrow’s tasks. We went to bed early, satisfied with what we accomplished and full of energy to keep moving forward. It was a productive day filled with great moments. More tomorrow.

================================================================================
## Day 3: Diagnosing and Solving Network Issues
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day3/
Date: 2025-01-21
Tags: senegal travel blog
We started the day with a good breakfast and divided into two groups to tackle the planned tasks. Sergio, Jaume, and Joan headed to Aminata to try to solve the connectivity issues in the network.
From the beginning, our goal was to diagnose why the network wasn’t working. After several tests, we confirmed that both the router, with its mesh wifi system, and the switch were working correctly. However, the monitoring logs revealed that the antenna had been rebooting intermittently for several days. With some luck, the problem could be related to a poor connection in the ethernet cable, which might explain the continuous reboots of the antenna.

Meanwhile, Roger and Aitor, unable to work at Aminata due to the lack of network, returned to Sunukeur. However, upon arrival, they encountered another obstacle: a power outage that also took down the network. They decided to head to Fess (2km on foot), but when asking Pablo for the keys, they found out that Sergio had them at Aminata. They opted to stay at Pablo’s house, where, after a while, the connection returned, and they were able to make progress on their tasks.

Later, we had Thiebou djen *rouge* for lunch at home, a small variation of Thiebou djen that includes tomato in the sauce.

The main goal for this week is to automate the wifi password changes. We believe that with periodic password changes, we can significantly reduce the number of users who are not connected in some way to Hahatay. To achieve this, the first step is to try registering devices in OpenWISP. We managed to register two test users, although both presented some issues. Due to electrical fluctuations, the connection was lost in the afternoon, which limited our progress in solving these issues. Nevertheless, we advanced in drafting NetJSON templates for OpenWISP and plan to first test the password change on a single router once power is restored at Sunukeur.
In the afternoon, Sergio, Jaume, and Joan continued working at Aminata. We tested the ethernet cable and confirmed that pins 3 and 6 of the antenna were faulty, which explains the recurring problems. One of the best possible faults it could have been :). We attempted to crimp the new cable but didn’t have enough time to finish, so that task remains for tomorrow.


Finally, at 6:30 PM, we called it a day and joined Lorenzo and Pablo for dinner at La Source. We enjoyed a delicious Faco, ending the day with good food and great conversations.
Although the day was full of challenges, we’re making progress and are confident we’ll resolve the issues at Aminata and successfully register the routers in OpenWISP, hopefully tomorrow.
================================================================================
## Day 2: Networks, Teamwork and Sunsets in Gandiol
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day2/
Date: 2025-01-20
Tags: senegal travel blog
This morning, we split into two groups to tackle different tasks related to the network and the project. One group (Roger and Sergio) headed to Tabax Nité, where our servers and routers are located. During the review, we ensured everything was running smoothly and discussed ways to improve the network’s resilience by implementing:
- **A management system**: This system will allow us to automatically change the access point passwords. The tool is open-source and called [OpenWisp](https://openwisp.io). It’s been three years since we last changed the password, and by now, half of Senegal probably knows it. This simple change could significantly reduce the number of "unwanted" users on the network.
- **A monitoring system**: We plan to implement [Zabbix](https://zabbix.com), which will alert us when something in the network fails. This system integrates well with our routers (OpenWRT) and can also monitor other equipment, such as radio links and servers. Additionally, it could send notifications directly to the project’s Telegram chat, keeping everyone informed in real time.
The other group went to investigate what was happening with Aminata’s network, which has been without internet for a few weeks. Unfortunately, when we arrived at the village, there was a power outage, making it impossible to diagnose the issue. We’ll need to return tomorrow to resolve this situation.
Meanwhile, Jaume stayed with Joan and Aitor, teaching them how to set up mesh networks. They took the opportunity to update the process documentation and replaced a mesh node in Sunukeur, swapping out the old one at Pablo’s house.

---
In the afternoon, we all worked together in the courtyard. The wind shifted, and a pleasant breeze from the Atlantic created the perfect environment for outdoor work.

Later, we took some time to relax and headed to Teranga bar, known for its stunning sunset views. The sunset was spectacular—possibly one of the most beautiful we’ve seen in Senegal. The colors shifted hypnotically for almost 30 minutes until all traces of light disappeared over the horizon.


To end the day, we had *ñepe* (not sure about the spelling), a type of delicious bean dish that’s one of the best dinner options. Afterward, we enjoyed chatting with the guests staying at Hahatay before calling it a night.
================================================================================
## Day 1: Setting project goals
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day1/
Date: 2025-01-19
Tags: senegal travel blog
Today has been a day full of reunions and first impressions at Hahatay. After arriving, we started the day with breakfast, which is undoubtedly the best time of the day here. We shared a pleasant morning with Laura, the children, and all the wonderful people who are part of Hahatay.

After recharging our energy, we took a tour around the area to get up to date on what has changed and what remains to be done. During this tour, we encountered our first technical challenge: Aminata's router isn’t working, something we will address as soon as possible.
Lunch was at Zebra Bar, where we met with Lorenzo and other good friends. It was a time to share stories and laughter, and we enjoyed a long chat together after the meal.


In the afternoon, we decided to take a walk along the beach on our way back home, just as the sun was setting. Afterward, we sat down to plan the work for the coming weeks. Each of us shared our ideas, and together we prioritized what we want to accomplish.
For this first week, we’ve set the following goals:
1. Resolve the internet connection issues at Aminata.
2. Install OpenWisp management software on the routers.
1. This will allow us to centrally manage all access points and simultaneously make changes to passwords across all of them.
3. Monitor all network elements in Gandiol using Zabbix.
1. This will enable us to proactively detect and resolve issues before they affect users.
If we achieve these objectives, we will have made significant progress toward the success of this first week. There’s a lot of work ahead, but the motivation is high, and we’re ready to face the challenges.
We closed the day with the satisfaction of having taken the first step and with the hope that these efforts will have a positive impact on the community.
================================================================================
## Day 0: Travel's Day
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day0/
Date: 2025-01-18
Tags: senegal travel blog
The day of travel is always a day full of nerves. But good nerves. In the end, we've spent a lot of time working on this, so it's very normal to feel a bit anxious.

The day started off a bit complicated right from the check-in counter. Jaume and I (Sergio) went to check in the suitcase. It weighed 26 kg, while the maximum allowed was 25. The woman marked it as "Heavy" but didn’t say anything else. She didn’t charge us extra, so we assumed that even though it was "Heavy," it was within the tolerance. Then, the woman at the counter asked us:
—What’s your carry-on luggage?
Jaume and I looked at each other and almost in unison replied:
—This one. —We pointed to Jaume's backpack.
The woman, in a not-so-friendly tone, said:
—Well, it has to fit there. —She pointed to a metal frame where the backpack had to fit.
Jaume, almost instinctively, like a ninja, reached into his backpack, pulled out the metal frame that was part of its structure, and passed it to me under the counter. I held the metal frame, hiding it from the woman’s view. Jaume managed to fit the backpack into the metal frame. He had to force it, but he did it. The woman nodded, looked at me, and asked:
—You’re not carrying anything else?
I shook my head.
—Alright, you need to be at the boarding gate at 2:30 PM.
Jaume and I nodded and left. Great, first boss of the day defeated.
Next, we headed to the security check. There, from two carry-on bags, we took out 12 laptops, each in its own tray. The laptops were wrapped in bubble wrap to minimize damage from any impacts during the trip. The guard at the checkpoint, perplexed by the 10 trays filled with bubble-wrapped laptops — which looked more like drug packages than laptops — called his supervisor to take a look. He asked me:
—What’s all this?
—They’re laptops for a donation.
—Do you have any documentation?
I nodded and asked Roger for the donation letter that Lorenzo (Hahatay) had written in case something like this happened. The guard read the letter, it all checked out, and he let us pass. Second boss defeated.
At the boarding gate, we managed to get all the luggage through as well. We only had a “backpack under the seat” allowance, and all the backpacks we carried exceeded the size limit (yes, the budget didn’t allow for much more). Third boss defeated.
I’m writing these lines from 10 km above the ground, flying over some part of the Sahara. Now, when we arrive at the airport, we’ll face the final boss: customs. I’ll update later with the result.
---
When we arrived at the airport, we passed through immigration without any issues, exchanged some euros for CFA francs, and then proceeded to customs. Roger went first without any problems. Then Jaume was asked to open the large suitcase. While his suitcase was being inspected, Joan and Aitor left with the other small suitcase. I stayed with Jaume and the police. The officer checked for a while; we gave him the donation letter. According to him, the letter didn’t have the customs stamp, and he recommended we keep that in mind for the next time. He let us through without any further issues. Final boss defeated.
A little while later, Bachir, the taxi driver, picked us up and drove us to Gandiol. There, Pablo and Rober were waiting for us. We gave each other a big hug after almost a year without seeing each other. We settled into our rooms and went to sleep, as we were exhausted.

================================================================================
## Day -1: Setting everything up
URL: http://sergiogimenez.com/posts/2025/senegal_travel_blog/day-1/
Date: 2025-01-17
Tags: senegal travel blog
On Friday the 17th, we met in the afternoon at the university to pack the suitcases. We spent some time figuring out how to arrange the computers donated by Labdoo in the suitcases, deciding on the best layout, etc. We spent a couple of long hours preparing the luggage: packing the electronic equipment, taking care of all the last-minute details we might have missed...

Once the suitcases were packed, Roger took them to his car to bring them directly to the airport the next day.
================================================================================
## Hahatay Network Prize in IEEE CUNC Challenge 2024
URL: http://sergiogimenez.com/posts/2024/ieee-cunc-winners/
Date: 2024-11-28
Tags: ieee, cunc, award
We are proud to announce that our team has won the Hahatay Network Prize in the IEEE CUNC Challenge. The IEEE CUNC Challenge is a competition that recognizes proof of concept and prototype solutions that address the challenges of the future internet in underserved areas. Our solution has been awarded with the "Honorable Mention" prize in the proof of concept category.

We would like to thank the IEEE CUNC Challenge organizers for this recognition and we look forward to continuing our work in this area.
Please, find also below the presentation slides and the [final text](./files/Connected_the_unconnected_application_final.pdf) of the application.
📊 Key Resources:
* [Presentation Slides](files/IEEE-CTU-Presentation-Hahatay-Network.odp)
* [Full Application](files/Connected_the_unconnected_application_final.pdf)
================================================================================
## What am I doing now?
URL: http://sergiogimenez.com/now/
Date: 2024-09-22
_Last updated at {{< lastmod >}}._
- Pursuing a PhD with i2CAT and UPC on efficient and green 6G networks: [:six: 6G-RUPA](https://6grupa.com)
- Currently on a [research stay at Boston University]({{< ref "/posts/2025/research-stay-at-bu" >}}) on 6G-RUPA and RINA (Sep-Dec 2025) :us:
- Working as a Telecommunications Engineer at [i2CAT](https://i2cat.net) 🤓
- Module Development Group Leader for the Federation Manager at [ETSI's Open Operator Platform](https://oop.etsi.org/)
- Developer/DevOps for [GÉANT](https://www.geant.org/)
- Contributor to [OpenCAPIF](https://ocf.etsi.org/)
- Participant in several Spanish and European research projects.
- Since April 2026, also lecturing part-time at [Universitat Pompeu Fabra](https://www.upf.edu/) for the "Network Architecture" course in the 2nd year of the Bachelor's Degree in Engineering
- President of [AUCOOP](https://aucoop.upc.edu), a UPC students organization doing IT-related cooperation projects
- Maintaining [:senegal: hahatay.network](https://hahatay.network), a community network in Senegal with other volunteers
- Starting a connectivity project in a school in Gochas, [Namibia :namibia:](https://foundawtion.org/archivos/5383)
- Contributing to [eReuse.org](https://ereuse.org) :recycle: lifecycle management software for refurbished equipment
- Besides nerdy stuff I really enjoy running, climbing :climbing:, making wine :wine_glass: (200L this year!), and [converting a 2006 van]({{< ref "/posts/2025/camper-history" >}}) for summer travels :bus:
---
_[What is this page?][aboutnow]_.
[aboutnow]: https://nownownow.com/about
================================================================================
## A very brief introduction to RINA and its principles
URL: http://sergiogimenez.com/posts/2022/rina_2_rina_and_its_principles/
Date: 2022-07-18
Tags: rina, tcp/ip
In [the previous article](https://sergiogimenez.com/rina_1/) we talked about the flaws in the current network architecture. Before starting to break down how RINA improves the defects that the current architecture has, I would like to clarify something that I consider important. **RINA is not intended as a replacement for the current TCP/IP model**. RINA was born with the motivation to propose a new architecture to reach to where TCP/IP cannot. RINA can be incrementally deployed by interoperating with current technologies. You don't need a clean deployment as for example if you need with IPv6. That is, it can work in several different use cases (over an Ethernet network, over an IP network, etc.).
## Architecture Principles
In general, RINA is based on the principle of **maximizing the invariants in the architecture**, so that the number of protocols on this one can be minimized. The following figure exemplifies this statement graphically:

*Abstract representation of the current network architecture and protocols versus the desired goal. Source: [RINA ETSI Report](https://www.etsi.org/deliver/etsi_gr/NGP/001_099/009/01.01.01_60/gr_NGP009v010101p.pdf)*
What RINA tries, is to solve most of the complex problems within the architecture, that is, **all the issues that do not depend on the requirements of each network**. By solving those problems within the architecture, we will have fewer protocols and these will be more similar among them.
## What is "The Network"?
As we have explained in the previous article, the network is nothing more than the channel that allows communication between applications (e.g. Skype, Mail, WhatsApp, etc.). Therefore, the network itself is a distributed application specialized in providing this communication channel between applications (ie, processes). In RINA, this channel is called DIF (Distributed IPC Facility), which means exactly what we have been saying: **an application that provides communication services between processes**.
Let's do a little exercise to understand how the network is built.
As a first approach for our model, we could have a single DIF that provides two applications with the ability to communicate:

*Representation of a DIF to provide IPC between two endpoints Source: Eduard Grasa, slides [Introduction to RINA](https://www.youtube.com/watch?v=1tB7Iy2Q3-o)*
Now, Alice and Bob can speak to each other, but this is not fine at all. If we only have a DIF to provide communication to all the applications in the world, it would not work, ergo it is not scalable. But this is something that we can solve relatively easily. We need to isolate the different scopes in the networks:

*Representation of several DIFs to provide IPC between two endpoints. Source: Eduard Grasa, slides [Introduction to RINA](https://www.youtube.com/watch?v=1tB7Iy2Q3-o)*
What we have in RINA then, are multiple DIFs that provide IPC to each other. At the end of the day, a DIF is just a distributed application. And how many DIFs have to be used in a network? Well, as many as the network designer deems appropriate for the use case that IPC is to be provided. For example, there will be a DIF (red) that will be above the physical level, which will accommodate the technology that modulates the information below (air, fiber, cable, etc.); or it may be interesting to have a segment of the metropolitan network (blue) further from the users, which adds more traffic to the flow.
In the end, what we have is a more abstract and simpler architecture, since in a network there is only the same element repeated `N` times. With which, managing the network becomes easier, since only knowing how a DIF behaves and how it is related to another DIF (or application, because they interact in the same way), can be generalized to how the entire network interacts with all the elements that compose it. This is where Recursive in RINA comes from, since what you have is the same type of layer that is repeated and services are used from one layer to another in the same way that applications use services. It is important to emphasize that the different layers (different DIFs) do not have different functionalities, they only deal with providing communication services between processes in a scope. So, a DIF provides services for two applications to communicate, but… Can there be several applications using the services of the same DIF? Of course, in fact, more precisely, a DIF provides the communication services by allocating resources (memory in buffers, bandwidth capacity, etc.) for the different applications. Then, the applications request a communication flow from the DIF with specific requirements and some applications compete with others to obtain that flow.
## Inside a DIF
And what exactly is inside a DIF? Within the DIFs, following the RINA philosophy, it is also intended to simplify their internal structure as much as possible (following the principle of maximizing invariances). The functions that a DIF performs are classified into three types:
* Data transfer functions.
* Data transfer control functions.
* Layer management functions.
To be able to carry out these functions, protocols are needed, just as it happens to us in the current architecture. But remember that we want to have the minimum protocols and we want to design them as simple as possible. To minimize the variability between protocols within the DIF to a minimum, what is done is to separate between **mechanism** and **policy**.
Mechanisms are the **fixed** parts in a protocol. For example, the acknowledgment (ACK); which is a type of message used to find out if a packet has successfully arrived at its destination.
Policy is the part of the protocol that changes. For example, **when** and **how** to send an ACK is a policy.
And with this premise of separating between mechanism and policy, we find that only two protocols are enough to cover the three functions of the DIF: **EFCP** for data transfer and control, and **CDAP** for layer management.
## Naming and Addressing
Without going into much detail, since [we have already talked about this in the other article](https://sergiogimenez.com/rina_1/), RINA proposes a naming scheme that facilitates mobility, simplifies traffic routing and provides multi-homing natively. We need applications to have a name, and applicatoins need to keep it regardless of where they are. Then, we have node addresses, which give us clues as to where they live. Finally, we have the point of attachment addresses, these addresses do tell us how to get to where the applications live.
Below is a comparative table with the current naming system:
| **Name** | **Indicates** | **Property** | RINA | IP |
|------------------------- |--------------------- |-------------------------------------- |------ |------------------------ |
| Name of the application | What? | Location independent | Yes | No |
| Node address | Where? | Location dependent, path independent | Yes | No |
| Point of attachment | How do I get there? | Path dependent | Yes | Yes, twice: IP and MAC |
As we discussed earlier, we need applications to have a name, and to keep it regardless of where they are. Then we have node addresses, which give us clues as to where applications live. Finally, we have the point of attachment addresses, these addresses do tell us how to get to where the applications live.
## Final Recap
If you have got it till the end, you will have realized that RINA provides a fairly abstract architecture, and consequently, the ultimate goal of RINA is to have a framework that allows you to develop protocols and thus be able to simplify networks in general. As I said at the beginning of the article, RINA can be applied in specific scopes, such as within datacenters. Being a relatively new technology, the idea is to start with very simple use cases and gradually move to larger and more complex use cases.
Finally, if attach here some references that could might be interesting to extend RINA knowledge.
* [Future Internet and RINA Architecture - EduTec&Cria](https://www.youtube.com/watch?v=1tB7Iy2Q3-o&t=2820s). The first is a talk, which has been used as a guide and reference to write these articles. In fact, these two articles could be considered as a synthesis/introduction of this talk. This talk explains in a very understandable and simple way what problems the current architecture has and how RINA can solve them.
* [IRATI](https://irati.github.io/stack/) is an open source implementation of RINA that has a fairly comprehensive wiki and documentation on RINA.
* [ETSI RINA Report](https://www.etsi.org/deliver/etsi_gr/NGP/001_099/009/01.01.01_60/gr_NGP009v010101p.pdf). This is the RINA standardization document in which all the technical details of RINA are explained in a more technical way.
================================================================================
## Is TCP/IP broken? What is RINA and why it can solve the problems of the current architecture
URL: http://sergiogimenez.com/posts/2022/rina_1_is_tcp_ip_broken/
Date: 2022-07-03
Tags: rina, tcp/ip
Well, maybe Internet is not completely broken, but it does have several flaws. In fact, by being a little more rigorous and less alarmist with the title statement, we could say that the network architecture in which the Internet as we know it today is designed, can be improved. It may seem naive to say this, but I hope that by the end of this article you will understand the weaknesses of the current architecture and how we could improve it.
But, let us start from the beginning. What is an **architecture**? We could define an architecture as a set of patterns and methodologies that allow designing elements with different requirements. Let's exemplify it. If we have in mind a church/cathedral, we can tell with relative ease, seeing the building, that it has a Gothic, Romanesque, classical architecture, etc. Although all the elements are buildings, each one has different characteristics. Therefore, **an architecture captures invariant and common patterns between different constructions independent of the requirements of each construction**.
So we already have the concept of architecture defined, now we need the second: **network**. What is a network? After all, a network provides us with communication between two extremes, which from now on we will call endpoints. But what are these endpoints? These endpoints are ultimately applications (strictly speaking, process instances of the operating system). Therefore, a network is nothing more than a way to copy data in a distributed (and imperfect) way between two applications. This definition of network was very present at the beginning of communication networks, and in conclusion, it comes to say that **computer networks present inter-process communication services** (IPC).
Well, we already have a more or less clear idea of what a network architecture is. Now the question we could ask ourselves would be the following: What is the current network architecture? Answer is: **it is not formally defined**. According to our definition of architecture, the current model does not correspond to a formally and precisely defined architecture. What does exist are a series of rules that are fulfilled (more or less) and that work (more or less) and that there are problems that they do not contemplate, and then each use case must be solved independently. Let's take a closer look at what problems we have with the current "architecture".

*OSI architecture model (left, center) and Internet protocol suite model (left). Souce: [RINA ETSI REPORT](https://www.etsi.org/deliver/etsi_gr/NGP/001_099/009/01.01.01_60/gr_NGP009v010101p.pdf)*
## Problems
### Layering
The current architecture leaves no room for new network protocols. There is a layer called "*network layer*" common throughout the internet above the link level. This implies that, for example, if a network wants to do non-IP routing, or hide internal routers of private networks from the public Internet, ad-hoc solutions must be used.
The fact that specific solutions have to be used for each use case is a problem, because since it is something that is not contemplated in the common architecture, each network designer solves "his problems his way". The use case exposed before, where you want to do routing in a different way, can be solved with MPLS (Layer 2.5), but it can also be solved in other ways, for example in cellular networks there is GTP, or IP-tunneling protocols (packets IP within IP packets), etc.
Ultimately, this section is intended to illustrate that because the architecture does not contemplate a common solution independent of network type, there are myriad disparate solutions. And in the end, this is solved in the way that is illustrated in the figure below. Something that a priori should be simple, with fixed layers, ends up becoming a reality in what is shown in the image below, where different protocols appear that are inserted between the different layers to be able to solve use cases that occur today and that architecture does not contemplate. If we had a well-defined and concrete architecture, we would not end up having a *macedonia* of protocols and specific solutions.

*The Internet architecture model is constantly being extended to accommodate new use cases. Source: [RINA ETSI REPORT](https://www.etsi.org/deliver/etsi_gr/NGP/001_099/009/01.01.01_60/gr_NGP009v010101p.pdf)*
### Naming and Addressing
Another problem that exists in the current architecture is how to identify different entities within a network. We have the **applications**, which are the **endpoints** of a network communication service. Let's see an example in the figure below.

*Naming and Addressing in Current Architecture. Source: Eduard Grasa, slides [Introduction to RINA](https://www.youtube.com/watch?v=1tB7Iy2Q3-o)
Applications do not have a separate name. To establish a TCP connection flow, we need the address where the application is located, as well as a port, which indicates the endpoint of the flow.
Let's stop here for a moment.
If we look at Alice's application address as [www.sergiogimenez.com:80](www.sergiogimenez.com:80), we see that this does not look like an IP address, and indeed requires DNS translation to convert it to an IP address. The DNS resolves the address before establishing the connection flow, but the DNS is an external system, not part of the network.
The network doesn't understand application addresses, the network only understands that you are connecting one network interface (and one port) to another network interface (and another port). For example, if the network moves, the network has no idea that the same application is being instantiated elsewhere, then any management that needs to be done (such as re-routing traffic), cannot be done without a external element to the network (as is the case of the DNS).
In conclusion: The fact that the network does not know the names of the applications is indeed an issue.
### Mobility
As we have seen, the name of the application is not stable, and depends on the site where you are. A very simple example of the problems caused by this fact would be the following: I'm called myself Sergio at home, but that at work they called me something else, just for the simple fact of having moved. With networks, exactly this happens. If you move, your direction changes. And it must be so! Because the address must identify exactly where you are; but **the name of the application should be stable**, since it only indicates **who** you are and should not vary depending on **where** you are.
But in the current model this does not happen. At the network layer (which deals with routing) there is only a single identifier: the IP address. Routers don't understand application names, only IP addresses. So if you want to be mobile on a network, you have to use... Guess what? More protocols.
### Multi-homing
It may be the case that Alice has more than two network interfaces on her machine, that is, Alice can connect to one network or to more than one network. The problem here is that each interface must have a different IP address. So Alice's application has 2 addresses, since we have one address for each interface.
Let's take an example, if Bob's app sends traffic to Alice's app, the network will route that traffic from `12.12.12.12` to `10.0.0.1`. What happens is that if `10.0.0.1` breaks, Bob's app has no way to send that traffic to Alice's app. The issue here is that Bob's app doesn't want to go to `10.0.0.1`, or `10.11.0.1`, **it wants to go to Alice's app**.

*The multi-homing problem. Source: Eduard Grasa, slides [Introduction to RINA](https://www.youtube.com/watch?v=1tB7Iy2Q3-o)*
Of course, this is something that can be partially solved in the current model (*partially solved*, because the endpoints must participate in this solution, it is not the network itself that provides solutions). At this point, the reader already imagines how… more protocols (SHIM6, Multipath TCP, BGP…).
However, if this had been thought of from the beginning and included in the architecture, a solution provided natively in the architecture could have been found for it. However, the solution to this problem is as trivial as shown in the figure below.

*Solution to the multi-homing problem. Source: Eduard Grasa, slides [Introduction to RINA](https://www.youtube.com/watch?v=1tB7Iy2Q3-o)*
It would be enough that the architecture was designed with **addresses on the nodes**, not the interfaces. And then route traffic based on these node addresses.
## In Conclusion
The current architecture, as we have been seeing, has defects:
* In its structure.
* In how protocols are designed: things in common between protocols are not rejected, they are all designed from scratch (although they perform very similar functions).
* Names and addresses. As we have been seeing, it has all the multi-homing and mobility problems that we have mentioned.
And we haven't talked about things that also would take us a while, such as the sockets API to program applications, security, network management, since the more protocols, the more complications when managing a network.
Perhaps at this point, you might be thinking about how naive it can be to talk about "*how badly the Internet works*", but in reality, this information is reaching you thanks to the current architecture. And millions of things that work on this architecture and that no one 20 years ago thought could happen. But really, the things that have been mentioned are real defects that the architecture has and that can be improved. And from the will to try to improve all this, RINA appears. But this, we will talk about in detail in part 2 of this article.
================================================================================
## Solving a Kaggle ML classification problem using XGBoost
URL: http://sergiogimenez.com/posts/2020/kaggle_xgboost/
Date: 2020-01-27
Tags: machine learning, kaggle, xgboost, classification
This post is about my first ever participation in a kaggle competition. The competition was organized by the Machine Learning techers of the MSc course I'm currently doing. To be honest, I had no idea about how to get through this kind of competition, but since it was a mandatory assignment and I had to do it, me and [my colleague](https://www.linkedin.com/in/gerard-castell-049a5912a/) really spent a lot of time trying to get the best possible score. All the details about the classification problem can be found [in
kaggle](https://www.kaggle.com/c/anomaly-detection-in-4g-cellular-networks/), and the whole implementation of the model can be found [in this public repo](https://github.com/sergio-gimenez/anomaly-4G-detection).
>**Disclaimer:**
This post is not intended to show a rigurous and very formal approach of the problem solving, actually is intended to do the complete opposite. I will try to show how me and my colleague tackled the problem when knowing almost nothing in machine learning and how we obtained a score higher than 99%. For a more formal-ish approach of the work you [can take a look at the report we wrote](https://github.com/sergio-gimenez/anomaly-4G-detection/blob/master/MLEARN_Competition_Report.pdf).
## Summary
Below, there is a summary of the whole pipeline. On the next blocks, we
will dive deeply in all the modules shown.

# Pre-Processing
## The Dataset
The dataset has been obtained from a real LTE deployment. During two
weeks, different metrics were gathered from a set of 10 base stations,
each having a different number of cells, every 15 minutes. The dataset
is provided in the form of a csv file, where each row corresponds to a
sample obtained from one particular cell at a certain time. Each data
example contains the following features:
- `Time` : hour of the day (in the format hh:mm) when the sample was
generated.
- `CellName`: text string used to uniquely identify the cell that
generated the current sample. CellName is in the form xαLTE, where x
identifies the base station, and α the cell within that base station
(see the example in the right figure).
- `PRBUsageUL` and `PRBUsageDL`: level of resource utilization in that
cell measured as the portion of Physical Radio Blocks (PRB) that
were in use (%) in the previous 15 minutes. Uplink (UL) and downlink
(DL) are measured separately.
- `meanThrDL` and `meanThrUL`: average carried traffic (in Mbps)
during the past 15 minutes. Uplink (UL) and downlink (DL) are
measured separately.
- `maxThrDL` and `maxThrUL`: maximum carried traffic (in Mbps)
measured in the last 15 minutes. Uplink (UL) and downlink (DL) are
measured separately.
- `meanUEDL` and `meanUEUL`: average number of user equipment (UE)
devices that were simultaneously active during the last 15 minutes.
Uplink (UL) and downlink (DL) are measured separately.
- `maxUEDL` and `maxUEUL`: maximum number of user equipment (UE)
devices that were simultaneously active during the last 15 minutes.
Uplink (UL) and downlink (DL) are measured separately.
`maxUE_UL+DL`: maximum number of user equipment (UE) devices that
were active simultaneously in the last 15 minutes, regardless of UL
and DL.
- `Unusual`: labels for supervised learning. A value of 0 determines
that the sample corresponds to normal operation, a value of 1
identifies unusual behavior.
``` python
# Clone repository in order to get access locally to the datasets
!rm -rf .git README.md
!git clone https://github.com/sergio-gimenez/anomaly-4G-detection
```
``` python
train = pd.read_csv('anomaly-4G-detection/ML-MATT-CompetitionQT2021_train.csv', sep=';')
test = pd.read_csv('anomaly-4G-detection/ML-MATT-CompetitionQT2021_test.xls', sep=';' )
```
``` python
# Separate labels from data
X = train.drop('Unusual', axis='columns')
y = train['Unusual']
# We split the data into training and validation subsets (80% and 20%) in
# order to validate our training
X_train, X_validation, y_train, y_validation = train_test_split(X, y,
train_size=0.8,
random_state=1, stratify = y)
X_test = test
```
## Using non-quantitative features
First thing to do regarding data pre-processing is to make sure all
features are ready to be used, specially the non numerical ones: `Time`
and `CellName`. `Time` has relevant correlation with the maximum traffic
hours, although the day is not included in the date, still is a relevant
enough feature. In order to make `Time` ready to use, there are several
approaches. However, the chosen one has been to convert the time
(minutes) to radians and split them up into two features, one applying a
cosine and the other with sine. Regarding `CellName`, a simple mapping
1:1 with a numerical identifier for each cell name has been carried out.
``` python
#Refactor time feature to minuts and cellName to unique identifier 1:1
def getTimeInMinutes(x):
hh, mm = x.split(":")
return int(hh)* 60 + int(mm)
def createCellNameDictionary(data):
cellList = []
for i in data["CellName"]:
cellList.append(i)
cellList = set(cellList)
cellDict = {}
for idx, value in enumerate(cellList):
cellDict[value]=idx
return cellDict
def refactorFeaturesDataframe(data):
#data["Time"] = data["Time"].apply(lambda x: getTimeInMinutes(x))
data["TimeCos"] = data["Time"].apply(lambda x: math.cos(getTimeInMinutes(x)*math.pi/(12*60)))
data["TimeSin"] = data["Time"].apply(lambda x: math.sin(getTimeInMinutes(x)*math.pi/(12*60)))
del data["Time"]
cellNameDict = createCellNameDictionary(data);
data["CellName"] = data["CellName"].apply(lambda x: cellNameDict[x])
return data
```
``` python
#Refactoring data from features to useful values
X_train_df = refactorFeaturesDataframe(X_train)
X_train = X_train_df.to_numpy()
y_train = y_train.to_numpy()
X_validation = refactorFeaturesDataframe(X_validation).to_numpy()
y_validation = y_validation.to_numpy()
X_test = refactorFeaturesDataframe(test).to_numpy()
```
## Data Visualisation
### PCA
Regarding PCA, given the number of new features desired, it tries to
provide the projection using the correlation between some dimensions and
keeping the maximum amount of information about the original data
distribution. As can be seen in the image below, there are not clear
clusters nor a clear defined pattern. Usual and unusual samples are
mixed in many ways, fact that constraints the classifier that is going
to be used, e.g linear classifiers can be directly excluded.
``` python
pca = PCA(n_components=3) # Reduce to k=3 dimensions
scaler = StandardScaler()
X_norm = scaler.fit_transform(X_train)
X_reduce = pca.fit_transform(X_norm)
colors=['green' if l==0 else 'red' for l in y_train]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X_reduce[:,0], X_reduce[:, 1], X_reduce[:, 2], s=4, alpha=1,color=colors)
plt.show()
```

### t-SNE
In order to go through a different approach, a non-linear reduction such
as t-SNE has been tried out. t-SNE is an unsupervised method that
minimizes the divergence between a distribution that measures pairwise
similarities of the input and a distribution that measures the
similarities of the corresponding low-dimensional points in the
embedding. As it can be observed in the figure below, t-SNE has built a
set of separable clusters but with samples of different classes mixed in
the same clusters, without a clear visual pattern.
``` python
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, verbose=1, perplexity=40, n_iter=300)
tsne_results = tsne.fit_transform(X_train)
df_subset={}
df_subset['tsne-2d-one'] = tsne_results[:,0]
df_subset['tsne-2d-two'] = tsne_results[:,1]
df_subset['Labels'] = y_train
plt.figure(figsize=(16,10))
sns.scatterplot(
x="tsne-2d-one", y="tsne-2d-two",
hue="Labels",
palette=sns.color_palette("hls", 2),
data=df_subset,
legend="full",
alpha=0.3
)
```

## Plain Vanilla Classifiers
Due to the dataset nature, a linear classifier will not achieve an
acceptable performance. A neural network did not work either due to the
small dataset. A SVM with a Gaussian kernel was tested as well but, the
results were not as good as the ones obtained by decision tree. Some
results applying plain vanilla classifiers without any parameter tuning
are shown in the table below. As it can be seen, the best performance is
obtained with a plain vanilla decision tree. Therefore, we decided to
dive deeply into that approach.
| Classifier | Train Err. | Valdiation Err. | Accuracy |
| ------------- | ---------- | :-------------: | -------- |
| Decision Tree | 0 | 0.03 | 0.96 |
| SVM (rbf) | 0.26 | 0.26 | 0.73 |
| MLP | 0.27 | 0.27 | 0.73 |
# Solving the Classification Problem
## XGBoost. Training the classifier
One of the widely ensembled methods are gradient boosted decision trees.
In a summarized way, boosting takes an iterative approach for training
models. It trains models in succession, with each new model being
trained to correct the errors made by the previous ones. A widely used
implementation of the training described before is `XGBoost`. `XGBoost`
is an optimized distributed gradient boosting library designed to be
highly efficient, flexible and portable.
All the necessary information about `XGBoost` can be found in the
[XGBoost Documentation Page](https://xgboost.readthedocs.io/en/latest/)
-----
**Note:**
If you want to avoid the training process, and use the pre trained
model, make sure the `xgb_model.joblib` is loaded in
`anomaly-4G-detection/xgb_model.joblib`.
If you want to go through the training process there are two ways:
- __Fast way:__ The most suitable parameters we have found are already
hardcoded in the pipe and no training process is involved at all in
this part.
- __Whole training process:__ If you want to do the whole training process
by yourself comment the parameters in the pipe, comment
clf_GS = RandomizedSearchCV(estimator=pipe, param_distributions=parameters, n_jobs=10, verbose=1, cv=[(slice(None), slice(None))], n_iter= 1)
and uncomment
```
clf_GS = RandomizedSearchCV(estimator=pipe, param_distributions=parameters, n_jobs=10, verbose=1, cv=5, n_iter= 500)
```
-----
``` python
from xgboost import XGBClassifier, plot_importance
from joblib import dump, load
from google.colab import files
from scipy.stats import uniform, randint
try:
clf_GS = load('anomaly-4G-detection/xgb_model.joblib')
training = False
except:
training = True
pipe = Pipeline(steps=[('std_slc', StandardScaler()),
('xgb_clf', XGBClassifier(random_state=1,
scale_pos_weight=7,
colsample_bytree= 0.053381469489678104,
eta= 0.20289460663803338,
gamma= 0.88723107873764,
learning_rate= 0.15455380920536027,
max_depth= 26,
min_child_weight= 1,
n_estimators= 565,
subsample= 0.9738168894035317))])
parameters = {
# 'xgb_clf__eta' : uniform(0.2, 0.35),
# "xgb_clf__colsample_bytree": uniform(0.05, 0.2),
# "xgb_clf__min_child_weight": randint(1, 5),
# "xgb_clf__gamma": uniform(0.35, 0.6),
# "xgb_clf__learning_rate": uniform(0.1, 0.3), # default 0.1
# "xgb_clf__max_depth": randint(10, 30), # default 3
# "xgb_clf__n_estimators": randint(500, 1000), # default 100
# "xgb_clf__subsample": uniform(0.6, 0.99)
}
#clf_GS = RandomizedSearchCV(estimator=pipe, param_distributions=parameters, n_jobs=10, verbose=1, cv=5, n_iter= 500)
clf_GS = RandomizedSearchCV(estimator=pipe, param_distributions=parameters, n_jobs=10, verbose=1, cv=[(slice(None), slice(None))], n_iter= 1)
clf_GS.fit(X_train, y_train)
```
## Select features from model
The last experiment that leads to a considerable enhancement is to take
advantage of the features selected by the model to perform a feature
reduction. Take into account that `XGBoost`, in essence, is a set of
ensemble decision trees, so we could evaluate its features importance
once the model is trained.
Evaluating that data, we get the optimized threshold to reduce the
accuracy using just 3 features (check next code block). The
'SelectFromModel' module allowed us to pass the thresholds to the
already trained model and, once the best threshold is validated,
transform the datasets using just the features that pass the threshold.
This final experiment let us reduce the recall from 44 errors in
validation to 14. In the test set we achieved a score of 99.83%, which
was our best performance in the challenge.
``` python
from sklearn.feature_selection import SelectFromModel
if training:
treshold_train_error = []
treshold_val_error = []
thresholds = np.sort(clf_GS.best_estimator_.named_steps["xgb_clf"].feature_importances_)
current_error = 100.0
best_th = 0
for thresh in thresholds:
# Do a feature reduction with relevant feature
new_X_train = X_train
selection = SelectFromModel(clf_GS.best_estimator_.named_steps["xgb_clf"], threshold=thresh, prefit=True)
select_X_train = selection.transform(new_X_train)
# Fit the classifier with the reduced dataset
selection_model = RandomizedSearchCV(estimator=pipe, param_distributions=parameters, n_jobs=10, verbose=1, cv=[(slice(None), slice(None))], n_iter= 1)
selection_model.fit(select_X_train, y_train)
# Evaluate predictions with the dataset trained with the feature reduction
pred_train = selection_model.predict(select_X_train)
select_X_val = selection.transform(X_validation)
pred_val = selection_model.predict(select_X_val)
""""
Classification report
---------------------
"""
train_error = 1. - accuracy_score(y_train, pred_train)
train_cmat = confusion_matrix(y_train, pred_train)
val_error = 1. - accuracy_score(y_validation, pred_val)
val_cmat = confusion_matrix(y_validation, pred_val)
treshold_train_error.append(train_error)
treshold_val_error.append(val_error)
print("\nThreshold of value %f" % thresh)
print("--------------------------------")
print('\ntrain error: %f ' % train_error)
print('train confusion matrix:')
print(train_cmat)
print('\ntest error: %f ' % val_error)
print('test confusion matrix:')
print(val_cmat)
print("\n")
if val_error < current_error:
current_error = val_error
best_th = thresh
best_transformation = select_X_train
```
Train and predict the data with the best feature reduction
``` python
from sklearn.feature_selection import SelectFromModel
# Get the best estimator we found in the previous block
new_X_train = X_train
selection = SelectFromModel(clf_GS.best_estimator_.named_steps["xgb_clf"], threshold=best_th , prefit=True)
select_X_train = selection.transform(new_X_train)
# Train the classifier with the best feature reduction
selection_model = RandomizedSearchCV(estimator=pipe, param_distributions=parameters, n_jobs=10, verbose=1, cv=[(slice(None), slice(None))], n_iter= 1)
selection_model.fit(select_X_train, y_train)
# Save the model in a file and download locally.
dump(clf_GS, 'xgb_model.joblib')
files.download('xgb_model.joblib')
pred_train = selection_model.predict(select_X_train)
select_X_val = selection.transform(X_validation)
pred_val = selection_model.predict(select_X_val)
train_error = 1. - accuracy_score(y_train, pred_train)
train_cmat = confusion_matrix(y_train, pred_train)
val_error = 1. - accuracy_score(y_validation, pred_val)
val_cmat = confusion_matrix(y_validation, pred_val)
""""
Classification report
---------------------
"""
print("\nThreshold of value %f" % thresh)
print("--------------------------------")
print('\ntrain error: %f ' % train_error)
print('train confusion matrix:')
print(train_cmat)
print('\ntest error: %f ' % val_error)
print('test confusion matrix:')
print(val_cmat)
print("\n")
print("TRAINING\n" + classification_report(y_train, pred_train))
print("\nTESTING\n" + classification_report(y_validation, pred_val))
```
And the results of the best estimator:
```source
Threshold of value 0.462643
--------------------------------
train error: 0.000034
train confusion matrix:
[[21376 1]
[ 0 8146]]
test error: 0.002439
test confusion matrix:
[[5340 4]
[ 14 2023]]
TRAINING
precision recall f1-score support
0 1.00 1.00 1.00 21377
1 1.00 1.00 1.00 8146
accuracy 1.00 29523
macro avg 1.00 1.00 1.00 29523
weighted avg 1.00 1.00 1.00 29523
TESTING
precision recall f1-score support
0 1.00 1.00 1.00 5344
1 1.00 0.99 1.00 2037
accuracy 1.00 7381
macro avg 1.00 1.00 1.00 7381
weighted avg 1.00 1.00 1.00 7381
```
### Insightful data visualization
Here, there is some data visualisation in order to see and understand why and what improved by performing the feature reduction.
#### Evolution of the error for different thresholds
This plot shows the improvement we gained by implementing the '`Feature Selection`' module.
``` python
fig, ax = plt.subplots()
ax.plot(thresholds, treshold_train_error, label='training')
ax.plot(thresholds, treshold_val_error, label='validation')
ax.set(xlabel='Threshold', ylabel='Error')
ax.legend()
plt.title('Evolution of the error for different thresholds')
plt.show()
```

#### Best performance feature reduction
Our best feature reduction has 3 features , so then we can plot the resulting data set.
``` python
colors=['green' if l==0 else 'red' for l in y_train]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(best_transformation[:,0], best_transformation[:, 1], best_transformation[:, 2], s=4, alpha=1,color=colors)
plt.title('Best-Performance Feature Reduction')
plt.show()
```

#### Feature importance
In this plot, is shown the features that are more relevant to `XGBoost` when it comes to classify.
``` python
feature_importances = clf_GS.best_estimator_.named_steps["xgb_clf"].feature_importances_
columns = X_train_df.columns
fig = plt.figure()
plt.bar(np.arange(14) , feature_importances, align='center', alpha=0.5)
plt.xticks(np.arange(14), columns, rotation='vertical')
plt.ylabel('Normalized Importance')
plt.title('Feature Importance')
plt.show()
```

# Conclusions
During this research, we have explored a vast amount of possible classifiers and techniques to deal with the binary classification problem exposed in this report. Among those all classifiers, XGBoost has resulted to be the proper one to perform this task, as other related resources suggested.
# References
Some nice references we checked in order to solve the problem:
- [XGBoost Documentation](https://xgboost.readthedocs.io/en/latest/)
- [How to Use XGBoost for Time Series Forecasting](https://machinelearningmastery.com/xgboost-for-time-series-forecasting/)
- [XGBoost model](https://xgboost.readthedocs.io/en/latest/tutorials/model.html)
- [Python Hyperparameter Optimization for XGBClassifier using RandomizedSearchCV](https://stackoverflow.com/questions/43927725/python-hyperparameter-optimization-for-xgbclassifier-using-randomizedsearchcv)
- [A Beginner’s guide to XGBoost](https://towardsdatascience.com/a-beginners-guide-to-xgboost-87f5d4c30ed7)
- [The proper way to use Machine Learning metrics](https://towardsdatascience.com/the-proper-way-to-use-machine-learning-metrics-4803247a2578)
- [XGBoost and Imbalanced Classes: Predicting Hotel Cancellations](https://towardsdatascience.com/boosting-techniques-in-python-predicting-hotel-cancellations-62b7a76ffa6c)
================================================================================
##
URL: http://sergiogimenez.com/about/
My name is Sergio Giménez, I'm from Barcelona. However, currently I live between Barcelona and Teruel, a beautiful small city located in the so called "empty spain".
I have both a bachelor and master's degree in Telecommunications Engineering from Universitat Politècnica de Catalunya. Currently I'm pursuing a PhD in the Compute Architecture Deparment. My research is focused on the development of new algorithms and protocols for the next generation of mobile networks, we call it [6G-RUPA][6grupa].
At my job I work as a researcher 🧑🎓 in the Software Networks area at the [i2cat Foundation][i2cat], a non-profit research and innovation center. Right now I'm leading the Federation Manager Module Development Group within [ETSI's Open Operator Platform (OpenOP)][openop], and I also teach the "Network Architecture" course part-time at [Universitat Pompeu Fabra][upf]. You can see my research in my [Google Scholar profile](https://scholar.google.com/citations?user=8Z6J9QoAAAAJ&hl=en).
I'm also leading a volunteer-driven community network in [Hahatay][hahatay], [Gandiol Senegal](gandiol) :senegal:. We are building a community network to provide internet access to the local population. You can learn more about the project at [hahatay.network](https://hahatay.network).
Recently, I started contributing to [eReuse.org][ereuse] :recycle:, a non-profit organization that aims to reduce electronic waste by promoting the reuse of electronic devices.
All in all, I'm interested in different subjects such as software engineering, networks, distributed systems and privacy in general.
Besides being a **massive nerd** I also have several hobbies: I love hiking :hiking_boot:, climbing :climbing:, travelling :airplane:, playing music :guitar: and reading :book:.
My mother comes from a little tiny village in the mountains of Teruel, called El Cuervo :black_bird: so I go there often a lot to visit my family and enjoy the nature. I'm also making my own wine this year :wine_glass:.
So, this is my portfolio and my blog. I wish you could learn something from here. If you want to stay in touch, the easiest is that you drop me an email [here](mailto:hi@sergiogimenez.com).
[upc]: http://upc.edu
[ac]: https://www.ac.upc.edu/en
[i2cat]: https://i2cat.net
[openop]: https://oop.etsi.org
[upf]: https://www.upf.edu/
[6grupa]: https://6grupa.com
[hahatay]: https://hahatay.org
[gandiol]: https://maps.app.goo.gl/CxSkTdfESH8opv7E6
[bsky]: https://bsky.app/profile/sergio-gimenez.bsky.social
[mastodon]: https://mastodon.social/@sergiogimenez
[ereuse]: https://ereuse.org
================================================================================
##
URL: http://sergiogimenez.com/projects/
# My Projects and Contributions
This page is a curated overview of the projects I build, maintain, or contribute to. The rest of this page adds context about the longer-term initiatives and communities behind that work.
## Software Projects
These are the software projects and software initiatives that best represent what I am building and maintaining right now.
| Project |
Description |
Role |
References |
| OpenOP Federation Manager |
The federation layer of ETSI's Open Operator Platform, an open-source operator platform for federating networks, testbeds, and service capabilities. |
Module Development Group Leader for the Federation Manager, responsible for technical roadmap and architectural integrity. |
OpenOP
Docs
Code
|
| LEOPath |
A user-friendly, extensible Python-based simulator for analyzing routing algorithms in LEO satellite constellations. |
Maintainer and lead developer at i2CAT. |
GitHub
PyPI
|
| AUCOOP-Mint |
A lightweight, no-nonsense, Windows-like OS for non-tech users with low-end refurbished hardware in mind. |
Contributor and maintainer for AUCOOP's refurbished-laptop software stack. |
GitHub
Docs
|
| Community-Network-Handbook |
A field guide to build community networks from scratch. |
Contributor and editor for AUCOOP's community-network deployment documentation. |
GitHub
Site
|
| PLMN-GraphSim |
Julia-based discrete event simulator that works over network graphs from national-grade mobile network operators. |
Contributor and researcher working on 6G network simulation and experimentation. |
GitHub
Docs
|
| opencode-sessions |
Small CLI to search and reopen OpenCode sessions across all local projects. |
Personal utility I built to speed up local AI-assisted development workflows. |
GitHub |
| sergio-setup |
Personal workstation bootstrap scripts. |
My reproducible Linux setup for dev tools, shell, editor, keyboard, and sync services. |
GitHub |
## Work Around The Software
These are the longer-term initiatives and communities where I participate that shape a lot of the software work above.
| Logo |
Title |
Description |
Role |
References |
 |
Hahatay Network |
A volunteer-driven community network in rural Senegal. |
Started in 2021. Today I lead and support much of the technical work. |
Site
GitHub
|
 |
6G-RUPA |
Research on improving future mobile networks using recursive architectures. |
This is the core topic of my PhD and a recurring theme in several simulators above. |
Site |
 |
AUCOOP |
UPC student association focused on cooperation projects related to IT. |
Actively involved since 2017. Current president since 2025. |
Site |
 |
eReuse |
Open-source lifecycle management software for refurbishing, traceability, wiping, and diagnostics. |
Contributor to the eReuse software ecosystem around refurbished devices. |
Site |
 |
Labdoo |
A volunteer network that provides refurbished laptops to schools in need. |
Hub manager at i2CAT and AUCOOP, contributing to projects in Senegal, Namibia, and Pakistan. |
Site |
## Other Code Projects
Smaller software projects I built in the past to learn, experiment, or scratch a specific itch.
| Title |
Description |
References |
| GitHub wiki to Hugo |
A project that converts pages from a GitHub wiki into Hugo articles. |
GitHub |
| Python Scaffolding |
A Python scaffolding project. |
GitHub |
| Anomaly 4G Detection |
A project for detecting anomalies in 4G networks. |
GitHub |
| Blockfunding |
A blockchain-based crowdfunding platform. |
GitHub |
## Open Source Software I Use and Support
I am a strong believer in open source software, so I have allocated a few bucks every month to support some of the projects that I use almost everyday and would be hard to live without them.
| Title |
Description |
References |
| Graphene OS |
De-googled, privacy friendly Android OS |
Site |
| Betterbird |
My day-to-day mail client, calendar aggregator and matrix client |
Site |
| Logseq |
A privacy-first, open-source knowledge base |
Site |
| Debian |
My main Linux Distro since 2019 |
Site |
| Bitwarden |
My password manager of choice |
Site |
| OpenWISP |
Open-source network management system for managing network infrastructure |
Site |
## Non-Tech Projects
Here is a list about non-tech projects I'm involved to. I believe that technology can be used to improve the world, but it is not the only way to do so. I am involved in several non-tech projects that aim to make a difference in the world.
| Title |
Description |
| Campervan Conversion |
Converting my old Citroen Jumpy from 2006 into a functional campervan for traveling around Spain and Europe in Summer, and attending festivals. |
| Winemaking |
Making my own wine from grapes grown by my family. |
================================================================================
##
URL: http://sergiogimenez.com/research/
# Publications
*Last updated: May 25, 2026*
## 2025
- [**Unified Framework for Dynamic Traffic Management in Integrated 6G Terrestrial and Non-Terrestrial Networks**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:4TOpqqG69KYC)
*M Mosahebfard, A Cárdenas, S Giménez-Antón, L Tomaszewski*
Published in 2025.
- [**Extending Intent-Powered Network Management with LMs in B5G Infrastructures**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:ufrVoPGSRksC)
*CC González, S Giménez-Antón, M Tarzán-Lorente, H Chergui, ...*
Published in 2025.
- [**Assessing the impacts of computer reuse for digital inclusion from product information**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:YOwf2qJgpHMC)
*M Roura, L Navarro, R Meseguer, S Giménez*
Published in 2025.
- [**Identity management for frameworks managing northbound APIs of future networks**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:7PzlFSSx8tAC)
*E O’Brien, BDC Paulo, A Martin, MS Siddiqui, S Giménez-Antón*
Published in 2025.
- [**Toward Adaptive and High-Performance XR Services via Network Programmability and Monitoring**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:LkGwnXOMwfcC)
*C Fernández-Martínez, S Giménez-Antón, AA AbdelNabi, CC Parra, ...*
Published in 2025.
## 2024
- [**Progressive adoption of RINA in IoT networks: Enhancing scalability and network management via SDN integration**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:W7OEmFMy1HYC)
*D Sarabia-Jácome, S Giménez-Antón, A Liatifis, E Grasa, M Catalán, ...*
Published in 2024.
- [**6G-RUPA: A flexible, scalable, and energy-efficient user plane architecture for next-generation mobile networks**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:YsMSGLbcyi4C)
*S Giménez-Antón, E Grasa, J Perelló, A Cárdenas*
Published in 2024.
- [**Position paper: On the application of recursive inter-network architecture to the future quantum-enabled Internet**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:eQOLeE2rZwMC)
*J Jordán-Parra, S Giménez-Antón, E Carmona-Cejudo, M Garcia-Romero, ...*
Published in 2024.
## 2023
- [**Open-VERSO: a vision of 5G experimentation infrastructures, hurdles and challenges**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:Tyk-4Ss8FVUC)
*A Martin, P Losada, C Fernández, M Zorrilla, Z Fernandez, A Gabilondo, ...*
Published in 2023.
## 2022
- [**Application of multi-pronged monitoring and intent-based networking to verticals in self-organising networks**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:UeHWp8X0CEIC)
*C Fernández, A Cárdenas, S Giménez, J Uriol, M Serón, ...*
Published in 2022.
- [**Rina-based virtual networking solution for distributed vnfs: Prototype and benchmarking**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:2osOgNQ5qMEC)
*SG Antón, E Grasa, C Fernández, MS Siddiqui*
Published in 2022.
- [**Solutions for traffic isolation in 5G infrastructures using network slicing techniques**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:qjMakFHDy7sC)
*Z Fernández, Á Gabilondo, Á Vázquez-Rodríguez, C Giraldo-Rodríguez, ...*
Published in 2022.
- [**Prototype and benchmark of a RINA-based virtual networking solution for Virtual Network Functions (VNFs)**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:9yKSN-GCB0IC)
*S Giménez Antón*
Published in 2022.
- [**Design, implementation and benchmark of a RINA-based virtual networking solution for distributed VNFs**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:IWHjjKOFINEC)
*SG Antón*
Published in 2022.
## 2020
- [**A P4-enabled RINA interior router for software-defined data centers**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:u-x6o8ySG0sC)
*C Fernández, S Giménez, E Grasa, S Bunch*
Published in 2020.
- [**A Proof of Concept implementation of a RINA interior router using P4-enabled software targets**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:u5HHmVD_uO8C)
*S Gimenez, E Grasa, S Bunch*
Published in 2020.
- [**Development of a low-cost prototype to evaluate the performance of Transdermal Optical Links**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:Y0pCki6q_DkC)
*SG Antón*
Published in 2020.
- [**Development of a low-cost prototype to evaluate the performance of Transdermal Optical Links**](https://scholar.google.comhttps://scholar.google.com/citations?view_op=view_citation&hl=es&user=o9sbhDUAAAAJ&citation_for_view=o9sbhDUAAAAJ:_FxGoFyzp5QC)
*S Giménez Antón*
Published in 2020.
================================================================================
## CV
URL: http://sergiogimenez.com/cv/