Couldnt patch the ads-b map view inside the rust gui app so i took a U turn with the porject and went all in for an Electron App as the gui for the ez-sdr daemon.
mockup waterfall
Couldnt patch the ads-b map view inside the rust gui app so i took a U turn with the porject and went all in for an Electron App as the gui for the ez-sdr daemon.
mockup waterfall
Not much to be written, just some painful and slow progress with decoding meteor imagery.
I finally tested ez-sdr’s satellite decoding with a real recording I took yesterday on an Meteor M2-4 88* pass, and it’s… not great, especially compared to SatDump’s decode.
(Ez-sdr is the first image, SatDump is the second image.)
What troubles me the most is that I literally stole SatDump’s homework equation by equation and rewrote it in Rust, and it still looks like shite lol.
Its for sure progress and im happy with that lol
Considering that the last two LRPT satellites that still transmit are Meteor m2-3 and Meteor m2-4 i did efforts to make decoding them as fast as possible, especially cf32, cs16 and cs8 decoding.
Now i didnt really get to test the upgrades.. because i didnt get to FINISH the upgrades but i DID finish the web ui remote from the last devlog.
(I am posting this devlog WITHOUT a finished feature because im getting close to the 10 hour cap)
Also ive went outside, touched grass and snatched a good cs32 from meteor m2-4 so i actually have what to test the decoding on.
Fully decoupled Ez-sdr from Ez-gui (the Rust UI), effectively turning Ez-sdr into a headless project. This allows Ez-sdr to be coupled to multiple channels:
This decoupling also exposes an API, allowing you to integrate and use Ez-sdr functionalities on the go within your own applications and projects.
Boot chain. Started as a 16-bit MBR sector that set VGA mode 3 and printed “Hello, Amethyst!” via BIOS teletype. Added protected mode (A20 gate, GDT, CR0.PE, far jump to [BITS 32], direct 0xB8000 VGA writes replacing BIOS calls), then long mode (PAE paging, identity-mapped first 1GB, EFER.LME). Later split the monolithic boot.asm into stage1.asm (real→protected→long mode handoff) + kernel.asm (%included, everything from protected mode on) — that was “Cleaned codebase”; “Organized src/” was purely a file move (src/boot/kernel.asm → src/kernel/kernel.asm), no logic change.
Shell core. echo came first, then run — decodes a hex-byte string into a scratch buffer and calls into it directly, no sandboxing, on purpose. “Added more commands” was one big commit landing nine at once: clear, help, reboot, halt, mem, peek, poke, cpuid, uptime, shutdown.
ACPI. “Improved shutdown” was misleadingly named — it’s where real ACPI support landed: RSDP scanning, RSDT/XSDT parsing with checksum validation, a brute-force table scan fallback, _S5 AML decoding, and the acpi command to probe/display it all. This is what makes shutdown actually power off real hardware instead of just halting.
UI/UX. color added named presets (red/green/blue/yellow/white) plus raw hex attribute bytes, with input validation and a usage message. Arrow-key navigation added cursor movement, word-jump (Ctrl+arrow), selection, insert/delete-at-cursor, and full input-line redraw logic — the single largest diff in the history (~343 lines). Then PS/2 mouse cursor support, scrolling, and scrollback.
Later additions. date/time, sysinfo (cpu/ram/gpu/general, using the BIOS memory map stage1 captures in real mode), draw. “Doubled stage1 budget; Fixed bugs” doubled KERNEL_SECTORS 16→32 (and the matching -boot-load-size/times padding) to make room for growth, and in the same commit reworked help to print aligned two-column output with per-command descriptions (command_descriptions table) and tightened color’s argument validation.
Infra. Hybrid BIOS+UEFI boot support: uefi.asm linked as a PE32+ EFI app, packed into a FAT ESP image, combined with the BIOS MBR into one hybrid ISO, plus a raw .img for USB writes and three separate QEMU run scripts for each boot path.
Previously in devlog #1: Boot chain transitioned from 16-bit real mode to 64-bit long mode; shell got core commands (echo, run, clear, mem, peek/poke, cpuid, uptime); ACPI power-off enabled true hardware shutdown; UI/UX gained text input, PS/2 mouse cursor, scrolling, and draw/sysinfo; infrastructure achieved hybrid BIOS+UEFI boot.
Codebase organization. The second “Organized src/” commit dismantled the monolithic kernel.asm by extracting components into modular topic files (%included under defs.inc.asm, entry.asm, interrupts.asm, input.asm, display.asm, data_strings.asm, data_commands.asm, and command handlers divided by category).
Shell features. “Added command history” implemented a 16-slot ring buffer for commands up to 128 bytes each. Arrow Up recalls older lines while caching the current unsaved prompt; Arrow Down moves back forward, restoring the saved prompt at position 0, with cursor positioning aligned to the end of the text. Shift+arrow keys are bypassed to maintain viewport scrollback.
Calculator. “Added calc command” introduced signed decimal parsing (parse_dec_arg) and printing to support signed 64-bit integer binary operations (+, -, *, /, %). It also implements an integer square root (isqrt64) working as a prefix or postfix (calc sqrt N or calc N sqrt) with error-checking for division-by-zero and negative parameters.
Infra & Licensing. “Updated LICENSE” adopted the custom TreeSoft Open Source License. “Added release workflow” standardized output file names to lowercase kebab-case (amethyst-os.iso/.img) and introduced a GitHub Actions pipeline that builds both ISO and raw USB images on ubuntu-latest, calculates SHA256 checksums, and publishes nightly prereleases via the GitHub CLI.
Yet another from-scratch redesign because lately most of the app started feeling bloated and hard to use for beginners (which defeats the entire purpose of ez-sdr, which is meant to be easy. Therefore i moved most of the unnecessary stuff in advanced and other tabs. Also patched a lot of bugs.
Full UI redesign + a ton of new features:
I know how hard is it to get started with software defined radios. I went through the hassle of being a complete beginner and having to deal with sketchy blogs and UIs of apps older than most of us participating in this hackaton, and so I tried to build an all-in-one SDR app with most of the cool things you can get from the average RTL-SDR kit: plane tracking, listening to ATC and some other cool frequencies, satellite signal capturing, decoding and tracking, and many more in one unified app interface. I originally intended to do ALL this in Python, but it was way too slow and crashed during DSP, so I had to rewrite it fully in Rust. Problem is that I don’t really know Rust (and basically anything lower level than Python) so props on kimi k2.6 who handled the whole rewrite flawlessly.
There’s still many things to improve on this, and, more importantly.. a ton of testing and trial and error
Basic showcase/walk-through script now on GH
Wrote README.md and published the client-side demo on https://www.lupc.xyz/praydb-demo
Little introduction to this project: PrayDB is a dumb idea that an OpenClaw agent jokingly gave to me on a Saturday afternoon. Who the fuck isn’t bored of MySQL, Mongo, and others? We need a CHANGE. As we can all see, the world is leaning towards using AI in pretty much everything… now why wouldn’t you want an LLM handling your super-duper-important database with super-duper-important user data? (I know this is dumb.) Therefore, I present to you PrayDB: the only DB that introduces gambling to data storage.