SBS1 Utilities
If you find these utilities useful you can show your appreciation by donating any amount using the PayPal button below.
All the utilities are now packed up into a single binary called sbs1xxx / sbs1xxx.exe. On each major update I will be releasing builds for the following operating systems:
- Linux 2.6.xx
- Mac OS X 10.5.x+
- FreeBSD 6.2/6.3
- Windows 2000/XP - Please note that I am not a regular Windows user and therefore this build is the most buggy as some POSIX features have to be emulated.
- I will also release a build for NSLU2 SlugOS LE occasionally
New features:
- Basestation TCP 30003 compatibility mode, use
--output-type tcp30003or--ot tcp3003parameter - Multiple receiver support, you can now connect up to 5 receivers either over USB or TCP/IP and merge their output into a single stream
- Output stream can now be redirected to console/stdout using the
--stdoutflag, you can save some resources when TCP connection is not necessary
A few usage scenarios before documentation is ready:
- Multiplexer - This mode is available for UNIX builds only. Windows users are kindly asked to purchase a copy of JetVisions Multi-EM software.
sbs1xxx --sbs1dev /dev/ttyUSB0 --multiplexer 1234 --check-crc
sbs1xxx --sbs1ip 192.168.1.3:10001 --multiplexer 1234 --check-crc - Custom decoder - This mode is available on all platforms. It decodes ModeS messages and prints data either to stdout or a socket connected to built in server
sbs1xxx --sbs1ip 192.168.1.3:10001 --ot tcp --stdout --check-crc - BS3003 compatible feed - This mode is available on all platforms. It does its best to emulate Basestation default TCP 30003 data feed without the sqlite3 database of course
sbs1xxx --sbs1ip 192.168.1.3:10001 --ot tcp30003 --ss --ssp 30003 - Multiplexer and decoder - You can use multiplexer together with the built in data decoder, here I use 'gps' mode which produces files almost directly acceptable by gps-visualizer service:
sbs1xxx --sbs1dev /dev/ttyUSB0 --multiplexer 20072 --ot gps --stdout - Multiple receivers / merging data - You can now connect up to 5 SBS-1 receivers and merge their data into a single ModeS stream. This stream can be connected to Basestation with multiplexer option and/or decoded by one of the built in decoders:
sbs1xxx --sbs1dev /dev/ttyUSB0 --sbs1ip 192.168.1.3:10001 --multiplexer 20072 --ot gps --stdout
Testing:
As mentioned in the recent post this software still needs testing. I am particularly interested in checking how it decodes ModeS reports from planes all over the world as 100% of testing was performed in Europe with positive latitude and longitude values. There is an option which will let you record raw ModeS messages which you can later send to me for debugging:
--record /path/to/file.rec
EULA:
By downloading and using this software you confirm that you understand the following license. You are allowed to use this software for personal non-commercial and research purposes only. You are not allowed to modify, redistribute it in any form. You may create a freeware/open source product that uses this software but you must not include the sbs1xxx utility it in your application bundle.
If you'd like to use any of my utilities in a commercial product or for different than research purposes please mail me for a formal written approval.
Downloads:
- Linux 2.6.xx - sbs1xxx_linux_20100304-1211.tar.gz
- MacOSX 10.5.x - on request only
- FreeBSD - on request only
- SlugOS - on request only
- Windows - on request only
February 5th, 2010 - 12:23
Hi Piotr,
great work, not only your website! Just one thing: when I type
“file sbs1xxx_linux_20100203-2254.tar.bz” it says:
“gzip compressed data, from Unix, last modified: Wed Feb 3 22:54:51 2010″
Your file is neither bzip compressed nor tarred, but apart from that, it works great!!! Thank you very much.
BTW: Did you change the TCP output? I see here 17 fields instead of the former 15. It seems that there are two additional fields between “Ground Speed” and “On Ground Flag”. I also saw many undocumented options when I opened the executable with a text editor. Maybe you could give a short explanation of the command line options.
Helge.
February 5th, 2010 - 13:23
Hi Helge,
I used tar -czf and still named it tar.bz instead of tgz, the file name is fixed now.
Yes, there are two more fields IAS and TAS, but they are not present very often. I will provide more detailed information when I have some more time.
btw. the theme was not created by me, it’s “monochrome” by “mono-labs”. I think I’ll have to change it again as it uses too space to display useless information.
February 7th, 2010 - 14:03
Great work! Just what I’ve been looking for.
Is there some correction / datum change to the output longitude based on the receiver location? As is it is, it doesn’t look correct. Almost looks like (100.0 – lon) would be more like what I’d expect here.
Regards
Colin
February 7th, 2010 - 14:26
Hi Colin,
Can you please create a record file so I can debug it on my machine?
The new algorithm does not need to know the receivers location, but as I said it was tested exclusively in Europe so I didn’t really have a chance to play with Western Hemisphere :)
February 7th, 2010 - 17:24
@Piotr
Piotr
Okay – as soon as I have an email address for you I will attach some –record output.
BTW – I’m located in NW. England so would expect to see longitudes perhaps from 1Deg East to 4Deg West. Perhaps getting contacts on “both” sides of 0Deg meridian is the issue?
Colin
February 7th, 2010 - 18:00
Thanks, I have replied to you by email. I can’t tell at this point whether it’s the 0deg crossing issue or not. The algorithm itself was written according to ICAO docs, I believe they have taken that into account, but I must have left a bug. Waiting for a recording now :)
Piotr
February 12th, 2010 - 11:39
Hi Piotr,
when I have a look into the hex output I can see the DF04, DF05, DF11, DF17, DF20 and DF21. Do you know if it is also possible to get the DF00 and DF16 from the SBS1?
Best regards
Helge.
February 12th, 2010 - 11:41
Unfortunately the only way to do that would be to modify the FPGA firmware which is not something I am going to play with. Especially when you can build your own non-restricted receiver for about $50.
February 12th, 2010 - 12:49
Thank you, so the “–ot hex” is really everything that is coming from the receiver.
April 27th, 2010 - 23:59
Hi Piotr,
is it true that the multiplexer can supply only two connections and the socketserver allows only one connection. The Basestation Software allows multiple connections at once.
April 28th, 2010 - 09:09
Hello Bob,
The multiplexer can handle more than two connections at once, but the socket server ( decoded output ) can only accept one connection. This might change in future, but for now it is this way.
April 28th, 2010 - 11:45
Thank you for your answer.
Due to lack of docs I spent a lot of time to found out that you have a typo in your BS30003 example (-ot tcp30003 instead of –ot tcp30003, both look common in Unix environments).
In fact I tested the multiplexer with 5 PCs connecting from Basestation Software and it works. Badly the decoded output allows only one connection :-(( . This would be really nice.
In the hope it may help others, here’s a working example commandline:
sbs1xxx —sbs1ip 192.168.1.170:10001 –ot tcp30003 –ss –ssp 30003 –multiplexer 20072
(no line breaks here)
Explanation:
–sbs1ip = IP-address and port of SBS-1 box (192.168.1.170:10001)
–ot tcp30003 = BaseStation compatible output
–ss = enable socket-server, decoded output as from BaseStation software, only one connection allowed
–ssp = socket-server port (30003)
–multiplexer 20072 = port to connect with BaseStation software (Settings->Hardware Settings->Network (IP-adress from multiplexer and Port 20072), multiple connections allowed
April 28th, 2010 - 11:48
The problem is WordPress replaces double “-” with one longer “–” when not using [code]code[/code] tag :/
May 13th, 2010 - 14:42
Piotr
I’m using sbs1xxx for a few days now as multiplexer and BS decoder. After a number of hours or even days, sbs1xxx becomes dead. No more output on both the multiplexer and the socket server. I run sbs1xxx in the background using
> /dev/null & at the end of the command line.
Is there a way to debug what happens?