SDR TV: watching over-the-air ATSC TV on MacOS ( for now ) with a HackRF One

SDR TV: watching over-the-air ATSC TV on MacOS ( for now ) with a HackRF One

So, I'm sure that more than a few of us have an HackRF One, or PortaPack sitting in a drawer or cabinet or storage, dusty and unused. I decided to do something a bit stupid, a bit fun, so that you can blow off the dust and use your $300+ SDR for a bit of entertainment. So next in my "fun things to do with hardware you already have!" list is...

I've been working on SDR TV, a macOS app that turns a HackRF One into a full ATSC 1.0 TV tuner. It demodulates the 8VSB signal in software and plays live broadcast TV with a guide, captions and recording.

The TV Guide on the SDR-TV

What it does

  • Software 8VSB demodulator with an adaptive equalizer for multipath, plus Reed-Solomon and trellis decoding
  • One-minute channel scan that rates each station's reception (Excellent, Good, Poor)
  • MPEG-2, H.264 and HEVC video; AC-3, AAC and MPEG audio
  • Closed captions (CEA-608/708), program guide from the broadcast (PSIP), recording to .ts
  • Fast channel changes, including near-instant switching between subchannels

Channel scanning/list w/ Signal Strength

Hardware

  • HackRF One, or a PortaPack in HackRF mode
  • A TV antenna. A telescoping whip on the SMA works for strong stations; turn it horizontal, since US TV is horizontally polarized
  • Apple Silicon Mac, macOS 14 or later

Status

This is an early alpha (v0.5.1). It is macOS only for now; Windows and Linux versions are planned and I won't call it 1.0 until all three are supported and built. ATSC 3.0 is not supported because encryption and closed ecosystem make it too difficult for me to do it. BOOooooo! Proprietary formats suck, and don't belong on over-the-air TV.

I'd especially like reception reports: your antenna, your distance from the towers, and which stations lock! In theory, all you need is an Apple Silicon machine with enough horsepower, and an antenna that can handle most of the band + HackRF. I'll also work on adding RTL-SDR in the near future.

GitHub (source and download): https://github.com/martinbogo/sdr-tv

Free for noncommercial use (PolyForm Noncommercial 1.0.0).

reddit.com
u/martinbogo — 5 days ago

Wonderscope - An RS485/CANBUS web interface scanner for Waveshare's $19 DIN mounted ESP32-S3

Okay, new day, new tool, new piece of neat hardware... this time from Waveshare... who seem to be releasing a lot of useful hacker-friendly hardware lately. This particular useful bit of kit is only ~$20 but comes with a TRULY awful basic firmware, and almost no documentation. I figured I'd fix that.

Comes with/without SMA connector...

Wonderscope is an open-source firmware for the Waveshare ESP32-S3-RS485-CAN ( alphabet soup of a name ) which is a DIN-rail ESP32-S3 module with isolated RS485 and CAN ports. It turns the module into a bus monitor and configuration tool that you use from a browser over Wi-Fi, or from a text console over USB serial. Convenient, since it's DIN-rail mountable and a lot of my solar controller -and- my e-bike setup is both RS485 and CANbus!

Wonderscope ( dark mode ) in action

On RS485 it sniffs Modbus RTU traffic, scans for devices across baud rates and parity settings, identifies them, and reads and writes registers and coils. On CAN it detects the bitrate, keeps a table of the identifiers it sees with message rates and changed bytes highlighted, and decodes CANopen and J1939. Devices found by scanning, or by watching existing traffic between other nodes, appear on a map where you can label them, poll values and change configuration.

CAN starts in listen-only mode, so the board does not acknowledge or transmit anything until you switch it to active mode. You can connect it to an unfamiliar bus, see what is there, and then decide whether to talk to anything. The identifier table is protocol-independent, which helps when working out a proprietary CAN protocol like the one on some of those no-name solar MPPT inverters from defunct companies I work on.

The module takes 7 to 36 V, has termination jumpers for both buses, and fits on a DIN rail, so it can stay installed in a panel as a permanent monitor. Nothing needs to be installed on the computer you use to view it ... everything is contained in the ESP32.

The module has some free GPIO pins in it, so I'll continue to add features as I go along. One of my top priorities is a voltage monitor, and maybe a signal analyzer/scope and adding i2c and SPI support since the pins have some PIO ability - not as good as the RP2050, but still pretty good.

Source, release binaries and screenshots:

https://github.com/martinbogo/wonderscope

