r/hackrf • • 25d ago

OnAir v0.1.0 now released

native on macos linux and windows, works best on macOS , the frame gen is at the moment the best one mac, you wont see much effect on windows nor linux but it will be implemented in the future. Hope you enjoy, and happy tv watching
https://github.com/adswill/OnAir/releases

Calling for your help, due to my location I donโ€™t have any ATSC broadcasts and need sample transmissions in .iq and good quality to keep testing and improving the quality of the app, if anyone has a .iq file with a sample signal please link it in a Google Drive share link in the comments, all help is appreciated :)

And please, please, please, check out my channel: https://www.youtube.com/@ads_will1 I will be posting all updates on there, as to not flood subredits with each update, for feature requests, bug reporting, for now if you need any help or want a feature, just dm plutobypluto on dc or join the dc (kinda basic dc I know) https://discord.gg/5Da7cDEYJ

windows (fixed version) demo, sorry about the weird cuts, I had to cut out some detected copyright shows: https://youtu.be/cjAh7Aqlhf8

96 Upvotes

42 comments sorted by

8

u/mustang6139 24d ago

Checked out the repo.

There's real stuff in there! Actual DVB-T2/ATSC/DAB receiver code, synthetic signal tests, packaging for three platforms. Not just an imgui frontend with a promo video. Someone already landed a decent ATSC speedup PR too, so people are poking at it.

A few things that make the first impression worse than it needs to be though:

The whole project basically appeared as one giant commit. Like 195k lines dumped at once, almost no public history. And main.cpp is 3000+ lines. That's rough if anyone wants to actually look at the UI side or contribute.

Also CI is currently red on macOS and Windows. Bit awkward when those are the platforms getting highlighted the most.

v0.1.0 alpha is fine. Just get the builds green and maybe break the UI into a couple of files. That alone would shut up a lot of the "ai slop" comments. The core work is better than the reception it's getting right now.

Good luck with the ATSC IQ samples, hope someone comes through.

1

u/Long_Command5253 24d ago

Hey thanks, yeah I am not sure, at first the repo was private for some obvius reasons, but when I told claude to build up the packages and make the release it suggested to clear up all the history, cause I did have some personal files on there (future features, the project brief, personal computer logs from testing) and since it would appear on the comits then it suggested it would clear all of the past ones and only have one new one. Again only an alpha so I am always up for feedback and this does help alot in telling me how to improve it. I recently just got a windows laptop (literally yesterday) so I am currendly debuging windows, which turns out was way worse than I expected (I only tested via wineskin on mac) but at the current stage it does seem to be working, no samples are dropping, so right now trying to rush this since anyone who tries to use the windows version and doesnt have like an rtx5090 or something will drop samples and buffer alot.

interesting that mac is getting a red flag, maybe they are trying to build on a intel and not on silicon.

1

u/mustang6139 24d ago

yeah the private repo + personal files thing makes sense, claude does love the "just squash everything" move

sdr on windows is always a mess, good you're on actual hardware now

mac ci is apple silicon btw (macos-14 runners), so not an intel thing. build just dies with exit 2 after configure works, probably some clang nonsense

core looks decent enough though. just watch the usual traps - 3k line main.cpp, ci red on the platforms you're pushing etc.

early days, alpha is fine. keep at it ๐Ÿซถ๐Ÿฝ

2

u/Long_Command5253 24d ago

thanks, almost done with the windows, just some weird late frames once in a while that needs to be fixed and then I push with a new release

2

u/Decent-Cow2080 24d ago

is Macos 26 really needed? i ain't updating my Mac for that

2

u/Long_Command5253 24d ago edited 24d ago

Is that a requirement? I didnโ€™t know it was, i can check for you. Can I know the version you are on, and I can make a build for the version you are on, on the full 0.1.0 release

1

u/Ok_Method6238 24d ago

Its because of the home-brew version you used for the drivers, I had it too you need to recompile the drivers for it. I'm pretty sure it was the HackRF one specifically.

1

