Marcus Folkesson

Embedded Linux Artist

Naming your serial ports with udev

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. 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. cover

Remotely controlled USB hub

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. My situation For those who haven'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. cover

GNSS spoofing using SDR

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. The best is to not transmit to open air at all, but using coax cables only. cover

Using AI to write me a tool

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. 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. cover

Using socat to bridge interfaces

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. 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. When I say anything, I really mean anything. cover

I2C Bus Recovery

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. cover

What to expect

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. So, what is expect? cover

Repair of my Fluke 179 multimeter

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. Fluke has a lifetime warrenty, but that only applies to the original owner, and I bought it second hand. Troubleshooting Here is what I did to troubleshoot the problem. cover

Running mtest with U-Boot

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. 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 "works most of the time". cover

Determine wakeup cause (ACPI)

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. Let's find out what causes this. Advanced Configuration and Power Interface (ACPI) First a few words about ACPI. 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. cover