<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Marcus Folkesson</title>
    <link>https://www.marcusfolkesson.se/</link>
    <description>Recent content on Marcus Folkesson</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 11 Feb 2026 10:00:34 +0100</lastBuildDate>
    <atom:link href="https://www.marcusfolkesson.se/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Reverse engineer a serial key validator</title>
      <link>https://www.marcusfolkesson.se/blog/reverse-engineer-serial-key-validator/</link>
      <pubDate>Wed, 11 Feb 2026 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/reverse-engineer-serial-key-validator/</guid>
      <description>Reverse engineer a serial key validator A bit of nostalgia As many kids in my generation, I grew up with video games and the big question was always &amp;quot;Who is gonna be the host for the LAN party this weekend?&amp;quot;. Same question. Every. Single. Weekend.&#xA;This was in late 90s, and we were about 10-12 years old, so we did not have a lot of money. We were lucky to have network equipment (mostly cables, switches, hubs.</description>
    </item>
    <item>
      <title>Shrink disk images</title>
      <link>https://www.marcusfolkesson.se/blog/shrink-disk-images/</link>
      <pubDate>Thu, 29 Jan 2026 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/shrink-disk-images/</guid>
      <description>Shrink disk images Brief I wanted to shrink a raw disk image file I had that contained multiple partitions. Nothing unusual at all. I thought it should be multiple tools out there to do this (and I&#39;m sure there are), but the first couple of Google results were just showing some old GUI tools - which I refuse to use.&#xA;Instead of searching further, I decided to &amp;quot;just do it&amp;quot;.</description>
    </item>
    <item>
      <title>Naming your serial ports with udev</title>
      <link>https://www.marcusfolkesson.se/blog/naming-your-serial-ports/</link>
      <pubDate>Mon, 19 Jan 2026 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/naming-your-serial-ports/</guid>
      <description>Naming your serial ports with udev Brief UART is still a very common way to communicate with embedded systems, in fact, I would say that it is the most common way. When looking around in my lab, I can see that I have four different development boards/projects connected via UART to my computer. Two of them even use more than one port.&#xA;My point is that when you have many serial ports connected to your computer, it can be hard to keep track of which port is which.</description>
    </item>
    <item>
      <title>Remotely controlled USB hub</title>
      <link>https://www.marcusfolkesson.se/projects/remotely-controlled-usb-hub/</link>
      <pubDate>Sat, 17 Jan 2026 09:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/remotely-controlled-usb-hub/</guid>
      <description>Remotely controlled USB hub This is no fancy project, but I thought it might be useful for someone out there. There is probably better ways to do this, but this is what I came up with.&#xA;My situation For those who haven&#39;t read my previous post [1], I have recently bought two (yes, TWO!) Rigol DP832 power supplies to power my lab equipment. (I really love them and will never use a non-programmable power supply without ethernet interface again.</description>
    </item>
    <item>
      <title>GNSS spoofing using SDR</title>
      <link>https://www.marcusfolkesson.se/projects/gnss-spoofings/</link>
      <pubDate>Thu, 15 Jan 2026 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/gnss-spoofings/</guid>
      <description>GNSS spoofing using SDR First of all, sending false GNSS signals on the air is illegal in most countries. You must have a controlled RF environment (Faraday cage or such) to perform GNSS spoofing experiments. A box covered with aluminum foil with copper tape in all joints works quite well, but be sure everything (holes for cables, joints etc) are properly shielded.&#xA;The best is to not transmit to open air at all, but using coax cables only.</description>
    </item>
    <item>
      <title>Using AI to write me a tool</title>
      <link>https://www.marcusfolkesson.se/blog/using-ai-to-write-me-a-tool/</link>
      <pubDate>Fri, 19 Dec 2025 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/using-ai-to-write-me-a-tool/</guid>
      <description>Using AI to write me a tool Brief This is my first attempt at using claude-sonnet-4.5 to help me write code using Github copilot.&#xA;I recently bought a Rigol DP832 programmable power supply [1] , which is actually a very nice piece of hardware for the price. The sad truth is that the main reason for buying it was that my old PSU is quite noisy, and I thought that a newer one would be quieter.</description>
    </item>
    <item>
      <title>Using socat to bridge interfaces</title>
      <link>https://www.marcusfolkesson.se/blog/using-socat-to-bridge-interfaces/</link>
      <pubDate>Sun, 16 Nov 2025 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/using-socat-to-bridge-interfaces/</guid>
      <description>Using socat to bridge interfaces Brief Whenever it comes to connecting two interfaces together on Linux, socat is my go-to tool. It is a flexible tool that basically create links between anything to anything.&#xA;socat establishes two bidirectional byte streams and transfers data between them. These byte streams could be constructed from a very large set of different types of sinks and sources, which makes it very powerful.&#xA;When I say anything, I really mean anything.</description>
    </item>
    <item>
      <title>I2C Bus Recovery</title>
      <link>https://www.marcusfolkesson.se/blog/i2c-bus-recovery/</link>
      <pubDate>Sat, 04 Oct 2025 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/i2c-bus-recovery/</guid>
      <description>I2C Bus Recovery Brief I was working on a project where we had a problem with an I2C bus that was sporadically hanging during communication with a certain device. I2C works with open-drain lines, which means that devices can only pull the lines low, and a pull-up resistor is used to pull the line high. If a device misbehaves and holds one of the lines low, the bus will be stuck, and no further communication can take place.</description>
    </item>
    <item>
      <title>What to expect</title>
      <link>https://www.marcusfolkesson.se/blog/what-to-expect/</link>
      <pubDate>Mon, 01 Sep 2025 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/what-to-expect/</guid>
      <description>What to expect When working in Linux, you’ve probably come across commands that require interactive input — things like typing a password or confirming the same prompt over and over again. This can be frustrating when you want to automate tasks or just need to e.g. type the same range of commands every time your embedded Linux system boots up. This is what expect [1] is used for.&#xA;So, what is expect?</description>
    </item>
    <item>
      <title>Repair of my Fluke 179 multimeter</title>
      <link>https://www.marcusfolkesson.se/projects/repair-of-my-fluke179/</link>
      <pubDate>Thu, 03 Jul 2025 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/repair-of-my-fluke179/</guid>
      <description>Repair of my Fluke 179 multimeter My belowed Fluke 179 multimeter suddenly stopped working. There was no display, no beeps, nothing. I have had this multimeter for many (12+) years, and it has been a reliable companion in my projects.&#xA;Fluke has a lifetime warrenty, but that only applies to the original owner, and I bought it second hand.&#xA;Troubleshooting Here is what I did to troubleshoot the problem.</description>
    </item>
    <item>
      <title>Running mtest with U-Boot</title>
      <link>https://www.marcusfolkesson.se/blog/u-boot-mtest/</link>
      <pubDate>Tue, 01 Jul 2025 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/u-boot-mtest/</guid>
      <description>Running mtest with U-Boot Memories is, of course, a very important part of any embedded system. They come in different speeds, types, sizes, requirements and technologies. All with different requirements on both software configuration and hardware design.&#xA;With that said, it is easy to get something wrong, and memory issues is not the easiest thing to debug as the symptoms can be very different depending and &amp;quot;works most of the time&amp;quot;.</description>
    </item>
    <item>
      <title>Determine wakeup cause (ACPI)</title>
      <link>https://www.marcusfolkesson.se/blog/determine-wakeup-cause-with-acpi/</link>
      <pubDate>Sat, 19 Apr 2025 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/determine-wakeup-cause-with-acpi/</guid>
      <description>Determine wakeup cause (ACPI) I had a problem with my laptop to enter suspend mode, when I ran systemctl suspend it would just woke up immediately.&#xA;Let&#39;s find out what causes this.&#xA;Advanced Configuration and Power Interface (ACPI) First a few words about ACPI.&#xA;The embedded Linux systems I used to work with usually not supports ACPI, even if support for ACPI starts to show up on some ARM64 and Risc-V boards.</description>
    </item>
    <item>
      <title>An attempt to learn blindfolded chess</title>
      <link>https://www.marcusfolkesson.se/projects/blindfolded-chess/</link>
      <pubDate>Fri, 07 Mar 2025 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/blindfolded-chess/</guid>
      <description>An attempt to learn blindfolded chess This is one of my more unusual projects, but I still think it is worth sharing.&#xA;First of all, I do not consider myself as a skilled chess player. I would not say that I&#39;m bad, but I have a lot more to learn. My ELO at Lichess is about 1400. I have played chess since I was a kid, but I have never been serious about it.</description>
    </item>
    <item>
      <title>Lets talk about ECC and NAND flashes</title>
      <link>https://www.marcusfolkesson.se/blog/talk-about-ecc-and-nand-flashes/</link>
      <pubDate>Thu, 30 Jan 2025 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/talk-about-ecc-and-nand-flashes/</guid>
      <description>Lets talk about ECC and NAND flashes Raw NAND flashes is not that common these days. At least not in those projects I have been working with for the last ~8 years. They seems to have been replaced by eMMC for many applications, but there are still some use cases where raw NAND flashes are prefered.&#xA;In this blog post, we will talk a little about Error Correcting Code (ECC) and NAND flashes as that is such a critical part of the NAND flash technology.</description>
    </item>
    <item>
      <title>Repair of Sennheiser Momentum True Wireless earbuds</title>
      <link>https://www.marcusfolkesson.se/projects/repair-of-sennheiser-momentum-true-wireless/</link>
      <pubDate>Fri, 10 Jan 2025 09:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/repair-of-sennheiser-momentum-true-wireless/</guid>
      <description>Repair of Sennheiser Momentum True Wireless earbuds I have a pair of Sennheiser Momentum True Wireless (MTW3) earbuds that had been lost for a while. Once I found them, they had been laying around for a while and the battery was completely drained. I tried to charge them, but they did not charge at all. They are completely dead.&#xA;Here they are.&#xA;What I could see, there was no obvious way to open them up.</description>
    </item>
    <item>
      <title>Don&#39;t forget the Jira tag in your git message</title>
      <link>https://www.marcusfolkesson.se/blog/jira-tag-in-git-message/</link>
      <pubDate>Thu, 09 Jan 2025 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/jira-tag-in-git-message/</guid>
      <description>Don&#39;t forget the Jira tag in your git message I keep forgetting to add the Jira tag in my git messages. This is a problem as we use Jira for our project management and the Jira tag is used to link the commit to the issue. It is simply hard to get into my workflow for some reason.&#xA;Some time ago, I wrote about pre-commit [1], a framework for managing and maintaining pre-commit hooks for git.</description>
    </item>
    <item>
      <title>Control of my geothermal heat pump</title>
      <link>https://www.marcusfolkesson.se/projects/control-geothermal-heat-pump/</link>
      <pubDate>Thu, 19 Dec 2024 09:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/control-geothermal-heat-pump/</guid>
      <description>Control of my geothermal heat pump The electicity price in Sweden varies a lot during the day. It&#39;s usually cheapest during the night and most expensive during the day, but not always.&#xA;One day a week ago, it was not much wind in Germany and therefore we exported electricity there which resulted in very high prices here in Sweden. 1 kWh cost over 10 SEK (almost 1 USD per kWh) for a few hours, this excluding transmission fees and taxes.</description>
    </item>
    <item>
      <title>UBI volumes in Yocto</title>
      <link>https://www.marcusfolkesson.se/blog/ubi-volumes-in-yocto/</link>
      <pubDate>Sat, 14 Dec 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/ubi-volumes-in-yocto/</guid>
      <description>UBI volumes in Yocto These days, managed NAND flash memories such as eMMC or SD-cards has become more common in the embedded Linux systems as they abstract (or hide..) the complicated raw NAND memory under the hood. Even if raw NAND memories are more complicated to handle, they are still used in many new products out there.&#xA;When working with raw NAND flashes, UBI [1] with UBIFS on top of that is the way to go.</description>
    </item>
    <item>
      <title>Remoteproc, rpmsg and SYSBIOS</title>
      <link>https://www.marcusfolkesson.se/blog/remoteproc-rpmsg-and-sysbios/</link>
      <pubDate>Thu, 05 Dec 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/remoteproc-rpmsg-and-sysbios/</guid>
      <description>Remoteproc, rpmsg and SYSBIOS I&#39;m currently working with a couple of SoCs (OMAPL-138, DRA7xx) from Texas Instruments where both has an C6xx DSP core along with the ARM core. This is no unusual configuration, many modern SoCs today have heterogeneous remote processor devices in asymetric multiprocessing (AMP) configurations like these two.&#xA;In this case, the DSP-cores where supposed to run SYS/BIOS with the TI IPC MessageQ stack to communicate with the ARM core.</description>
    </item>
    <item>
      <title>Detect time jumps in Linux</title>
      <link>https://www.marcusfolkesson.se/blog/detect-time-jumps-in-linux/</link>
      <pubDate>Mon, 11 Nov 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/detect-time-jumps-in-linux/</guid>
      <description>Detect time jumps in Linux Recently I had a case where the application created multiple timers for different events. After the timers was created, the NTP client updates the system time resulting in that all timers being off and needing to be adjusted. Adjust the timers is one thing, but how do we detect the time jump?&#xA;It&#39;s not the first time I&#39;m in a situation where I have to deal with such time jumps, I guess it&#39;s quite a common case, so why not write a few words about it?</description>
    </item>
    <item>
      <title>TIL - suid_dumpable</title>
      <link>https://www.marcusfolkesson.se/til/suid-dumpable/</link>
      <pubDate>Tue, 22 Oct 2024 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/suid-dumpable/</guid>
      <description>TIL - suid_dumpable TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Ever notice that you can&#39;t get a coredump from a process running with extra privileges like capabilites or setuid?&#xA;This is related to a previous post [1] about some restrictions that is applied to such processes. I suggest to read that post first to get the context.</description>
    </item>
    <item>
      <title>Protected FIFOs and regular files</title>
      <link>https://www.marcusfolkesson.se/blog/protected-fifos-and-regular-files/</link>
      <pubDate>Mon, 21 Oct 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/protected-fifos-and-regular-files/</guid>
      <description>Protected FIFOs and regular files Since version 4.19 [1], Linux has the default behaviour to prevents opening of regular files and FIFOs that is not owned by the user in world writable sticky directories. Example on such directory is /tmp/ which usually has the sticky bit set.&#xA;This may sound obvious, but what is not so obvious is that this restriction also applies to the root user. You can therefore end up in a situation where e.</description>
    </item>
    <item>
      <title>Restoring a power hammer</title>
      <link>https://www.marcusfolkesson.se/projects/restoring-a-power-hammer/</link>
      <pubDate>Sat, 19 Oct 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/restoring-a-power-hammer/</guid>
      <description>Restoring a power hammer I have bought myself a power hammer - something that I have wanted for a long time. It is a Abno nr1, a swedish made 25kg spring hammer. It has been unused for many years and is in need of a little restoration.&#xA;The last Abno hammers were manufactured in the sixties, so it is at least 60 years old. I&#39;ve seen 60 year olds in worse condition than this, although there are parts that need improvement.</description>
    </item>
    <item>
      <title>Writing a clocksource driver for Linux</title>
      <link>https://www.marcusfolkesson.se/blog/writing-a-clocksource-driver-for-linux/</link>
      <pubDate>Thu, 10 Oct 2024 09:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/writing-a-clocksource-driver-for-linux/</guid>
      <description>Writing a clocksource driver for Linux Today we are going to write a clocksource [1] driver for Linux!&#xA;A clocksource in a Linux system is one of several parts of the kernel timekeeping abstractions. The clocksource is the the timeline of the Linux system and is the one you go to whenever you issue the command date. To do this, the clocksource should provide a monotonic, atomic counter that is as accurate as possible.</description>
    </item>
    <item>
      <title>Writing a UART driver for Linux</title>
      <link>https://www.marcusfolkesson.se/blog/writing-a-uart-driver-for-linux/</link>
      <pubDate>Sat, 05 Oct 2024 09:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/writing-a-uart-driver-for-linux/</guid>
      <description>Writing a UART driver for Linux Today we are going to write a UART driver for Linux!&#xA;UART (Universal asynchronous receiver-transmitter) is on of the most common device-to-device communication protocols that almost every SoC or microcontroller has hardware support for. Most SoC has several UART ports, but sometimes that is not enough as in this case.&#xA;Background I&#39;m working in a project where we have an ARM SoC connected to an FPGA on the AEMIF interface.</description>
    </item>
    <item>
      <title>Include code from a file with Hugo</title>
      <link>https://www.marcusfolkesson.se/blog/include-code-from-a-file-with-hugo/</link>
      <pubDate>Thu, 03 Oct 2024 10:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/include-code-from-a-file-with-hugo/</guid>
      <description>Include code from a file with Hugo First of all, all credit goes to Marcus Olsson [1] who pretty much wrote this Hugo Shortcode [2] which I only have made some small changes to.&#xA;I also refer to his post [3] for a good explaination on how it works.&#xA;Background I prepare for some bigger posts with a lot of code examples where I only want to show fragments of a whole file.</description>
    </item>
    <item>
      <title>TIL - make pacman-pkg</title>
      <link>https://www.marcusfolkesson.se/til/make-pacman-pkg/</link>
      <pubDate>Fri, 27 Sep 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/make-pacman-pkg/</guid>
      <description>TIL - make pacman-pkg TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;v6.11 of the upstream kernel makes it really easy to do kernel devlopment on Arch Linux with the new make pacman-pkg target [1]:&#xA;commit c8578539debaedfbb4671e1954be8ebbd1307c6f Author: Thomas Weißschuh &amp;lt;linux&amp;#64;weissschuh.net&amp;gt; Date: Sat Jul 20 11:18:12 2024 +0200 kbuild: add script and target to generate pacman package pacman is the package manager used by Arch Linux and its derivates.</description>
    </item>
    <item>
      <title>&#34;You are the primary manager for this project&#34;</title>
      <link>https://www.marcusfolkesson.se/blog/you-are-the-primary-manager-for-this-project/</link>
      <pubDate>Thu, 19 Sep 2024 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/you-are-the-primary-manager-for-this-project/</guid>
      <description>&amp;quot;You are the primary manager for this project&amp;quot; Yes I&#39;m. But also:&#xA;THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</description>
    </item>
    <item>
      <title>Restrictions that comes with capabilities</title>
      <link>https://www.marcusfolkesson.se/blog/restrictions-that-comes-with-capabilities/</link>
      <pubDate>Tue, 10 Sep 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/restrictions-that-comes-with-capabilities/</guid>
      <description>Restrictions that comes with capabilities I debugged an interesting problem this weekend related to which impact capabilites could have on a running process in a Linux system.&#xA;I already knew that there are some security restrictions for applications that setuid/setgid or have capabilities set. One example is that LD_LIBRARY_PATH is silently ignored for an application with capabilities. You are simply not allowed to link in whatever you like for priviliged applications - which is a good thing.</description>
    </item>
    <item>
      <title>TIL - strace and capabilites</title>
      <link>https://www.marcusfolkesson.se/til/strace-and-capabilities/</link>
      <pubDate>Sun, 08 Sep 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/strace-and-capabilities/</guid>
      <description>TIL - strace and capabilities TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;strace [1] is a terrific tool to trace system calls and signals for a specific command.&#xA;The fact that programs using the setuid bit do not have the effective user ID priviliges when being traced was something I already knew, but that the same was true to capabilites [2] was new to me.</description>
    </item>
    <item>
      <title>TIL - interactive shell script</title>
      <link>https://www.marcusfolkesson.se/til/interactive-script/</link>
      <pubDate>Thu, 29 Aug 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/interactive-script/</guid>
      <description>TIL - interactive shell script TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Tody I saw this line in a script:&#xA;1INTERACTIVE=&amp;#34;&amp;#34; &amp;amp;&amp;amp; [[ -t 0 ]] &amp;amp;&amp;amp; INTERACTIVE=&amp;#34;-it&amp;#34; that later on started a container:&#xA;1docker run --rm ${INTERACTIVE} -v &amp;#34;${PWD}&amp;#34;:/home/br-user \ 2 --user &amp;#34;$(id -u)&amp;#34;:&amp;#34;$(id -g)&amp;#34; \ 3 myproject/docker &amp;#34;${@}&amp;#34; It tests if STDIN is opened on a terminal and in that case set $INTERACTIVE to -ti to start the container with an interactive shell.</description>
    </item>
    <item>
      <title>Board bring-up part 4: Wrap it up</title>
      <link>https://www.marcusfolkesson.se/blog/board-bring-up-part4/</link>
      <pubDate>Sat, 17 Aug 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/board-bring-up-part4/</guid>
      <description>Board bring-up part 4: Wrap it up I&#39;m currently working with a board bring up for a custom hardware based on a OMAPL138 from Texas Instruments. It is fun to work with &amp;quot;real&amp;quot; bring-ups. Most of my customers use System On Modules (SoM:s) these days. You get a lot for free with those modules but a lot of the fun is stripped away.&#xA;This post is not intended to be guide, it is more of a follow-me-through-my-work-post divided into three parts.</description>
    </item>
    <item>
      <title>Board bring-up part 3: Other peripherals</title>
      <link>https://www.marcusfolkesson.se/blog/board-bring-up-part3/</link>
      <pubDate>Fri, 16 Aug 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/board-bring-up-part3/</guid>
      <description>Board bring-up part 3: Other peripherals I&#39;m currently working with a board bring up for a custom hardware based on a OMAPL138 from Texas Instruments. It is fun to work with &amp;quot;real&amp;quot; bring-ups. Most of my customers use System On Modules (SoM:s) these days. You get a lot for free with those modules but a lot of the fun is stripped away.&#xA;This post is not intended to be guide, it is more of a follow-me-through-my-work-post divided into three parts.</description>
    </item>
    <item>
      <title>Board bring-up part 2: NAND flash</title>
      <link>https://www.marcusfolkesson.se/blog/board-bring-up-part2/</link>
      <pubDate>Thu, 15 Aug 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/board-bring-up-part2/</guid>
      <description>Board bring-up part 2: NAND flash I&#39;m currently working with a board bring up for a custom hardware based on a OMAPL138 from Texas Instruments. It is fun to work with &amp;quot;real&amp;quot; bring-ups. Most of my customers use System On Modules (SoM:s) these days. You get a lot for free with those modules but a lot of the fun is stripped away.&#xA;This post is not intended to be guide, it is more of a follow-me-through-my-work-post divided into three parts.</description>
    </item>
    <item>
      <title>Board bring-up part 1: Memory hassle</title>
      <link>https://www.marcusfolkesson.se/blog/board-bring-up-part1/</link>
      <pubDate>Wed, 14 Aug 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/board-bring-up-part1/</guid>
      <description>Board bring-up part 1: Memory hassle I&#39;m currently working with a board bring up for a custom hardware based on a OMAPL138 from Texas Instruments. It is fun to work with &amp;quot;real&amp;quot; bring-ups. Most of my customers use System On Modules (SoM:s) these days. You get a lot for free with those modules but a lot of the fun is stripped away.&#xA;This post is not intended to be guide, it is more of a follow-me-through-my-work-post divided into three parts.</description>
    </item>
    <item>
      <title>Forge a kitchen knife</title>
      <link>https://www.marcusfolkesson.se/projects/forge-kitchen-knife/</link>
      <pubDate>Thu, 01 Aug 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/forge-kitchen-knife/</guid>
      <description>Forge a kitchen knife Another attempt to forge a knife. The metal I use for this project is part of a feather harrow that I collected from my father farm.&#xA;I cut out a ~8x4cm long piece from the springs of the feather harrow:&#xA;Bosse (the dog) never leaves me, so I got him a sack to snuggle down on at the outside of the garage.&#xA;I used the gas forge for the entire project.</description>
    </item>
    <item>
      <title>--build, --host and --target explained</title>
      <link>https://www.marcusfolkesson.se/blog/build-host-and-target-explained/</link>
      <pubDate>Wed, 17 Jul 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/build-host-and-target-explained/</guid>
      <description>--build, --host and --target explained Too often I see abuse of the --host, --build and --target options during (cross-)compilation of code using autotools. The feeling is more that people try different values until it seems to produce what they want without knowing what they are actually doing.&#xA;But who can blame them. What these parameters do it not obvious and very few people compile their own crosscompiler nowadays - or ever did.</description>
    </item>
    <item>
      <title>Forge a knife blade from a car spring</title>
      <link>https://www.marcusfolkesson.se/projects/forge-knife-blade/</link>
      <pubDate>Sun, 14 Jul 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/forge-knife-blade/</guid>
      <description>Forge a knife blade from a car spring I helped my friend to change springs on his car, so I kept the broken spring as forging material.&#xA;The carbon content of spring steel is aroundd 0.6 to 0.8% which works well for hardening - so lets forge a knife!&#xA;I cut out a ~10cm long piece from the car spring.&#xA;I use the induction heater to straight it out and flatten it a little.</description>
    </item>
    <item>
      <title>OMAPL138 AIS generator</title>
      <link>https://www.marcusfolkesson.se/blog/omapl138-ais-generator/</link>
      <pubDate>Sat, 13 Jul 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/omapl138-ais-generator/</guid>
      <description>OMAPL138 AIS Generator I&#39;m currently working on an old platform based on OMAPL138 from Texas Instruments.&#xA;The OMAPL138 SoC is cool in itself, it is a ARM9 core with a C674x DSP coprocessor. My project scope is to modernize the platform to a more recent kernel/bootloader and add support for a few more interfaces due to a new HW revision.&#xA;The OMAPL138 is from 2009 but still active. The latest revision for the chip (Rev.</description>
    </item>
    <item>
      <title>TIL - Git bundle</title>
      <link>https://www.marcusfolkesson.se/til/git-bundle/</link>
      <pubDate>Sat, 13 Jul 2024 09:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/git-bundle/</guid>
      <description>TIL - Git bundle TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;The git bundle [1] subcommand has been around for many years but is something I came across quite recently.&#xA;The command allows you to create, unpack, and manipulate bundles files, which are used to share git repositories without an active server.</description>
    </item>
    <item>
      <title>What time is it? RTCs explained in embedded Linux</title>
      <link>https://www.marcusfolkesson.se/blog/what-time-is-it/</link>
      <pubDate>Tue, 02 Jul 2024 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/what-time-is-it/</guid>
      <description>What time is it? RTCs explained in embedded Linux Most smart devices keep track of time and it&#39;s usually something that everyone expects to be &amp;quot;right&amp;quot;, accurate and just work. I mean, you can keep time pretty well with just a pendulum or a spring [1], so why would this be a complicated thing in an embedded system?&#xA;Your smart alarm clock, smart phone or even your new cool IoT refrigerator make all use of the time for sure, but they probably do it for different purposes and have different requirements of the accuracy of time.</description>
    </item>
    <item>
      <title>Knife making</title>
      <link>https://www.marcusfolkesson.se/projects/knife-making/</link>
      <pubDate>Mon, 01 Jul 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/knife-making/</guid>
      <description>Knife Making It&#39;s been a long time since I made knives. Knife making was actually the reason I bought my gas forge a few years ago and it&#39;s still something I intend to do. I forged a few knife blades back then, but it was way too much manual grinding to be fun and I didn&#39;t have the right tools back then, and I&#39;m still missing a belt grinder in my toolbox.</description>
    </item>
    <item>
      <title>NOAA Weather satellites</title>
      <link>https://www.marcusfolkesson.se/projects/weather-satellites/</link>
      <pubDate>Thu, 30 May 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/weather-satellites/</guid>
      <description>NOAA Weather satellites Me and a friend started to talk about SDR (Software Defined Radio) and GNURadio [1], which reminds me of a old project I did for many years ago - reading out images from NOAA weather satellites using SDR, a QFH antenna and GNU Radio!&#xA;I found some old pictures, but unfortunately, I do not remember the details as it was almost ten years ago. But I do know that we were using a HackRF [3] to catch the radio signals.</description>
    </item>
    <item>
      <title>Lund Linux Conference 2024</title>
      <link>https://www.marcusfolkesson.se/blog/lund-linux-con-2024/</link>
      <pubDate>Tue, 28 May 2024 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/lund-linux-con-2024/</guid>
      <description>Lund Linux Conference 2024 I have started to write a few lines about this conference each year as I think it deserves attention. Also, the more attendees we are, the more fun we get.&#xA;The conference Lund Linux Conference (LLC) [1] is a &amp;quot;half-open&amp;quot; conference located in Lund. It&#39;s a conference with a high quality and I appreciate that the athmosphere is more familiar than at the larger conferences. I&#39;ve been at the conference several of times before and the quality on the talks this year was as good as usual.</description>
    </item>
    <item>
      <title>TIL - Magic SysRq with SystemD</title>
      <link>https://www.marcusfolkesson.se/til/magic-sysrq-with-systemd/</link>
      <pubDate>Sun, 19 May 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/magic-sysrq-with-systemd/</guid>
      <description>TIL - Magic SysRq with SystemD TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;The Magic SysRq [1] is a ueful tool for debugging and recovering from a frozen system and is something I use frequently.&#xA;SystemD sets the permissions bitmask to 0x10 by default [2] , it means that only a subset of the available features is allowed.</description>
    </item>
    <item>
      <title>Versioning with SWUpdate</title>
      <link>https://www.marcusfolkesson.se/blog/versioning-with-swupdate/</link>
      <pubDate>Wed, 15 May 2024 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/versioning-with-swupdate/</guid>
      <description>Versioning with SWUpdate TLDR; It is now possible to let SWUpdate manage the sw-versions file entirely thanks to the --gen--swversions feature I&#39;ve been working on.&#xA;SWUpdate SWUpdate [1] is a project I&#39;ve been using for a very long time for updating firmware on embedded systems.&#xA;The update service is a critical part of any embedded system, so having a well-tested, flexible, competent and ready-to-use solution is so much worth. Too many times I&#39;ve seen custom made update services that contain bugs, is not flexible enough or using slots for whatever software that could be updated.</description>
    </item>
    <item>
      <title>Flattened Image Tree (FIT) with Yocto</title>
      <link>https://www.marcusfolkesson.se/blog/flattened-image-tree/</link>
      <pubDate>Tue, 14 May 2024 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/flattened-image-tree/</guid>
      <description>Flattened Image Tree (FIT) with Yocto Long time ago, I wrota a post [1] that compared the legacy Image format against Flattened Image Tree Format (FIT) [2] and highlighted the benefits of using it. The benefits is still valid and FIT images is my preferred way to boot a Linux kernel. Dispite that, I almost never see that FIT images is used in examples nor Board Support Packages (BSPs).</description>
    </item>
    <item>
      <title>Building an owl house</title>
      <link>https://www.marcusfolkesson.se/projects/owl-house/</link>
      <pubDate>Mon, 13 May 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/owl-house/</guid>
      <description>Building an owl house I like owls. I always have.&#xA;There are so many reasons to be fascinated about owls. For example, did you know that&#xA;Owls has special flight feathers that makes them almost silent? That they can swivel their heads around (how cool is&#39;nt that?) is commonly known, but that they can do the same with their toes too? Their eares are asymmetrical to make them better to pinpoint the location of sounds in multiple dimensions?</description>
    </item>
    <item>
      <title>Repair of an IC-211E HAM Radio</title>
      <link>https://www.marcusfolkesson.se/projects/repair-ic-211e-radio/</link>
      <pubDate>Tue, 07 May 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/repair-ic-211e-radio/</guid>
      <description>Repair of an IC-211E HAM Radio A friend of mine (SM7FWZ [3] ) gave me an ICOM IC-211E, a 2M all mode transceiver that I&#39;m having a lot of fun with. When I got it, it had one drawback - transmitting on SSB (Single Side Band) didn&#39;t work very well, neither for USB (Upper Side Band) nor LSB (Lower Side Band).&#xA;The signal that reached the antenna was really disturbed, so here is something that needs to be fixed!</description>
    </item>
    <item>
      <title>Bird counting</title>
      <link>https://www.marcusfolkesson.se/projects/bird-counting/</link>
      <pubDate>Tue, 16 Apr 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/bird-counting/</guid>
      <description>Bird counting I&#39;ve been counting birds for couple of years now, but for the last past six mounths I have also recorded which species I see at bird table.&#xA;I live in the middle of a bird sanctuary, so I think it could be good to know my neighbors. So the main reason for this was to learn to tell the difference between different species for birds. I must say that this was a success, I can name about 30 different bird species with a fairly high degree of certainty around my bird table.</description>
    </item>
    <item>
      <title>TIL - raw HTML in Hugo</title>
      <link>https://www.marcusfolkesson.se/til/raw-html-in-hugo/</link>
      <pubDate>Sun, 14 Apr 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/raw-html-in-hugo/</guid>
      <description>TIL - raw HTML in Hugo TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;I&#39;m using Hugo [1] for this website setup [2] and find it very satisfying. I can write all my content in reStructured Text [3] and create a website out from it.&#xA;Today I needed to add a part of raw HTML into one of my pages and that was when I found Shortcodes [4] in which is very useful.</description>
    </item>
    <item>
      <title>Working on U-boot from Yocto (iMX8)</title>
      <link>https://www.marcusfolkesson.se/blog/working-on-uboot-from-yocto/</link>
      <pubDate>Thu, 11 Apr 2024 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/working-on-uboot-from-yocto/</guid>
      <description>Working on U-boot from Yocto (iMX8) I have been asked a couple of times how to quickly make changes for U-Boot in Yocto. Those who asked have used to rebuild and flash an entire image each time, which takes an unnecessarily which is not a fast procedure.&#xA;To rebuild U-Boot isn&#39;t significantly different from any other recipe, but one difference is that imx-mkimage must also be built to generate a bootable image.</description>
    </item>
    <item>
      <title>Increase the quality of your commits with pre-commit</title>
      <link>https://www.marcusfolkesson.se/blog/pre-commit/</link>
      <pubDate>Fri, 29 Mar 2024 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/pre-commit/</guid>
      <description>Increase the quality of your commits with pre-commit pre-commit [1] is a framework for managing and maintaining pre-commit hooks for git. By running hooks before any commit, many small pitfalls could be avoided before being pushed and will spare reviewers time and energy.&#xA;Such hooks could for example check that commit messages follow a specific format or that the code pass a lint test for a specific type of file.</description>
    </item>
    <item>
      <title>TIL - Parse command output from shell</title>
      <link>https://www.marcusfolkesson.se/til/parse-command-output-from-shell/</link>
      <pubDate>Thu, 07 Mar 2024 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/parse-command-output-from-shell/</guid>
      <description>TIL - Parse command output from shell TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Parse text output in shell scripts is something that is needed every now and then. It used to be some clever pipeline with regular expressions, grep, cut or even awk.&#xA;But now I&#39;ve started to use read for such things, and it has helped me a lot.</description>
    </item>
    <item>
      <title>Changing the root of your Linux filesystem</title>
      <link>https://www.marcusfolkesson.se/blog/changing-the-root-of-your-linux-filesystem/</link>
      <pubDate>Sat, 02 Mar 2024 12:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/changing-the-root-of-your-linux-filesystem/</guid>
      <description>Changing the root of your Linux filesystem After my previous post [1], I&#39;ve got a few questions from people about the difference between chroot, pivot_root and switch_root, they all seems to do the same thing, right? Almost.&#xA;Lets shed some light on this topic.&#xA;Rootfs First of all, we need to specify what we mean when we say rootfs.&#xA;rootfs is a special instance of a ram filesystem (usually tpmfs) that is created in an early boot stage.</description>
    </item>
    <item>
      <title>chroot and user namespaces</title>
      <link>https://www.marcusfolkesson.se/blog/chroot-and-user-namespaces/</link>
      <pubDate>Thu, 22 Feb 2024 18:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/chroot-and-user-namespaces/</guid>
      <description>chroot and user namespaces When playing around with libcamera [1] and br2-readonly-rootfs-overlay [2] I found something.. well.. unexpected. At least at first glance.&#xA;What happened was that I encountered this error: 1 $ libcamera-still 2Preview window unavailable 3[0:02:54.785102683] [517] INFO Camera camera_manager.cpp:299 libcamera v0.0.0+67319-2023.02-22-gd530afad-dirty (2024-02-20T16:56:34+01:00) 4[0:02:54.885731084] [518] ERROR Process process.cpp:312 Failed to unshare execution context: Operation not permitted&#xA;Failed to unshare execution context: Operation not permitted... what?&#xA;I know that libcamera executes proprietary IPAs (Image Processing Algorithms) as black boxes, and that the execution is isolated in their own namespace.</description>
    </item>
    <item>
      <title>Streamline your kernel config</title>
      <link>https://www.marcusfolkesson.se/blog/streamline-your-kernel-config/</link>
      <pubDate>Thu, 15 Feb 2024 18:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/streamline-your-kernel-config/</guid>
      <description>Streamline your kernel config When working with embedded systems, it&#39;s not that uncommon that you need to compile your own kernel for your hardware platform.&#xA;The configuration file you use is probably based on some default configuration that you borrowed from the kernel tree, a vendor tree, a SoM-vendor or simply from your collegue.&#xA;As the configuration is somehow generic, it probably contains tons of kernel modules that is not needed for your application.</description>
    </item>
    <item>
      <title>Power button and embedded Linux</title>
      <link>https://www.marcusfolkesson.se/blog/power-button-and-embedded-linux/</link>
      <pubDate>Fri, 09 Feb 2024 18:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/power-button-and-embedded-linux/</guid>
      <description>Power button and embedded Linux Not all embedded Linux systems has a power button, but for consumer electronic devices it could be a good thing to be able to turn it off. But how does it work in practice?&#xA;Physical button It all starts with a physical button.&#xA;At the board level, the button is usually connected to a General-Purpose-Input-Output (GPIO) pin on the processor. It doesn&#39;t have to be directly connected to the processor though, all that matters is that the button press can somehow be mapped to the Linux input subsystem.</description>
    </item>
    <item>
      <title>br2-readonly-rootfs-overlay</title>
      <link>https://www.marcusfolkesson.se/blog/br2-readonly-rootfs-overlay/</link>
      <pubDate>Mon, 05 Feb 2024 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/br2-readonly-rootfs-overlay/</guid>
      <description>br2-readonly-rootfs-overlay This is a Buildroot external module that could be used as a reference design when building your own system with an overlayed root filesystem. It&#39;s created as an external module to make it easy to adapt for your to your own application.&#xA;The goal is to achieve the same functionality I have in meta-readonly-rootfs-overlay [1] but for Buildroot.&#xA;Why does this exists? Having a read-only root file system is useful for many scenarios:</description>
    </item>
    <item>
      <title>Watch repair</title>
      <link>https://www.marcusfolkesson.se/projects/watch-repair-1/</link>
      <pubDate>Thu, 01 Feb 2024 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/watch-repair-1/</guid>
      <description>Watch repair Time for another watch repair!&#xA;The watch can be winded up to max, but it does not move nor tick, so my guess is that the gear train is stuck somewhere.&#xA;It is also the first time I use my microscope to something else other than soldering components (and looking at creepy bugs with my kids..).&#xA;Take it apart I started to take everything apart as usual, starting with the balance wheel.</description>
    </item>
    <item>
      <title>TIL - Reuse your SSH connection</title>
      <link>https://www.marcusfolkesson.se/til/reuse-your-ssh-connection/</link>
      <pubDate>Mon, 29 Jan 2024 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/reuse-your-ssh-connection/</guid>
      <description>TIL - Reuse your SSH connection TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;OpenSSH has the feature to reuse an existing SSH connection for multiple subsequent connections to the same host. It will improve your workflow because it reduces the time it takes to establish a new connection and in cases where you have to type a password, the time saving is even more.</description>
    </item>
    <item>
      <title>TIL - xxd color support</title>
      <link>https://www.marcusfolkesson.se/til/xxd-color-support/</link>
      <pubDate>Tue, 02 Jan 2024 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/xxd-color-support/</guid>
      <description>TIL - xxd color support TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Today (2 January 2024), version 9.1 of the Vim editor has been released [1]!&#xA;xxd [2] is a utility that is distributed with Vim and is my go-to-tool when it comes to view or manipulating binary files.</description>
    </item>
    <item>
      <title>TIL - git credential storage</title>
      <link>https://www.marcusfolkesson.se/til/git-credential-storage/</link>
      <pubDate>Fri, 22 Dec 2023 11:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/git-credential-storage/</guid>
      <description>TIL - git credential storage TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;When using SSH as transport protocol for connecting to remotes you could use a key without need to type a username nor password. Unfortunately, this is not possible when the underlaying protocol is HTTPS as it requires a username and password for every connection made.</description>
    </item>
    <item>
      <title>Expose network namespace created by Docker</title>
      <link>https://www.marcusfolkesson.se/blog/expose-netns-from-docker/</link>
      <pubDate>Wed, 20 Dec 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/expose-netns-from-docker/</guid>
      <description>Expose network namespace created by Docker Disclaimer: this is probably *not* the best way for doing this, but it&#39;s pretty good for educational purposes.&#xA;During a debug session I wanted to connect an application to a service tha ran in a docker container. This was for test-purposes only, so hackish and fast are the keywords.&#xA;First of all, I&#39;m not a Docker expert, but I&#39;ve a pretty good understanding on Linux internals, namespaces and how things works on a Linux system.</description>
    </item>
    <item>
      <title>Skip flashing unused blocks with UUU</title>
      <link>https://www.marcusfolkesson.se/blog/skip-flashing-unused-blocks-with-uuu/</link>
      <pubDate>Mon, 11 Dec 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/skip-flashing-unused-blocks-with-uuu/</guid>
      <description>Skip flashing unused blocks with UUU TL;DR: UUU does now (or will shortly) support blockmaps for flashing images. Use it. It will shorten your flashing time *a lot.*&#xA;It will soon be time to manufacture circuit boards for a project I&#39;m currently working on. After manufacturing, it will need some firmware for sure, but how do we flash it in the most efficient way? The board is based on an i.</description>
    </item>
    <item>
      <title>Mutex guards in the Linux kernel</title>
      <link>https://www.marcusfolkesson.se/blog/mutex-guards-in-the-linux-kernel/</link>
      <pubDate>Fri, 01 Dec 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/mutex-guards-in-the-linux-kernel/</guid>
      <description>Mutex guards in the Linux kernel I found an interresting thread [1] while searching my inbox for something completely unrelated.&#xA;Peter Zijistra has written a few cleanup functions that where introduced in v6.4 with this commit:&#xA;commit 54da6a0924311c7cf5015533991e44fb8eb12773 Author: Peter Zijlstra &amp;lt;peterz&amp;#64;infradead.org&amp;gt; Date: Fri May 26 12:23:48 2023 +0200 locking: Introduce __cleanup() based infrastructure Use __attribute__((__cleanup__(func))) to build: - simple auto-release pointers using __free() - &#39;classes&#39; with constructor and destructor semantics for scope-based resource management.</description>
    </item>
    <item>
      <title>Test packages in Buildroot</title>
      <link>https://www.marcusfolkesson.se/blog/test-pkg-in-buildroot/</link>
      <pubDate>Tue, 28 Nov 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/test-pkg-in-buildroot/</guid>
      <description>Test packages in Buildroot When writing packages for Buildroot there are several conditions that you have to test your package against.&#xA;This includes different toolchains, architectures, C-libraries, thread-implementations and more. To help you with that, Buildroot provides the utils/test-pkg script.&#xA;Nothing describes the script better than its own help text [1]:&#xA;test-pkg: test-build a package against various toolchains and architectures The supplied config snippet is appended to each toolchain config, the resulting configuration is checked to ensure it still contains all options specified in the snippet; if any is missing, the build is skipped, on the assumption that the package under test requires a toolchain or architecture feature that is missing.</description>
    </item>
    <item>
      <title>TIL - docker scratch image</title>
      <link>https://www.marcusfolkesson.se/til/docker-scratch-image/</link>
      <pubDate>Wed, 15 Nov 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/docker-scratch-image/</guid>
      <description>TIL - Docker scratch image TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;The scratch image is the smallest possible image for docker. It does not contain any libraries nor other executables. It is simply a new, fresh and empty setup of namespaces.&#xA;The FROM scratch line is even a no-op [1] in the Dockerfile, which results in that it will not create an extra layer in you image.</description>
    </item>
    <item>
      <title>Git version in cmake</title>
      <link>https://www.marcusfolkesson.se/blog/git-version-in-cmake/</link>
      <pubDate>Tue, 14 Nov 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/git-version-in-cmake/</guid>
      <description>Git version in CMake All applications have versions. The version should somehow be exposed in the application to make it possible to determine which application we are actually running.&#xA;I&#39;ve seen a plenty of variants on how this is achieved, some are good and some are really bad. Since it&#39;s such a common thing, I thought I&#39;d show how I usually do it.&#xA;I use to let CMake determine the version based on git describe and tags, the benefit&#39;s that it is part of the build process (i.</description>
    </item>
    <item>
      <title>TIL - sort in vim</title>
      <link>https://www.marcusfolkesson.se/til/sort-in-vim/</link>
      <pubDate>Thu, 02 Nov 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/sort-in-vim/</guid>
      <description>TIL - Sort in VIM TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;After 15+ years of daily VIM usage I just discovered the :sort function. Quite embarassing.&#xA;It is also possible to sort in revese ( :sort!) and remove duplicate lines ( :sort u).</description>
    </item>
    <item>
      <title>Burn eFuses for MAC address on iMX8MP</title>
      <link>https://www.marcusfolkesson.se/blog/burn-efuses-for-mac-address-on-imx8/</link>
      <pubDate>Sat, 28 Oct 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/burn-efuses-for-mac-address-on-imx8/</guid>
      <description>Burn eFuses for MAC address on iMX8MP The iMX (iMX6, iMX7, iMX8) has a similiar OCOTP (On-Chip One Time Programmable) module that store, for example the MAC addresses for the internal ethernet controllers.&#xA;The reference manual is not clear either on the byte order or which bytes belong to which MAC address when there are several. In fact, I had to look at the U-boot implementation [1] to know for sure how these fuses is used:</description>
    </item>
    <item>
      <title>Loopback with two (physical) ethernet interfaces</title>
      <link>https://www.marcusfolkesson.se/blog/loopback-with-two-ethernet-interfaces/</link>
      <pubDate>Sat, 21 Oct 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/loopback-with-two-ethernet-interfaces/</guid>
      <description>Loopback with two (physical) ethernet interfaces Imagine that you have an embedded device with two physical ethernet ports. You want to verify the functionality of both these ports in the manufacturing process, so you connect an ethernet cable between the ports, setup IP addresses and now what?&#xA;As Linux (actually the default network namespace) is aware of both adapters and their IP/MAC-addresses, the system sees no reason to send any traffic out.</description>
    </item>
    <item>
      <title>TIL - notmuch-lore</title>
      <link>https://www.marcusfolkesson.se/til/notmuch-lore/</link>
      <pubDate>Sat, 21 Oct 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/notmuch-lore/</guid>
      <description>TIL - notmuch-lore TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Notmuch [1] is an mail indexer and is a great tool to search in high-volume mailboxes (e.g. mailing lists). Being subscribed to all these mailing lists and retreiving all mails over IMAP daily could be quite annoying and harm your mail quota.</description>
    </item>
    <item>
      <title>kas-container and QEMU</title>
      <link>https://www.marcusfolkesson.se/blog/kas-container-and-qemu/</link>
      <pubDate>Wed, 18 Oct 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/kas-container-and-qemu/</guid>
      <description>kas-container and QEMU KAS KAS [1] is a setup tool for bitbake based projects such as Yocto. There are many similiar alternatives out there and I&#39;ve tried most of them, but my absolute favorite is KAS.&#xA;In order to use KAS, you have to setup a YAML file to contain information about your machine, distribution, meta layers and local configuration. Here is a small example configuration copied from the KAS documentation:</description>
    </item>
    <item>
      <title>TIL - git man-pages</title>
      <link>https://www.marcusfolkesson.se/til/git-man-pages/</link>
      <pubDate>Mon, 02 Oct 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/git-man-pages/</guid>
      <description>TIL - git man-pages TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;I&#39;m a big user of man-pages.&#xA;Today I found a set of pages that I&#39;ve not noticed before when I was reading man git:&#xA;SEE ALSO gittutorial(7), gittutorial-2(7), giteveryday(7), gitcvs-migration(7), gitglossary(7), gitcore-tutorial(7), gitcli(7), The Git User’s Manual[1], gitworkflows(7) Especially</description>
    </item>
    <item>
      <title>Support for CRIU in Buildroot</title>
      <link>https://www.marcusfolkesson.se/blog/support-for-criu-in-buildroot/</link>
      <pubDate>Sun, 01 Oct 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/support-for-criu-in-buildroot/</guid>
      <description>Support for CRIU in Buildroot A couple of months ago I started to evaluate [1] CRIU [2] for a project I&#39;m working on. The project itself is using Buildroot to build and generate the root filesystem. Unfortunately, Buildroot lacks support for CRIU so there were some work to do.&#xA;To write the package was not straight forward. The package is only supported on certain architectures and the utils/test-pkg script failed for a few toolchains.</description>
    </item>
    <item>
      <title>TIL - Git --color-moved</title>
      <link>https://www.marcusfolkesson.se/til/git-color-moved/</link>
      <pubDate>Sat, 23 Sep 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/git-color-moved/</guid>
      <description>TIL - Git --color-moved TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Did you know that Git is able to detect moved blocks and use different colors from the usual added/removed lines? Me neither until now.&#xA;The paremeter is --color-moved and has been around since v0.4.0, so there is no new feature.</description>
    </item>
    <item>
      <title>TIL - Buildroot and LIBFOO_LINUX_CONFIG_FIXUPS</title>
      <link>https://www.marcusfolkesson.se/til/buildroot-libfoo-linux-config-fixup/</link>
      <pubDate>Tue, 12 Sep 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/buildroot-libfoo-linux-config-fixup/</guid>
      <description>TIL - Buildroot and LIBFOO_LINUX_CONFIG_FIXUPS TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Some applications in a Linux system depends on certain kernel features to work properly. I&#39;m currently working on adding support for CRIU [1] in Buildroot [2] which has such requirements.&#xA;That&#39;s when I stumble upon the LIBFOO_LINUX_CONFIG_FIXUP variable.</description>
    </item>
    <item>
      <title>Use b4 for kernel contributions</title>
      <link>https://www.marcusfolkesson.se/blog/use-b4-for-kernel-contributions/</link>
      <pubDate>Wed, 23 Aug 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/use-b4-for-kernel-contributions/</guid>
      <description>Use b4 for kernel contributions There is a little tool called b4 [1] that has been part of my workflow with the Linux kernel for a while. It&#39;s developed to be a tool used to simplify the work of the maintainers, but my main use of the tool has been to fetch patch series from the mailing list and apply them to my local git repository during reviews. I recently noticed that it got a lot of handy features (experimental though) for the contributors as well, which I now want to test!</description>
    </item>
    <item>
      <title>Linux wireless regulatory domains</title>
      <link>https://www.marcusfolkesson.se/blog/linux-wireless-regulatory/</link>
      <pubDate>Mon, 14 Aug 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/linux-wireless-regulatory/</guid>
      <description>Linux wireless regulatory domains I had a case where I had an embedded system that should act as a WiFi Access Point on the 5GHz band. The HW was capable and the system managed to act as a client to 5GHz networks, so everything looked good.&#xA;However, the system could not create an access point on some frequencies. How is it that? It&#39;s all about regulatory domains!&#xA;Regulatory domains Radio regulations is something that applies to all devices that make transmissions in the radio spectrum.</description>
    </item>
    <item>
      <title>Add support for MCP39XX in Linux kernel</title>
      <link>https://www.marcusfolkesson.se/blog/add-support-for-mcp39xx/</link>
      <pubDate>Fri, 04 Aug 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/add-support-for-mcp39xx/</guid>
      <description>Add support for MCP39XX in Linux kernel I&#39;ve maintained the MCP3911 driver in the Linux kernel for some time and continuously add support for new features [1] upon requests from people and companies.&#xA;Microchip has several IC:s in this series of ADC:s that works similar to MCP3911. Actually, all other IC:s are register compatible but MCP3911. The IC:s I&#39;ve extended support for is MCP3910, MCP3912, MCP3913, MCP3914, MCP3918 and MCP3919.</description>
    </item>
    <item>
      <title>Leather fox pouch</title>
      <link>https://www.marcusfolkesson.se/projects/leather-fox-pouch/</link>
      <pubDate>Fri, 28 Jul 2023 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/leather-fox-pouch/</guid>
      <description>Leather fox pouch I bought this [1] pattern to make a fox leather pouch to a friend of mine. I made some modifications to the pattern to make it more how I like it.&#xA;I used Veg-tanned Bellies 5oz leather for this project.&#xA;The steps The laser machine is not involved at all in this project. Stamp each hole is a time consuming pleasure.&#xA;Beavel all the edges.&#xA;Dye the leather and add a layer of shene.</description>
    </item>
    <item>
      <title>Checkpoint-restore in Linux</title>
      <link>https://www.marcusfolkesson.se/blog/checkpoint-restore/</link>
      <pubDate>Sun, 23 Jul 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/checkpoint-restore/</guid>
      <description>Checkpoint-restore in Linux I&#39;m working on power saving features for a project based on a Raspberry Pi Zero. Unfortunately, the RPi does not support features as hibernation to disk or suspend to RAM because how the processor is constructed (the GPU is actually the main processor). So I was looking for alternatives.&#xA;That&#39;s when I stumpled upon CRIU ( [1], [2] ), Checkpoint-Restore In Userspace. (I actually started to read about PTRACE_SEIZE [4] and ptrace parasite code [3] and found out that CRIU is one of their users.</description>
    </item>
    <item>
      <title>meta-readonly-rootfs-overlay</title>
      <link>https://www.marcusfolkesson.se/blog/meta-readonly-rootfs-overlay/</link>
      <pubDate>Sat, 22 Jul 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/meta-readonly-rootfs-overlay/</guid>
      <description>meta-readonly-rootfs-overlay meta-readonly-rootfs-overlay [1] is a meta layer for the Yocto project [2] originally written by Claudius Heine. I took over the maintainership in May 2022 to keep it updated with recent Yocto releases and keep add functionality.&#xA;I&#39;ve implemented it in a couple of industrial products so far and think it needs some extra attention as I find it so useful.&#xA;Why does this exists? Having a read-only root file system is useful for many scenarios:</description>
    </item>
    <item>
      <title>TIL - ignore_routes_with_linkdown</title>
      <link>https://www.marcusfolkesson.se/til/ignore_routes_with_linkdown/</link>
      <pubDate>Tue, 04 Jul 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/ignore_routes_with_linkdown/</guid>
      <description>TIL - ignore_routes_with_linkdown TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Usually, a high level network managers such as NetworkManager or Connman, removes routes for unaccessible (&amp;quot;linkdown&amp;quot; or &amp;quot;unplugged&amp;quot;) link states.&#xA;If these links are not managed by a network manager but are managed in other ways or is somehow misconfigured, then you could end up with a default route that is still hanging around even if the link is down.</description>
    </item>
    <item>
      <title>Embedded Open Source Summit 2023</title>
      <link>https://www.marcusfolkesson.se/blog/embedded-open-source-summit-2023/</link>
      <pubDate>Tue, 27 Jun 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/embedded-open-source-summit-2023/</guid>
      <description>Embedded Open Source Summit 2023 This year the Embedded Linux Conference is colocated with Automotive Linux Summit, Embedded IOT summit, Safety-critical software summit, LFEnergy and Zephyr Summit. The event was held in Prague, Czech Republic this time.&#xA;It&#39;s the second time I&#39;m at a Linux conference in Czech Republic, and it clearly is my favorite place for such a event. Not only for the cheap beer but also for the architecture and the culture.</description>
    </item>
    <item>
      <title>Route priorities - metric values</title>
      <link>https://www.marcusfolkesson.se/blog/route-metric-values/</link>
      <pubDate>Sun, 11 Jun 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/route-metric-values/</guid>
      <description>Route priorities - metric values Brief It&#39;s not an uncommon scenario that a Linux system has several network interfaces that are all up and routeable. For example, consider a laptop with both Ethernet and WiFi.&#xA;But how does the system determine which route to use when trying to reach another host?&#xA;I was up to setup a system with both a 4G modem and a WiFi connection. My use case was that when the WiFi is available, that interface should be prioritized over 4G.</description>
    </item>
    <item>
      <title>Lund Linux Conference 2023</title>
      <link>https://www.marcusfolkesson.se/blog/lund-linux-con-2023/</link>
      <pubDate>Thu, 25 May 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/lund-linux-con-2023/</guid>
      <description>Lund Linux Conference 2023 The conference Lund Linux Conference (LLC) [1] is a &amp;quot;half-open&amp;quot; conference located in Lund. It&#39;s a conference with with high quality and I appreciate that the athmosphere is more familiar than at the larger conferences. I&#39;ve been at the conference a couple of times before and the quality on the talks this year was as good as usual. ( The talks are by the way availalble on Youtube [3].</description>
    </item>
    <item>
      <title>TIL - Split streams with boost::tee_device</title>
      <link>https://www.marcusfolkesson.se/til/boost-tee-device/</link>
      <pubDate>Mon, 15 May 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/boost-tee-device/</guid>
      <description>TIL - Split streams with boost::tee_device TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Split streams could be useful if you want the same output to appear in more than one stream at once. Boost support tee_device, which works pretty much as the tee(1) [1] command line tool. Everything written to that device is splitted up and written into two streams.</description>
    </item>
    <item>
      <title>TIL - NFS UDP Support</title>
      <link>https://www.marcusfolkesson.se/til/nfs-udp-support/</link>
      <pubDate>Sat, 06 May 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/nfs-udp-support/</guid>
      <description>TIL - NFS UDP Support TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Today I was trying to bring up an really old board (v2.6.32 kernel) that used to mount its root filesystem via NFS. Unfortunately, I have to stick to this configuration for a few reasons.&#xA;The virtual machine that came with the board did not start anymore, so I had to setup a new one.</description>
    </item>
    <item>
      <title>Write a device driver for Zephyr - Part 1</title>
      <link>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part1/</link>
      <pubDate>Wed, 19 Apr 2023 12:40:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part1/</guid>
      <description>Write a device driver for Zephyr - Part 1 This is the first post in this series. See also part part2, part3 and part4.&#xA;Overview The first time I came across Zephyr [1] was on Embedded Linux Conference in 2016. Once back from the conference I tried to install it on a Cortex-M EVK board I had on my desk. It did not go smoothly at all. The documentation was not very good back then and I don&#39;t think I ever got system up and running.</description>
    </item>
    <item>
      <title>Write a device driver for Zephyr - Part 2</title>
      <link>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part2/</link>
      <pubDate>Wed, 19 Apr 2023 12:30:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part2/</guid>
      <description>Write a device driver for Zephyr - Part 2 This is the second post in this series. See also part part1, part3 and part4.&#xA;Overview In the first part1 of this series, we did setup the hardware and prepared the software environment. In this part we will focus on pretty much everything but writing the actual driver implementation. We will touch multiple areas in order to fully integrate the driver into the Zephyr project, this includes:</description>
    </item>
    <item>
      <title>Write a device driver for Zephyr - Part 3</title>
      <link>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part3/</link>
      <pubDate>Wed, 19 Apr 2023 12:20:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part3/</guid>
      <description>Write a device driver for Zephyr - Part 3 This is the third post in this series. See also part part1, part2 and part4.&#xA;Overview In the previous part we prepared Zephyr for our soon to be born driver.&#xA;Now we have finally come to the fun point - write the actual driver code!&#xA;Driver API I used to write code for the Linux kernel which is a little bit more complex kernel than Zephyr.</description>
    </item>
    <item>
      <title>Write a device driver for Zephyr - Part 4</title>
      <link>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part4/</link>
      <pubDate>Wed, 19 Apr 2023 12:10:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/write-a-device-driver-for-zephyr-part4/</guid>
      <description>Write a device driver for Zephyr - Part 4 This is the forth post in this series. See also part part1, part2 and part3.&#xA;Overview This is the forth and last part of this series where we will focus on contribute the driver back to the Zephyr project.&#xA;Zephyr use Github for hosting the project and all contribution is by Pull Requests. The process is all well documented [1], both on how to contribute but also what the project expect from you as a contributor.</description>
    </item>
    <item>
      <title>Encrypted storage on i.MX</title>
      <link>https://www.marcusfolkesson.se/blog/encrypted-storage-on-imx/</link>
      <pubDate>Mon, 03 Apr 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/encrypted-storage-on-imx/</guid>
      <description>Encrypted storage on i.MX Brief Many embedded Linux systems does have some kind of sensitive information on a file storage. It could be private keys, passwords or whatever. It&#39;s always a risk that this information could be revealed by an unauthorized person that got their physical hands on the device. The only protection against attackers that who simply bypass the system and access the data storage directly is encryption.</description>
    </item>
    <item>
      <title>TIL - Buildroot &amp; BR_NO_CHECK_HASH_FOR</title>
      <link>https://www.marcusfolkesson.se/til/buildroot-br_no_check_hash_for/</link>
      <pubDate>Thu, 30 Mar 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/buildroot-br_no_check_hash_for/</guid>
      <description>TIL - Buildroot &amp;amp; BR_NO_CHECK_HASH_FOR TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;In Buildroot [1], the integrity of (almost) all downloaded packages is verified against a hash. Even packages that are fetched from a git repository is verified this way.&#xA;This is a good thing that no one really should work around.</description>
    </item>
    <item>
      <title>Bug in the iMX8MP ECSPI module?</title>
      <link>https://www.marcusfolkesson.se/blog/bug-in-imx8mp-ecspi-module/</link>
      <pubDate>Tue, 21 Mar 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/bug-in-imx8mp-ecspi-module/</guid>
      <description>Bug in the iMX8MP ECSPI module? Background I do have a system where I can swap between iMX8M Mini and iMX8M Plus CPU modules on the same carrier board.&#xA;I did write a a SPI driver for a device on the carrier board. The device is connected to the ECSPI1 (the CPU contains several ECSPI modules) and use the hardware chipselect 0 (SS0). The driver has been used with the iMX8MM CPU module for a while, but as soon I swapped to the iMX8MP it certainly stopped working.</description>
    </item>
    <item>
      <title>Capture an image with V4L2</title>
      <link>https://www.marcusfolkesson.se/blog/capture-a-picture-with-v4l2/</link>
      <pubDate>Sun, 19 Mar 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/capture-a-picture-with-v4l2/</guid>
      <description>Capture an image with V4L2 Brief As we have seen before, cameras in Linux could be a complex [1] story and you have to watch every step you take to get it right. libcamera [2] does a great job to simplify this in a platform independent way and should be used whenever it&#39;s possible.&#xA;But not all cameras does have a complex flow-chart. Some cameras (e.g. web cameras) are &amp;quot;self-contained&amp;quot; where the image data goes straight from the camera to the user application, without any detours through different IP blocks for image processing on its way.</description>
    </item>
    <item>
      <title>TIL - Git jump</title>
      <link>https://www.marcusfolkesson.se/til/git-jump/</link>
      <pubDate>Tue, 14 Mar 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/git-jump/</guid>
      <description>TIL - Git jump TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;The Git v2.40.0 was released [1] yesterday (2023-03-13) and one of the release notes that caught my eyes was this one:&#xA;* &amp;quot;git jump&amp;quot; (in contrib/) learned to present the &amp;quot;quickfix list&amp;quot; to its standard output (instead of letting it consumed by the editor it invokes), and learned to also drive emacs/emacsclient.</description>
    </item>
    <item>
      <title>Service of a pocket watch</title>
      <link>https://www.marcusfolkesson.se/projects/servicing-pocket-watch/</link>
      <pubDate>Mon, 27 Feb 2023 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/servicing-pocket-watch/</guid>
      <description>Service of a pocket watch Mechanical watches is fascinating. A mechanical timepiece that gets its energy from unwinding a tightly coiled flat spring. All this energy does feed another spring-driven balance wheel that oscillates back and forth in a given frequency. All without any batteries. Isn&#39;t that cool?&#xA;Mechanical watches is quite expensive and need regular services, so I bought a no-name brand pocket watch that suddenly could stop tick and didn&#39;t keep time very well.</description>
    </item>
    <item>
      <title>Razor leather case</title>
      <link>https://www.marcusfolkesson.se/projects/leather-case-razor/</link>
      <pubDate>Mon, 20 Feb 2023 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/leather-case-razor/</guid>
      <description>Razor Leather Case My safety razor broke during usage last week, so I sadly had to order a new one.&#xA;I&#39;m not really into shaving at all, but I want something that works and safety razors does both work and is cheap in the long run. For those interested, I bought a AL13 razor from Henson Shaving [1].&#xA;This time I used my Laser cutting machine to cut out the leather.</description>
    </item>
    <item>
      <title>Route traffic with NAT</title>
      <link>https://www.marcusfolkesson.se/blog/route-traffic-with-nat/</link>
      <pubDate>Fri, 17 Feb 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/route-traffic-with-nat/</guid>
      <description>Route traffic with NAT Long time ago I wrota a blog post [1] about how to use NAT to route traffic to your embedded device via your host computer.&#xA;Back then we were using iptables to achieve it, nowadays nftables is the preferred successor, so it&#39;s time for an update.&#xA;What is NAT anyway? Network Address Translation, or NAT, does map an address space into another by modifying the network address infromation in the IP header for each packet.</description>
    </item>
    <item>
      <title>Leather watch strap keeper</title>
      <link>https://www.marcusfolkesson.se/projects/watch-leather-strap-keeper/</link>
      <pubDate>Mon, 13 Feb 2023 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/watch-leather-strap-keeper/</guid>
      <description>Leather watch strap keeper My watch was missing the strap keeper, so I had to make one.&#xA;To be honest, I did not put my soul into this project, I had an urge to fix it while the food was getting ready in the oven.&#xA;Anyway, here is my steps to make one.&#xA;The steps Cut out a leather strap. My final size was about 14mm wide.&#xA;Bevel the edges:</description>
    </item>
    <item>
      <title>Contiguous Memory Allocator</title>
      <link>https://www.marcusfolkesson.se/blog/contiguous-memory-allocator/</link>
      <pubDate>Mon, 06 Feb 2023 10:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/contiguous-memory-allocator/</guid>
      <description>Contiguous Memory Allocator Introduction I do find memory management as one of the most fascinating subsystem in the Linux kernel, and I take every chance I see to talk about it. This post is inspired by a project I&#39;m currently working on; an embedded Linux platform with a camera connected to the CSI-2 bus.&#xA;Before we dig into which problems we could trip over, lets talk briefly about how the kernel handles memory.</description>
    </item>
    <item>
      <title>TIL - U-Boot support for HTTP</title>
      <link>https://www.marcusfolkesson.se/til/u-boot-http/</link>
      <pubDate>Fri, 27 Jan 2023 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/u-boot-http/</guid>
      <description>TIL - U-Boot support for HTTP TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Until now, U-Boot did only support UDP and were limited to protocols that are based on that. In practice it meant that you were only able to use TFTP and NFS for network file transfer.</description>
    </item>
    <item>
      <title>Use custom EDID in Linux</title>
      <link>https://www.marcusfolkesson.se/blog/custom-edid-in-linux/</link>
      <pubDate>Sat, 07 Jan 2023 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/custom-edid-in-linux/</guid>
      <description>Use custom EDID in Linux Extended Display Identification Data (EDID) is a metadata format for display devices to describe their capabilities such as resolution, display size, timing, bit depth and update frequency. It&#39;s a 128-byte (EDID) or 256-byte (Enhanced-EDID) structure transferred from the display device over the Display Data Channel (DDC) protocol, which is a layer on top of the I2C specification.&#xA;The EDID is accessible via the I2C address 0x50 and can usually be read even if the display is turned off, which is quite nice.</description>
    </item>
    <item>
      <title>Audio and Embedded Linux</title>
      <link>https://www.marcusfolkesson.se/blog/audio-and-embedded-linux/</link>
      <pubDate>Fri, 23 Dec 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/audio-and-embedded-linux/</guid>
      <description>Audio and Embedded Linux Brief Last time I used wrote kernel drivers for the ASoC (ALSA System on Chip) subsystem, the functionality was split up into these parts:&#xA;Platform class driver that defines the SoC audio interface for the actual CPU itself. This includes both the DAI (Digital Audio Interface) and any potential audio muxes (e.g. i.MX6 has its AUDMUX). CODEC class driver that controls the actual CODEC. Machine drivers that are the magic glue between the SoC and the CODEC which connects both interfaces.</description>
    </item>
    <item>
      <title>Debug kernel with KGDB</title>
      <link>https://www.marcusfolkesson.se/blog/debug-kernel-with-kgdb/</link>
      <pubDate>Sat, 17 Dec 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/debug-kernel-with-kgdb/</guid>
      <description>Debug kernel with KGDB What is KGDB? KGDB intend to be used as a source code level debugger on a running Linux kernel. It works with GDB and allows the user to inspect memory, variables, setup breakpoints, step lines and instructions. Pretty much the same that all application developers are used to, but for the kernel itself.&#xA;Almost every embedded Linux system does have a serial port available, and that is all that you need to connect GDB to your kernel.</description>
    </item>
    <item>
      <title>TIL - Virtual CAN interfaces</title>
      <link>https://www.marcusfolkesson.se/til/virtual-can-interface/</link>
      <pubDate>Wed, 30 Nov 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/virtual-can-interface/</guid>
      <description>TIL - Virtual CAN interfaces TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;There are many scenarios where a virtual Controller Area Network(CAN) interface could be handy. It let you develop and test applications that without an actual physical CAN bus.&#xA;My scenario is to play around with Berkley Packet Filter(BPF) [1] and do some data manipulation on received CAN frames in kernel space.</description>
    </item>
    <item>
      <title>Raspberry Pi and QEMU</title>
      <link>https://www.marcusfolkesson.se/blog/rpi-qemu/</link>
      <pubDate>Tue, 29 Nov 2022 12:05:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/rpi-qemu/</guid>
      <description>Raspberry Pi and QEMU What is QEMU? QEMU is a generic and open source machine emulator and visualizer. It emulates full machines (boards) of different architectures and is useful for both application and kernel development. The CPU itself could be fully emulated (together with devices, memories and so on) or work with a hypervisor such as KVM or Xen.&#xA;If support for your hardware is missing, then it&#39;s a fairly easy task to write a stub driver that your application can interface.</description>
    </item>
    <item>
      <title>Crosscompile libcamera for RPi</title>
      <link>https://www.marcusfolkesson.se/blog/compile-libcamera-for-rpi/</link>
      <pubDate>Tue, 29 Nov 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/compile-libcamera-for-rpi/</guid>
      <description>Crosscompile libcamera for RPi Goal The goal is to cross-compile libcamera [1] and libcamera-apps [2] for Raspberry Pi using the latest Raspbian [3] (Bullseye) release. Usually you setup the root filesystem with Buildroot [4] or Yocto [5] and generate a SDK that you can use to compile your application. The Raspbian distribution does not come with a SDK so we have to setup our own.&#xA;We will use a Raspberry Pi 3b for this.</description>
    </item>
    <item>
      <title>TIL - Debug FindBoost in CMake</title>
      <link>https://www.marcusfolkesson.se/til/cmake-findboost/</link>
      <pubDate>Tue, 29 Nov 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/cmake-findboost/</guid>
      <description>TIL - Debug FindBoost in CMake TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;When you use find_package for a Boost component in CMake it will end up with the FindBoost.cmake [1] module. It is usually located in /usr/share/cmake/Modules/FindBoost.cmake.&#xA;I had to debug a cross compile setup for an application using CMake, and the root file system did use wierd paths for everything.</description>
    </item>
    <item>
      <title>What is libcamera and why should you use it?</title>
      <link>https://www.marcusfolkesson.se/blog/libcamera/</link>
      <pubDate>Fri, 25 Nov 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/libcamera/</guid>
      <description>What is libcamera and why should you use it Read out a picture from camera Once in a time, video devices was not that complex. To use a camera back then, your application software could iterated through /dev/video* devices and pick the camera that you want and then immediately start using it. You could query which pixel formats, frame rates, resolutions and all other properties that are supported by the camera.</description>
    </item>
    <item>
      <title>TIL -Yocto bitbake-getvar</title>
      <link>https://www.marcusfolkesson.se/til/yocto-bitbake-getvar/</link>
      <pubDate>Wed, 16 Nov 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/yocto-bitbake-getvar/</guid>
      <description>TIL - Yocto bitbake-getvar TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;Writing recipes for Yocto has recently become something I do several times a week. All tools that help you with debugging is allways appreciated, and one such tool I found recently is bitbake-getvar that came with the Honister release of Yocto.</description>
    </item>
    <item>
      <title>TIL - systemd and $MAINPID</title>
      <link>https://www.marcusfolkesson.se/til/systemd-mainpid/</link>
      <pubDate>Tue, 08 Nov 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/til/systemd-mainpid/</guid>
      <description>TIL - SystemD and $MAINPID TIL, Today I Learned, is more of a &amp;quot;I just figured this out: here are my notes, you may find them useful too&amp;quot; rather than a full blog post&#xA;A special environmnent variable, $MAINPID, is set and is available for the .service file. The variable exposes the MainPID property of the service and could be useful if your custom services e.g. forks.&#xA;This let you do</description>
    </item>
    <item>
      <title>HID report descriptors and Linux</title>
      <link>https://www.marcusfolkesson.se/blog/hid-report-descriptors/</link>
      <pubDate>Sat, 15 Oct 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/hid-report-descriptors/</guid>
      <description>HID report descriptors and Linux HID Devices USB HID (Human Interface Device) device class is the type of computer peripherals that human interacts with, such as keyboards, mice, game controllers and touchscreens. The protocol is probably one of the most simple protocols in the USB specification. Even if HID was originally written for USB in mind, it works with several other transport layers. Your mouse and keyboard do probably use HID over USB, the touchscreen in your smartphone could use HID over I2C.</description>
    </item>
    <item>
      <title>Industrial I/O and triggers</title>
      <link>https://www.marcusfolkesson.se/blog/industrial-io-triggers/</link>
      <pubDate>Thu, 18 Aug 2022 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/industrial-io-triggers/</guid>
      <description>Industrial I/O and triggers I&#39;ve maintained a couple of IIO-drivers (MCP3911 [4] and LTC1660 [5]) for some time now and it&#39;s time to give at least the MCP3911 a face-lift.&#xA;This time the face lift includes support for:&#xA;Buffers Triggers Make the driver interrupt driven Add support for setting Oversampling Ratio Add support for setting PGA (Pre Gain Amplifier) Also clean it up a bit by only using device managed resources.</description>
    </item>
    <item>
      <title>Mounting with systemd and udev</title>
      <link>https://www.marcusfolkesson.se/blog/systemd-udev/</link>
      <pubDate>Fri, 12 Aug 2022 09:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/systemd-udev/</guid>
      <description>Mounting with systemd and udev Systemd hasn&#39;t always been my first choice as init system for embedded system, but I cannot ignore that it has many good and handy things that other init systems don&#39;t. At the same time, that is just what I don&#39;t like with systemd, it does not follow the &amp;quot;Do one thing and do it well&amp;quot;-philosophy that I like so much. I&#39;m very thorn about it.</description>
    </item>
    <item>
      <title>GPLv2 and GPLv3</title>
      <link>https://www.marcusfolkesson.se/blog/gplv3/</link>
      <pubDate>Thu, 10 Feb 2022 09:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/gplv3/</guid>
      <description>Open Source &amp;quot;Free as in freedom - not as in free beer&amp;quot;. Free beer is nice, but freedom is even nicer.&#xA;I have been working with companies from different sections including consumer electronics, military applications, automotive and aeronautics. One common question, regardless of section, is &amp;quot;Can we really use Open Source in our product?&amp;quot;. The answer is usually Yes, you can, but....&#xA;One common misunderstanding is to interpret Open Source as in free beer.</description>
    </item>
    <item>
      <title>Forge a hoof scratch</title>
      <link>https://www.marcusfolkesson.se/projects/hoof-scratch/</link>
      <pubDate>Sat, 04 Dec 2021 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/hoof-scratch/</guid>
      <description>Forge a hoof scratch In this project I made a hoof scratch as a gift to a friend - made out of a horse shoe of course.&#xA;I do have a few different forges depending on what to forge. The induction forge is great for thick and straight materials such like hammer heads and tongs. One of the greatest benefit is that there is only 30s startup time as it requires no preparations at all.</description>
    </item>
    <item>
      <title>This website setup</title>
      <link>https://www.marcusfolkesson.se/blog/website-setup/</link>
      <pubDate>Wed, 03 Mar 2021 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/website-setup/</guid>
      <description>This website setup This post is more for my own good if I have to setup my website once again. Maybe someone find it useful.&#xA;Tools Hugo I use Hugo [1] to generate my website. Hugo is a fantastic tool for generate static web pages in an flexible way.&#xA;All pages is written in reStructured Text [2] which is the markup syntax I strongly prefer.&#xA;Docker The web server [4] and traefik [5] server is running in docker [3] containers.</description>
    </item>
    <item>
      <title>Leather sewing machine</title>
      <link>https://www.marcusfolkesson.se/projects/sewing-machine/</link>
      <pubDate>Wed, 04 Nov 2020 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/sewing-machine/</guid>
      <description>Leather sewing machine I have worked with leather for some time which I enjoyed a lot. Leather is so general purpose and is both robust and nice looking. So far I&#39;ve made myself a wizard hat, dice bags, mug pads, bookmarks..&#xA;The majority of all leather projects involves a sewing, which is quite entertaining but really time consuming so I invested in a $60 leader sewing machine which make the whole process a lot smoother.</description>
    </item>
    <item>
      <title>Leather penguin</title>
      <link>https://www.marcusfolkesson.se/projects/leather-penguin/</link>
      <pubDate>Fri, 16 Oct 2020 17:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/leather-penguin/</guid>
      <description>Leather penguin A Linux guy needs his penguin, right?&#xA;I found this pattern [1] on etsy and thought it would be a fun project to make a little companion.&#xA;The leather I&#39;m using for this is a 2-3oz veg-tanned goat skin. It is a little too thin to make a robust penguin, but I rather want it soft and squeeze-friendly than robust. That&#39;s how I prefer to have my companions.</description>
    </item>
    <item>
      <title>Player&#39;s handbook, Dungeon Master&#39;s Guide and Monster Manual</title>
      <link>https://www.marcusfolkesson.se/projects/phb-dmg-mm/</link>
      <pubDate>Sat, 20 Jun 2020 16:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/phb-dmg-mm/</guid>
      <description>Player&#39;s handbook, Dungeon Master&#39;s Guide and Monster Manual These three books are the &amp;quot;core books&amp;quot; for Dungeons and Dragons 5e.&#xA;This is not an in depth review of these books as they are so fundamental. But I think it is good to mention them at least, before I go any further with the more cool-but-not-so-neccessary-books.&#xA;Player&#39;s Handbook The Players Handbook [1] (PHB) contains all the basic rules that the player needs to know to play the game, equipment, spells, character options, feats, races, backgrounds and everything to put it all together.</description>
    </item>
    <item>
      <title>D&amp;D - My confession</title>
      <link>https://www.marcusfolkesson.se/projects/dnd-confession/</link>
      <pubDate>Fri, 19 Jun 2020 16:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/dnd-confession/</guid>
      <description>Dungeons and dragons - My confession I have always been fascinated about fantasy. The computer games I appreciated most during my young days was role-playing game such as Baldur&#39;s Gate, Diablo and Neverwinter Nights, all games with their own mysterious setting there evil lurks at every corner. For half a year ago, a friend of mine introduced me to Dungeons and Dragons 5e and I was hooked. Maybe a little too much.</description>
    </item>
    <item>
      <title>V4L2 and media controller</title>
      <link>https://www.marcusfolkesson.se/blog/v4l2-and-media-controller/</link>
      <pubDate>Sun, 29 Mar 2020 12:00:34 +0100</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/v4l2-and-media-controller/</guid>
      <description>V4L2 and media controller The media infrastructure in the kernel is a giant beast handling many different types of devices involving different busses and electrical interfaces. Providing an interface to handle the complexity of the hardware is not an easy task. Most devices have multiple ICs with different communication protocols... so the device drivers tends to be very complex as well.&#xA;Video For Linux 2 (V4L2) is the interface for such media devices.</description>
    </item>
    <item>
      <title>Parsing command line options</title>
      <link>https://www.marcusfolkesson.se/blog/cmdline-parsing/</link>
      <pubDate>Wed, 29 Jan 2020 15:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/cmdline-parsing/</guid>
      <description>Parsing command line options Parsing command line options is something almost every command or applications needs to handle in some way, and there is too many home-made argument parsers out there. As so many programs needs to parse options from the command line, this facility is encapsulated in a standard library function getopt(2).&#xA;The GNU C library provides an even more sophisticated API for parsing the command line, argp(), and is described in the glibc manual [1].</description>
    </item>
    <item>
      <title>Embedded Linux Conference 2019</title>
      <link>https://www.marcusfolkesson.se/blog/embedded-linux-conference-2019/</link>
      <pubDate>Thu, 31 Oct 2019 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/embedded-linux-conference-2019/</guid>
      <description>Embedded Linux Conference 2019 Here we go again! This trip got exited even before it begun. I checked my passport the day before we should leave and noticed that my passport has expired. Outch. Fortunately I was able to get a temporary passport at the airport. I must admit that I&#39;m not traveling that often and do not have these &#39;must-checks&#39; in my muscle memory..&#xA;This time we were heading Lyon in France.</description>
    </item>
    <item>
      <title>ligsegfault.so</title>
      <link>https://www.marcusfolkesson.se/blog/libsegfault/</link>
      <pubDate>Thu, 13 Dec 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/libsegfault/</guid>
      <description>libsegfault.so The dynamic linker [1] in a Linux system is using several environment variables to customize it&#39;s behavior. The most commonly used is probably LD_LIBRARY_PATH which is a list of directories where it search for libraries at execution time. Another variable I use quite often is LD_TRACE_LOADED_OBJECTS to let the program list its dynamic dependencies, just like ldd(1).&#xA;For example, consider the following output&#xA;$ LD_TRACE_LOADED_OBJECTS=1 /bin/bash linux-vdso.so.1 (0x00007ffece29e000) libreadline.</description>
    </item>
    <item>
      <title>Embedded Linux Conference 2018</title>
      <link>https://www.marcusfolkesson.se/blog/embedded-linux-conference-2018/</link>
      <pubDate>Tue, 23 Oct 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/embedded-linux-conference-2018/</guid>
      <description>Embedded Linux Conference 2018 OK, time for another conference. This time in Edinburgh, Scotland. My travel is limited to Edinburgh, but this city has a lot of things to see, including Edinburgh Castle, the Royal Botanic Garden, the clock that is always is 3 minutes wrong [1] and lots of more. A side note, yes I&#39;ve tried Haggis as it&#39;s a must-try-thing and so should you. But be prepared to buy a backup-meal.</description>
    </item>
    <item>
      <title>Oppigård Amarillo, third batch</title>
      <link>https://www.marcusfolkesson.se/projects/amarillo-1/</link>
      <pubDate>Sat, 04 Aug 2018 16:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/amarillo-1/</guid>
      <description>Oppigård Amarillo, third batch This recipe is also from the book [1] and the third batch of this beer and it is one of my favorite hopier beer. I think it is fun to brew single hop beers since you learn to recognize the taste and aroma of a single hop at a time. The aroma of Amarillo is described as flowery, spicy and citrus-like with a distinct orange bouquet.</description>
    </item>
    <item>
      <title>Green fingers</title>
      <link>https://www.marcusfolkesson.se/projects/green-fingers/</link>
      <pubDate>Tue, 17 Jul 2018 16:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/green-fingers/</guid>
      <description>Green fingers This year I have engaged more than usual in growing vegetables. I grow quite common things like cucumbers, tomatoes, dill, beans, peas, squash, salad, carrots and potatoes. We live in a moss that cools the environment quite a bit, so it&#39;s hard to grow without a greenhouse - which we happily have.&#xA;In the past years it has become a mediocre harvest of vegetables, but this year it has really exploded.</description>
    </item>
    <item>
      <title>St:Eriks Pale Ale, second batch</title>
      <link>https://www.marcusfolkesson.se/projects/st-eriks-pale-ale-1/</link>
      <pubDate>Sat, 14 Jul 2018 16:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/projects/st-eriks-pale-ale-1/</guid>
      <description>St Eriks Pale Ale, second batch The book &amp;quot;Klona öl&amp;quot; [1] (&amp;quot;Clone beers&amp;quot; in English) has collected recipes from many Swedish breweries. One challenge is to brew a recipe and then buy a bottle with the same beer and compare, hope&#xA;This is the second time we brew a St:Eriks Pale ale, which is a pale ale with a lot of citrus aroma from the Citra and Simcoe hop. The body is quite light and it is a perfect summer beer.</description>
    </item>
    <item>
      <title>BEER2RST - my first attempt with golang</title>
      <link>https://www.marcusfolkesson.se/blog/beer2rst/</link>
      <pubDate>Fri, 13 Jul 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/beer2rst/</guid>
      <description>BEER2RST - my first attempt with golang I&#39;m using Beersmith [1] a (non-free...) software to create my beer recipes. It&#39;s written in Java and runs well on Linux. One of the biggest benefits with using Beersmith is that my brewing house [2] is taking exported recipes as input and setup mash schemes automatically - really comfortable.&#xA;I brew beer several times a month and always takes notes of each brewing, both methods and results.</description>
    </item>
    <item>
      <title>Lund Linux Conference 2018</title>
      <link>https://www.marcusfolkesson.se/blog/lund-linux-con-2018/</link>
      <pubDate>Fri, 20 Apr 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/lund-linux-con-2018/</guid>
      <description>Lund Linux Conference 2018 It&#39;s just two weeks from now til the Lund Linux Conference (LLC) [1] begins! LLC is a two-day conference with the same layout as the bigger Linux conferences - just smaller, but just as nice.&#xA;There will be talks about PCIe, The serial device bus, security in cars and a few more topics. My highlights this year is to hear about the XDP (eXpress Data Path) [2] to get really fast packet processing with standard Linux.</description>
    </item>
    <item>
      <title>ath10k QCA6584 and Wireless network stack</title>
      <link>https://www.marcusfolkesson.se/blog/qca6584-and-wireless-network-stack/</link>
      <pubDate>Wed, 04 Apr 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/qca6584-and-wireless-network-stack/</guid>
      <description>ath10k QCA6584 and Wireless network stack ATH10K is the mac80211 wireless driver for Qualcomm Atheros QCA988x family of chips, and I&#39;m currently working [1] with the QCA6584 chip which is an automotive graded radio chip with PHY support for the abgn+ac modes. The connection interface to the chip is SDIO which is hardly supported for now, but my friend and kernelhacker, Erik Strömdahl [2] , has got his hands dirty and is currently working on it.</description>
    </item>
    <item>
      <title>Linux driver for PhoenixRC adapter</title>
      <link>https://www.marcusfolkesson.se/blog/driver-for-phoenixrc-adapter/</link>
      <pubDate>Sat, 17 Mar 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/driver-for-phoenixrc-adapter/</guid>
      <description>Linux driver for PhoenixRC adapter Update: Michael Larabel on Phoronix has written a post [3] about this driver. Go ahead and read it as well!&#xA;A few years ago I used to build multi rotors, mostly quad copters and tricopters. It&#39;s a fun hobby, both building and flying is incredible satisfying. The first multi rotors i built was nicely made with CNC cutted details. They looked really nice and robust.</description>
    </item>
    <item>
      <title>Patch changelogs with git-notes</title>
      <link>https://www.marcusfolkesson.se/blog/patch-changelogs-with-git-notes/</link>
      <pubDate>Tue, 27 Feb 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/patch-changelogs-with-git-notes/</guid>
      <description>Patch changelogs with git-notes Git notes [1] is a neat function that has been around since v1.6.6. Notes is a kind of metadata that belongs to a certain commit but is stored separately (different git object) from the commit itself. The fact that it&#39;s a separate git object is important, it will therefor keep the commit hash intact, and as a bonus - it has its own diff log.</description>
    </item>
    <item>
      <title>Buildroot: out-of-tree builds</title>
      <link>https://www.marcusfolkesson.se/blog/buildroot-build-out-of-tree/</link>
      <pubDate>Sun, 07 Jan 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/buildroot-build-out-of-tree/</guid>
      <description>Buildroot: out-of-tree builds Like the Linux kernel, Buildroot supports building out-of-tree in a very similar way. This could be very useful when you have multiple configurations in the same Buildroot repository that you want to build without interference.&#xA;Consider the following example:&#xA;cd buildroot/ mkdir -p ../outputs/device{1,2} make O=../outputs/device1 menuconfig make O=../outputs/device1 make O=../outputs/device2 menuconfig make O=../outputs/device2 Each output has its own .config so you may change the build configurations independently.</description>
    </item>
    <item>
      <title>get_maintainers and git send-email</title>
      <link>https://www.marcusfolkesson.se/blog/get_maintainers-and-git-send-email/</link>
      <pubDate>Sun, 07 Jan 2018 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/get_maintainers-and-git-send-email/</guid>
      <description>get_maintainers and git send-email Many with me prefer email as communication channel, especially for patches. Github, Gerrit and all other &amp;quot;nice&amp;quot; and &amp;quot;user friendly&amp;quot; tools that tries to &amp;quot;help&amp;quot; you to manage your submissions does not simply fit my workflow.&#xA;As you may already know, all patches to the Linux kernel is by email. scripts/get_maintainer.pl (see [1] for more info about the process) is a handy tool that takes a patch as input and gives back a bunch of emails addresses.</description>
    </item>
    <item>
      <title>OOM-killer</title>
      <link>https://www.marcusfolkesson.se/blog/oom-killer/</link>
      <pubDate>Fri, 01 Dec 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/oom-killer/</guid>
      <description>OOM-killer When the system is running out of memory, the Out-Of-Memory (OOM) killer picks a process to kill based on the current memory footprint. In case of OOM, we will calculate a badness score between 0 (never kill) and 1000 for each process in the system. The process with the highest score will be killed. A score of 0 is reserved for unkillable tasks such as the global init process (see [1]) or kernel threads (processes with PF_KTHREAD flag set).</description>
    </item>
    <item>
      <title>Embedded Linux course in Linköping</title>
      <link>https://www.marcusfolkesson.se/blog/embedded-linux-course-in-linkoping/</link>
      <pubDate>Sun, 19 Nov 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/embedded-linux-course-in-linkoping/</guid>
      <description>Embedded Linux course in Linköping I tech in our Embedded Linux course on a regular basis, this time in Linköping. It&#39;s a fun course with interesting labs where you will write your own linux device driver for a custom board.&#xA;The course itself is quite moderate, but with talented participants, we easily slip over to more interesting things like memory management, the MTD subsystem, how ftrace works internally and how to use it, different contexts, introduce perf and much more.</description>
    </item>
    <item>
      <title>printk()</title>
      <link>https://www.marcusfolkesson.se/blog/printk/</link>
      <pubDate>Thu, 02 Nov 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/printk/</guid>
      <description>printk() So, a week in Prague has come to its end. The Embedded Linux Conference Europe was this year co-located with Open Source Summit and offered a lot of interesting talks on various topics.&#xA;One of the hottest topics this year was about our most beloved debugging function - prink(). What is so hard with printing? It turns out that printk is quite deadlock-prone and that is not an easy thing to work around in the current infrastructure of the kernel.</description>
    </item>
    <item>
      <title>libostree and $OSTREE_REPO environment path</title>
      <link>https://www.marcusfolkesson.se/blog/libostree-and-ostree-repo-environment-path/</link>
      <pubDate>Wed, 25 Oct 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/libostree-and-ostree-repo-environment-path/</guid>
      <description>libostree and $OSTREE_REPO environment path libostree is a great tool to handle incremental or full updates for an Linux file system. But virtually all commands of ostree requires the --repo argument to override the default system repository path. This is really annoying after a while so my first attempt to get rid of this was to create an alias :&#xA;1alias ost=&amp;#39;ostree --repo=/tmp/repo&amp;#39; It works but is not good. To solve it once and for all I was about to implement support for getting the repo path from an environment variable.</description>
    </item>
    <item>
      <title>FIT vs legacy image format</title>
      <link>https://www.marcusfolkesson.se/blog/fit-vs-legacy-image-format/</link>
      <pubDate>Wed, 18 Oct 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/fit-vs-legacy-image-format/</guid>
      <description>FIT vs legacy image format U-Boot supports several image formats when booting a kernel. However, a Linux system usually need multiple files for booting. Such files may be the kernel itself, an initrd and a device tree blob.&#xA;A typical embedded Linux system have all these files in at least two-three different configurations. It&#39;s not uncommon to have a&#xA;Default configuration Rescue configuration Development configuration Production configuration ... Only these four configurations may end up with unmanageable amount of different files.</description>
    </item>
    <item>
      <title>config utility for Buildroot</title>
      <link>https://www.marcusfolkesson.se/blog/buildroot-config-utility/</link>
      <pubDate>Fri, 13 Oct 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/buildroot-config-utility/</guid>
      <description>config utility for Buildroot I&#39;m using the ./scripts/config script in the Linux kernel tree a lot. The script is used to manipulate a .config file from the command line which is quite nice to be able to do.&#xA;I use it mostly to enable configurations from a script or as a part of automated tests.&#xA;Buildroot is also using KBuild as its configuration system so I adapted this script and submitted a patch.</description>
    </item>
    <item>
      <title>Memory management in the kernel</title>
      <link>https://www.marcusfolkesson.se/blog/memory-management-in-the-kernel-1/</link>
      <pubDate>Wed, 27 Sep 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/memory-management-in-the-kernel-1/</guid>
      <description>Memory management in the kernel Memory management is among the most complex parts in the Linux kernel. There is so many critical parts such as page allocator, slab allocator, virtual memory handling, memory mapping, MMU, IOMMU and so on.&#xA;All these parts have to work perfect (or at least almost perfect :-) ) because all systems do use them whether they want to or not.&#xA;If there is a bug or performance issue you will be noticed quite soon.</description>
    </item>
    <item>
      <title>MMAP memory between kernel and userspace</title>
      <link>https://www.marcusfolkesson.se/blog/mmap-memory-between-kernel-and-userspace/</link>
      <pubDate>Wed, 27 Sep 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/mmap-memory-between-kernel-and-userspace/</guid>
      <description>MMAP memory between kernel and userspace Allocate memory in kernel space and then let the userspace map it to their virtual address space sounds like an easy task, and sure it&#39;s.&#xA;There are just a few things that is good to know about page mapping.&#xA;The MMU (Memory Management Unit) contains page tables with entries for mapping between virtual and physical addresses. These pages is the smallest units that the MMU deals with.</description>
    </item>
    <item>
      <title>PID1 in containers</title>
      <link>https://www.marcusfolkesson.se/blog/pid1-in-containers/</link>
      <pubDate>Wed, 27 Sep 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/pid1-in-containers/</guid>
      <description>PID1 in containers What is PID 1 The top-most process in a UNIX system has PID (Process ID) 1 and is usually the init process. The Init process is the first userspace application started on a system and is started by the kernel at boottime. The kernel is looking in a few predefined paths (and the init kernel parameter). If no such application is found, the system will panic().</description>
    </item>
    <item>
      <title>2.2&#34; TFT display on Beaglebone</title>
      <link>https://www.marcusfolkesson.se/blog/tft_beaglebone/</link>
      <pubDate>Sun, 27 Aug 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/tft_beaglebone/</guid>
      <description>2.2&amp;quot; TFT display on Beaglebone I recently bought a 2.2&amp;quot; TFT display on Ebay (come on, 7 bucks...) and was up to use it with my BeagleBone. Luckily for me there was no Linux driver for the ILI9341 controller so it&#39;s just to roll up my sleeves and get to work. Boot up the BeagleBone I haven&#39;t booted up my bone for a while and support for the board seems</description>
    </item>
    <item>
      <title>Magic SysRq</title>
      <link>https://www.marcusfolkesson.se/blog/magic-sysrq/</link>
      <pubDate>Sun, 27 Aug 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/magic-sysrq/</guid>
      <description>Magic SysRq Every kernel-hacker should knows about the magic SysRQ. Period.&#xA;To enable the magic, make sure CONFIG_MAGIC_SYSRQ is set in your Kernel hacking tab.&#xA;I use this feature a lot, mostly for set loglevel and reboot the system. But it is also very useful to get information out of the system even if it is completely frozen.&#xA;As everybody is using GNU Screen (what else?) as their TTY terminal, the keyboard combination is: ctrl+A B.</description>
    </item>
    <item>
      <title>Take control of your Buffalo Linkstation NAS</title>
      <link>https://www.marcusfolkesson.se/blog/take-control-of-your-buffalo-linkstation/</link>
      <pubDate>Sun, 27 Aug 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/take-control-of-your-buffalo-linkstation/</guid>
      <description>Take control of your Buffalo Linkstation NAS I finally bought a NAS for all of my super-important stuff. It became a Buffalo Linkstation LS200, most because of the price ($300 for 4TB). It supports all of the standard protocols such as FTP, SAMBA, ATP and so on.&#xA;However, it would be really useful to use some sane protocols like sftp so you could use rsync for your backup scripts.</description>
    </item>
    <item>
      <title>High resolution timers</title>
      <link>https://www.marcusfolkesson.se/blog/high-resolution-timers/</link>
      <pubDate>Thu, 27 Jul 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/high-resolution-timers/</guid>
      <description>High resolution timers Nearly all systems have some kind of Programmable Interrupt Timer (PIT) or High Precision Event Timer (HPET) that is programmed to periodically interrupt the operating system (if not configured with CONFIG_NO_HZ).&#xA;The kernel performs several tasks in these ticks such as timekeeping, calculate statistics for the currently running process, schedule a new process and so on. The interrupt occurs at regular intervals - exactly HZ times per second.</description>
    </item>
    <item>
      <title>NAT with Linux</title>
      <link>https://www.marcusfolkesson.se/blog/nat-with-linux/</link>
      <pubDate>Thu, 27 Jul 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/nat-with-linux/</guid>
      <description>NAT with Linux To share an internet connection may sometimes be very practical when working with embedded devices. The network may have restrictions/authentications that stops you from plug in your device into the network of the big company you are working for.&#xA;But what about creating your own network and use your computer as NAT (Network Address Translation)?&#xA;It&#39;s not that hard to setup, it&#39;s actually just a few command lines away.</description>
    </item>
    <item>
      <title>-ENOENT, but believe me, it&#39;s there</title>
      <link>https://www.marcusfolkesson.se/blog/enoent-but-believe-me-its-there/</link>
      <pubDate>Thu, 13 Jul 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/enoent-but-believe-me-its-there/</guid>
      <description>-ENOENT, but believe me, it&#39;s there Almost every ELF-file in a Linux environment is dynamically linked, and the operating system has to locate all dynamic libraries in order to execute the file. To its help, it has the runtime dynamic linker, whose only job is to interpret the ELF file format, load the shared objects with unresolved references, and, at last, execute and pass over the control to the ELF file.</description>
    </item>
    <item>
      <title>Modules with parameters</title>
      <link>https://www.marcusfolkesson.se/blog/modules-with-parameters/</link>
      <pubDate>Tue, 27 Jun 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/modules-with-parameters/</guid>
      <description>Modules with parameters Everybody knows that modules can take parameters, either via /sys/modules/&amp;lt;module&amp;gt;/parameters, sysctl or via cmdline to the kernel, but how are these parameters created?&#xA;Parameters without callbacks The Linux kernel provides the module_param() macro. The syntax is:&#xA;1module_param(name, type, perm) Which will simply create the module parameter and expose it as an entry in /sys/modules/&amp;lt;module&amp;gt;/parameters.&#xA;Code example 1int debug_flag; 2module_param(debug_flag, bool, S_IRUSR | S_IWUSR | S_IRGRP) 3MODULE_PARM_DESC(debug_flag, &amp;#34;Set to 1 if debug should be enabled, 0 otherwise&amp;#34;); MODULE_PARM_DESC() is a short description of the parameter.</description>
    </item>
    <item>
      <title>Terminate a hanging SSH session</title>
      <link>https://www.marcusfolkesson.se/blog/terminate-a-hanging-ssh-session/</link>
      <pubDate>Tue, 27 Jun 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/terminate-a-hanging-ssh-session/</guid>
      <description>Terminate a hanging SSH session It may be very frustrating when SSH sessions just hangs because the target is power cycling or something. Lucky for you there is a &amp;quot;secret&amp;quot; escape sequence that allows you to terminate the session (and a few other things).&#xA;The escape sequence is &amp;lt;enter&amp;gt;~X where X is a command letter. To see all available key sequences, type &amp;lt;enter&amp;gt;~?.&#xA;Example output: 1 marcus@Ilos:~$ ~? 2 Supported escape sequences: 3 ~.</description>
    </item>
    <item>
      <title>Interrupts, and how to divide them between cores</title>
      <link>https://www.marcusfolkesson.se/blog/interrupts-and-how-to-divide-them-between-cores/</link>
      <pubDate>Fri, 07 Apr 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/interrupts-and-how-to-divide-them-between-cores/</guid>
      <description>Interrupts, and how to divide them between cores Symetric MultiProcessing (SMP) are becoming increasingly common in embedded systems. Many chip manufacturers such as Texas Instruments and Freescale offers ARM multicores, even FPGA manufacturers like Xilinx and Altera has System-on-Chip with multiple ARM cores. One benefit with SoC is that it&#39;s even possible to add soft cores in the programmable logic if it&#39;s necessary.&#xA;The trend is clear, multiple cores is here and it&#39;s not likely to be fewer of them.</description>
    </item>
    <item>
      <title>Linux memory overcommit</title>
      <link>https://www.marcusfolkesson.se/blog/linux-memory-overcommit/</link>
      <pubDate>Mon, 27 Mar 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/linux-memory-overcommit/</guid>
      <description>Linux memory overcommit Linux is generous in terms of memory, it will almost never fail on requests from malloc(3) with friends. What does this mean in practice and how may it be a potential issue?&#xA;In short, overcommit memory means that the system will give the application so much memory it&#39;s asking for, even if the physical memory is not available. How does this work? Well, the requested memory comes with one small restriction; the application is given as much memory it demands if it not going to use it.</description>
    </item>
    <item>
      <title>LDD without LDD</title>
      <link>https://www.marcusfolkesson.se/blog/ldd-without-ldd/</link>
      <pubDate>Fri, 27 Jan 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/ldd-without-ldd/</guid>
      <description>LDD without LDD I often meet colleges at work who gets frustrated when they try to see the shared libraries dependencies for an ELF file and the ldd command is simply stripped out from target. (I do often strip targets :-) )&#xA;The ldd command is not a binary executable but a script that simple calls the runtime dynamic linker with a few environment variables set, and you may do the same!</description>
    </item>
    <item>
      <title>Quickfix in VIM</title>
      <link>https://www.marcusfolkesson.se/blog/quickfix-in-vim/</link>
      <pubDate>Fri, 27 Jan 2017 19:39:34 +0200</pubDate>
      <guid>https://www.marcusfolkesson.se/blog/quickfix-in-vim/</guid>
      <description>Quickfix in VIM One of the most fascinating things with the VIM editor is that you find new features every day, even after many years of heavy usage.&#xA;Quickfix is one of those features.&#xA;Quickfix parse your compiler-output and let you easy navigate to the concerned lines with errors and/or warnings. Great hue?&#xA;How does it work? The builtin command is (surprisingly) make. Just do:&#xA;:make (without bang character!)</description>
    </item>
    <item>
      <title></title>
      <link>https://www.marcusfolkesson.se/notes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/notes/</guid>
      <description>Go 语言学习笔记 Envoy 学习笔记</description>
    </item>
    <item>
      <title></title>
      <link>https://www.marcusfolkesson.se/p/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/p/</guid>
      <description>sdfasf</description>
    </item>
    <item>
      <title></title>
      <link>https://www.marcusfolkesson.se/pages/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/pages/projects/</guid>
      <description> </description>
    </item>
    <item>
      <title></title>
      <link>https://www.marcusfolkesson.se/search/placeholder/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/search/placeholder/</guid>
      <description></description>
    </item>
    <item>
      <title></title>
      <link>https://www.marcusfolkesson.se/styles/write-good/readme/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/styles/write-good/readme/</guid>
      <description>Based on write-good.&#xA;Naive linter for English prose for developers who can&amp;rsquo;t write good and wanna learn to do other stuff good too.&#xA;The MIT License (MIT) Copyright (c) 2014 Brian Ford Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</description>
    </item>
    <item>
      <title>Archive</title>
      <link>https://www.marcusfolkesson.se/pages/archive/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/pages/archive/</guid>
      <description></description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://www.marcusfolkesson.se/pages/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/pages/contact/</guid>
      <description>Please feel free to contact me If you find anything on this website useful, please consider buying me a coffee or drop me an email.&#xA;I&#39;m happy to respond on questions, both technical and personal.&#xA;E-mail:marcus.folkesson&amp;#64;gmail.com IRC:sa7mfo &amp;#64; irc.oftc.net and irc.freenode.net Phone:+46734 23 24 25 Address: MFOConsulting AB Älgafall 8 56491 Bankeryd Sweden Freelancing? I do small well-defined freelance assignments through my company MFOConsulting AB. Typical assignments involve writing a Linux driver for a particular piece of hardware, debugging or pure consultation for embedded Linux systems.</description>
    </item>
    <item>
      <title>Home</title>
      <link>https://www.marcusfolkesson.se/pages/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/pages/about/</guid>
      <description>What is this? This is my attempt to create a blog, at a moderately high technical level, with focus on Linux systems.&#xA;Why? I think you will be better off writing. It gives time for reflection and allow you to &#39;deep dive&#39; into a particular subject.&#xA;Who am I I&#39;m Marcus. A software/hardware engineer with a lot of varying interests. What I spend my time on is either high tech or really old fashioned - nothing in between.</description>
    </item>
    <item>
      <title>My public GPG key</title>
      <link>https://www.marcusfolkesson.se/pages/gpg/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/pages/gpg/</guid>
      <description> -----BEGIN PGP PUBLIC KEY BLOCK----- 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 =RquV -----END PGP PUBLIC KEY BLOCK----- </description>
    </item>
    <item>
      <title>Posts Archive</title>
      <link>https://www.marcusfolkesson.se/archive/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.marcusfolkesson.se/archive/</guid>
      <description></description>
    </item>
  </channel>
</rss>