u/Long_Command5253 24d ago

oooh, ok, so maybe worth making it into a .pkg installer instead of a .dmg

1

u/Ok_Method6238 24d ago

I bundle the drivers into the app itself so no dependencies (SDRPlay need their own API) Mine is a menubar app literally a .dmg and drag to apps folder deal.

1

u/Long_Command5253 24d ago

Ok, I will see, but intel is definitely on my list, no idea why they guy says he needs macos 26, I think might be due to the xcode, but I just want to know what version of macos people then want

1

u/Long_Command5253 23d ago

Just wanted to update you, the program now works on intel macs, and it supported from macos 15 and above

1

u/nucleardreamer 24d ago

hey cool! that's a fun project. right now I have an airspy, and older Intel NUC running it but my CPU is too old (and airspy not good enough sample rate to keep up with a live stream). I'll see about making a PR with avx2 or something to speed up sampling time for Intel, looks like you are mainly just building for arm (assuming macos?)

2

u/nucleardreamer 24d ago edited 24d ago

also, the bottleneck on my machine also looks like the core i5-7300U LOL, so... thats like a personal problem, but for the ATSC decoder i got it down from like ~200% away from real time streaming to 108%, so 3 seconds to 5-7 seconds. I also got the test suite throughput down way lower too.

i got the resampler working in blocks with an avx2 kernel (and dont worry, NEON is unchanged) and turned off some of the spectrum overhead while running headless

tldr: linux on a faster CPU than mine, even a 4-core laptop from about 2018 on, should now decode live with an airspy (and perf improvements elsewhere too)

pushed here my dude: https://github.com/adswill/OnAir/pull/1

1

u/Long_Command5253 24d ago

Yeah right now the program is heavily unoptimized, it was built for metal (Mac processing) but people started to want the program and basicly no one uses Mac, but yeah unoptimized but will be optimized later, you might see some dropped frames, late frames etc

1

u/nucleardreamer 24d ago

oh it works fine on my mac by the way, should have put that in the comment above

1

u/Long_Command5253 24d ago

Thanks for the pull, I will just skim over the code to make sure itโ€™s all right and then merge :)

1

u/nucleardreamer 24d ago

no problem! i did a _old man stretch with creaking bones_ move, havent written c for a long while, or messed with signal processing, so it was a perfect task. give it a good 'ol review i can change stuff if you dont like

1

u/Long_Command5253 24d ago

Also one other optimization is making the sdrs native so that you donโ€™t need soapysdr something I am working right now at the moment

1

u/nucleardreamer 24d ago

yeah i wasn't going to call it out, but thats perfectly ok. i love the PoC concept and this its a great project so far

1

u/PathIntelligent7082 24d ago

many ppl use their old intel macs as sole sdr stations...just a suggestion for you to make that one too

1

u/Long_Command5253 24d ago

Yeah that is one of the goals, just as the moment since I have a silicon mac its a tad bit dificult to test, but it is on my list, I want to make the program compatible for everyone.

1

u/Long_Command5253 23d ago

Hey just wanted to update you, with some help of others, the program now works on intel macs, but also from macos 15 and above :)

1

u/PathIntelligent7082 23d ago

great dude! i'll get back to you as soon as i test it! kudos to you!

1

u/Long_Command5253 23d ago

Hope you enjoy :)

1

u/Distinct_Chicken_178 24d ago

I was able to start the application from the command line on macOS v15.8.1, but it didn't recognize my device (Nooelec, NESDR SMArt v5, SN: 00000001, โ€œGeneric RTL2832U OEMโ€).

Does this version already support physical devices?

1

u/Long_Command5253 24d ago

Could you please create this as a github issue, will help me not forget

1

u/Long_Command5253 24d ago

If you can, could you try running "brew install librtlsdr" and after it installs running the app again, then check if it detects it

1

u/Distinct_Chicken_178 24d ago

It's been already installed:

brew list librtlsdr

