Hacker News new | comments | show | ask | jobs | submit login
Show HN: Record and share police/fire radio systems (openmhz.com)
102 points by robotastic on Apr 16, 2017 | hide | past | web | favorite | 46 comments

If you are interested in trying to listen your local radio system, try out Trunk Recorder: https://github.com/robotastic/trunk-recorder It works with the cheap $20 RTL-SDR dongles.

Cool. Can I use a raspberry pi & one of those RTL-SDRs to replace the functionality of a typical hardware police scanner? Has anyone created images with all the software set up or is it easy-ish to get it set up. I have unix experience.

Aha! Now that I look at github, it's all pretty clear. Great work!

It would probably work pretty good for that. If you were just trying to listen to one talkgroup at a time, the raspberry pi should have enough CPU. Let me know how it goes! I happy to help patch things up to get this working.

OK. I'll get in touch via email. Thanks for the offer!

Cool! I last played with it a couple of years ago. Will have to mess with it again. Great work!

Do you know if the newer versions of RPi or other small boards have enough power to run this (i.e. dedicated RX feed nodes sort of like the ADSB RX nodes)? I know DSD is pretty processor intensive.

Thanks! So I have been playing with it on a RPi3. There are instructions here on how to build for the RPi: https://blog.hypriot.com/post/building-a-64bit-docker-os-for...

It has about enough CPU to handle recording about 2 streams at the same time. I think part of the problem is that Raspbian does not have the GCC flags optimized for the processor in the RPi3 and doesn't have 64bit enabled. I played a little with this image: https://blog.hypriot.com/post/building-a-64bit-docker-os-for... and it seemed to help a bit, but I didn't see huge gains.

People are using it with the ODroid, and I think they are able to do about 4 simultaneous recordings at the same time.

There is also this Rust based P25 decoder that I have been wanting to give a try: https://github.com/kchmck/p25rx It is a ground up re-write that doesn't need Gnuradio, so it could be pretty efficient.

Are you using polyphase channelizer now, as opposed to individual XFIR tuners? If so, does that still provide better performance given sparsely occupied channels?

Unfortunately, I wasn't able to find a nice generic way to make it easy to configure the PFBs. There is a good thread on it here, with some sample code: https://github.com/robotastic/trunk-recorder/issues/76 If I can get a block of free time I am going to try and take another tilt at it.

I did switch to FFT based filters and that helped a lot. CPU requirements are a lot less. Using RTLs with 2M sample size, instead of SDR more bandwidth also helps. It is a poor mans version of HW-based channelization.

I've used Raspberry Pis for this, but they tended to be bulky and overkill - the "Banana Pi Zero" is what I've been using lately. Combined with a PoE splitter (some have micro-usb, you can plug directly into the board), this works great - no more coax losses!

I use one for SDR playing, and one for receiving OTA ATSC and streaming to Kodi. I suppose I could have also installed a USB hub and run them both (or more) from one board.

Would love to know more about OTA ATSC on Raspberry/Banana Pi -- everything I read tends to say that these ARM-based boards are good for playback only.

I'm using a K-World ATSC Tuner[1] on an Orange Pi Zero[2] (not Banana Pi as previously mentioned). Armbian[3] nightly installs with no modifications, and then Mythbackend[4] is installed using apt-get.

I bound to the machine's IP instead of localhost, and then was able to enter that into Kodi, where a list of TV stations Myth found appeared. It was surprisingly easy! I haven't had any issues with stuttering or skipping when streaming to a single Kodi instance - haven't tried any more than that.

[1] https://www.linuxtv.org/wiki/index.php/KWorld_ATSC_340U

[2] http://www.orangepi.org/orangepizero/

[3] https://www.armbian.com/orange-pi-zero/

[4] https://www.mythtv.org/wiki/Mythbackend

Banana Pi Zero? What board is that? (I've been experimenting with various board for a project, so genuinely interested if this isn't a typo)

I'm sorry, it's an "Orange Pi Zero"[1] that I'm using, not a "Banana Pi Zero". I've gone through so many of these dev boards that it's hard to keep them all straight!

[1] http://www.orangepi.org/orangepizero/

Ah ha, thanks - I actually own two of those! They are awesome little boards, except for the wifi which is borderline unusable.

Thanks - but which one is the zero?

You have any specific RTL-SDR dongles to recommend for beginners?

Thanks a lot for the recommendation! I got the NooElec NESDR SMArt and it's working perfectly! Now to build my own antenna.

Interesting. I thought that Germany was the last holdout of analog unencrypted cop radio - we switched to TETRA (digital and especially encrypted) some years ago.

Brings back some fun memories...

We have unencrypted police radio around here, but the most common thing you hear the cops say to each other is "Call me on my cell." Yay, transparency.

Certainly anti-transparency, but I'd say it's probably just easier for them. With a mobile (cell) phone call they can go hands free and talk in real-time in full duplex. That sounds better than waiting for the other party to finish and then pressing a button to talk to them... and using radio lingo.

I've been dabbling in this area with a friend and this+trunk-recorder looks amazing.

