{"id":858,"date":"2025-02-22T13:04:14","date_gmt":"2025-02-22T11:04:14","guid":{"rendered":"https:\/\/blog.gentz.com.de\/bloggentz\/?p=858"},"modified":"2025-03-03T17:48:43","modified_gmt":"2025-03-03T15:48:43","slug":"setting-up-a-freifunk-offloader-on-hyper-v","status":"publish","type":"post","link":"https:\/\/gentz.cloud\/?p=858","title":{"rendered":"Setting Up a Freifunk Offloader on Hyper-V"},"content":{"rendered":"\n<p>For x86-generic systems, there are firmware images available that need to be installed. The version used in this setup is:<\/p>\n\n\n\n<p><strong>2020.2.3.3-1264 \/ gluon-v2020.2.3-14-g2ea83c44+<\/strong><\/p>\n\n\n\n<p>After reading through various forum posts and trying different configurations, I finally managed to set up a Freifunk Offloader on a Hyper-V virtual machine. My goal was to present Freifunk to a municipality in the Steinburg district and explore potential funding for hardware support. To demonstrate its functionality, I decided to install the first outdoor Freifunk access point (TP-Link CPE210) on my roof and use a virtualized Offloader on my existing Hyper-V setup.<\/p>\n\n\n\n<p><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"500\" src=\"https:\/\/blog.gentz.com.de\/bloggentz\/wp-content\/uploads\/2025\/03\/ddde91a5631732e299bb411e22fdecb353ac3a6e_2_637x500.png\" alt=\"\" class=\"wp-image-859\" srcset=\"https:\/\/gentz.cloud\/wp-content\/uploads\/2025\/03\/ddde91a5631732e299bb411e22fdecb353ac3a6e_2_637x500.png 637w, https:\/\/gentz.cloud\/wp-content\/uploads\/2025\/03\/ddde91a5631732e299bb411e22fdecb353ac3a6e_2_637x500-300x235.png 300w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-text-align-center\">Architectural overview<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Challenge<\/h3>\n\n\n\n<p>Despite my IT background, I encountered issues when trying to get the CPE210 to work properly through the Offloader. Standalone, the CPE210 functioned correctly, but it failed when routed via the Offloader.<\/p>\n\n\n\n<p>I followed a guide from @citronalco on setting up WAN, Mesh, and Client networks across three virtual network interfaces on the VM:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Configure the VM with three network interfaces.<\/li>\n\n\n\n<li>Enable Mesh on LAN on <code>eth0<\/code>:<br><code>uci set network.mesh_lan.disabled=0 <\/code><br><code>uci set network.mesh_lan.ifname=eth0<\/code><\/li>\n\n\n\n<li>Assign WAN to <code>eth1<\/code>:<br><code>uci set network.wan.ifname=eth1<\/code><\/li>\n\n\n\n<li>Assign the Client network to <code>eth2<\/code><br>:<code>uci add_list network.client.ifname=eth2<\/code><\/li>\n\n\n\n<li>Verify interface names using MAC addresses.<\/li>\n<\/ol>\n\n\n\n<p>However, after multiple attempts, the CPE210 still did not connect properly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Solution<\/h3>\n\n\n\n<p>After extensive troubleshooting, I decided to reset everything and start from scratch. Here\u2019s what worked:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Reset all devices<\/strong> to factory settings (<code>firstboot<\/code>).<\/li>\n\n\n\n<li><strong>CPE210 Configuration:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Enable <em>Mesh on WAN<\/em>.<\/li>\n\n\n\n<li>No additional settings except for basic configurations (name, location, and password).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Hyper-V VM Configuration:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Reset and set up using only the GUI for basic configurations.<\/li>\n\n\n\n<li>Reapply the commands via SSH:<br><code>uci set network.mesh_lan.disabled=0 <\/code><br><code>uci set network.mesh_lan.ifname=eth0 <\/code><br><code>uci set network.wan.ifname=eth1 <\/code><br><code>uci add_list network.client.ifname=eth2<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Final Result<\/h3>\n\n\n\n<p>After this fresh setup, everything worked perfectly! The CPE210 is now connected via the Offloader, and Freifunk is fully operational.<\/p>\n\n\n\n<p>A big thanks to everyone who contributed advice and guidance!<\/p>\n\n\n\n<p>This setup has been stable for 3 years, and I hope it helps others facing similar issues. If you\u2019re considering implementing Freifunk with a virtualized Offloader on Hyper-V, these steps should give you a good starting point.<\/p>\n\n\n\n<p>For more details and discussion, check out the forum thread: <a href=\"https:\/\/forum.freifunk.net\/t\/cpe210-will-nicht-via-offloader-auf-hyper-v\/23548\" target=\"_blank\" rel=\"noreferrer noopener\">Freifunk Forum &#8211; CPE210 via Offloader on Hyper-V<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For x86-generic systems, there are firmware images available that need to be installed. The version used in this setup is: 2020.2.3.3-1264 \/ gluon-v2020.2.3-14-g2ea83c44+ After reading through various forum posts and trying different configurations, I finally managed to set up a Freifunk Offloader on a Hyper-V virtual machine. My goal was to present Freifunk to a<\/p><\/div>\n<div class=\"blog-btn\"><a href=\"https:\/\/gentz.cloud\/?p=858\" class=\"home-blog-btn\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-858","post","type-post","status-publish","format-standard","hentry","category-tips-ricks"],"_links":{"self":[{"href":"https:\/\/gentz.cloud\/index.php?rest_route=\/wp\/v2\/posts\/858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gentz.cloud\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gentz.cloud\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gentz.cloud\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gentz.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=858"}],"version-history":[{"count":7,"href":"https:\/\/gentz.cloud\/index.php?rest_route=\/wp\/v2\/posts\/858\/revisions"}],"predecessor-version":[{"id":896,"href":"https:\/\/gentz.cloud\/index.php?rest_route=\/wp\/v2\/posts\/858\/revisions\/896"}],"wp:attachment":[{"href":"https:\/\/gentz.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gentz.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gentz.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}