Posts

Inspecting AOR AR5700D firmware updater

Image
AR5700Updater.exe Detect It Easy   Lots of Motorola s-record inside exe. Too many strings for the Detect It Easy Strings feature. Linux strings cmd works. strings AR5700Updater.exe | grep -E "S[0-9]+" > AR5700.txt remove non S-record format lines in head and tail and in the middle (find with e.g. srec_info tool). srec_info:  Termination records (S9) should be last => use e.g Python to get data blocks into several files. n = 1 print("start") s = "" f = open("ar5700.txt", "r") lines = f.readlines() for line in lines:     s = s + line     if line[:2] == "S9":         with open("ar5700-" + str(n) + ".txt", "w") as w:             w.writelines(s)         print("ar5700-" + str(n) + ".txt")         n = n + 1         s = "" f.close() print("end")   => 10 files of S-Records Some maybe DSP code and four which are highly probable SuperH SH-2 code ...

Optimized no Pandas Python band scope for the Uniden scanners

Image
Works with all Uniden scanners which have PWR remote command. https://techcoderadio.blogspot.com/2025/05/optimized-python-uniden-pwr-command.html   Optimized, Pandas removed import serial import matplotlib.pyplot as plt import csv import os import time from datetime import datetime SER_PORT = 'COM14' SER_BAUD = 115200 SER_TIMEOUT = 0.5 SER_CMD = b'PWR\r' READ_SIZE = 19 OUT_DIR = r"c:\temp" OUT_FILE = os.path.join(OUT_DIR, 'unidenscope.csv') def out_dir():     try:         os.makedirs(OUT_DIR, exist_ok=True)     except Exception:         pass def main():     ser = serial.Serial(SER_PORT, SER_BAUD, timeout=SER_TIMEOUT)     print(ser.name)     readings = {}     log_data = []     plt.ion()     fig, ax = plt.subplots()     ax.set_xlabel("Frequency")     ax.set_ylabel("RSSI")     fig.set_figwidth(15)     fig.set_figheight(9) ...

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.