Uniden SDS200 Web-based Application - anyone interested?

Status
Not open for further replies.

rabarar

Member
Joined
Dec 20, 2018
Messages
13
I recently purchased the SDS200 Scanner and see that the only application solutions are Windows-based (ProScan ARC536 Sentinel). Is there any interest for a web-based application that is OS-neurtral to control the scanner remotely? I started playing with the LAN packet interface on the scanner and think it would be relatively straight-forward to reverse-engineer the UDP packet protocol. Currently, I've written a Monitor-Only command-line version that displays the General Status Information that streams from the scanner. If there's sufficient interest, I may release an open-source solution. Here's an example of the output ...


$ ./udpdump

2019/11/13 22:42:29 Established connection to 192.168.1.26:50536

2019/11/13 22:42:29 Remote UDP address : 192.168.1.26:50536

2019/11/13 22:42:29 Local UDP client address : 192.168.1.15:62159

Model: SDS200

Volume: 10

Squelch: 15

Power: -95,08562125

System: Baltimore County, Department: Police, Site: South, Freq: [ 856.212500MHz] Mon: [Full Database]

Mode: Trunk Scan

Model: SDS200

Volume: 10

Squelch: 15

Power: -94,08562125

System: Baltimore County, Department: Police, Site: South, Freq: [ 856.212500MHz] Mon: [Full Database]

Mode: Trunk Scan

Model: SDS200

Volume: 10

Squelch: 15

Power: -999,08523375

System: Baltimore County, Department: , Site: South, Freq: [ 856.212500MHz] Mon: [Full Database]

Mode: Trunk Scan

Model: SDS200

Volume: 10

Squelch: 15

Power: -999,07722562

System: Carroll County, Department: , Site: Simulcast, Freq: [ 851.162500MHz] Mon: [Full Database]

Mode: Trunk Scan

Model: SDS200

Volume: 10

Squelch: 15

Power: -86,07723312

System: Central Maryland Area Regional Communications Committee (CMARC), Department: , Site: Howard/Carroll, Freq: [ 772.331250MHz] Mon: [Full Database]

Mode: Trunk Scan

Model: SDS200

Volume: 10

Squelch: 15

Power: -86,07723312

System: Central Maryland Area Regional Communications Committee (CMARC), Department: , Site: Howard/Carroll, Freq: [ 772.331250MHz] Mon: [Full Database]

Mode: Trunk Scan

Model: SDS200

Volume: 10

Squelch: 15

Power: -999,07694812

System: First Responders Interoperable Radio System Team (FIRST), Department: , Site: Baltimore Simulcast, Freq: [ 773.806250MHz] Mon: [Full Database]

Mode: Trunk Scan
 

Stupidfatkid

Member
Joined
Apr 26, 2004
Messages
171
Location
Kansas
This project sounds interesting to me. I assume it'd be running on a web server? For the hardware are you thinking Raspberry Pi? What would you code the app in? Node.js? Flask? I'm intrigued.
 

nick0909

Antenna flicker
Feed Provider
Joined
Jan 4, 2003
Messages
142
I would love this. Right now I stream several scanners but they are older models because I want to keep my remote control capabilities I've gotten working. If I could change scan banks, hold scanning and other basic features of this newer scanner that would be awesome.

I created RemoteFS on Android that connects to the Freescan server to control the scanner, that is all REST commands. You could just do a REST API to start and then let apps get created off that, or design the whole web control interface as well as the communication.
 

rabarar

Member
Joined
Dec 20, 2018
Messages
13
This project sounds interesting to me. I assume it'd be running on a web server? For the hardware are you thinking Raspberry Pi? What would you code the app in? Node.js? Flask? I'm intrigued.

the code is written in golang and essentially starts a server that connects to the UDP port of the scanner and listens for incoming websocket connections from a client. The first connection from a client locks the scanner and gets to control it until it disconnects. I may make a read-only connection for the remaining clients at some point but don’t see the need just yet. The software can run on any platform - Linux, Windows, or MacOS.
 

Stupidfatkid

Member
Joined
Apr 26, 2004
Messages
171
Location
Kansas
I would love this. Right now I stream several scanners but they are older models because I want to keep my remote control capabilities I've gotten working. If I could change scan banks, hold scanning and other basic features of this newer scanner that would be awesome.

I created RemoteFS on Android that connects to the Freescan server to control the scanner, that is all REST commands. You could just do a REST API to start and then let apps get created off that, or design the whole web control interface as well as the communication.

Creating a REST API is an interesting idea too. Out of curiosity, how often does the RemoteFS app poll the FreeScan REST API to update the live display on the RemoteFS app?
 

Stupidfatkid