The other solutions we ran across (Unitrunker, DSDPlus) are all built on rickety virtual audio cables running in Windows. They _work_, but just barely and are very brittle.

This works well; at least version 2 when I last tried it in the fall:


Something trunk-recorder does that sdrtrunk doesn't (appear) to do is work with multiple radios simultaneously. Each cheap SDR is only capable of receiving like 2MHz at a time, but if I combine like 6 of em I can cover most of the local trunked emergency radio system

Actually sdrtrunk does claim to support multiple dongles, though I have not verified the functionality. I tried it with an Airspy (10 MHz BW) so I did not need the multiple SDR support.

Are you saying 6 is all you need for most locales? Or that is the case in your area?

sorry, should have been more clear. 6 was what I need for my area.

Somewhat tangential, really glad people do this type of thing. I have an app (Scanner Radio) and I have it set to trigger an alert when a channel hits a predefined number of listeners, aka something bad going down.

This is the amazing power of software defined radio. My favorite is to pick your 4 or 5 favorite FM radio stations and then have your 'radio' automatically play only ones that are not playing commercials. :-)

How would you know when it is playing a commercial? Commercials are at predefined times? There is a DB of the times? Or the software just figures out its a commercial (higher volume?)

for 70's/80's rock its fairly melodic and the spectrogram for music is pretty distinct from commercials. But when I get some time I think I'll hook it up to some RNN code and 'train' it using a button.

During network programming, act on subaudible cue tones. Sometimes the affiliate relays will let a little bit of a tone leak before acting, and you can use the same cue. If someone's driving the bus by hand, you'll definitely hear them. This will serve you well during football games to remove local commercials, at least, though increasingly local breaks come with a 120+ network avail before the tones fire and the affiliate takes over, so your training would still be useful.

When you hear "after these words from your local station," watch for < 100 Hz tones. They're high amplitude and you won't be able to miss them; VU meters will often peg hard right during a tone, depending on the network. Should be a tone out and a tone in, and it is modulated so it'll be quite apparent.

Another helpful avenue to explore would be in-stream RDS metadata, if you're working with typical FM. It lags a bit, but if you buffer a minute back or so you can look for transitions when the RDS data changes. Then you can use the same trick a delay uses to backfill its own buffer, and pad silences to restore your buffer. You don't care about dead air in your application, so you can be more aggressive than broadcast equipment can. (Talk radio runs >30sec behind, usually, and the "dump" button on a delay flushes the entire buffer, synchronizing air and program. It'll then slightly extend silences to get air "behind" program again. It has a little screen on it indicating how far back it is, and it's cool to watch it zoom back when people stop talking. If you hear a station dump delay, you'll notice they won't take callers for a couple minutes; this is why.[0])

Teach your setup to listen for EAS tones and you're well on the way to a startup of some kind. I think this was attempted in the past, actually...

[0]: https://en.wikipedia.org/wiki/Broadcast_delay#Computerized_d...

Commercials tend to have all the dynamics removed in order to sound as loud as possible because advertising/marketing people are [insert your favorite epithet here]. It's a deeply unethical profession full of unpleasant people.

Wow. I used to cut, and occasionally write, radio spots for a living. I agree that it's annoying, but it's so that the message is carried across, not because marketing people are some epithet. That's what the sponsor is paying for, after all, and you are not. Radio-friendly music is often mastered with the same dynamics removed. Most pop and modern rock looks about the same on a spectro as the spots I used to cut. We made a conscious effort at my last station to master stingers ("you're listening to...") and other meta stuff at the same overall loudness level as the average spot, so there was a heavy contrast between the talk radio portion and the everything else portion and you'd have a solid cue of when to turn down if you so chose. There's actually pushes in the industry right now to move toward PPM meters that more effectively indicate loudness. We got it, believe me.

Radio is a lovely profession full of wonderful people. There is a strong hacker culture on the engineering and air operations side of things, and the head of sales at my last station baked six huge cakes for a company event in her home. Pretty much every day the station smelled like solder from some hilarious contraption the bored engineers were putting together. Most people who like HN would love a radio station.

Marketing ("sales," in radio) is a necessary function in capitalism, and loud commercials have nothing to do with ethics. If you want an example of how ethical radio sales can be, if I technically erred while airing even one second of a :30, they'd refund the whole spot and re-air it. Most of my job during broadcast operations was notating these exact problems, and they never thought twice about making it right. Why would they? Advertisers are what, you know, feeds the family of everybody at the station and gives you something to listen to on your drive home for free, and they do spot check.

This comment is just really, really awful all around, and I expect better from you. Ethical is not an antonym for crappy, nor annoying, and accusing a whole group of people of being unpleasant and unethical simply because [issue] is nothing short of completely shitty, speaking more about you than them.

I agree that it's annoying, but it's so that the message is carried across

It's not acceptable to annoy people to run your business, and the fact you have internalized these justifications from marketing people underscores my point. I know all about the technicalities involved from >20 years as a sound engineer, much of it in the media landscape.

