Skip to main content

Posts

Showing posts with the label linux

OpenHamClock Kiosk

For an amateur radio operator, having a real-time dashboard is essential for monitoring band conditions and identifying DX opportunities. While several solutions exist, I recently completed a project centered on OpenHamClock , an open-source, web-based successor to Elwood Downey’s (WB0OEW) original HamClock . My goal was to move beyond simply opening a browser tab and instead create a dedicated, always-on kiosk for my workshop/shack. This setup allows me to monitor live DX cluster spots, PSKReporter reception, and satellite X-ray flux in real-time, helping me decide exactly when to jump into a radio session. Prototype build of OpenHamClock kiosk. The heart of this project is a two-component system: a centralized server and a remote kiosk unit. For the server, I utilized a PC equipped with an AMD Ryzen 7 series CPU and 32GB of RAM. While this machine hosts multiple other services, it serves as the perfect, reliable host for the OpenHamClock backend. The installation process is...

FA-5 VizControl

The BG7TBL FA-5 frequency counter has become recognized as an excellent choice for experimenters and radio enthusiasts, offering high-spec performance comparable to branded units. But it remains remarkably accessible due to its low cost.  FA-5 Frequency counter. The FA-5 has powerful hardware. However, most existing control applications lack a good user experience. Many of them rely on scripting languages, such as Python, while others utilise simple command-line interfaces . These limitations inspired us to create FA-5 VizControl . This native application provides a comprehensive, intuitive, and portable desktop experience for managing the FA-5 . We developed FA-5 VizControl using Lazarus and the FPC ( Free Pascal Compiler ). This choice ensures maximum compatibility and portability. The application functions as a standalone, portable executable on both Linux and Windows operating systems. There is no need for complex installation routines. Users simply download and launch...

Ecowitt weather station to APRS bridge

Ecowitt2APRS is a new open-source Linux service that I have been working on for the past few weeks. This project is designed to seamlessly integrate weather data from Ecowitt compatible professional weather stations into the global Automatic Packet Reporting System Internet Service (APRS-IS) network, transmitting this information in the standardized format of APRS weather packets. APRS, an amateur radio-based system, facilitates real-time tactical digital communications, covering applications such as GPS position reporting and the dissemination of meteorological data. Ecowitt2APRS addresses a specific need within this ecosystem: providing a lightweight and efficient method for weather stations to contribute to this data stream. Live data view from my Ecowitt weather station on aprs.to. The Ecowitt2APRS service is developed as a minimalist daemon for Linux environments. It ingests live weather data from Ecowitt compatible stations, converts it into the required APRS weather pac...

RDS Data Extraction with RFtap and Wireshark

RDS ( Radio Data System ) is a communication protocol standard used for embedding small amounts of digital information in traditional FM radio broadcasts. It enables radio stations to transmit data such as station identification, program information, and traffic updates.  To capture and decode RDS data, one method involves using a Software Defined Radio (SDR) along with GNU Radio and RFtap . GNU Radio provides a framework for creating software radios, while RFtap acts as a bridge between GNU Radio and conventional network monitoring and packet analysis tools like Wireshark . Decoding RDS data using Wireshark. Unfortunately, as of the time of writing, RFtap is no longer being maintained and does not work with the latest version of GNU Radio (version 3.10.10). This post offers guidelines for rebuild and using RFtap with the new GNU Radio release. This post assumes that the reader has access to DVB-T dongles based on the Realtek RTL2832U and a PC running Ubuntu or Debian Linux. For ...

5.1 channel analog audio processor

In this project, we developed a 5.1-channel analog audio processor using PT2322 IC. PT2322 is an inexpensive analog audio processor introduced by Princeton Technology Corporation . It contains 6-channel individual channel attenuators, a 3-way tone control system for front-end speakers, and a 3D audio simulation system.  Assembled 5.1-channel audio processing board. In this design, we combine PT2322 with Arduino Nano and interface it with PC/embedded computing boards through a USB port. Native GTK UI application provides to control all functions of the PT2322 IC. The Arduino Nano can directly plugin to the PT2322 module. There are three push buttons on the panel itself to control the volume and mute the audio. To reduce the cost and minimize the PCB size, we use both SMD and through-hole-type components in this PCB. The dimension of the PCB is 59mm × 60mm. The PCB of this module can directly order from the PCBWay project page . Using the PCBWay service, you can order high-...

Portable Image File (PIF) library for Lazarus and Delphi