Hardware: https://www.amazon.com/dp/B0FNCWZ3D1

reddit.com
u/martinbogo — 6 days ago
▲ 10 r/gopro

GoPro ONYX firmware for Hero 5

So I bet you haven’t seen anything like this before. I have reverse engineered both the RTOS and the Linux OS on the older GoPro hero 5. There’s very little room left in there, so I have to be very careful about how I add new features.

But new features I have indeed added. Welcome to the ONYX enhanced firmware for Hero 5 Black. As soon as I have the four basic things I wanted to add implemented, I will put together both the Windows and MacOS programs that control and install the firmware on my GitHub.

right now it’s a lot of hand written assembly code, but my hope is that I can take what I learned and turn it into functions and libraries that other people can take advantage of to modify the camera as they want to as well.

The 4 new core features I am adding to start with are:

Manual camera controls for focus and exposure
Stacking exposure ( for astronomy / low light ) and In-Camera Night effects ( basically stacking in different modes )
Scheduled Capture / TrailCam / Motion triggered capture
SSH / Console access to Linux via USB and WiFi

u/martinbogo — 10 days ago
▲ 7 r/gopro+1 crossposts

I have unlocked the GoPro Hero 5 firmware... and added SSH

I know it's an older camera, but the Hero5 Black is a venerable little beast of a platform... and I've managed to finally get SSH, console, and I'm working on USB video streaming/webcam OVC support.

For now it needs a Windows/MacOS/Linux desktop app. There isn't a TON of RAM available in the Hero5 Black and I have to be super light weight about what I add in there. When it's not being used, 'dropbear' ssh is turned off to save memory. But my intention is to get a USB networking + lightweight webserver in there to do the same debugging and control.

I'll never be able to bring it up to parity with everything the modern GoPro Hero cams can do, but my short term goals are:

  • USB tethered webcam ( no more WiFi ridiculousness )
  • Manual control for camera parameters via the app
  • Stacked exposure mode for astronomy, and for "night shoot" style modes
  • Motion-lapse / Trail-cam ( detect motion to snap short video segments / exposures )

https://preview.redd.it/q3jrnp8lc3th1.png?width=1536&format=png&auto=webp&s=6992fa87a94838a8613890c885001fec39c8dd73

reddit.com
u/martinbogo — 13 days ago

One of my favorite "fast cut" scenes in the movie... Rocky being thoughtful

Ryland's wrist computer on spacesuit, showing 21.1 kPa pressure and 22C temperature

A lot of people in the audience may have missed why Ryland was blown back from the airlock when he opened it into the second tunnel that Rocky made...

His side of the airlock was under vacuum. Rocky had already analyzed the atmosphere, pressure, and temperature the humans used, and provided it. When Ryland opened the airlock, it unexpectedly pressurized and threw him back.

... another little "The Martian" nod, in a way ...

Anyway, my favorite image from that scene is included above. It shows the wrist computer, showing that Ryland has plenty of O2 reserve in his suit, a full battery, 21.1 kPa of atmosphere and of course 22C. Normal sea level pressure is 101.3 kPa on Earth, and in the book ( and movie ) the Hail Mary is kept at lower pressure to reduce stresses on the ship and save on mass.

Thing is, the atmosphere in the Hail Mary is PURE OXYGEN at 20% of Earth sea level normal because it's the correct partial pressure. Talk about attention to detail. No Nitrogen, of course, which the Taumoeba took advantage of.

And yes, if you look very closely, this prop is 3D printed and painted ( obviously ) since it would only be on screen for moments. Pretty clever, SFX crew. Nicely done.

reddit.com
u/martinbogo — 4 months ago

A neat little observation at the end of PHM - PLANTS

Earlier in the film, during the centrifuge scene, we get a brief glimpse of some plants. A nod to The Martian and something that was absent in the book. I think from now on in Andy's books spaceships always have plants onboard as a backup.

At the end of the film it means that Ryland has plants in his house. Just a few houseplants ( goodness knows it's not that he is a botanist or anything, and he doesn't have botany powers to fear! )

It's a nice touch. Even if he does kill his houseplants. *chuckle*

https://preview.redd.it/j5j1vcoftc5h1.png?width=1946&format=png&auto=webp&s=734e5b699473ffc55480bf193639fb2987a4a8aa

https://preview.redd.it/bqw0onggtc5h1.png?width=2546&format=png&auto=webp&s=fbbb46a069f023f1c038e527380420ab15781e30