Member
Joined
Apr 26, 2004
Messages
171
Location
Kansas
the code is written in golang and essentially starts a server that connects to the UDP port of the scanner and listens for incoming websocket connections from a client. The first connection from a client locks the scanner and gets to control it until it disconnects. I may make a read-only connection for the remaining clients at some point but don’t see the need just yet. The software can run on any platform - Linux, Windows, or MacOS.

Golang. That's hardcore. Thanks for your explanation. It got me thinking how I could do something similar in Python. I ended up writing a simple Python script that sends a UDP packet to the SDS with the remote command "GSI". I'll be damned if it didn't work.

$ python ./getScannerInfoGSI.py <?xml version="1.0" encoding="UTF-8"?> -<ScannerInfo V_Screen="trunk_scan" Mode="Trunk Scan"> <MonitorList DB_Counter="0" N_Tag="None" Q_Key="0" ListType="FL" Index="0" Name="Lake House"/> <System N_Tag="None" Q_Key="0" Index="4" Name="Interoperable Communication System (KSICS)" Hold="Off" SystemType="P25 Trunk" Avoid="Off"/> <Department Q_Key="0" Index="4294967295" Hold="Off" Avoid="Off"/> <TGID N_Tag="None" Index="4294967295" Hold="Off" Avoid="Off" LVL="0" P_Ch="Off" RecSlot="Slot None" SetSlot="Slot Any" TGID="TGID: ---"/> <UnitID/> <Site Q_Key="None" Index="17" Name="Douglas County" Hold="On" Avoid="Off" Mod="NFM"/> <SiteFrequency SAD="NAC 1B6h" SAS="NAC 1B6h" IFX="Off" Freq=" 852.450000MHz"/> <DualWatch WX="Off" CC="Off" PRI="Off"/> <Property Rssi="-105" Dir="Up" A_Led="Off" Backlight="100" Mute="Mute" P25Status="Data" KeyLock="Off" Rec="Off" Att="Off" Sig="3" SQL="0" VOL="15" F="Off"/> -<ViewDescription> <InfoArea1 Text="SITE HOLD"/> <OverWrite Text="ID Searching..."/> </ViewDescription> </ScannerInfo>
 

nick0909

Antenna flicker
Feed Provider
Joined
Jan 4, 2003
Messages
142
Creating a REST API is an interesting idea too. Out of curiosity, how often does the RemoteFS app poll the FreeScan REST API to update the live display on the RemoteFS app?

It is configurable, right now I have mine set at 250ms. If I am at home I can set it as low as 100ms, but depending on what type of network I am on if I'm mobile it will start missing polls so I set it higher. I normally find 100-500ms works pretty well.
 

rabarar

Member
Joined
Dec 20, 2018
Messages
13
So, I've added a lot of capability to the program - one issue - the firmware doesn't seem to properly respond to the Q key push to exit menus.... Not sure if anyone else is playing with the KEY command and has had any success. Beyond that, most of the interaction seems to work as expected. I'm going to next look at the USB filesystems for the Sentinal capabilities.
 

maus92

Member
Premium Subscriber
Joined
Jun 23, 2004
Messages
8,488
Location
The OP
I would be very interested. I use Mac computers and I really dislike booting up the Windows VM to reprogram the all the radios I have.
I'm lucky enough to have a lab that has all kinds of computers and OSs, so the platform doesn't really matter to me as long as the interface is logical and refined. This is why a web interface has so much promise if well designed.
 

ProScan

Software Provider
Premium Subscriber
Joined
Jul 2, 2006
Messages
8,043
Location
Ontario, Calif.

Stupidfatkid

Member
Joined
Apr 26, 2004
Messages
171
Location
Kansas
My machines are split between Windows and Linux. I do have an old Mac, but it's hard to run your binary on it when I really don't know what it's doing. I'm sure it's fine, but hopefully you can see why people are hesitant.
 

rabarar

Member
Joined
Dec 20, 2018
Messages
13
My machines are split between Windows and Linux. I do have an old Mac, but it's hard to run your binary on it when I really don't know what it's doing. I'm sure it's fine, but hopefully you can see why people are hesitant.

totally understand. however, on OS X Catalina, you have to give permission to access sensitive filesystem or io and you can control that access to mitigate unwanted actions.

Nonetheless, I thought I'd post it to test the interest. If there was any interest in the source, I'd post that as well. I thought it would be easier to push the binary onto the repo than the source for those who weren't familiar with golang and it's build environment.
 

dvendt

Member
Joined
Jun 27, 2012
Messages
179
Location
Elysian, MN
I have a lot of resect for you guys who can code. I can barely do english, my first and only language.
 

rabarar

Member
Joined
Dec 20, 2018
Messages
13
If you can speak english - you can code!!! Try it!!! Go to golang.org and take a peek.
 
Status
Not open for further replies.
Top