enjoing 16bit micros, gentoo linux and opensource for the past two decades

the lab

nicely kitted out electronics lab for prototype building

great quality lab equipment is used for all the design, building, debug or reverse-engineer tasks

  • two Fluke 189 true rms multimeters
  • Keysight U1733C RLC meter
  • Fluke 190-202 scopemeter with two isolated channels
  • HackRF One, SDRPlay RSPdx software defined RX and TX
  • Flir E60 thermal imaging camera for defect localization
  • Instek PST-3201 triple output programmable power supply
  • Rigol DG2021A signal generator
  • Digital Inspection Microscope from AmScope
  • an ever-growing local inventory of electronic components
  • multiple signal analizers, jtag programmers
  • around 20 different devboards for microcontrollers from Texas Instruments and Microchip

these tools provide enough flexibility so that any task can be performed in multiple ways.

a signal analizer comes in handy when a time-critical process cannot be interrupted by a debugger, a combination of signal generator, external power source or a devboard is perfect when subcircuits need to be tested outside their enclosure, a defective component can always be found by some of it's telltale signs - be it smoke signals, heat, lack of electrons or the equivalent of a printf().

projects

showcase of embedded projects

atlas430

library of HAL functions that supports around 320 different MSP430 microcontrollers

great tool for quick prototyping and for switching from one micro to another.

setting up the system and aux clocks, any number of uart or spi master channels, an i2c connection - all happen in a few lines of code

automated datasheet parsing based on bash scripts was used to generate pin initialization functions for all the supported microcontrollers

open-source firmware link to repo



Engine ECU signal acquisition tool

set of multiple modules that allow all analog signals generated and received by a vehicle's Engine Electronic Control Unit to be captured

can either be used as a testing jig for ECUs or as a low level diagnostic tool in which a known good set of signals can be used as reference

a number of filters and buffers are used to protect the ADCs from transient spikes generated by all inductive loads

link to repo link to images



sigdup

reproduce 8 channels of logic signals captured by sigrok or pulseview on the pins of a microcontroller

good for replicating exact signals that reveal flaws in system inputs - basically a hardware fuzzer

(Fuzz testing or Fuzzing is a Black Box software testing technique, which basically consists in finding implementation bugs using malformed/semi-malformed data injection in an automated fashion)

open-source pc console application + firmware

link to repo link to images



7000 jig

new functionality and firmware from scratch had to be written for about a dozen different meters that provide measurements of liquid characteristics

this jig can interact with all of them providing both Proof of Concept for the new features and a platform for unit-testing every time new meter firmware is built

later a linux GUI was developed for easy interaction via a raspberry PI-powered, touch-enabled display

closed-source linux pc application + firmware, hardware design

link to images & videos



proto430

UNDER DEVELOPMENT

TI Booster-Pack compatible development board that provides the following features: 3v3 (up to 0.5A) i2c and spi connectivity, 5v (up to 1A) spi connectivity, temperature compensated RTC, Microchip EERAM via SPI (48LM01 family), Cypress FRAM via i2c (FM24V10 family), rotary encoder, IR receiver

open-source firmware, hardware design. links to repo images



lemidi

small device that allows 90's PC hardware to work with modern USB joysticks. in the 90's all joysticks/gamepads were designed to be plugged into the midi port provided by the soundcards of the era.

this device provides a USB host interface, gets the positional information from the modern joystick and simulates an analog joystick on it's 'midi' output. all that in under 5ms of processing time.

open-source hardware design + firmware

link to images link to repo



µCurrent controller

mod to Dave Jones's µCurrent device that replaces the coin-cell with an intelligent power delivery module that has auto-power-off, an 16bit ADC and serial connectivity

open-source hardware design + firmware

link to images link to repo



ampy

a highly-modular audio quad amplifier made from scratch that has a 5 channel mixer, variable front-rear panning and can be controlled via an infrared remote or a PC application via bluetooth

a total of three microcontrollers were inside this amp, all supervising different subsystems

on the pc side, the popular alsamixer linux application was forked and modified to communicate over bluetooth with the amp instead of using a local soundcard. it was able to set the volume for all channels (all with separate balance control), the front-rear pan and toggle the switches present on the power amp board.