Portable Image File (PIF) is an embedded-systems friendly, bitmap-like image format with ease of use and small size. This image format develops by the gfcwfzkm ( aka Pascal ) for low-end embedded systems. The file format and PIF's original implementation are available at https://github.com/gfcwfzkm/PIF-Image-Format . In this project, I developed an open-source library for the above file format to get used in Lazarus and Delphi programming languages.  This PIF library supports Windows and Linux operating systems, including Raspberry Pi OS . Sample application in Linux environment. The library is available at https://github.com/dilshan/pascal-pif-library .  The library methods are self-explanatory, and sample projects are available for Lazarus and Delphi . For example, the following code block demonstrates opening the Portable Image File and displaying it on the TImage . var pifObj: TPortableImageFile; begin pifObj := TPortableImageFile.Create('sample-image.pif'...

Infrared remote control clone utility

IR Clone is an open-source IR remote control analyzer tool. This utility can analyze any IR remote control that modulates the IR signal with a 38kHz carrier signal. This utility has an option to store and retrieve up to 16 IR signals. In addition, it has PC software to analyze and edit captured IR signals. The hardware component of this analyzer is built around the STM8S003F3 MCU. It has 24LC32 EEPROM installed to store the captured IR signals. This unit is designed to operate with a 5V to 9V DC power source or a 3V battery.  Finished prototype of the IR Clone module Operating modes such as capture or replay can be changed using an onboard jumper on the PCB. These operating modes can change at any time without restarting the unit. In addition to the IR clone PCB, the only external component needed to operate this system is a 4×4 matrix keypad . Most of the generally available 4×4 keypads can directly couple with this system. The dimensions of the IR Clone PCB are 41.2mm × 32.1m...

STM8S001J3 based Programmable timer module

Programmable timer lite is a miniature, USB programmable timer module. This module can handle more than 100 alarm configurations and trigger the output channel based on the programmed conditions. The timer module can program using SRIKit 's Timer Controller software. All the timer configurations are store in the EEPROM to prevent the loss of data during power failures. Programmable timer module. We design this module around the STM8S001J3M microcontroller and DS3231 real-time clock. AMS1117-3.3 regulator in this module can handle a maximum of 9V DC input without installing an external heatsink. Bottom side of the timer module These programmable timer modules were specifically developed to handle long-duration alarm configurations which span up to years. Firmware of this timer module develops using SDCC version 3.9. Programming utility is a GUI application and develops using Lazarus and FPC toolchain. Both these projects are built and tested on a 64-bit Linux environment. Th...

Simple I2S stereo decoder with amplifier

In this project, we build a simple I 2 S stereo decoder with an amplifier. To decode I 2 S data we use Princeton Technologies PT8211 16bit DAC. KA2206 audio power amplifier is used as the driver stage of this system. The prototype version of I2S stereo decoder Structure of this I 2 S amplifier is self-explanatory from the schematic. We select PT8211 and KA2206 combination due to lower cost and availability. Unfortunately, PT8211 DIP package is not available in the local market and we use SO package in our prototype. We design PCB for the DIP packages, and therefore we solder PT8211 SO package to PCB using " SO8 to DIP8 " converter. We design this system to work with 9V DC power source but at the prototyping stages, we noticed that it works well with lower DC voltage such as 5V. For the output use any 8Ω or 4Ω (5W or higher rated) full range speaker pair. We test this with 8Ω 8W oval speakers which are commonly found on televisions.

Enable WebRTC on QtWebEngine for Raspberry Pi 3

WebRTC is a web technology to enable peer to peer communication in real-time. It mainly uses to create video conferencing and chat applications using web browsers. In this post, we describe how to enable this technology in QtWebEngine on Raspberry Pi 3 platform. QtWebEngine is an embedded browser component which comes with the Qt framework . This component is based on Google Chromium browser and it supports most of the Chromium features including WebRTC. In PC, WebRTC applications run smoothly on QtWebEngine component. But in Raspberry Pi platform situation is different and none of the WebRTC application is work with the QtWebEngine. The only thing which we can see is a black box in an HTML5 video tag area. At the time of writing this problem exists in Qt version 5.6, 5.7 and 5.8.

ImageHide: Digital image based steganography tool

Steganography is a method of hiding information and one of the techniques is to hide an image inside a "cover image" by without distorting the supplied "cover image". ImageHide is command-line driven console application to perform this task and it is capable to hide/embed a colored or gray-scale image inside another color or gray-scale cover image and/or extract an embedded image from the supplied "cover image". This application is developed using FPC / Lazarus and it can execute on any FPC supported operating system which including Linux, Windows, Mac OS, etc. ImageHide is an open source project and its source code is available at https://github.com/dilshan/image-hide under the terms of GNU General Public License version 3.0 . Compiled binaries of ImageHide are also available for both Linux and Windows operating systems. As an input, this application accepts bitmap, PNG or JPEG image formats and it can export the processed image as bitmap or PNG ...