somy city has a community-run police scanner broadcast on the internet, butthe person who runs it is a bootlicker who's been threatening to shut it downif people are using it to make trouble for the cops. so i figured i'd set up myown. this is how i did it, hope it's useful.
you'll need an RTL-SDR unit. i recommend the dipole antenna kit aswell, so you don't need to make any additional purchases. if you're a radioenthusiast already, you might have a better antenna available, but if you'relike me you do not and it's worth the US$10. mine took a bit over a week toarrive. if you're extremely unlucky, you might need two of them, but i was finewith just one.
once your RTL-SDR arrives, you'll want to put together your antenna. if you'relucky, like i am, you can just extend the antennas arbitrarily and it'll workfine; if you're cursed, the RTL-SDR website has resources on how long is idealfor various frequencies.
connect the antenna to the RTL-SDR unit, plug it in, and follow the RTL-SDRquick start guide. SDRSharp will work, or any of the other Windowsoptions. some of what we'll need is only available on windows.
once your RTL-SDR's drivers are sorted out, find the specifications for policeradio in your area on RadioReference. click your state, click your county,scroll down and see if there's a link above a frequency table for you. ifyou're lucky, there is, and if you click it there's a page with a table withSystem Type and System Voice entries at the top. mine has a system type ofEDACS Networked Standard and a system voice of ProVoice and Analog, so the restof this assumes that's what you've got as well. if not, good luck.
there should be a table for System Frequencies on your RadioReference page.start up SDRSharp and tune your radio to the first frequency listed there.you'll probably hear a bunch of static and the UI will look something likethis:
see how there's one constant signal and a bunch of other signals that appearand disappear all over the place? well, that's trunking, and the constantsignal is our control channel. if you don't see it, you can click and drag onthe bottom axis of the top panel to change the view. once you've found thatconstant signal, click on it to get the approximate frequency, go back to yourfrequency table and the closest thing to that will be the exact
frequency.it should sound like a series of weird beeps instead of static. remember thatfrequency, it'll be important later.
update 2020-07-31: that control channel can change between the frequencieslisted on RadioReference. if things randomly quit working, come back to thisstep, and see if the control channel has moved. i'll mark down below theplaces that need changing accordingly.
EDACS is a trunked system, so we're using RTL-SDR's trunked radio tutorialas our guide, mostly. that guide assumes we have two RTL-SDRs, but there's apiece at the end explaining how to do it with just one. that sucks. i'm goingto paraphrase it here.
first, we're going to download the software we need: Unitrunker,VB-Cable, and DSD+ (extract both the regular and DLL downloads to thesame folder). install unitrunker and VB-Cable and extract dsd+ somewhereconvenient. you might need to reboot after installing VB-Cable becausecomputers are bad. VB-Cable might set your default input and output devices tothe wrong things when you install it, so switch them back if it does.
open up dsd+. it'll open four different windows, one of them should have a listof audio input and output devices. check the number in the input list that goeswith CABLE Output - for me it's 3. pull up notepad and make a new file. sincemy input was number 3, i'm typing
in that file: if yours is not 3, put whatever the correct number is for youinstead of 3. then, save the file, find your DSDPlus folder, make sure the typeis set to "All Files", and name the file run.bat. close dsd+, go to thatfolder, and open that run.bat file you just created. it should pull up dsd+and if you're lucky it'll print
the most important things are the RTL Device, the sample rate (2.56 msps), andthe VCOs (2 VCOs). i do not know what a VCO is and i do not care enough to findout. we should now have two VCO tabs next to our info tab. the first one needsto look kinda like this:
the important things are the Role being Voice, the Deemphasis box beingunchecked, and the Digital Output being set to your CABLE Input. this means itwill connect up with dsd+ listening to our CABLE Output.
press the stop button and the play button again,and everything should in theory be working. ideally, the Call History tab willbe crowded and updating pretty frequently, and unitrunker will be passingthings along to dsd+ which will give us the audio we want. technically, this isenough.
the thing, though, is we don't have context for any of this. for now, at least.RadioReference should have a table or several of talkgroups - the "list all inone table" button may come in handy - and we can use that information to figureout who we're hearing, and have at least some control over who takes priorityif multiple people in different contexts are talking at once.
find the main unitrunker window - it's titled "Universal Trunker" and if youdon't have it open just click the home button a bunch until it opens - and thenopen the Systems tab and double-click the one that exists. open the Groups tabin that window, and it should give you a massive list with columns for ID,Label, and a bunch of stuff we don't care about right now. the ID matches upwith the DEC column in the RadioReference table, and the Label can be either"Description" or "Alpha Tag" or something you make up yourself if you feelcreative. if you pay RadioReference $15 for a Premium subscription thenunitrunker can import that data automatically.
once you've filled that all in, open the Sites tab and double-click the entryyou see there, then open the Call History tab. the group labels you addedshould now be appearing in the Audience column; the LCN and Frequency shouldturn green for what unitrunker is currently listening to.
back in the Groups tab, you can edit the Priority values to control whichgroups will be chosen more often - as far as i can tell, higher priority groupswill interrupt lower priority groups, and equal priority groups will just playwhoever started talking first.
this setup lets you listen to things locally, but what if you want yourcomrades with no hardware to be able to also listen? the laziest option is tojust stream the Call History window on Twitch or something, but in theory thereare better options. RadioReference runs Broadcastify, which is designed forhosting police scanner livestreams, but they have to manually approve yourbroadcast, which is annoying for short term activity. you could run an icecastserver yourself or something, but that takes effort to configure. honestly allof those kinda suck but those are your options as far as i know.
update 2020-07-31: you can also let your friendly neighborhood succulent runan icecast server for you; reach out to me if you need something like this. ifyou've got an icecast server, you'll need to pay for (or otherwise obtain)VB-CABLE A+B, set up VB-CABLE A, and grab butt (broadcast using this tool).
run butt, pull up the settings, and under the Audio tab set the Input Deviceto "CABLE-A Output". (for bonus points, set the Streaming Codec to AAC+.) underthe Main tab, Add a new Server and put in whatever info your icecast serveradmin told you to use. now restart your DSD+ and hit butt's play button tostart streaming, and you should be running a livestream of your police scannerthat is accessible over the internet.
When typically using an RTL-SDR in windows with sdr# (sdr sharp) software you have to replace the autodetected windows driver with a custom one. Is something similar necessary to do before attaching it to the VM?
Initially, when I would plug in the dongle I would get a new Realtek device. This was the device I attached to the VM. It anything but worked. It further even stopped my CC2531 zigbee dongle from working. Today I fired it up and payed with it. What I found was when I attached the Realtek device a new Realtek device would appear. If I attached the second Realtek device rtl_433 would start working.
As a last ditch effort I installed the custom driver. The Realtek dongle seems to have two endpoints, 0 and 1. The driver is installed to endpoint 0. This seems to have stabalized the syste. I attached the zigbee dongle and the second Realtek device in the VM. Then I rebooted the full windows machine. Both dongles started working.
I discovered with my Sonoff 3.0 Zigbee and Zooz z-wave sticks, each would get captured by VB sometimes while other times neither (I watch device manager) It was very strange issue and took me hours and hours to figure out what was happening.
The solution for me was going into the device management properties (windows device manager) and un-ticking the Allow windows to put this device to sleep setting, even though under power management I have it set globally to NOT put USB devices to sleep)
Virtual Box seems kind of flakey in the way it passes USB devices through. What I did was erase all of the USB devices I was passing through. I then selected the last Controller Option which is circled below. From there I added the USB devices back in, ensuring the RTL-SDR device was at the top. Once this was done HA recognized the RTL and the Zigbee stick was also working together with the RTL.
RTL-SDR is a very cheap software defined radio that uses a DVB-T TV tuner dongle based on the RTL2832U chipset. With the combined efforts of Antti Palosaari, Eric Fry and Osmocom it was found that the signal I/Q data could be accessed directly, which allowed the DVB-T TV tuner to be converted into a wideband software defined radio via a new software driver.
Also, I should add that I ran cmake_gui from the rtl-sdr directory, but mingw32-make.exe from the rtl-sdr/build subdirectory. They make that suggestion somewhere else on the web and in my case it works.
I'm trying to get pyrtlsdr-0.2.9 to work on a windows 10 computer with python 3.6. First, I installed it with pip like the instructions says on the site. Then, for some reason when I try to import the module or run an example script I get the following error message:
3a8082e126