{"id":28,"date":"2025-11-27T21:46:42","date_gmt":"2025-11-27T20:46:42","guid":{"rendered":"https:\/\/blog.krumel.moe\/?p=28"},"modified":"2025-11-27T22:10:56","modified_gmt":"2025-11-27T21:10:56","slug":"silencing-a-loud-poe-switch","status":"publish","type":"post","link":"https:\/\/blog.krumel.moe\/?p=28","title":{"rendered":"Silencing a loud PoE Switch"},"content":{"rendered":"\n<p>Because of <em>reasons<\/em> I have recently acquired a Dell N2048P switch. It&#8217;s a very nice endpoint switch for which I happen to have multiple years of experience with due to my work and since it recently <a href=\"https:\/\/www.dell.com\/en-ca\/lp\/networking-warranty#Fixed-Port-Switches\">hit EoL,<\/a> you can get used ones for dirt cheap on Ebay.<\/p>\n\n\n\n<p>There&#8217;s only one problem: It&#8217;s loud as hell!<br>Granted, it also needs to potentially dissipate the heat from providing 600W of Power over Ethernet in total over it&#8217;s 48 PoE+ capable ports.<\/p>\n\n\n\n<p>In my case I do want <em>some<\/em> of the PoE, but realistically I&#8217;ll not be using more than 50W in total.<\/p>\n\n\n\n<p>So the solution seems simple: rip out the very loud Delta FFB03812HN fans (name rolls right of the tongue) and put in some Noctua NF-A4x20 FLX fans.<\/p>\n\n\n\n<p>Let&#8217;s take a short look at the relevant stats of these two fans:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><\/td><td>Delta FFB03812HN<\/td><td>NF-A4x20 FLX<\/td><\/tr><tr><td>Throughput<\/td><td>25.9 m\u00b3\/h<\/td><td>9.4 m\u00b3\/h<\/td><\/tr><tr><td>RPM<\/td><td>12000RPM<\/td><td>5000RPM<\/td><\/tr><tr><td>Noise Level<\/td><td>55.5 dB(A)<\/td><td>14.9 dB(A)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_173319978-edited-1-scaled.jpg\" alt=\"\" class=\"wp-image-32\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_173319978-edited-1-scaled.jpg 2560w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_173319978-edited-1-300x169.jpg 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_173319978-edited-1-1024x576.jpg 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_173319978-edited-1-768x432.jpg 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_173319978-edited-1-1536x864.jpg 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_173319978-edited-1-2048x1152.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Delta fan next to the Noctua fans<\/figcaption><\/figure>\n\n\n\n<p>Fortunately the Noctua fans come with the same connector as the original fans, but annoyingly the pinout is different. That&#8217;s easily fixed with a bit of fiddling though.<\/p>\n\n\n\n<p>Put in the new fans, turn on the switch and everything seems to be working! Yay, we&#8217;re done right?<br>Let&#8217;s just give the system a short check to see if everything is fine and&#8230; uh oh:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"827\" height=\"1024\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_190408-827x1024.png\" alt=\"\" class=\"wp-image-33\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_190408-827x1024.png 827w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_190408-242x300.png 242w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_190408-768x951.png 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_190408-1240x1536.png 1240w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_190408.png 1285w\" sizes=\"auto, (max-width: 827px) 100vw, 827px\" \/><figcaption class=\"wp-element-caption\">It&#8217;s very much <em>not<\/em> happy<\/figcaption><\/figure>\n\n\n\n<p>So it doesn&#8217;t like the new fans. I started testing to see if I broke it:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Turn off switch, plug in old fans: It starts up, and is happy again. Good, I didn&#8217;t brick it<\/li>\n\n\n\n<li>Unplug old fans and plug in new fans <em>while it is running<\/em>: It continues to be happy! Yay<\/li>\n\n\n\n<li>Does it stay happy if I reboot with the new fans: No \ud83d\ude41<\/li>\n<\/ul>\n\n\n\n<p>So, it&#8217;s unhappy with the new fans. It seems to run just fine with them, but it will run them at full tilt all the time.<\/p>\n\n\n\n<p>But <em>why<\/em> is it unhappy? What&#8217;s so offensive about the Noctua fans compared to the noisy Delta fans? Why is it happy with the Noctua fans if it boots up with the Delta fans?<\/p>\n\n\n\n<p>After a bit of fiddling around, I noticed something: During boot, it will ramp the fans up to full speed for a few seconds and then (if it likes them) ramp them down to roughly a third of the speed.<\/p>\n\n\n\n<p>Looking at the stats of the fans, it seems fairly obvious what it is doing: During boot, it runs the fans at full speed and checks the tachometer signal from them to see if they run at the expected speeds. The Noctua fans have a way lower max speed, so it just assumes they are broken.<\/p>\n\n\n\n<p>Let&#8217;s confirm this. After a bit of digging I found my cheap chinese USB-oscilloscope and hooked it up to the tachometer signals from the fans:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_170614528-1024x769.jpg\" alt=\"\" class=\"wp-image-34\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_170614528-1024x769.jpg 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_170614528-300x225.jpg 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_170614528-768x577.jpg 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_170614528-1536x1153.jpg 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_170614528-2048x1538.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">The janky test setup: the left fan is connected to the Noctua fan, the right one to the Delta fan<\/figcaption><\/figure>\n\n\n\n<p>Reboot the switch and observe the signals during the ramp up:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_180758-1024x576.png\" alt=\"\" class=\"wp-image-35\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_180758-1024x576.png 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_180758-300x169.png 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_180758-768x432.png 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_180758-1536x864.png 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251121_180758-2048x1152.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Yellow is Noctua, Blue is Delta. Also note the frequency measurement at the bottom of the window<\/figcaption><\/figure>\n\n\n\n<p>Not only is the Delta fan running faster, it also seems to use a slightly different tachometer signal. Going from 5000RPM to 12000RPM one would expect a ratio of 1:2.4, but it&#8217;s more than 1:5 here. Maybe the delta signal is doubled?<\/p>\n\n\n\n<p>After pondering it a bit, I formulated a plan: Get an Arduino or a similar microcontroller and intercept the tachometer signal to trick the switch into thinking that the fans are running faster than they are.<sup data-fn=\"27a640bb-87b0-4af8-84bc-f4dcc15fcccb\" class=\"fn\"><a href=\"#27a640bb-87b0-4af8-84bc-f4dcc15fcccb\" id=\"27a640bb-87b0-4af8-84bc-f4dcc15fcccb-link\">1<\/a><\/sup><\/p>\n\n\n\n<p>I dug through my pile of electronics and I found this ESP32 that used to have a display before I broke it (teehee):<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171432223-1-1024x769.jpg\" alt=\"\" class=\"wp-image-39\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171432223-1-1024x769.jpg 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171432223-1-300x225.jpg 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171432223-1-768x577.jpg 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171432223-1-1536x1153.jpg 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171432223-1-2048x1538.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">a LILYGO T-Display with a power cable<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171437215-1-1024x769.jpg\" alt=\"\" class=\"wp-image-40\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171437215-1-1024x769.jpg 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171437215-1-300x225.jpg 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171437215-1-768x577.jpg 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171437215-1-1536x1153.jpg 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_171437215-1-2048x1538.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">there used to be a display here&#8230;<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p>This should do fine. An ESP32 has a clock speed from 80MHz up to 240MHz which should be plenty to handle a signal less than a kilohertz.<\/p>\n\n\n\n<p>One problem remains still: It needs 5V to run.<br>The fans are running on 12V so I cannot use those without a step down converter.<br>Most of the power rails in the switch are 54V for PoE power.<\/p>\n\n\n\n<p>But then I realized: there&#8217;s a USB port at the front and it definitely needs 5V<\/p>\n\n\n\n<p>So I started probing suspicious looking pads near the USB port and tadaa: We got 5V!<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"1024\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_172224556-769x1024.jpg\" alt=\"\" class=\"wp-image-41\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_172224556-769x1024.jpg 769w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_172224556-225x300.jpg 225w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_172224556-768x1023.jpg 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_172224556-1153x1536.jpg 1153w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_172224556-1538x2048.jpg 1538w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251121_172224556-scaled.jpg 1922w\" sizes=\"auto, (max-width: 769px) 100vw, 769px\" \/><figcaption class=\"wp-element-caption\">Well, the multimeter measures only 4.5V but the probes on it are kinda cruddy&#8230; and even if it is actually only 4.5V, that&#8217;s still fine: the ESP32 runs on 3.3V internally, so the board will still run at ~3.7V (you lose 0.4V because it is a simple linear regulator)<\/figcaption><\/figure>\n\n\n\n<p>Now there&#8217;s just one thing missing: I have to program the microcontroller to actually do the thing.<\/p>\n\n\n\n<p>Since I&#8217;m lazy (and I don&#8217;t really have to watch my power usage), I chose to use micropython<sup data-fn=\"e6263da7-ce67-4e18-90ed-55b1b37e6d89\" class=\"fn\"><a href=\"#e6263da7-ce67-4e18-90ed-55b1b37e6d89\" id=\"e6263da7-ce67-4e18-90ed-55b1b37e6d89-link\">2<\/a><\/sup> instead of the ESP-IDF framework. It&#8217;s way easier to produce something that does the job.<\/p>\n\n\n\n<p>After mucking around and messing up a few times, I cleaned up the code and this is what I ended with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import machine\nimport esp32\nimport time\n\ncounterA = machine.Counter(0, machine.Pin(12, machine.Pin.IN), filter_ns=5000)\ncounterB = machine.Counter(1, machine.Pin(13, machine.Pin.IN), filter_ns=5000)\n\ntimerA = machine.Timer(0)\ntimerB = machine.Timer(1)\npinTimerA = machine.Pin(26, mode=machine.Pin.OUT)\npinTimerB = machine.Pin(25, mode=machine.Pin.OUT)\n\ndef flipPinA(t):\n    pinTimerA.toggle()\n\ndef flipPinB(t):\n    pinTimerB.toggle()\n\ndef updateTimer(timer, freq, callback):\n    timer.deinit()\n    if freq &gt; 0:\n        timer.init(freq=freq*2, callback=callback)\n\nwhile True:\n    countA = counterA.value(0)\n    updateTimer(timerA, countA * 15, flipPinA)\n\n    countB = counterB.value(0)\n    updateTimer(timerB, countB * 15, flipPinB)\n\n    time.sleep_ms(333)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"626\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_204339-1024x626.png\" alt=\"\" class=\"wp-image-45\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_204339-1024x626.png 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_204339-300x183.png 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_204339-768x469.png 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_204339-1536x938.png 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_204339-2048x1251.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Yellow is the output from my code, Blue the input from the fans; you can see how the signals happily interfere with each other<\/figcaption><\/figure>\n\n\n\n<p>A few notes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>I initially used the PWM class (because I am lazy) to generate the frequencies, but micropython occasionally seems to allocate a new hardware timer when you update the frequency which causes the code to crash sooner or later when you run out of hardware timer units.<br>Using the timers directly allows you to statically pick an ID sidestepping the problem entirely (it&#8217;s probably also better for performance, not that it matters).<\/li>\n\n\n\n<li>The filter on the counters is important; the inside of the switch isn&#8217;t exactly radio silence so I get a lot of noise on the inputs. Without the filter I count pulses in the thousands instead of the roughly 20 I&#8217;d expect.<\/li>\n\n\n\n<li>I am counting pulses over 1\/3 of a second to measure the incoming frequency. Longer means more accurate frequency measurement, shorter means faster update rate. It doesn&#8217;t matter much, but 1\/3s seems a nice middle ground.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_200043156-1024x769.jpg\" alt=\"\" class=\"wp-image-44\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_200043156-1024x769.jpg 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_200043156-300x225.jpg 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_200043156-768x577.jpg 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_200043156-1536x1153.jpg 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_200043156-2048x1538.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">My test setup while programming the ESP32, precariously balanced on my windowsill so the USB cables from my PC reach<\/figcaption><\/figure>\n\n\n\n<p>Now, I only need to put everything together: solder in the power cabling for the ESP, put heatshrink tubes on the connectors (I ran out of the plastic plugs) etc&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1922\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_202906176-edited-scaled.jpg\" alt=\"\" class=\"wp-image-47\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_202906176-edited-scaled.jpg 2560w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_202906176-edited-300x225.jpg 300w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_202906176-edited-1024x769.jpg 1024w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_202906176-edited-768x577.jpg 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_202906176-edited-1536x1153.jpg 1536w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/PXL_20251127_202906176-edited-2048x1538.jpg 2048w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Cable &#8220;management&#8221; with a healthy amount of Kapton tape<\/figcaption><\/figure>\n\n\n\n<p>All that&#8217;s left to do is to turn the thing on and check if it works and, well, it <em>does<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"840\" height=\"1024\" src=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_213434-840x1024.png\" alt=\"\" class=\"wp-image-48\" srcset=\"https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_213434-840x1024.png 840w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_213434-246x300.png 246w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_213434-768x936.png 768w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_213434-1261x1536.png 1261w, https:\/\/blog.krumel.moe\/wp-content\/uploads\/2025\/11\/Screenshot_20251127_213434.png 1304w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/figure>\n\n\n\n<p>Now it&#8217;s happy <em>and<\/em> silent. Of course I&#8217;ll have to watch the thermals a bit when I actually rack the thing up, but it&#8217;ll be <em>fiiiiine<\/em>, right?<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Footnotes<\/summary><ol class=\"wp-block-footnotes\"><li id=\"27a640bb-87b0-4af8-84bc-f4dcc15fcccb\">I am sure there is a more elegant, purely electrical way to multiply the frequency, but I&#8217;m not circuit designer, but I <em>do<\/em> know how to program microcontrollers <a href=\"#27a640bb-87b0-4af8-84bc-f4dcc15fcccb-link\" aria-label=\"Jump to footnote reference 1\">\u21a9\ufe0e<\/a><\/li><li id=\"e6263da7-ce67-4e18-90ed-55b1b37e6d89\">the T-DISPLAY can use the &#8220;generic&#8221; micropython binary; this is useful to know because they mention this <em>nowhere<\/em> on their website <a href=\"#e6263da7-ce67-4e18-90ed-55b1b37e6d89-link\" aria-label=\"Jump to footnote reference 2\">\u21a9\ufe0e<\/a><\/li><\/ol>\n\n\n<p><\/p>\n<\/details>\n","protected":false},"excerpt":{"rendered":"<p>Because of reasons I have recently acquired a Dell N2048P switch. It&#8217;s a very nice endpoint switch for which I happen to have multiple years of experience with due to my work and since it recently hit EoL, you can get used ones for dirt cheap on Ebay. There&#8217;s only one problem: It&#8217;s loud as [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[{\"content\":\"I am sure there is a more elegant, purely electrical way to multiply the frequency, but I'm not circuit designer, but I <em>do<\/em> know how to program microcontrollers\",\"id\":\"27a640bb-87b0-4af8-84bc-f4dcc15fcccb\"},{\"content\":\"the T-DISPLAY can use the \\\"generic\\\" micropython binary; this is useful to know because they mention this <em>nowhere<\/em> on their website\",\"id\":\"e6263da7-ce67-4e18-90ed-55b1b37e6d89\"}]"},"categories":[5],"tags":[],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=\/wp\/v2\/posts\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=28"}],"version-history":[{"count":7,"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":51,"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=\/wp\/v2\/posts\/28\/revisions\/51"}],"wp:attachment":[{"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.krumel.moe\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}