flkmrz Just wanted to thank you big time on getting updated instructions out on how to
do this. I've got the thing running, barely, and
have tried it on several old laptops. I currently have it on a gateway quad core system
but haven't gotten any audio out of it yet. I
installed Gqrx also, and that works. I use a hackrf one and because of this the
installation only deviated minimally. How does onego about generating a grc file from this
so you could tap into feeds to see if it's behaving correctly? Thanks again and will
hopefullybe contributing once I get a working op25 going.
From: "flkmrz(a)gmail.com [op25-dev]" <op25-dev(a)yahoogroups.com>
To: op25-dev(a)yahoogroups.com
Sent: Tuesday, June 27, 2017 7:58 PM
Subject: [op25-dev] OP25 for noobs by a noob (long)
Trying to get op25 running was pretty much an exercise in frustration and annoyance.
I've been doing computers for quite a few years, but I'm not a linux power user.
After quite a bit of trial and error, wading through multiple forum posts, and doing more
trial and error, I came up with a (hopefully) complete set of step by step instructions
for getting op25 up and running. These instructions assume that you have just done a clean
install of ubuntu 14.04 32bit linux. I ran into multiple problems with the 64 bit
version. While I'm sure that they could be overcome, it seems the 32 bit version is
easier.
There are also probably other easier and/or faster ways of doing some of this stuff. Some
of the stuff may be redundant. The bottom line is this is what worked for me. Your
mileage may vary. Batteries not included.
So, without further ado....
Make sure you have a working internet connection.
Click on the settings icon on the left. When the system settings window opens, click on
"software and updates".
The first tab (ubuntu software) should have everything checked.
Click on the second tab (other software).
The first two options should be unchecked. Check them. You may be asked for your
password to authenticate after checking the first one. Give it, then check on the second
one.
Click close on the lower right.
You'll be told that the software needs to be updated. Let it.
x out of the system settings window.
Open a terminal window by typing <CTRL><ALT>t
type in the following sequence of commands, pressing the enter key after each line.
Anything in parentheses is a comment.
sudo apt-get update
sudo apt-get update
sudo apt-get install aptitude
sudo apt-get install aptitude
sudo aptitude update
(Yes, some of the commands are issued twice. I found that it makes it work. )
sudo apt-get update
sudo apt-get build-dep gnuradio
(hum the theme from Final Jeopardy. Make a sandwich. Get some chips to go with the
sandwich. Get a cold drink to go with the sandwich and chips. Eat the sandwich and chips,
and drink the cold drink. Quietly hum In A Gadda Da Vida. The long version. You're
going to be here a while.)
sudo apt-get install gnuradio gnuradio-dev gr-osmosdr librtlsdr-dev libuhd-dev
libhackrf-dev libitpp-dev libpcap-dev git
(go refill the cold drink and get some cookies for dessert. Eat the cookies slowly, and
drink your cold drink.)
cd ~
sudo git clone
git://op25.osmocom.org/op25.git
cd op25
sudo mkdir build
cd build
sudo cmake ../
sudo make
sudo make install
sudo ldconfig
Now, we're going to blacklist the standard rtlsdr driver. To do this, use the
following series of commands:
cd /etc
cd modprobe.d
sudo gedit blacklist.conf
Go to the end of the file, hit enter to add a blank line (for readability) and type in the
following two lines:
# this line prevents the standard dvb driver from loading
blacklist dvb_usb_rtl28xxu
At this point, you should have gnuradio and op25 installed. The next thing to do is to
edit the files invoking op25 so you can listen to your system of interest.
use the following sequence of commands to create a shell file to invoke op25 on your
system of interest:
cd ~
sudo gedit op25
Now, type in the following lines. We're going to assume that you want to listen to a
P25 Phase II system.
#!/bin/bash
cd ~/op25/op25/gr-op25_repeater/apps
python scope.py --args 'rtl' -g 65 -f 851.200e6 -N 'LNA:49' -2 -V -v 0 -S
1000000 -q 2 -T trunk.tsv
cd ~
Save the file, and x out of gedit.
An explanation of each of the command line arguments is available in the documentation.
For now, we'll point out that the number following -f is the frequency of the control
channel of interest, and the number following -q is the correction factor in ppm for the
sdr stick that you're using.
Next, we have to edit the trunking control files. Do the following series of commands:
cd ~/op25/op25/gr-op25_repeater/apps
sudo gedit trunk.tsv
The default file that comes with the install lists a number of systems. Delete everything
after the double quotes around "Center Frequency". Hit enter to get to the
beginning of a new line. Type in the following line:
"Kokomo"<tab>"851.200"<tab>"0"<tab>"0x734"<tab>"CQPSK"<tab>"trunkk.tsv"
where <tab> is the tab key. Do not insert any spaces -- use tab only.
By way of explanation, the first is the name of the system. Then comes the frequency of
the control channel. You could insert several control channel frequencies separated by
commas between the quotes, but I've found that this gives less than optimal
performance. The remaining fields are offset, then the system ID (which you can find on
RadioReference.com), the modulation type, and a file listing talkgroups. Substitute the
appropriate data for your system. There is also a provision for whitelisting and
blacklisting particular talkgroups, which I won't cover here.
*** Make sure that there is absolutely nothing after the final quotes. Any spaces will
make the program crash. ***
At this point, save the file, and x out of gedit.
Almost there.....
Finally, we need to create a listing of talkgroups and names. This is actually optional,
but it's much better listening when you can see what talkgroup is active, rather than
just a number.
While there are several ways of getting a talkgroup listing into a file, I'm only
going to cover manually entering talkgroups. Talkgroups are in a tab delimited file,
without quotes around the talkgroup numbers and tag names. For the example file, I'm
only going to put in a couple of talkgroups -- just enough that the idea is obvious.
If you've been following, you should still be in the ~/op25/op25/gr-op25_repeater/apps
directory.
Perform the following series of commands:
sudo gedit trunkk.tsv
Then, enter the following lines. Press the <tab> key between the talkgroup number
and talkgroup name, and press enter after the talkgroup name.
10008 County All-Talk
10022 EMS Dispatch
After you've entered your desired talkgroups, save the file, and x out of gedit.
Go back to your home directory by typing:
cd ~
To start op25, type the following
bash op25
The operation of the program has been documented elsewhere, and it's mostly
self-explanatory.
A couple of hints: If you're getting choppy audio, turn off the displays for the tabs
from spectrum through symbols. A Celeron 530 at 1.73 GHz would barely handle the audio
with the displays turned off.
If you get a NAC error when trying to start the program, check for trailing spaces in your
trunk.tsv file. *Any* spaces at the end will crash the program.
Hopefully, this will make it easier for people to get op25 up and running. Enjoy!
#yiv6860275308 #yiv6860275308 -- #yiv6860275308ygrp-mkp {border:1px solid
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6860275308
#yiv6860275308ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6860275308 #yiv6860275308ygrp-mkp
#yiv6860275308hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px
0;}#yiv6860275308 #yiv6860275308ygrp-mkp #yiv6860275308ads
{margin-bottom:10px;}#yiv6860275308 #yiv6860275308ygrp-mkp .yiv6860275308ad {padding:0
0;}#yiv6860275308 #yiv6860275308ygrp-mkp .yiv6860275308ad p {margin:0;}#yiv6860275308
#yiv6860275308ygrp-mkp .yiv6860275308ad a
{color:#0000ff;text-decoration:none;}#yiv6860275308 #yiv6860275308ygrp-sponsor
#yiv6860275308ygrp-lc {font-family:Arial;}#yiv6860275308 #yiv6860275308ygrp-sponsor
#yiv6860275308ygrp-lc #yiv6860275308hd {margin:10px
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6860275308
#yiv6860275308ygrp-sponsor #yiv6860275308ygrp-lc .yiv6860275308ad
{margin-bottom:10px;padding:0 0;}#yiv6860275308 #yiv6860275308actions
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6860275308 #yiv6860275308activity
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6860275308
#yiv6860275308activity span {font-weight:700;}#yiv6860275308 #yiv6860275308activity
span:first-child {text-transform:uppercase;}#yiv6860275308 #yiv6860275308activity span a
{color:#5085b6;text-decoration:none;}#yiv6860275308 #yiv6860275308activity span span
{color:#ff7900;}#yiv6860275308 #yiv6860275308activity span .yiv6860275308underline
{text-decoration:underline;}#yiv6860275308 .yiv6860275308attach
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px
0;width:400px;}#yiv6860275308 .yiv6860275308attach div a
{text-decoration:none;}#yiv6860275308 .yiv6860275308attach img
{border:none;padding-right:5px;}#yiv6860275308 .yiv6860275308attach label
{display:block;margin-bottom:5px;}#yiv6860275308 .yiv6860275308attach label a
{text-decoration:none;}#yiv6860275308 blockquote {margin:0 0 0 4px;}#yiv6860275308
.yiv6860275308bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6860275308
.yiv6860275308bold a {text-decoration:none;}#yiv6860275308 dd.yiv6860275308last p a
{font-family:Verdana;font-weight:700;}#yiv6860275308 dd.yiv6860275308last p span
{margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6860275308
dd.yiv6860275308last p span.yiv6860275308yshortcuts {margin-right:0;}#yiv6860275308
div.yiv6860275308attach-table div div a {text-decoration:none;}#yiv6860275308
div.yiv6860275308attach-table {width:400px;}#yiv6860275308 div.yiv6860275308file-title a,
#yiv6860275308 div.yiv6860275308file-title a:active, #yiv6860275308
div.yiv6860275308file-title a:hover, #yiv6860275308 div.yiv6860275308file-title a:visited
{text-decoration:none;}#yiv6860275308 div.yiv6860275308photo-title a, #yiv6860275308
div.yiv6860275308photo-title a:active, #yiv6860275308 div.yiv6860275308photo-title
a:hover, #yiv6860275308 div.yiv6860275308photo-title a:visited
{text-decoration:none;}#yiv6860275308 div#yiv6860275308ygrp-mlmsg #yiv6860275308ygrp-msg p
a span.yiv6860275308yshortcuts
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6860275308 .yiv6860275308green
{color:#628c2a;}#yiv6860275308 .yiv6860275308MsoNormal {margin:0 0 0 0;}#yiv6860275308 o
{font-size:0;}#yiv6860275308 #yiv6860275308photos div
{float:left;width:72px;}#yiv6860275308 #yiv6860275308photos div div {border:1px solid
#666666;min-height:62px;overflow:hidden;width:62px;}#yiv6860275308 #yiv6860275308photos
div label
{color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6860275308
#yiv6860275308reco-category {font-size:77%;}#yiv6860275308 #yiv6860275308reco-desc
{font-size:77%;}#yiv6860275308 .yiv6860275308replbq {margin:4px;}#yiv6860275308
#yiv6860275308ygrp-actbar div a:first-child
{margin-right:2px;padding-right:5px;}#yiv6860275308 #yiv6860275308ygrp-mlmsg
{font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6860275308
#yiv6860275308ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6860275308
#yiv6860275308ygrp-mlmsg select, #yiv6860275308 input, #yiv6860275308 textarea {font:99%
Arial, Helvetica, clean, sans-serif;}#yiv6860275308 #yiv6860275308ygrp-mlmsg pre,
#yiv6860275308 code {font:115% monospace;}#yiv6860275308 #yiv6860275308ygrp-mlmsg *
{line-height:1.22em;}#yiv6860275308 #yiv6860275308ygrp-mlmsg #yiv6860275308logo
{padding-bottom:10px;}#yiv6860275308 #yiv6860275308ygrp-msg p a
{font-family:Verdana;}#yiv6860275308 #yiv6860275308ygrp-msg p#yiv6860275308attach-count
span {color:#1E66AE;font-weight:700;}#yiv6860275308 #yiv6860275308ygrp-reco
#yiv6860275308reco-head {color:#ff7900;font-weight:700;}#yiv6860275308
#yiv6860275308ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6860275308
#yiv6860275308ygrp-sponsor #yiv6860275308ov li a
{font-size:130%;text-decoration:none;}#yiv6860275308 #yiv6860275308ygrp-sponsor
#yiv6860275308ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv6860275308
#yiv6860275308ygrp-sponsor #yiv6860275308ov ul {margin:0;padding:0 0 0 8px;}#yiv6860275308
#yiv6860275308ygrp-text {font-family:Georgia;}#yiv6860275308 #yiv6860275308ygrp-text p
{margin:0 0 1em 0;}#yiv6860275308 #yiv6860275308ygrp-text tt
{font-size:120%;}#yiv6860275308 #yiv6860275308ygrp-vital ul li:last-child
{border-right:none !important;}#yiv6860275308