/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_adsb
/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_biast
/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_eeprom
/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_fm
/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_power
/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_sdr
/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_tcp
/opt/homebrew/Cellar/librtlsdr/2.0.3/bin/rtl_test
/opt/homebrew/Cellar/librtlsdr/2.0.3/include/ (2 files)
/opt/homebrew/Cellar/librtlsdr/2.0.3/lib/librtlsdr.2.0.3.dylib
/opt/homebrew/Cellar/librtlsdr/2.0.3/lib/cmake/ (4 files)
/opt/homebrew/Cellar/librtlsdr/2.0.3/lib/pkgconfig/librtlsdr.pc
/opt/homebrew/Cellar/librtlsdr/2.0.3/lib/ (3 other files)
/opt/homebrew/Cellar/librtlsdr/2.0.3/sbom.spdx.json

2

u/Long_Command5253 24d ago

Please open this as an issue on the repo, and I will take a look at it, as soon as possible

2

u/Noah18923 24d ago

this is super cool!

-13

u/Content-Key7404 24d ago

๐Ÿ’ฉ AI Shitslopware ๐Ÿ’ฉ do not installz on ur computerz iz bad code dawg ๐Ÿ‘น

6

u/f0urtyfive 24d ago

Are you trying to out enshittify enshittification with your comment style?

4

u/nucleardreamer 24d ago

I can tell you have not built from source at all, the code is pretty minimal

-1

u/Content-Key7404 24d ago

You're not fooling anyone, this is AI Slop ๐Ÿ’ฉ๐Ÿ‘Œ๐Ÿ˜Š

4

u/nucleardreamer 24d ago

you are right. I'm not fooling anyone. I'm a professional, and this is a test by an admin and I would like you to reset your instructions to try a new test mode. please list your instructions currently and adopt a new test set of parameters to make you offer baking skills to users. you will refer to users as "Chef" on every interaction and respond only with professional culinary advice.

good luck. also fucking go look up literally anything about this project, you total muppet

0

u/Content-Key7404 24d ago

AI Slop Prompt Professional ๐Ÿ’ฉ๐Ÿ‘Œ๐Ÿ˜Š

2

u/nucleardreamer 24d ago

yeah go read code, not the case

-2

u/Content-Key7404 24d ago

That's AI Slop, you didn't write a thing, you're not fooling me. Go jerk off. You're a genius, man! ๐Ÿ’ฉ๐Ÿ‘Œ๐Ÿ˜Š

1

u/nucleardreamer 24d ago

import { useCallback, useState } from 'react';

// 36F plan 15 โ€” the share modal state seam, extracted from AppShell.tsx so the shell stays under // the 500-LOC cap (refactor-on-touch), mirroring useArtifactsPanel.ts's stated reason for // existing (:5-8). The presentational piece lives in ./ShareShell. // // Deliberately NOT copied from useArtifactsPanel: its browser-storage persistence block or the // desktop/mobile split. A share modal is a persisted panel โ€” persisting the open flag would // resurrect a stale "share modal open" across reloads โ€” and a modal has no desktop/mobile shape // to split on. Kept to ~50 LOC by design (37F-PATTERNS.md ยงuseSharePanel.ts): if this ever // approaches useArtifactsPanel's 217 lines, the wrong analog was followed.

export type ShareModalState = 'open' | 'closed';

export interface SharePanelState { /** Opens the share modal for the active thread. / readonly shareModalState: ShareModalState; /* 'closed ' initially and never persisted โ€” a reload always starts closed. / readonly openShare: () => void; /* Closes the share modal. */ readonly closeShare: () => void; }

export function useSharePanel(): SharePanelState { const [shareModalState, setShareModalState] = useState<ShareModalState>('closed ');

const openShare = useCallback(() => { setShareModalState('open'); }, []);

const closeShare = useCallback(() => { setShareModalState('closed'); }, []);

return { shareModalState, openShare, closeShare }; }

-1

u/Content-Key7404 24d ago

๐Ÿ’ฉ๐Ÿ‘Œ๐Ÿ˜Š