open-source linux application + hardware design + firmware

link to images link to repo



tracy

dissapointed by a 100EUR commercial UK-made tracking device I decided to make my own

worked great for a few European trips, but 2G gprs connectivity got removed in most countries by 2019, so a new design based on a different modem is needed for roaming with this device

open-source hardware design + firmware + web scripts

link to images link to repo link to manual



openchronos-rfsw

fork of the openchronos project that runs on a Texas Instruments ez430-chronos development board/watch

a new menu page was added from which RF commands can be sent out via the onboard RF transceiver to Intertechno home-automation modules

the Intertechno protocol was reverse-engineered and implemented as msp430/arduino library so it can be used with non-RF capable microcontrollers. a small external module (or even the original remote control) can be used to send out the OOK signals on a 433MHz carrier

open-source firmware link to images link to repo



target butler

sound wave triangulation used to detect location of arrow strikes on a 60cm FITA archery target face

project was properly detecting the strike location in brand-new targets, but not in used ones where material is no longer homogeneous

open-source hardware + firmware link to repo

projects

showcase of open-source linux projects

thermal processing panel

a viewer/analyzer of thermal images generated by infrared cameras

It aims to be a rewrite of a project of mine from around 2000 with the same name hosted on sourceforge. The old project was Windows 95-XP oriented and it was written in Borland C++

This new iteration targets Linux, but the code should be quite OS agnostic since the GUI itself comes with backends for a large number of graphic environments. in this case, the Dear ImGui-based interface uses an OpenGL 3.x backend. rendering is keyboard/mouse event driven for very low power requirements.

open-source software link to repo overview sample report

magic carpet 2 - porting effort

Magic Carpet is a game that has marked my childhood. With great surprise I found that someone did god's work and disassembled then decompiled the game enough to be compilable on modern platforms.

after a lot of probing in the least readable code ever encountered I understood how creatures are managed by the engine and went ahead and added full spatial management of the sounds produced by them during gameplay, thus obtaining a completely new level of immersion with the help of the OpenAL API.

my modifications include the glue logic needed for OpenAL-soft, support for modern joysticks and gamepads (by simulating mouse and keyboard events), haptics, support for playing CD-based audio tracks (for narrator speech), ImGui interface for debugging of my code as well as multiple bug fixes.

open-source software link to repo

multilingual aeronautical dictionary - data conversion

I found this unpublished book written in the 90s on my late father's laptop and decided to convert the information into databases that can be used with third-party dictionary software.

the project is dedicated to family friend and co-author of the work, Mr. Cornel Oprișiu.

link to repo

simple catalyst

Gentoo-based livecd creator tool

after using Gentoo's catalyst program for the last few years I got tired to keep patching every new version of it with the changes I needed, so i wrote a much simplified tool that does the job of creating a small livecd iso image.

does not support cross-compiling, multiple loop types or multiple bootloaders nor does it compile a kernel for you. it just takes a stage3 image and a portage snapshot, a few spec files as input and compiles whatever packages are specified, cleans up things and provides the iso. magic, I tell you.

open-source software link to repo link to latest livecd



iotcpd

a generic STDIO to TCP redirector daemon.

it can start multiple identical non-networking enabled daemons that only interact via stdin/stdout and query them based on requests received via TCP.

the request is sent to the stdin of one of the daemons that is available and the reply from its stdout is then sent to the requester via TCP. the connection is then torn down. basically an inetd/xinetd/tcpserver on crack.

epoll API functions are used to handle incoming connections.

open-source software link to repo



cwiticald

an Entropy Gathering Daemon that provides a random stream generated by a USB TrueRNG device via TCP

cwiticald reads blocks of 2500 bytes from /dev/truerng, verifies their compliance against FIPS 140-1 and FIPS 140-2 tests, fills up a large buffer and provides it to clients that connect to it via TCPv4 or TCPv6.

open-source software link to repo



daemontools-scripts

collection of init scripts to be used in conjunction with DJBerstein's daemontools package

also provides initial process context switching for selinux environments

open-source software link to repo



laboule

the iptables chain manager for impolite IPs

daemonized bash script that manages an iptables chain and can ban IPs for incrementaly bigger timeframes

open-source software link to repo