Saturday, January 23, 2010

Junk Or Repair?

I have serveral Princeton monitors, including two VL-1919 monitors on my main LINUX development box.

The power supplies on these monitors do not age gracefully, and I was a little irritated when both of my VL-1919 started to flake out within weeks of each other.

To my surprise, there is someone who repairs these power supplies: go to eBay and search for "resurrectek" - they do a variety of repairs for a fixed rate.

For $29 each I now have two happy monitors instead of $100+ for two new tubes plus the ewaste from my old displays.

Back to work...

Sunday, January 17, 2010

Mellow Panda and the BC-780-XLT

The Uniden BC-780-XLT is a oldie but goodie as radios go. Perform a Google search and you will see there is a lot of love for the 780. Thanks to eBay, I have a several of these radios and they are a lot of fun w/a computer. My only complaint would be the poor image rejection, especially the 2nd harmonic above the FM broadcast band.

The 780 is too old for USB and uses a DB-9, which might be a problem since many new computers only have USB ports. I have had good luck w/the TRENDnet TU-S9 USB to RS-232 converter (also works w/my Icom PCR-1000). If you are connecting your 780 to Mellow Panda via USB, you can get the port assignment via dmesg (it will look something like "/dev/ttyUSB1"). This is the value you want for pandad.conf

On the 780 itself, jack up the serial speed to 19.2K (all the way up). This also needs to be reflected in pandad.conf

Bearcat commands follow a request/response cycle in that the computer issues a command/request and the radio responds. All commands/requests will generate a response from the radio like "OK" or "ERR" or a request specific response. If you issue a command using Mellow Panda and do not see a response, there is a connectivity problem.

Note: the 780 will not respond to remote commands if the menu tree is displayed. Press the "menu" key to back out. Of course the RMT flag should also be visible on the display.

There are several sources of information on the Bearcat Uniden command set. Most of the commands make sense, especially if you are familiar w/using the radio.

Mellow Panda tries hard to make your radio accessible: you can exercise the radio by running pandad in the foreground or you can use the panda client. For example, the "SI" command will return system information such as the radio model and version.

For pandad in foreground: ./pandad -x panda://device/raw/bc780.a/SI
For panda client: ./panda -r bc780.a -k raw/SI
Response looks like: SI BC780XLT,0000000000,103

The real fun starts when you need to string commands together to complete a task. Not everything you want to do has an explicit command. Happily, Mellow Panda makes it easy to experiment and I will provide examples of common 780 tasks.

Note:several of these examples are already available as bash scripts in the Mellow Panda demo directory.

Store a frequency and then assign a alphanumeric tag (visible in the radio display)
./panda -r radio_name -k "raw/PM005 01220000"
./panda -r radio_name -k "raw/TA C 005 Flight Watch"


Define channel 5 as the priority channel
./panda -r radio_name -k "raw/PC A004"

Monitor a Motorola Type-2/800 trunk system using only the control channel
./panda -r radio_name -k "raw/PM051 08541875"
./panda -r radio_name -k "raw/KEY13H"
./panda -r radio_name -k "raw/TCN B P1"
./panda -r radio_name -k "raw/KEY00"
./panda -r radio_name -k "raw/KEY13"

Monitor a Motorola Type-2/800 trunk system by defining all associated frequencies
./panda -r radio_name -k "raw/KEY11"
./panda -r radio_name -k "raw/KEY02 3"
./panda -r radio_name -k "raw/KEY02 2"
./panda -r radio_name -k "raw/KEY02 1"
./panda -r radio_name -k "raw/KEY02 1"
./panda -r radio_name -k "raw/KEY11"
./panda -r radio_name -k "raw/KEY11"
./panda -r radio_name -k "raw/KEY11"
./panda -r radio_name -k "raw/PM051 08541875"
./panda -r radio_name -k "raw/KEY13H"
--and more frequencies--

./panda -r radio_name -k "raw/SB B"

./panda -r radio_name -k "raw/KEY00"

./panda -r radio_name -k "raw/KEY13"

Saturday, January 16, 2010

Project Panda

I have released Mellow Panda on SourceForge.

Mellow Panda is a collection of applications which control radio receivers ("scanners") from LINUX via their RS-232/USB interfaces.

Mellow Panda deploys as a daemon (pandad) and specialized clients. pandad is a generic gateway which exposes a TCP stream socket to accept client requests which are relayed to the radios via RS-232/USB. The response returns via the reciprocal path.

pandad is generic and does not interpret the radio commands. Each radio model potentially has a different command set and this specialized knowledge is provided by the client. pandad can simultaneously support multiple radios, each a different model. I routinely drive a Icom PCR-1000, BC-780-XLT and a PRO-2052 all using the same instance of pandad (but each w/a dedicated client).

A twist to this problem is that many models have an asynchronous messaging capability, i.e. the Uniden Bearcat radios will send a message when squelch breaks or trunk id. The Icom PCR-1000 family has a "bandscan" feature which can be used to produce a spectral graph. Each active radio has a UDP socket which broadcasts all traffic generated by the radio. Clients can issue requests via the TCP socket and accept the response either via TCP or get all messages via UDP.

The panda protocol is a simple ASCII string. Even a telnet client is sufficient (I used a telnet client in the early stages for testing).

Communication via a socket has all the usual benefits, sharing a scarce resource and flexibility. Clients can be implemented using any platform or language which is convenient. The pandad distribution has a command line client implemented in C which is useful for development/test and simple scripts.

Other clients will follow as I get them ready to share. pandapy (python) is almost ready along w/pandaj (Java Swing) and pandalet (Tomcat Servlet). You are welcome to contribute additional clients to the project.

Mellow Panda is part of Project Mellow which I am releasing as time permits.