https://preview.redd.it/te8if5vgtc5h1.png?width=1994&format=png&auto=webp&s=b413e114fe84fa7241e99e7c86175d74aa42e509

reddit.com
u/martinbogo — 4 months ago
▲ 74 r/AnycubicKobraS1Max+2 crossposts

Rinkhals June release is out (and a quick hello from the new maintainer)

Hey everyone, quick intro and announcing the June release of Rinkhals

Hi, I'm the new maintainer

Quick intro before the release notes. I'm /u/martinbogo. About a month ago Julien (the original creator and longtime maintainer of Rinkhals) asked if I'd take over the day-to-day work on the project, and I said yes. So if you've seen new activity on the GitHub org or in Discord and wondered what was up, that's it. Julien is still around and supportive of the transition. Everything is being moved into the rinkhals-community GitHub org so the project no longer depends on one person's account and future maintainers can keep it going.

Nothing about Rinkhals itself is changing in a "new owner shows up and breaks everything" way. Same code, same features, same per-printer compatibility matrix. Just more hands keeping it healthy.

If you're new here: Rinkhals is a community-maintained custom firmware layer for the Anycubic Kobra printers (K2 Pro, K3, K3 Max, K3 V2, Kobra S1, Kobra S1 Max). It puts Mainsail, Fluidd, Moonraker, and a bunch of quality-of-life patches on top of Anycubic's stock firmware without flashing the MCU or doing anything you can't undo.

What's in the June release (20260601_01)

This one's a chunky update. Highlights:

Live Z-offset adjustment is back in Mainsail during prints. This one's bugged people for ages. Once leveling set a non-zero offset, the Z-offset control just vanished from Mainsail. Turned out it was a missing field in what GoKlipper exposes (stepper_z.endstop_pin), and the Moonraker layer now injects it so Mainsail can render the control again.

Kobra S1 firmware 2.7.2.1 is supported. If you already upgraded your KS1 to 2.7.2.1, you no longer need that .enable-rinkhals USB marker file to boot Rinkhals.

New opt-in Firmware Collector app. Helps the project catch new Anycubic firmware drops faster by asking Anycubic's OTA broker once a day if there's a newer version, and reporting only the public download URL and version metadata to the community archive. No certificates, no account info, no personal data. There's a dry-run mode so you can see exactly what would be uploaded before turning it on.

MMU ACE auto-feed is smarter. It used to pick the first slot in the mapping table regardless of what your slicer actually wanted, which on single-color Orca prints meant it loaded the wrong filament, extruded briefly, then had to unload and switch. Now it reads the slicer's actual tool list and picks correctly.

New hostname and DNS app. Sets your printer's hostname, advertises it via mDNS so kobra-ks1.local just works on your LAN, and registers with the router via DHCP. If you don't pick a name it makes one up like kobra-ks1-a4f7 so multiple printers on the same network stop colliding.

DNS resolver actually works now. The previous setup ended up preferring public DNS over the router's DNS, which broke local-network name resolution in subtle ways. The fix makes the DNS chain behave like a normal Linux box.

SWU installer trims old Rinkhals installs. Keeps only the current and one previous, frees up to ~2.6 GB of /useremain space across an upgrade. Useful if your printer was getting low on space from accumulated updates.

A bunch of smaller fixes for the touch UI, vanilla Klipper compatibility, and config parsing on the larger printers.

Full release notes with every entry, contributor credits, and the supported firmware matrix per model:

https://github.com/rinkhals-community/Rinkhals/releases/tag/20260601_01

Heads up for Kobra S1 Max owners

If you have a KS1M specifically, install 20260601_02 instead of _01. That's a small hotfix we cut a couple days after the main release to deal with a GoKlipper bug that hangs Mainsail on the first Home All click. Same tag list on GitHub, just one above. If you're on any other Kobra model, _01 is the one you want and there's no reason to install _02.

Where to ask things, report bugs, contribute

GitHub: https://github.com/rinkhals-community/Rinkhals (issues and PRs welcome)

Discord: https://discord.gg/bQcrsteFGU (this is where most of the active conversation happens)

Docs: in the repo's docs/ folder, also served at our docs site

Thanks to Julien for trusting me with this, thanks to everyone who's been contributing PRs and bug reports, and thanks for using Rinkhals. If you hit something weird with this release let us know in the issues or on Discord. Happy printing.

/u/martinbogo

u/martinbogo — 4 months ago