Google Earth KML Generator for Radio Networks

One thing that really bothers me sometimes is having the same data in multiple places, and having to manually update the same data more than once.  So I was bothered when a colleague recently spent a few days creating a google earth file for our communications network (>150 nodes), even though we had a spreadsheet of all the locations of each node already.  So, in a couple of hours I came up with this program which converts a spreadsheet or csv file into a kml file which can be imported into google earth.

Take the following data (this is not a real network, I just picked a bunch of random points):

Drop the spreadsheet onto the CsvToKml program, and it spits out a kml file, which looks like this in Google Earth:

Now every time we update the spreadsheet all we need to do is feed it to CsvToKml and we get a new google earth file.

| Posted in Software | No Comments »

protplot - now with Fault Level annotations and Chance T fuses

I finally got round to adding fault level annotations to protplot - this was the last feature missing from protplot that we did have in the old spreadsheets that protplot is designed to replace. I have also completed the tedious task of transcribing the graphs for Chance T fuses as well so protplot is pretty much feature complete as per my original plans. There are some more things I'd like to work on (highlighting non grading portions of the graph, and interactive curve adjustments for example), but I don't have a timeline for any of that at this stage.

| Posted in Software | No Comments »

Crosswire Webclient

Crosswire is a dispatch platform that is compatible with SIP, analog and digital radio.  It comes with a Java client which you pay for per instance, but there are occasions where you may want additional people to be able to listen in.  To this end I have developed a web client that watches the crosswire mysql database and plays out the audio in semi real time.  By this, I mean that you have to wait for each call to be persisted to disk before you can listen to it which creates a delay of at least the length of the call before you can listen to it.  It is written in ASP (C# Razor), source is here.

| Posted in Software | No Comments »

Adapting ospf-visualiser for use with RuggedCom RX1500

A handy thing to see in an OSPF network is a visual view of the active paths and costs.  There are a couple of expensive tools around that can do this very well, but there isn't much around that can do it for free.  One such free tool is ospf-visualiser which can take output from quagga and print out a pretty picture of the network.  If you have telnet enabled on a machine with quagga then you can telnet to it and everything is supposed to work, but it isn't compatible with RuggedCom devices out of the box.

Therefore I have extended ospf-visualiser so that it can SSH to a RuggedCom ROXII device, log in using the given credentials and extract the required data to build the model.  Rather than write a new parser for the RuggedCom ospf command output, I have opted to log in to the maintenance shell and run the quagga commands directly so the existing data parser can be used, which means that the total amount of code changed is actually quite small.

New SSH options for source data

New SSH options for source data

Output for example RuggedCom network

Output for example RuggedCom network

The next step will be to enable live listening to LSA packets so that the visualisation is truly live, but for now the source and binaries are on Github


The ArchestrA Attribute Wrangler

One frustration that I often have with ArchestrA is wanting to do bulk updates to attributes on one or more objects.  Things such as,

  • Updating a the description on an attribute that has a typo for all objects descending from a template
  • Change all the alarm priorities on objects hosted in a particular area
  • Changing the IO references for all objects using a particular topic name

Read the rest of this entry »

| Posted in SCADA, Software | 12 Comments »

protplot update

Protplot has been updated with a couple of new features:

  • Improved UI - pretty icons, fixed several annoying bugs
  • Printing - can print to A3/A4
  • Added a pickup multiplier for inverse time curves
  • Added some more fuses curves
  • Now uses .Net Standard (for future windows store aspirations)


Source and binaries on github.

| Posted in Software | No Comments »

Introducing protplot

As a amateur protection engineer, I am often frustrated with the protection grading tools that are out there, or more to the point aren't out there.  More often than not I end up using some clunky spreadsheet that does the job but it just doesn't look that pretty.

So I decided to do something about this situation, and have created protplot.  A simple grading tool that creates both a pretty graph, and a handy data table.

Example Plot

Example Plot

Read the rest of this entry »

| Posted in Software | No Comments »

CoApp for Visual Studio 2015

Some time ago when CoApp was making its first releases, I helped out as a packager for many open source packages.  Unfortunately CoApp seems to be all but dead, although it seems a few people are still using it.  The latest official CoApp release has a couple of issues, one being a lack of support for Visual Studio 2015.  Over the last couple of days I have made an effort to get my head around the somewhat messy codebase that makes up the CoApp project and get it working for the latest build tools.

Short Version

Grab my (unofficial) updated CoApp release that supports VS2015 here.

Long Version

My fork of CoApp.Powershell is based on the .net 4.5 and the Visual Studio 2015 tool chain, so you will need these installed to build it.  You will also need the Sysinternals Suite added to your path, and WiX 3.9 installed. I built it on Windows 10 with the Windows 10 SDK installed, I'm not sure how things will go on other operating systems (if anyone tries let me know!).  You also need to set the powershell execution policy to unrestricted.

I have setup two example repositories that build and create nuget packages, zlib and libpng (forked from the original CoApp repositories).  My NuGet package feed that has these packages is https://www.myget.org/F/raggles/api/v2, note that I haven't actually tried to use them for anything meaningful so if something doesn't work, again please leave a comment.

A couple of notes:

  1. When compiling and debugging your own builds, be sure that the default value of HKLM\Software\Outercurve\CoApp.Powershell\etc\ is set appropriately.
  2. If you want to debug the powershell scripts, instead of attaching the debugger to a powershell process, start powershell from visual studio by setting the project debug action to run C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  and use noexit -command "& { import-module -name 'E:\coapp.powershell\output\v45\AnyCPU\Release\bin\coapp.powershell.dll'}" as the argument (set for your build location obviously).

| Posted in Software | No Comments »

SEL3505-3 USB-Ethernet Driver on Windows 8.1 x64

I recently acquired a SEL 3505-3 RTU for testing, and to configure it one must connect to it via the USB port. The USB port in question is actually a virtual ethernet interface, and according to the documentation in the manual for the 3505 the driver should have been installed automatically. However, for me it simply didn't work. I had a wee look in device manager and tried to install the driver manually to be greeted with this:

sel350533505-driver1 Read the rest of this entry »

| Posted in Software | No Comments »

GitHub for Windows: Can't sync with remote repo

So today I was coding along as usual, but when I tried to sync my repo with GitHub it wouldn't work, and it suggested I try the command line. So try the command line I did, and I got this message:

fatal: unable to access 'https://github.com//': SSL certificate problem: unable to get issuer certificate

This is how to fix it:

Find the Issuer certificate for GitHub's SSL certificate.  In this case we want the "DigiCert SHA2 Extended Validation Server CA".  github1

This can be downloaded from https://www.digicert.com/digicert-root-certificates.htm.  Next we need to convert it to a base64 encoded X.509 certificate - an easy way to do this is to import it into the Local Machine or Current User certificate store, and then export it in the correct format using certmgr.msc for Current User or cerlm.msc for Local Machine.

Next we need to find where Git stores its certificate bundle file.  We do this using by starting the Git Shell, then entering the following command:

>git config --get http.sslCAInfo

That only tells us the relative path, so now we need to locate the entire path - first type 'cmd' to escape from powershell then:

>where git

Combining these two bits of information we can open the file


with wordpad, and copy the contents of the certificate we exported above to the end of this file.  And that's it!

| Posted in Software | No Comments »