The reason you people are now switching to better PPM meters are because people like me have been making a fuss about this issue for many many years. I'm sorry you think my comment is awful, but I am do not support capitalism reflexively the way you do and I reject your claim that it's OK to increase sales by making people's lives a little worse. I am using the word ethical judiciously, whether or not you agree with me, and I am not going to change my opinion about marketing people either.

> and loud commercials have nothing to do with ethics

A quick google search makes it clear that people don't want to hear loud commercials and want legislation in place to prevent them (actually they're wondering why the fuck existing legislation to prevent exactly those ads is being circumvented). It's not just annoying, it's hijacking their hardware to assault their senses. It makes watching TV or listening to radio at night a nightmare if anyone is sleeping in the house. It's ambiguously unethical and the practice only persists because consumers aren't able to out-lobby advertising interests to pass the laws needed to prevent it in many states. And in your mind this is how it should be because 'that's what the sponsor is paying for'..?

Yes. Free, broadcast radio, which is what I'm speaking about, comes to you because advertisers pay them to hijack your hardware and feed you a message you don't want to hear. That's literally how it works, and it should be unsurprising that you cannot outlobby them. (The great caper, of course, is that everybody pays for cable but those television channels still have advertising on them.) It's weird that people like capitalism, but then want capitalism on strictly their terms: in the modern age, thanks to market pressure, radio with few exceptions exists to allow Bob's Turnpike Honda to tell you about their President's Day sale. The rest is designed to develop an audience for that function. That's just the nature of the game now.

Solution: Pay for content you like so that more broadcasters enable those options. No ads. Done. This applies to pretty much every broadcast medium including the Web. Sirius XM, Netflix, Amazon Prime, YouTube Red... toss a few bucks at Apple Music and get into podcasts. This is a fixable problem without worrying about how loud the SUNDAY SUNDAY SUNDAY spot is on your local radio station, and it's far more fixable now than it was even three years ago.

Notice I said I formerly worked in broadcast radio. Inventory is decreasing in terrestrial. Satellite and alternatives are winning. That problem is only going to become worse in terrestrial radio. It's weird, though, because radio also serves a vital role with EAS, local news, and other functions. I remember when Clear Channel started collapsing all the locals and Sirius and XM launched, most of my peers said the end was nigh. I don't know how it'd "end," but it's slowly worsening.

And no, calling anything I just said "unethical" is a misunderstanding of the word ethical.

No that is not 'literally how it works.' It works differently in a lot of other places, and I suggest you consider another perspective besides your own.

I have friends with similar complaints.

Ads are annoying, but you can always change the freq/input. It starts to become a problem when the commercials are exceptionally louder than whatever was on before. It shocks the driver, and if they're sensitive to loud noises or disruptions, they may be liable to jerk the wheel in response.

Even more so when the ad creators knowingly place in car crash/swerving and police siren sounds. It's dirty and unethical.

> Marketing is a necessary function in capitalism.

All I can say is that necessary evils are evils nonetheless and "good people" do terrible things all of the time.

> Even more so when the ad creators knowingly place in car crash/swerving and police siren sounds. It's dirty and unethical.

This I agree with, and they were specifically against policy at my last station. I ended up with copy that called for one and refused it, and the sponsor understood and sent new copy. This is not uncommon, particularly in larger markets, and it is a well-known problem amongst production types. And yes, production can refuse copy. They're often not empowered to at smaller, broke stations.

> It shocks the driver, and if they're sensitive to loud noises or disruptions, they may be liable to jerk the wheel in response.

I have a hard time imagining a scenario where this is the fault of the radio station. Trust me, I can see both sides, I just don't know if I can assign fault the same way. To be clear, on-air responsibility is not overlooked, though... "War of the Worlds" would, without question, never happen today. I'd just hope your hypothetical driver would maybe not max out the volume during dynamic programming if they're susceptible to that.

If there's a >20% difference between normal programming and the rest, the station you listen to needs new engineering and operations. That's just sloppy. Especially on AM, one should be compressing the living shit out of everyone speaking, so...

> All I can say is that necessary evils are evils nonetheless and "good people" do terrible things all of the time.

Yeah, no, that's not how that works. Found a startup without sales or marketing and get back to me.

> Yeah, no, that's not how that works. Found a startup without sales or marketing and get back to me.

Entrenched legacy B2B is one example where the level of marketing can be close to nil (if we don't include "sales" in our definition of marketing, otherwise there's no reason to argue), but still allow the business to prosper.

But that ignores that you haven't refuted the point. The advertising part of marketing, in its current form, is a net negative ("evil") to consumers. I'm not specifically signaling out the entirety of the "marketing" umbrella, but one of its subsections.

Can you tell me how advertising directly benefits the consumer?

This is a really awesome application of SDR. It has really grown since being presented at the GNU Radio conference a few years ago.

Does HAM radio still exist?

Would this capture it?

It would depend on what type of modulation they are using. If it is narrow band FM, it should work fine. There are probably lighter weight solutions though. If you wanted to use a RTL dongle, you would also need an upconverter, since the dongles can't capture frequency that low: http://www.nooelec.com/store/ham-it-up.html

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact