[00:01.600 --> 00:02.120] All right. [00:02.220 --> 00:02.780] How's everyone doing? [00:05.560 --> 00:05.940] Cool. [00:08.500 --> 00:12.340] I was just going to wait for a little bit for people to settle in maybe. [00:16.570 --> 00:20.230] I'm going to skip the personal bio intro because I don't really think it's important. [00:22.070 --> 00:27.310] If you're looking for the DIY police scanner talk, that's what this is, the P25. [00:30.210 --> 00:31.730] Yeah, I guess let's go ahead and get started. [00:31.890 --> 00:33.470] Try and keep things mostly on time here. [00:34.630 --> 00:38.430] So first off, it's not going to be a very polished presentation. [00:38.530 --> 00:41.930] I was a bit busy supporting a friend with an abortion, so sorry. [00:42.150 --> 00:43.230] More important than this talk. [00:43.710 --> 00:44.450] Take notes, fellow men. [00:44.850 --> 00:46.730] And yes, I was asked to share that. [00:48.250 --> 00:50.750] Also, some legal stuff. [00:50.930 --> 00:57.630] Radio scanners may... they're typically legal, but usually there's something about like illegal when used in commission of a crime. [00:57.650 --> 01:06.290] So if you disseminate information from one, maybe don't include instructions or suggesting illegal activity. [01:06.650 --> 01:07.910] Check your local jurisdiction. [01:08.950 --> 01:22.410] Also, just as an ask from myself, if you take photos, like if you want to take photos of the slides, that's fine, but please try not to get other people in the slides, like in the photos, like myself or other attendees, just as an ask. [01:22.590 --> 01:29.990] And if someone comes in late and they're doing that, if you could gently mention this ask, that would be great. [01:31.510 --> 01:32.790] Anyways, let's get rolling. [01:33.190 --> 01:34.950] So what are we talking about? [01:35.310 --> 01:45.430] Well, this is going to be about building your own DIY police scanner that captures every unencrypted call on a system that you can listen to live or archive and listen to later. [01:46.310 --> 01:48.590] P25 is very popular in the U.S. [01:49.050 --> 01:57.690] If you're in the U.S., or maybe also Canada, I'm not sure, it's very likely what your police department's using, as well as, you know, various municipal or other things. [02:00.290 --> 02:02.810] And so the nice... Oh, the audio changed. [02:02.990 --> 02:08.670] Okay, so the nice thing here is you can just DIY this with a spare computer and some SDR devices. [02:10.450 --> 02:11.290] So, why? [02:11.770 --> 02:15.350] Well, the bummer is we live in a prison society with mass surveillance. [02:16.330 --> 02:22.210] The cops have flat cameras, cell network location tracking, facial recognition, and the shit's just getting worse by the day. [02:22.210 --> 02:26.350] So, if we want to live the life worth living, we have to fight back. [02:27.690 --> 02:35.630] This kind of tool is something that can help kind of change the balance of power and bring a bit more power back to our side that they have over us. [02:35.630 --> 02:37.610] So, well, hopefully anyways. [02:38.890 --> 02:41.390] So, what is P25, this acronym? [02:41.730 --> 02:45.090] It stands for Project 25, or APCO 25. [02:45.190 --> 02:52.250] If you want to have a keyword, you can look up later to get into, like, whatever kind of rabbit hole you want to go down, all the technical details. [02:53.070 --> 02:56.370] But the important things for us are that it's digital and that it's trunked. [02:56.610 --> 03:11.030] So, digital means data is encoded digitally, audio can be digitally encoded, it can support encryption, and so you can't just get a little, like, Baofeng or standard FM handheld radio and listen in. [03:11.670 --> 03:17.770] Also, it's trunked, which means that, practically speaking, a conversation can move around between different frequencies. [03:19.230 --> 03:29.870] And to get into some very light detail on trunking, old-school conventional systems have some, I mean, any radio system, you have some number of frequencies. [03:30.410 --> 03:40.010] And the old-school conventional ones have to have a one-to-one direct mapping of a frequency to some kind of topic of discussion. [03:40.210 --> 03:51.250] So, you've got maybe your, like, dispatch, your FHIR, your EMS, SWAT, have dedicated frequencies, which is inefficient because SWAT is probably going to be quiet most of the time, but when they need it, they need it. [03:51.330 --> 03:52.570] So, it can't be used for anything else. [03:52.970 --> 03:58.230] Also, it means you can only have as many, like, discussion groups or talk groups as you have frequencies. [03:58.230 --> 04:09.330] So, modern systems, trunked systems, what they do is they have a notion of what's a virtual talk... I'd like to emphasize it's virtual, but in P25, they're called talk groups. [04:09.750 --> 04:13.230] You can have many more of them than there are frequencies in your system. [04:13.790 --> 04:23.070] And when a radio goes to make a call on a talk group, using computer control, the system finds an available frequency and grants it to that radio to make that call. [04:24.710 --> 04:33.530] But, practically, what that means is if you're trying to listen in on this radio system, you're going to have to be able to follow calls as they could be reassigned to different frequencies. [04:33.870 --> 04:37.010] It's not going to be dispatches always on this frequency. [04:39.030 --> 04:40.610] So, what are the options right now? [04:41.070 --> 04:43.910] Well, currently, you can buy a physical scanner. [04:44.330 --> 04:45.810] The company Uniden makes a lot. [04:45.810 --> 04:47.710] They're pretty cool, but they're kind of expensive. [04:48.910 --> 04:58.350] And in my opinion, the ones I'm familiar with, which I don't own any myself, but they're really good at the portable operation where you're like, have one with you in the field. [04:58.350 --> 05:00.450] And they also have really cool features. [05:00.650 --> 05:10.350] Like, this project I'm talking about only scans P25 systems, but a scanner like this could scan just general frequencies like FRS or MERS. [05:10.910 --> 05:18.770] And also, some of these ones have a feature called close call, where when they hear a strong signal, they can prioritize listening to that. [05:18.970 --> 05:21.670] Then you, like, remember the frequency, which is super cool. [05:23.030 --> 05:25.250] But kind of pricey and whatever. [05:26.190 --> 05:27.310] I don't have one, so. [05:28.910 --> 05:29.310] Alternatives. [05:29.510 --> 05:30.650] There's also Broadcastify. [05:30.970 --> 05:32.030] It's super easy to use. [05:32.110 --> 05:35.430] You just go to the website and probably there's something for your area. [05:35.850 --> 05:36.910] It doesn't cost any money. [05:36.950 --> 05:37.690] You just click play. [05:38.170 --> 05:40.450] But they paywall a lot of stuff. [05:40.990 --> 05:46.070] And honestly, once I have my own system, I'm, like, never bothering with any of these. [05:47.990 --> 05:56.010] Oh, and something notable is that, like, there's very specific talk groups that they'll be pre-configured to have, of, like, usually common ones like dispatch and fire. [05:56.410 --> 06:01.550] They're not giving you a feed of all talk groups on the system, which is what I'm interested in. [06:03.090 --> 06:05.230] So the question, can we use SDRs? [06:05.470 --> 06:06.410] The answer is yes. [06:07.510 --> 06:13.290] I think you would save a bit of money over a device that you buy, like a Uniden scanner. [06:13.290 --> 06:17.690] It's also going to be something more oriented and works well for archiving. [06:17.850 --> 06:20.750] It's more capable and powerful, but it is more work. [06:22.510 --> 06:23.870] So what's this look like? [06:24.130 --> 06:27.910] So picture in your mind if you have two computers. [06:28.210 --> 06:30.050] One of them is at home. [06:30.090 --> 06:33.670] It hosts an array of SDRs, software-defined radios. [06:33.670 --> 06:47.030] And it uses trunk recorder, some open-source software, to monitor the P25 radio system, decode and save calls, and upload them to computer number two, the RDIO-scanner host. [06:47.190 --> 06:49.070] That's the web app that I like to use. [06:50.510 --> 06:52.210] It doesn't have to be a VPS. [06:52.210 --> 06:54.590] That's just what I use, so I can easily access it from the Internet. [06:55.090 --> 07:05.730] But that just ingests the calls, indexes them in its database, and provides an easy-to-use web app to listen in live or to listen in to previous calls. [07:08.170 --> 07:10.670] So what does this look like if you had to set it up yourself? [07:12.190 --> 07:17.470] This is kind of a pain, but this is to give context for a more streamlined setup later. [07:17.990 --> 07:20.590] And because we can't automate everything. [07:21.090 --> 07:24.750] But first step, you go to radioreference.com. [07:25.210 --> 07:31.570] And for wherever you're at, you look up what radio systems are available to try and figure out what one you're interested in. [07:32.090 --> 07:35.590] Typically some kind of law enforcement one, but there's usually more than one. [07:36.570 --> 07:37.850] And you look up its details. [07:37.850 --> 07:43.750] Once you find the site, here's like just some random one I picked for New York City here. [07:44.890 --> 07:47.670] You go down the page, the potentially very long page. [07:48.370 --> 07:52.510] The first thing you need to look at is often they'll list different sites. [07:53.410 --> 07:59.710] So you'll pick the one for your area, if there's more than one, and look at the frequencies that it has. [07:59.950 --> 08:06.170] So the SDRs that I'm using, RTL SDR devices, only receive so much spectrum at a time. [08:07.610 --> 08:11.190] So once you have enough frequencies, you'll need more than one to cover all of them. [08:11.770 --> 08:15.370] You need to be able to capture a call that could happen on any of these frequencies. [08:15.710 --> 08:17.290] So typically you'll need a few devices. [08:19.270 --> 08:24.610] You also could double check, like if you already have an SDR, these red frequencies of the control channels. [08:24.810 --> 08:26.750] One of them should be constantly transmitting. [08:26.990 --> 08:31.530] So you could double check that you're actually looking at the right site before you buy your devices. [08:31.530 --> 08:34.410] But you're probably going to have to buy a few. [08:34.610 --> 08:35.850] Like at home, I have to use four. [08:37.290 --> 08:42.410] Once you get your SDRs, for the RTL SDRs, you need to assign them unique serials. [08:42.610 --> 08:46.250] So that in your configuration you can individually identify them. [08:46.490 --> 08:48.270] And you need to measure their error amounts. [08:48.270 --> 08:50.190] Because when you tune it to... [08:50.190 --> 08:52.430] Like if you have a signal... [08:52.430 --> 08:54.230] This first red one is... [08:54.230 --> 08:55.550] That number is really small. [08:55.710 --> 08:59.330] Like 856.9875 megahertz. [08:59.870 --> 09:07.810] Your SDR might see that signal is coming in to what it thinks is a couple hundred hertz in either direction. [09:08.050 --> 09:10.810] They just have these errors built in. [09:11.010 --> 09:12.430] That's just how the hardware works. [09:12.530 --> 09:13.450] So you need to measure it. [09:14.990 --> 09:17.230] It's a little finicky, but you kind of just have to do it once. [09:18.130 --> 09:21.670] Once you've done that, you then need to get the talk group information for the system. [09:22.410 --> 09:23.890] This also is on radio reference. [09:24.230 --> 09:25.370] They have tables of this. [09:26.030 --> 09:31.590] You either can pay for radio reference premium to download a CSV. [09:32.290 --> 09:37.630] You can manually copy paste it and try to format your own CSV, which is painful, but I've done it. [09:38.110 --> 09:42.250] Or you can use the scripts that I'm going to release to hopefully streamline the whole thing. [09:43.310 --> 09:44.610] I hope they're not too mad. [09:46.610 --> 09:50.490] So we've done all this manual work to get all this configuration information. [09:51.630 --> 09:55.970] Now we install the trunk recorder software on our SDR box. [09:57.170 --> 09:58.990] The installation is not too bad. [09:59.090 --> 10:00.190] There's Docker images available. [10:00.530 --> 10:03.630] You need to make a JSON configuration, which is a bit finicky. [10:03.630 --> 10:09.550] It takes a while, but once you get it locked in, it's, in my opinion, like very stable. [10:09.750 --> 10:11.450] And this project has great documentation. [10:11.810 --> 10:13.110] So hats off to them. [10:14.530 --> 10:19.710] And then the way that I'm doing things, I'm using this particular web app called RDIO-scanner. [10:20.090 --> 10:21.630] It's also pretty easy to install. [10:21.790 --> 10:22.630] There's a Docker image. [10:24.070 --> 10:26.510] It takes a small amount of configuration. [10:26.970 --> 10:27.690] Not a lot. [10:27.810 --> 10:32.830] You need to just go make an API key and add that to your trunk recorder config so that you can upload to it. [10:33.610 --> 10:35.350] And then it's pretty much done. [10:36.550 --> 10:42.790] It kind of feels like abandonware because it hasn't had updates in a while, but it's also pretty feature complete and easy to use. [10:42.990 --> 10:44.870] So I'm still running with it. [10:47.210 --> 10:55.450] So now that you've done all this work, mostly in the configuring, you can set it up and watch the logs for if you have anything you need to address. [10:55.450 --> 11:03.270] Like if one of your errors for one of your SDRs is not quite right, you might have calls that aren't being decoded properly. [11:03.470 --> 11:08.630] Or maybe your system is a lot busier than you realize and you don't have enough processor to keep up with everything. [11:08.650 --> 11:09.510] So you drop calls. [11:10.170 --> 11:11.950] But it's kind of just an iterative process. [11:12.810 --> 11:14.790] But at this point, you're up and running and you can listen. [11:16.690 --> 11:18.310] But we can do this better. [11:20.130 --> 11:31.930] For anyone who's not familiar, Ansible, this is the first time I've really used it, but it's pretty nice because it automates provisioning and config management among machines that you just have to be able to SSH to. [11:31.930 --> 11:34.870] You have playbooks. [11:35.230 --> 11:40.770] You use YAML to write playbooks that define the state that you want your machines to be in. [11:41.990 --> 11:47.490] You make an inventory that lists like what machines you have and maybe what groups they're in. [11:47.810 --> 11:49.150] And then you just run it. [11:49.250 --> 11:52.210] And it'll... it's idempotent. [11:52.330 --> 11:55.230] So if something fails, you can just run it again and it'll eventually succeed. [11:56.710 --> 11:59.390] But it makes it a lot easier to set things up. [11:59.390 --> 12:04.590] And it'll a lot easier to like track changes for your setup, easily iterate on things. [12:04.830 --> 12:12.030] Like using Ansible, if I find out that my SDR host doesn't have enough processor power, I just swap it out, run it again, and I'm up and running. [12:14.030 --> 12:17.110] So what does this new process look like using Ansible? [12:17.490 --> 12:21.990] Well, you still have to do all of the annoying manual configuration. [12:24.430 --> 12:29.550] Measuring the SDR errors, getting the talk group CSVs, all of that stuff. [12:30.210 --> 12:33.510] But that's kind of like a once you do it, you're done thing. [12:34.870 --> 12:42.510] Once you've done that, you just install Ubuntu on your two machines and get it minimally set up so that Ansible can manage it. [12:42.730 --> 12:48.210] So you like make a user that's part of the pseudo group with an SSH key you can log in with. [12:49.470 --> 12:54.470] You need to define your host inventory, which is where you're going to copy over a lot of this configuration information. [12:55.830 --> 12:58.570] But then you just run the install tasks. [12:58.790 --> 13:07.570] It handles setting up the RTL-SDR stuff, trunk recorder and RDIO scanner, as well as extra stuff I have bundled in like monitoring with Monin. [13:09.450 --> 13:16.010] You've got to take a break to generate an API key and add it to your host inventory because I haven't figured out how to automate that yet. [13:17.150 --> 13:20.850] But once you've done that, you can just run the configure tasks and you're done. [13:22.090 --> 13:27.890] So this takes a lot of the like manual sysadmin fiddling work and just kind of does it for you. [13:28.890 --> 13:33.550] Then you're ready to start listening or, you know, do some regular maintenance. [13:33.870 --> 13:38.050] The maintenance mostly looks the same, like checking log files to make sure things are uploading properly. [13:39.390 --> 13:51.870] If you're dropping calls for some reason, like if you're maxing out the processor or if you're like missing them for some other reason, like if there's a new frequency you don't know about that's not covered or just some other errors. [13:51.870 --> 13:58.250] If you make config changes to fix some of these issues, you just run the configure tasks again and you're good to go. [14:00.010 --> 14:01.570] So what's this look like in real life? [14:02.170 --> 14:04.170] Well, that's a picture of my real life system at home. [14:04.410 --> 14:07.790] Well, I've got a dev and a prod system and that's why there's two computers. [14:08.050 --> 14:13.710] But for my system, I need four SDR dongles to capture all the frequencies. [14:14.950 --> 14:17.350] I'm using a mid range four core Intel machine. [14:17.410 --> 14:19.530] It like was less than 150 bucks. [14:19.530 --> 14:23.690] And with the Windows 10 end of life happening, you're gonna be able to find a bunch of ones like this. [14:25.690 --> 14:40.330] And it's gonna depend on what system you're listening to because the most intense part of the whole process is processor usage for doing the radio, the software part of the software defined radio. [14:42.070 --> 14:43.930] Like I said, I needed four of these dongles. [14:44.030 --> 14:46.890] I just used the kits because they came with the little antenna things up there. [14:48.270 --> 14:52.590] And for the web app side of things, I just used the cheapest line node because it's just kind of moving files around. [14:52.770 --> 14:53.510] It's not super intense. [14:54.810 --> 15:00.030] And then I put some numbers up there because I might feel like a good point of reference for what this takes. [15:01.570 --> 15:10.810] So as far as system usage, my SDR box at home, it's pretty consistently 75% usage across all of its four cores, but it's been plenty. [15:10.990 --> 15:12.010] I haven't dropped any calls. [15:13.010 --> 15:15.930] RAM, you like almost don't need it. [15:16.130 --> 15:17.650] Trunk recorder is very light on RAM. [15:17.930 --> 15:19.690] I've got four gigs and it's running fine. [15:19.970 --> 15:24.290] You could probably do less if you could find smaller RAM sticks, but I don't know. [15:24.290 --> 15:25.710] It'll be not a concern. [15:26.990 --> 15:28.590] The disk is gonna... [15:28.590 --> 15:33.330] It's nice to have disk storage because then that allows you to have more archive time. [15:33.330 --> 15:40.270] So you could have like a month of calls or maybe six months of calls, but you don't necessarily need a lot. [15:40.450 --> 15:41.850] More depends on like what you want. [15:41.850 --> 15:50.250] And my experience of the uptime is that I've gotten things to a point where trunk recorder sometimes exits when it loses track of the control channel. [15:50.710 --> 15:52.190] I don't know why that happens. [15:52.350 --> 15:58.470] I'm not sure if that's like my SDRs are running for a while and they drift off or if there's some kind of external noise that happens. [16:00.110 --> 16:04.130] But with Docker, it just keeps restarting until it reacquires it and then it's up and running again. [16:06.010 --> 16:09.890] And then for the VPS, for the web app side of things, it's pretty light. [16:09.890 --> 16:13.950] You're gonna be constantly having uploads of calls and writing to disk to index them. [16:15.270 --> 16:16.350] But that's not too bad. [16:16.590 --> 16:20.590] And even with like the smallest Linode disk, I can keep seven days of calls easy. [16:20.830 --> 16:23.850] I probably could up it to like 14, 10 days. [16:24.290 --> 16:25.970] And the CPU is pretty light. [16:26.090 --> 16:29.690] Although I haven't tried to stress test this with like a lot of people listening or something. [16:32.490 --> 16:35.190] So there's like all the tech stuff about this. [16:35.310 --> 16:39.870] But I think like the most interesting aspect of running a police scanner is the social impact. [16:39.890 --> 16:41.510] and how you actually can make use of it. [16:41.670 --> 16:50.510] And so some suggestions I have from using a police scanner and listening to it is to first off, be aware you're gonna hear some upsetting things. [16:50.810 --> 16:55.970] Maybe the very instant you click that live feed button to listen in, you might hear something that's pretty disturbing. [16:56.630 --> 17:05.650] I think the thing to remember is that the police scanner is like if you have a fire hose of all of the bad things that happen in an area that people call the cops about. [17:06.730 --> 17:11.730] So it's kind of a distorted view of what's happening in whatever area you're in, like a city. [17:12.510 --> 17:13.650] And to keep that in mind. [17:13.830 --> 17:15.450] So to be aware you might hear some bad stuff. [17:15.670 --> 17:20.150] And also it's not a reflection of the totality of reality, right? [17:21.050 --> 17:26.970] It's good to spend time listening to get used to how they talk, some lingo that they have, some communications protocols that they have. [17:27.810 --> 17:31.650] So that way you're not trying to catch up if you're trying to listen in while something important is happening. [17:32.850 --> 17:34.950] And it's also good to remember that the radio is not the truth. [17:35.210 --> 17:36.890] Because the police can lie over the radio. [17:37.350 --> 17:38.810] 9-1-1 callers can lie. [17:38.970 --> 17:42.170] And there can be just misinformation or disinformation that's happening. [17:42.170 --> 17:46.090] You know, just because they're saying it over the radio doesn't mean it's real. [17:47.110 --> 17:54.110] And again, I think it's good, like, to try and bridge the gap and make this something that's actionable and useful in the real world. [17:54.530 --> 17:59.050] It's good to practice, like, listening in and trying to log notable things that happen. [17:59.050 --> 18:02.350] Or, like, follow along with an incident and try and build a picture of what's happening. [18:02.590 --> 18:05.830] Of, like, you know, maybe you're looking up addresses that are mentioned. [18:06.110 --> 18:09.070] Or other, like, trying to find corroborating information about what's happening. [18:10.630 --> 18:11.030] Yeah. [18:12.170 --> 18:21.990] And so, making the most of it is going to be, like, getting used to, like, getting the information from the scanner, listening to them. [18:22.850 --> 18:33.450] But also, if you don't have community use and people on the ground, if you don't have some way to make this information actionable and have an impact in the real world, then, like, it's just a hobby project. [18:33.450 --> 18:39.250] It's not the worst thing, but, like, for me, the point is to try and have an impact in people's lives. [18:39.530 --> 18:39.870] Right? [18:40.290 --> 18:48.310] So, I would recommend, like, if you're thinking of setting one of these up before you live, which I really hope you do, find ways to connect with people that could use this kind of thing. [18:48.310 --> 18:49.810] Or people that face police harassment. [18:50.270 --> 18:57.990] Try and, like, share these skills and access with them so that they can make use of this, you know, as they see fit to make their life better. [18:58.270 --> 19:03.750] That way you can go from just this raw information into, like, actionable, useful intel. [19:04.650 --> 19:07.670] It's also good to be aware that sensitive info can be read out over the air. [19:07.950 --> 19:11.090] Like, the police conveying someone else's personal information. [19:13.750 --> 19:23.930] So, I'm not really sure I have an answer for that, besides trying to, like, find ways to have a bit more respect for people's personal information than maybe the cop reading it over the air does. [19:24.670 --> 19:25.290] Not sure. [19:25.290 --> 19:25.330] Not sure. [19:26.750 --> 19:27.190] Not sure. [19:27.190 --> 19:29.050] And also, like, the discretion. [19:29.750 --> 19:33.830] The police are aware that people can just listen in to their radios. [19:34.110 --> 19:36.250] It's just maybe not always front of mind. [19:36.710 --> 19:42.310] And I think that if they think that it's a significant active threat, then they would change their behavior and maybe it would be less useful. [19:42.630 --> 19:50.210] So, some kind of discretion with making use of this would be good, but I don't have, like, a 123 guide on it. [19:50.730 --> 19:56.290] And there are, like, you know, police scanner projects where people just, like, put it up on Twitter. [19:56.330 --> 19:57.050] So, who knows? [19:57.830 --> 20:10.510] But as far as, like, making this stuff actionable and useful, I think something that people don't think about or know about is this notion of the intelligence lifecycle is really, really useful. [20:10.550 --> 20:16.570] Because people might think, oh, I heard it on the scanner, it's true, the police said it, and now I need to tell everybody. [20:18.330 --> 20:23.670] But, ideally, you would have this where it's just a tool to access the raw data coming from it. [20:23.910 --> 20:26.790] It's got to be processed, analyzed, and corroborated. [20:28.430 --> 20:42.210] And then once you've done that, trying to get, like, more context and details and try to, like, verify that things are actually as they're stated, then you can put that into a digestible, more actionable package of information that is, like, more properly called intelligence. [20:42.670 --> 20:45.110] And trying to disseminate that to people who can make use of it. [20:45.750 --> 20:53.790] At that point, you can see how that happens and kind of do that iterative process of seeing, how does this actually work out? [20:53.930 --> 20:59.290] Like, I've collected this information, I've vetted it, I've distributed it, and then what's happened? [20:59.370 --> 20:59.770] Has it worked? [20:59.910 --> 21:03.310] Do I need to collect other... Do I need to, like, find other data sources? [21:03.310 --> 21:04.930] Do I have to do things in a different way? [21:05.250 --> 21:09.270] And this is just some random intelligence lifecycle image I found. [21:09.790 --> 21:11.630] It's got, like, enable leadership on there. [21:11.730 --> 21:12.510] I don't know what that means. [21:12.690 --> 21:30.310] It just means this is an iterative process where you need to try and, like, make a useful, simple, digestible, and verified bit of information you can give to people to make use of it in the real world, and then evaluate how that's gone and try and iterate on what you're doing in your process. [21:32.410 --> 21:47.390] So, just to put an extremely oversimplified example out there, I kind of like to get people thinking, let's say you're listening to the scanner and there's radio traffic that indicates that there are now police checkpoints downtown, right? [21:48.190 --> 21:48.870] What do you do? [21:48.950 --> 21:50.070] You're, like, at home or something. [21:51.750 --> 21:56.210] I would suggest, ideally, you would be able to find ways to corroborate that information and get more details. [21:56.490 --> 22:10.810] Like, I think the ideal would be if you have people on the ground who can get their eyes on and maybe share photos or descriptions of, like, oh, it's these intersections, it's this many police officers of this agency, they have this kind of gear with them, [22:11.010 --> 22:11.990] like, more details. [22:12.230 --> 22:22.530] You could also try and find information on social media, like photos or video or live streams, or, like, try to find other ways to, like, verify things and get more details. [22:23.770 --> 22:36.450] And once you feel like things are confirmed enough, you know, to the degree that you can, you can then put together, like, the important details and share that out in whatever way you plan to. [22:37.390 --> 22:42.950] And that's just, like, an extremely simple example of, like, look, you've got to try and verify things if you can. [22:45.830 --> 22:47.110] So, please do this. [22:48.730 --> 22:52.350] If you're thinking of setting one up, that's great, happy to chat. [22:54.070 --> 23:02.230] Again, I recommend connecting with people and building relationships so that it can be a project that is, like, part of the real world and not just, like, a cool thing you have at home. [23:04.010 --> 23:16.690] If you're into advocacy and pressuring politicians and stuff like that, I would plead you to try and pressure them to not encrypt talk groups that don't need it or to decrypt ones that already are that don't need it. [23:16.850 --> 23:29.790] Because, you know, it might be a hard sell to say, like, oh, your narcotics or detective or what have you talk groups should be clear text because they have an argument that, like, okay, well, we need that privacy for operations and stuff. [23:29.910 --> 23:31.390] But there's places that encrypt everything. [23:32.110 --> 23:43.650] Dispatch, all sorts of stuff that does not warrant that kind of privacy, which means that that kind of transparency and accountability is not as possible because they have all the information about what they are up to. [23:46.130 --> 23:50.030] And finally, if you use this and you find this useful, please contribute. [23:50.530 --> 23:52.370] I'm going to be releasing the code on the last... [23:52.370 --> 23:54.610] I'm going to leave the last slide up so it's easy to see. [23:56.410 --> 24:01.830] But the more people giving bug reports or suggestions or adding features, the better. [24:03.330 --> 24:05.330] So I'm going to wrap it up here. [24:06.010 --> 24:13.290] Huge thanks to all my friends, all my loved ones, and all the alpha testers who don't want to be named for this. [24:13.730 --> 24:23.970] I'm going to have every... the Ansible playbooks and the supporting scripts and the documentation are going to be at that loot drop URL, the 0xacab.org. [24:25.610 --> 24:31.190] I also want to shout out the Montreal Anarchist Tech Convergence happening in October, 11th and 12th in Montreal. [24:31.470 --> 24:32.030] Sounds pretty cool. [24:32.310 --> 24:36.610] I suspect that there'd be similar cool projects there. [24:37.350 --> 24:38.510] Don't know if I can make it. [24:40.230 --> 24:50.690] And also, if anyone works at CodeBurg, please send me my verification emails so I can put this code other places too, because that would be a platform that would be easier for people to collaborate on. [24:53.050 --> 24:53.450] Yeah. [24:54.470 --> 24:58.670] So I was hoping... I didn't have a lot of time to, like, cram the slides full of details. [25:00.290 --> 25:04.390] I'm happy to have this Q&A be, like, pretty discussion heavy. [25:06.310 --> 25:07.250] So, yeah. [25:07.570 --> 25:08.230] Any questions? [25:19.680 --> 25:23.540] I do want to get one out of the way from Matrix. [25:25.740 --> 25:26.440] Hold on. [25:26.720 --> 25:28.160] I have to take you out of my way. [25:28.760 --> 25:33.040] So you say you use four SDR devices in your array. [25:33.300 --> 25:36.520] What kind of SDR array might you consider optimal? [25:37.040 --> 25:38.600] Is one of the Matrix questions. [25:38.760 --> 25:41.360] Oh, what kind of SDR array I would consider optimal? [25:41.680 --> 25:41.940] Correct. [25:43.620 --> 25:45.160] Okay, that's actually pretty important. [25:45.160 --> 26:02.440] So part... my understanding is that part of the... it's like the most intense hardware thing is the processor usage for actually, like, taking that, you know, two megahertz window of spectrum and chopping it down to the frequencies that you're interested in. [26:03.820 --> 26:09.720] So the lower rate you can manage on an SDR, theoretically, the lower CPU usage you should have. [26:10.720 --> 26:18.300] Currently, I'm running mine with four SDRs with rates of, like, 1.8 or 1.6 million samples a second. [26:19.400 --> 26:27.840] Theoretically, you could trim that down even more and use more devices, but I haven't had a lot of time to experiment with that to figure out, like, what the ideal is. [26:27.840 --> 26:31.200] So you might have to try it out yourself. [26:31.420 --> 26:37.020] And there's a real, like, you know, maybe you can afford four SDR devices, but six, seven, or eight is too many. [26:37.160 --> 26:39.520] And then who knows how much that would saturate the USB bus. [26:39.760 --> 26:40.160] I don't know. [26:42.220 --> 26:50.440] But I would recommend not going over maybe, like, the 1.8 million samples a second, just to try and not have, like, too much. [26:50.520 --> 26:56.060] But I haven't been able to do a lot of experimenting with how many SDRs is, like, exactly optimal. [26:58.200 --> 26:59.340] Hope that answered it. [27:04.460 --> 27:05.860] This is a very cool project. [27:07.320 --> 27:09.960] I imagine it'll be useful to a lot of people. [27:10.100 --> 27:20.200] And I hope people do experiment with it and refine some of the questions around, like, practical usability and, like, operational effectiveness. [27:21.040 --> 27:34.520] The question that came up in my mind is, what is the delay between something going out over air and then being, like, listenable by somebody who's monitoring the stream? [27:37.300 --> 27:38.640] Yeah, that's an interesting question. [27:38.780 --> 27:44.780] I haven't tried to measure it precisely yet, but I think it is, it can't be more than a couple minutes. [27:44.780 --> 27:53.440] But it also will depend on how long the call is because, and my understanding is that trunk recorder is listening to the call as it happens. [27:53.440 --> 28:03.420] And once the call finishes, it's, I think, P25 from the, what I remember of the documentation, it doesn't have a, like, the call is over message. [28:03.680 --> 28:07.800] So trunk recorder just waits for there to be silence for a second or two. [28:08.860 --> 28:24.160] So you have, however long the call takes, like, however much audio there is of somebody talking, it finishes, saves the audio file, uploads it to the web server, which I'm assuming is probably not going to take more than a few seconds if things are working well. [28:26.500 --> 28:35.620] Then the web server has to index that and push it down to anyone who's listening live, which hopefully would mostly take as long as it takes to download the file. [28:36.140 --> 28:37.920] And then you, and then you listen to it. [28:38.500 --> 28:48.760] So I would like to test and try and, like, put numbers on expected delay, but I wouldn't imagine it's a whole lot more than a minute or two. [28:50.940 --> 28:54.220] Yeah, so it's not like, oh, I heard about this 20 minutes later. [28:54.660 --> 28:59.720] There is something notable in the RDIO scanner web app, especially if you have a lot of talk groups turned on. [29:00.200 --> 29:04.280] You're getting calls in parallel, potentially, but you can only listen to one at a time. [29:04.280 --> 29:10.940] It has a letter Q up in the top right of the interface and a number, which tells you how many calls are back in the queue. [29:11.360 --> 29:16.620] So if you're not paying attention, if you're listening to too many talk groups, that's going to grow faster than you can listen to them. [29:16.720 --> 29:25.500] And so that would actually have a much bigger impact on delay of you hearing a call than just on the full travel time through the system. [29:30.700 --> 29:31.260] Hi. [29:31.700 --> 29:32.260] Hi. [29:32.260 --> 29:37.480] You mentioned some of these tools are more useful for archiving than others. [29:37.700 --> 29:44.200] Could you elaborate a little bit on archiving these results, and what are your strategies for long-term archiving? [29:45.380 --> 29:52.800] So my current strategy for archiving is I have my computer that is running trunk recorder that saves the calls. [29:52.940 --> 29:54.200] And I have it just... [29:55.600 --> 29:59.160] One of the configuration options is whether you delete the calls after they're uploaded. [29:59.280 --> 30:00.460] I have it keep them. [30:01.920 --> 30:04.000] Currently, I have a cron job. [30:04.180 --> 30:09.040] So in this Ansible playbook, it sets up a cron job to delete all calls older than 32 days. [30:09.040 --> 30:21.660] But I plan to make that a parameter that you can set so that you can, you know, run it for a week or two, see what the growth is like, and then say, oh, well, based on this disk, I could keep a year's worth of calls. [30:23.140 --> 30:31.380] I don't have anything planned out for, like, personally, I don't have anything set up to do, like, cold storage or, like, long-term archiving. [30:31.380 --> 30:32.640] I think that's totally possible. [30:34.780 --> 30:36.680] But that's what that currently looks like. [30:36.680 --> 30:41.300] The RDIO Scanner web app has a default get-rood-of-calls older than seven days. [30:41.420 --> 30:44.440] You can adjust that to, you know, whatever number you want. [30:46.480 --> 30:52.000] But I think RDIO Scanner is much better for listening than for trying to maintain a large archive. [30:52.740 --> 30:57.800] So it might be a trade-off of RDIO Scanner is used for live and recent things. [30:58.060 --> 31:05.660] And then you can have maybe, like, a bit deeper storage for, like, oh, I have to go and find out something that happened six months ago. [31:07.060 --> 31:09.700] But for the most part, it's limited to disk space. [31:09.700 --> 31:12.040] And these audio files are pretty small. [31:13.480 --> 31:15.120] Does that make sense? [31:15.280 --> 31:15.420] Okay. [31:17.880 --> 31:18.500] Hi. [31:19.300 --> 31:30.980] Just asking, is there a public web archive that you find trustworthy that someone could refer back to some communications that happened perhaps even years ago? [31:31.740 --> 31:32.620] Oh, years ago? [31:33.820 --> 31:37.100] Oh, well, in general, if there's, like, a reliable web archive. [31:37.780 --> 31:42.640] But also it would be nice if there's one that could have some content from, like, years ago. [31:43.160 --> 31:43.520] Yeah. [31:46.220 --> 31:49.400] It would be coolest if you run your own and then you're in control of everything. [31:49.560 --> 31:53.700] But that's, like, you know, then you would have had to have been running something like this for years. [31:55.540 --> 31:59.840] Broadcastify does have archived calls you can listen to, but that's, like, you have to pay for that. [31:59.840 --> 32:01.840] So I haven't looked to see what kind of depth it has. [32:03.500 --> 32:15.340] I believe there's also openmegahertz.com or something that is a similar project that has, like, I checked it recently and there's, like, at least recent calls that I can go back and listen to. [32:15.340 --> 32:18.940] But I haven't dove too deep into open megahertz. [32:19.820 --> 32:20.300] Okay. [32:20.460 --> 32:25.480] And those two websites you mentioned, are they, are these, like, reliable sources of information? [32:25.820 --> 32:33.020] Like, can someone doing historical research listen to these archived communications without having to doubt their authenticity? [32:33.920 --> 32:43.080] I don't know if I can answer that because I think it would be similar to different archival sources of they might not be, like, the gospel truth. [32:43.080 --> 32:46.620] Like, not even newspaper clippings can be considered, like, this is what happened. [32:49.140 --> 32:57.500] You know, it's... at the end of the day, it's someone who is recording these audio files over the air and could potentially alter them or do something else to them before they upload them. [32:58.140 --> 33:02.840] So, like, in my mind, when I've thought about this, I've thought about the calls that I'm saving. [33:03.560 --> 33:06.840] I couldn't submit to a court of law to be used as evidence, probably. [33:07.800 --> 33:11.740] But it could be used as, okay, well, we've heard this on our own system. [33:13.280 --> 33:20.220] Maybe we can go and harass the police to, like, release the audio of the call on this talk group at this time. [33:20.220 --> 33:25.680] Because I believe that they also record their own calls for their own internal, like, audits and investigations. [33:25.680 --> 33:27.380] I don't know for how long to keep them. [33:27.380 --> 33:30.540] And then you're, like, asking the cops to look into themselves. [33:30.540 --> 33:32.180] So, like, who knows what's going to happen there. [33:32.900 --> 33:38.360] But it's at least an ability to have our own archives that we can access ourselves. [33:38.760 --> 33:43.860] So I'd say I don't know how, like, gospel truth I would consider those archives. [33:44.060 --> 33:50.580] It might require some, like, you know, due diligence and fact-checking to try and figure that out. [33:50.600 --> 33:52.040] But it's at least available. [33:53.140 --> 33:53.540] Okay. [33:53.660 --> 33:54.260] Thank you very much. [33:54.560 --> 33:54.800] Yeah. [33:56.940 --> 34:00.500] Hi, I actually have two questions, but I'll start with the longer one. [34:02.280 --> 34:13.840] So how, in your, by your estimates, like, how amenable is this set up to, like, adding a voice-to-text transcription model? [34:14.020 --> 34:16.120] For example, like, whisper into the loop. [34:16.860 --> 34:24.780] I know there's, like, an existing project called SignalScribe that does this, that integrates pretty well with SDR tools. [34:31.000 --> 34:33.700] So I don't know how much work that would be. [34:35.220 --> 34:35.660] Yeah. [34:37.020 --> 34:40.400] I have not looked into any automatic transcription stuff. [34:40.600 --> 34:43.680] I know it's been done in the past by other projects. [34:44.360 --> 34:48.720] I'm really excited to see how SignalScribe goes, because I think it could be really valuable. [34:48.720 --> 34:57.000] Because, I mean, I'm imagining, like, live transcription, transcribing previous calls, and having a text database that could be searched. [34:57.000 --> 34:58.180] I think that could be really powerful. [34:59.600 --> 35:02.020] I know that it has been done by other projects. [35:02.240 --> 35:09.840] Like, there's a crimeisdown.com police scanner for Chicago, which is run by, like, weird right-winger types, because they're all met. [35:09.980 --> 35:14.820] Like, I guess the mayor said crime was down, and they're like, no, listen to the police scanner, crime is up. [35:14.940 --> 35:17.080] And it's just like, dude, you're kind of off on something else. [35:17.080 --> 35:19.960] But they have live transcription. [35:20.740 --> 35:24.360] There's some kind of transcription when I was, like, looking around at different scanners. [35:24.400 --> 35:25.340] So it's possible. [35:25.480 --> 35:26.020] People do it. [35:27.000 --> 35:29.040] I'm excited to see how SignalScribe goes, though. [35:29.400 --> 35:30.560] So, yeah. [35:31.760 --> 35:38.580] And my second question is just, have you tried using HackRF for the SDR? [35:39.440 --> 35:41.160] And if so, how did that go? [35:41.860 --> 35:42.640] I have not. [35:42.760 --> 35:44.300] I do have one, so I could try. [35:44.780 --> 35:48.960] But I kind of, like, I got it working with my RTL SDRs, and I was like, great. [35:49.360 --> 35:50.340] I don't want to touch that. [35:50.560 --> 35:51.780] I want to get the other stuff working. [35:52.860 --> 35:55.320] I would be interested in seeing how that works. [35:57.000 --> 36:00.340] So, currently, the Ansible playbook I'm releasing only supports RTL SDR. [36:02.780 --> 36:04.440] Adding in other devices would be pretty cool. [36:04.580 --> 36:06.280] I could try it out with my HackRF. [36:06.400 --> 36:12.360] And now that I have dev and prod systems at home, that could be something where I'm, like, all right, wipe the dev system, try it out, see how it is. [36:12.360 --> 36:15.600] The biggest thing I'd be curious about is CPU usage. [36:16.660 --> 36:17.840] But I don't know. [36:17.960 --> 36:18.460] I haven't tried. [36:18.840 --> 36:19.860] And so that would be cool. [36:20.220 --> 36:26.220] And another reason was, I think it was cheaper for me to get the four RTL SDRs than one HackRF. [36:27.280 --> 36:28.540] So, yeah. [36:34.020 --> 36:34.600] All right. [36:34.720 --> 36:35.480] Any other questions? [36:35.480 --> 36:35.720] Any other questions? [36:37.300 --> 36:37.780] Any other questions? [36:37.780 --> 36:43.060] I had thought about sharing some experiences of, like, actually using this in real life. [36:43.200 --> 36:49.280] But I think I'll do that in the hallway con after the talk instead of on the permanently recorded live stream. [36:53.770 --> 36:54.850] No questions on the matrix? [36:56.930 --> 36:58.890] Alright, you're free to go. [37:03.570 --> 37:07.490] Yeah, I will say feel free to find me throughout the conference. [37:08.510 --> 37:15.190] I'm gonna go hang out in the hallway if people want to chat, but if you've got questions or anything else, feel free to come and find me. [37:15.790 --> 37:16.230] Thanks.