Posts

Inspecting Uniden BCi96D firmware

Image
Unzip BCi96DVUP_V1_03.zip extract BCi96DVUP_V1_03.cab (unzip) run admin regsvr32 comctl32.ocx run BCi96DVUP_V1_03.exe  run BearMock to get decoded Motorola S-record format file https://techcoderadio.blogspot.com/2025/04/bearmock-for-python-3.html BCi96DVUP is VB6 (Detect It Easy) Code inside .exe CPU is M16C/60   Ghidra can disassemble M16C/62N    

Bearmock for BC VUP Version 3

Image
https://techcoderadio.blogspot.com/2025/04/bearmock-for-python-3.html   from time import sleep from serial import Serial __MODEL = 'BCT15X' __PORT = 'COM4' __SPEED = 9600 __TIMEOUT = 0  # non-blocking __READ_SLEEP_SECS = 0 __OUT = 'bct15x-decoded.s19' __ACTIONS = {     'æ€\r': 'ERR\r',  # Empty, just reply     '\r': 'UNKNOWN COMMAND\r', #Empty, just reply .... Strange chars coming first ... just reply error XON/XOFF software flow control if __name__ == "__main__":     try:         port = Serial(__PORT, __SPEED, timeout=__TIMEOUT, bytesize=8, parity='N', stopbits=1, xonxoff=True)     except Exception as ex:         print(ex)         exit()  

Telive-2 how-to

Image
Oracle VirtualBox Debian 12 clean install sudo apt install rtl-sdr sudo apt install wireshark sudo apt install xterm sudo apt install audacious https://github.com/sq5bpf/telive-2 download: https://github.com/sq5bpf/telive-2/tree/main/scripts/install_telive.sh or wget it chmod 755 install_telive.sh ./install_telive.sh set desired frequency teliveusr@debian:~/tetra/telive-2/gnuradio-companion/python3_based_gnuradio$ nano telive_1ch_simple_gr310_udp_xmlrpc.grc     open 2 terminal windows run GNU Radio Companion, load and execute the grc in terminal window 1 run teliveusr@debian:~/tetra/osmo-tetra-sq5bpf-2/src$ ./receiver1udp in terminal window 2 run teliveusr@debian:~/tetra/telive-2$ ./rxx   receiver1 and receiver2 require simdemod2.py. It can maybe copied from original telive src teliveusr@debian:~/tetra/osmo-tetra-sq5bpf-2/src/demod$ ls __pycache__  simdemod3_telive.grc  simdemod3_telive.py  simdemod3_telive_send_udp_to_telive.py

Inspecting Alinco DJ-X11E firmware

Image
Alinco DJ-X11E firmware update tool DJ-X11_ver_2_60E.exe is written with VB6. No need to install, just extract it: msiexec /a DJ-x11_ver_2_60E.msi /qb targetdir=g:\temp\t\djx11\   Detect It Easy strings view shows that there is Motorola S-record data inside .exe I exported extracted strings to file and wrote short Python script for extracting S-record data to file fin = open("G:\\DJ-X11_ver_2_60E.exe.Strings.txt", mode="r", encoding="utf8") fout = open("G:\\DJ-X11_ver_2_60E.exe.txt", mode="w", encoding="utf8") arr = ["S00", "S22", "S20", "S80", "S21"] while True:     line = fin.readline()     if not line:         break     for item in arr:         i = line.find(item)         if i > -1:             fout.write(line[i:])             break fin.close() fout.close() print("done") I asked copilot what is CPU of the Alinco DJ-X11E Answer: ...

Decoding raw RDS hex data with Copilot

Image
Many years ago I wrote a simple SDR# plugin which stores raw RDS hex data in RDS Spy format. I asked Copilot to examine some blocks of raw RDS hex data with prompt: this is RDS data can you decode it?   Copilot asked to verify if it is RDS Spy or Redsea or other format. Copilot decoded raw RDS hex data successfully.    

Inspecting Alinco DJ-X100E EditTool software

Image
Visual Studio 2022 dotPeek Alinco EditTool ver.1.00E dotPeek -> Export EditTool.exe to VS solution Form1.cs Form6.cs Change RxModType e.g. to 2 or 3 Modify .csproj file, add line: <LangVersion>12.0</LangVersion> Build and run solution Open the Version form and type e.g. 141421356 on the numpad. ? 

Inspecting BC125AT_SS software

Image
BC125AT_SS.exe can be reverse engineered to Visual Studio solution with dotPeek. It is not necessary to install BC125AT_SS, it can be extracted with msiexec, e.g. msiexec /a setup.msi /qb targetdir=g:\temp\uss\ex Visual Studio 2022 proposes to upgrade the solution to .NET 4.8, it is ok to upgrade it to 4.8. Modify .csproj file, add line: <LangVersion>12.0</LangVersion> otherwise there is err messages: Feature 'primary constructors' is not available in C# 8.0. Please use language version 12.0 or greater #nullable disable is not supported searchserialportform.cs, modify line where str variable is defined, add initilization of str var, string str = "" Many Uniden scanners have quite similar specs (remote protocol, mem organization, modes, etc...). It is possible to change BC125AT_SS to work (to some extent without big mods) with other models by changing the code in where there is a check which model string scanner responds to MDL cmd.