Rick Parrish, KD4VXY ? the author of UniTrunker reportedly has the ability to de-code a P25 control channel.
He also wrote a handy utility called kNACk. This recognizes the APCO Project 25 voice channels enough to display the 12 bit NAC code. The NAC code is similar to CTCSS tones and DCS codes (aka PL or DPL). The program functions off the soundcard and a discriminator connection. There isn't much too it. Select "Default Input" in the combo-box. If it says "running" ... then your good to go. If after a few tries you don't see anything other than "000" - try checking the signal invert box. When you're done, press the "X" box in the top left corner to close the program.
It would be very beneficial for the amateur radio audience for Rick to share his source code or create some sort of white paper on decoding P25.
Rick Parrish has held an interest in computers since high school and in electronics even longer. He originally pursued an education in electrical engineering but discovered that software, unlike hardware, did not require smelly vats of ferric chloride or run the risk of burnt fingers just to perform a design change. Rick has been programming in C/C++ for A LONG TIME(tm) but has also done heaps of work in VB, Delphi(Pascal), and a handful of assembly languages. He still manages to squeeze in a project or two that requires hot solder. His current opinions are that while Windows 2000 is neat-o, Ogg Vorbis is cool, and the Linux 2.4 kernel with IPTables definitely rocks! He is currently interested in starting an open source project to develop tools for software modeling design. Rick Parrish writes software for a living but also lends a hand in several open-source projects. His current interests include 3D graphics and visualization, decoding digital radio signals, and creating a scriptable database framework for Mozilla. Rick can be reached at rfmobile [at] swbell.net.
Some good NAC's to remember though are:
$293 - default NAC
$F7E - a receiver set on this will unsquelch with any incoming NAC
$F7F - a repeater set on this will allow incoming signals to be repeated with the NAC code intact.
Eric Cottrell, WB1HBU mentions in a message dated 4/02/08:
I am still working on a P25 decoder. I managed to spend over a week finding
out my AR5000 does not pass the P25 waveform cleanly. 9600 baud EDACS is no
problem with the AR5000. It appears there is too much level shifting of the
waveform for a clean P25 decode. There is some circuitry in the AR5000 between
the Discriminator Output and the Demod Output. There is a mod to tap directly
off the Discriminator Output. With the bad output I could not get a good decode
of the sync bits and data clock recovery did not work well.
I tried my WinRadio G305e today as a test and the waveforms look a lot better. I still need to feed it through the decoder and see if I can get good decodes. Back to Square One.
Tim Warth, AA2RS showed how-to use two Motorola Maxtracs for a poorman's Astro/P25 repeater
His mod is transparent. ANYTHING it hears that breaks squelch, including intermod and spurious noises, will get repeated. (Data is not regenerated.)
If Rick's NAC decoder included his source code it would be possible to add code to have the program change the logic status of a parallel / printer or serial port pin on the computer which could be used for a COR input to a repeater controller. (This idea was first asked on the batlabs message board in a thread about Tim's Maxtrac P25 mods.)
This would solve the problem of running a wide open transparent repeater for IMBE. You could write the software to allow only specifics NACs to give you a low or high on one of the serial port pins. You could use this signal similar to a digital COR signal line. If the proper NAC is present it would allow a repeater to key, if not it will not key up on noise or skip.
Another interesting batlabs message board thread is the Asterisk based DIY P25 repeater and RoIP.
Astro Spectra » Mon Oct 06, 2008 6:33 pm
DIY P25 repeater technology seems to be one of the forum's holy grails.
While Quantars are nice you need a DIU to interface to a phone patch in P25 mode
and RS-232 modem cards for repeater linking. Not only does this cost a deal of
money but delivery isn't overnight.
A while ago I came across the web site http://app-rpt.qrvc.com/ which stuck in my mind. This is some free radio linking software to add on to another free PABX software project called Asterisk. To get started there is some great documentation at http://dl.allstarlink.org/installcd/acid-sysadmin.pdf and note that for a stand alone system you don't need Allstar link registration. To get a proper feel for all this stuff explore all the links on the pages I've listed. If you don't speak Linux get a tame geek who does. There has been a mention or two here on the board about Asterisk but I've not heard of anyone actually building something.
The other day I needed a P25 phone patch and an HF remote in a hurry (as you do).
Using some ready made USB interfaces (from http://dmkeng.com/URI_Order_Page.htm ), a surplus one rack unit high IBM x330 server (1.4 GHz PIII-S 1.5GB RAM), and two VHF W3 100W Astro Spectra radios we had a pretty good system up and running in less than a week. The dial tone service was SIP over the IP backhaul.
Everything was stock except the custom Y cable (consisting of three DB25P male connectors) to go between the Spectras and the URI interface. I removed the W3 HHC mics from the original cable harness that connects to the LHS P5 connector and plugged them directly into the centre J6 connector on both Spectras trays and wired the transceiver ends of the DB25P Y cable to have +12 on the IGN pin 3 and of course tied the EMER pin 13 to DIG GND pin 8. That way you can remove the HHC if you want and the radio will power up on whatever the last mode it was set to. The overall cable screen went to DIG GND pin 18 and the DB25 shell.
On the transceiver being used as the repeater receiver I used DET audio on pin 9 for receive audio with the screen to ANA GND pin 10. For the COR I pulled the command board and jumpered the audio IC (special Motorola pin out version of the TDA7256) enable pin 10 (pin 1 is on the LHS of the IC) to J5 pin 16. This gives you a COR output, +12V on idle and gnd on receive. The idea for this came from Pyramid Communications and I think it’s better than trying to look at the DC voltage on the speaker leads. If you want a monitor speaker it hooks to pins 25 and 24.
The URI interface support more complex arrangements like separate CTCSS input and outputs CTCSS detect and even DSP squelch but since this application was P25 the simple logic COR was all that was needed.
The transmit unit needed no mods, audio goes to MIC HI pin 12, screen to MIC LO pin 11, and PTT to pin 1. Again the overall cable screen went to DIG GND pin 18 and the DB25 shell.
The Astro Spectra’s I used needed no other jumpers or mods. YMMV.
On the common DB25P that goes to the URI the following pins are used: PTT to PTT pin 1, COR to COR pin 8, MIC HI to LEFT_AC pin 9, DET to MIC_AC pin 21, audio screens to 19 and 20, overall cable screen to the DB25P shell.
The usbradio.conf file needs to match the radio configuration along the lines of:
;txctcssdefault=88.5 disable CTCSS
;rxctcssfreqs=88.5 disable CTCSS
;txctcssfreqs=88.5 disable CTCSS
In autopatch mode the audio is fine. In repeater mode the back to back vocoding is not spectacular but perfectly adequate for comms. The radio are set to low power and run about 40W out without overheating.
The obvious question people ask is how to dial when in P25 mode. Well right now you can't without a bit of a work around. What I did was set up the repeater receiver in mixed mode. On the mobiles I set two adjacent modes, one analog TX and mixed RX to place the call and a second mode, ASTRO both ways, for the conversation. To limit hacking I protected the analog mode with DPL. Not ideal but it works. The pirates probably can't hear the autopatch prompts anyway as they are in P25 and there are a few other tricks that can be pulled to limit access like variable PIN prompts or account codes.
Ideally you'd want to be picking out the Astro dial string from the SB9600 bus, but that's another whole can of whatever. I would probably require a licence if done on a commercial basis and if you're going to go that far then buy a Quantar and a DIU.
While I used a server there is a nifty project for an embedded version here: http://limeylinux.org/
What else can you do with this stuff? Well apart from repeaters, autopatch and remote base applications IP linking of repeaters is made easy as is a mini software based desktop software (see http://www.xelatec.com/xipar/iaxrpt ). There is even some MDC 1200 code around if you like that sort of stuff.
"We've determined that the open source Asterisk PBX appears to be a good framework onwhich to build a P25 ISSI (Inter RF Subsystem Interface) switch. Asterisk has a mature SIP stack and already has the ability to transparently pass RTP frames between SIP channels. The National Institute of Standards and Technology (NIST) has made an open source program for ISSI testing freely available to the P25 community. A full-featured open source P25 ISSI switch is clearly achievable."
The Project 25 Inter RF Subsystem Interface (P25 ISSI) is a non-proprietary interface thatenables RF subsystems (RFSSs) built by different manufacturers to be connected together into wide area networks. Apparently consideration is being given to enhancing Asterisk app_rpt to support a such a low-level P25 radio interface.
The open source project25 interface is a good idea. Unfortunately the problem they're facing is that most of the manufacturers don't bother following the ISSI spec, nor does the ISSI spec call out hardware interface details. So basically the "plugs" on the back of say, a Quantar... don't match the "plugs" on the back of a Mastr III.