Pseudo-random number generators, usually abbreviated as PRNGs, are circuits or algorithms that produce sequences of numbers or bits that look random, even though they are actually generated by a completely deterministic process. In hardware engineering, PRNGs are extremely useful because they can create fast, repeatable, compact, and low-cost streams of random-like data without needing a […]
Setting Up SDR Tools on Raspberry Pi: A Complete Installation Guide
Getting Software Defined Radio (SDR) hardware to work on a Raspberry Pi can be a frustrating experience. Between conflicting library versions, missing dependencies, and the need to compile several components from source, what should be a simple setup often turns into a multi-hour debugging session. To make this process repeatable and reliable, I put together […]
Troubleshooting a Sudden Loss of Apache on macOS
One morning my local Apache server, installed via Homebrew, simply stopped working. The browser refused to open localhost, even though everything had been fine the day before. What followed was a methodical debugging session that taught me a few things about how Homebrew, launchd, and Apache interact on macOS — and how easy it is […]
RETI Instructions
If you spend enough time writing interrupt service routines in low-level embedded code, one tiny instruction shows up again and again: RETI. On paper it looks simple. It means RETurn from Interrupt. In practice, though, that small instruction exposes deep architectural differences between microcontroller families. On some CPUs RETI is a real instruction with distinct […]
Transmitting and Decoding APRS Packets with ADALM PlutoSDR on Mac OS using Python
This post documents an experimental, complete, journey of building an AFSK APRS packet transmitter and receiver using the ADALM PlutoSDR software-defined radio, first in MATLAB and then in Python. I tried to cover everything from generating AX.25 frames, AFSK modulation, hardware connection troubleshooting on macOS, and finally a full packet decoder. What is APRS? APRS […]
Transmitting and Decoding APRS Packets with ADALM PlutoSDR on Raspberry Pi using Python
This post is a Raspberry Pi 5 edition of our AFSK APRS transmitter and decoder project using the ADALM PlutoSDR. We cover everything from scratch: setting up the operating system, installing all dependencies including libiio, SoapySDR and pyadi-iio, connecting the PlutoSDR over USB, and running the full Python transmitter and decoder pipeline. What is APRS? […]
Atomic Sensor Frames: Sending 9-Axis Data with Minimal Skew over Serial
If you have ever worked with inertial measurement units or any other multi-axis sensor, you have probably run into a subtle but important problem: how do you ensure that all nine axis values you read and transmit actually belong to the same moment in time? Let’s see.
Wrapping C and C++ Code for Python
Wrapping native code lets you keep Python’s ergonomics while calling into compiled code for performance-critical paths, hardware drivers, legacy libraries, or numerical algorithms.
RPi5 Boot Error Log
With the idle freeze fixed and persistent journal logging in place, I ran the previous boot error log to see what remained: Six errors, four distinct sources. Here is what each one means and what we did about them. Error 1: alsa-restore.rules — Missing Label What is it? When a sound card is detected, udev […]
Debugging a Raspberry Pi 5 Idle Freeze
Lately I am extensively using Claude from Anthropic for my hobbies and work. This is a live, interactive, debugging session documenting how we (me and Claude) diagnosed and fixed an unexplained system freeze on a Raspberry Pi 5 running Raspberry Pi OS, booting from an NVMe SSD over PCIe.
What Actually Goes Wrong with NVMe
This post documents a complete troubleshooting session getting a Raspberry Pi 5 to boot from a Samsung NVMe SSD running a freshly written Debian Trixie image.
How to avoid automatic change of Raspberry hostname
Few days ago I had to create several systems from one raspbian image. While trying to change hostname for each, I ran into an issue
Fan control with dtoverlay on Raspberry
Another day working a bit for my SA818 radio node project. Today I tried active cooling with a 5V fan driven from RPIs 5V rail and controlled from GPIOs with a MOSFET (2N7002).
How to manage WordPress orphaned taxonomies
While developing my website I frequently got warnings. The one below means WordPress tried to access the property slug of an object that doesn’t exist (is null) and, as mentioned elsewhere, this usually happens when a menu, a snippet or other piece of code references a category that no longer exist.
Python: not enough values to unpack
While creating some code for the Arduino and C struct post, I ran into this issue “not enough values to unpack” and this has to do with Python’s struct format.
Arduino serial data transfer with C structs
While doing some tests with a 9-axis sensor I wnated to read all the values and send them all via an Arduino (or any other μ-controller) serial interface. You generate that data at point “A”, the sensor, and you want that data to arrive at point “B” with minimal delay, for example a computer software […]
Alternative to ssh-copy-id on windows
Lately I am doing a lot of development on Raspberry Pi systems and I use Visual Studio Code Remote Development. This is a neat feature because it allows me to connect from the same platform to multiple systems at once and work in parallel if I need. Visual Studio Code includes a full featured integrated […]
Using lsof
lsof command can show which processes are using which resources. This is extremely useful for troubleshooting. Basic syntax is: Without arguments, it lists all open files on the system (requires root privileges). Common Use Cases and Examples: Find which process is using a file: Find which process is using a port: The above command Lists […]
Attempt to read property “slug” on null
While developing my website I frequently got warnings. When WordPress tries to access the property slug of an object that doesn’t exist (is null), it throws the following (or similar) warning: This usually happens when a menu, a snippet or other piece of code references a category that no longer exist. This means somewhere in […]
Raspberry Pi serial interface issues
There is a problem I forgot to take care before creating the custom image for my radio node project. Programming SA818 module via Raspberry Pi’s UART interface cannot be done unless the UART interface is released from any interaction in console mode. I was banging my head for hours because of sustained DMOERROR message for […]
Cloning a Raspberry Pi SD card
Recently I had to make a bootable SD card for a Raspberry Pi Zero and I faced some issues. I thought to write some hints on how to properly clone and shrink a Pi image on an SD card. Here’s how you can create a compressed ISO (or disk image) from your Raspberry Pi SD […]
Add action button in WordPress code editor toolbar
Most of my website posts that include code use syntaxhighlighter to nicely format code. Unfortunately, you have to manually tag the piece of text as code. I thought it would be nice to have one or more buttons in the classical editor toolbar that will automatically surround the code with needed tags to be displayed […]
How to check the hardware version
Here are some handy commands that can be used to check the hardware version on a Linux-based machine.
Changing Quartus Prime project folder
I want to get back to FPGA design because I have some projects in mind and I did some in the past that were quite fun and very interesting. I am a bit rusty, though, and I am afraid I have to review all my past, and very diluted, experience with FPGAs. This has a […]
Why is journalctl -b -1 not working
Recently I hit a blocker when using journalctl -b -1 did not work. Using the flags ended up in error
NetworkManager connection priority
I recently ran into an issue with my Raspberry-based radio node. I tried to connect to some othet WiFi access points and I realized that I had no idea how to set connection priorities if I have multiple candidates for connection. I was used with wpa-supplicant way of doing things which was just to add […]
How to write to CM108 GPIO from Svxlink
CM108 has a set of four GPIOs that can be used via hidraw. These can be read from or write to.
I2S Raspberry Interface (4)
More work today. Some wires got loose and I did some experiments with .asoundrc and ALSA settings. I added a 39 Ω ballast resistor on SDIN and SDOUT lines and put a ferrite core on both wires. The radio node works as expected, absolutely no issues with one exception, a periodic pop that is audible […]
I2S Raspberry Interface (3)
Update July 11, 2025 Some thoughts and tasks today. The project is the same I2S interface.
Significant Svxlink power consumption
While testing my I2S project I ran into some boot issues on the Raspberry Pi 4 host. For what seemed to be some unknown reasons the boot process was completely chaotic, sometimes running well, sometimes hanging. I banged my head for some time looking for a solution until it came to my mind to change […]