Open main menu

Changes

Added EEPROM reverse engineering info, added blank config files zip, reformatting too
*'''SD-171''' - 5/1W VHF (148-174 MHz)
*'''SD-174''' - 5/1W UHF (450-490 MHz)
 
 
==EEPROM Layout==
Work in progress, but I have identified the most important stuff (Freq, CTCSS/DCS, etc)
 
Here are [[:File:Maxon_sd_blank_configs.zip|blank .dat configuration files for each model.]] I haven't touched the EL series yet. Use these as a base for editing and flashing to your unit.
 
===Option Bytes===
====Model ID====
The very first byte (0x00) is the model ID 01 through 04 as below. Also 0xB4, that changes based on frequency band. 04 for VHF models, 01 for UHF models.
 
 
{|
|+ <U>'''Model ID'''</U>
|<div style="display: flex;">
<div>
{| class="wikitable" style=""
|-
!Model
!Value
|-
|style="padding: 5px" |'''SD-161'''
|style="padding: 5px" |01
|-
|style="padding: 5px" |'''SD-164'''
|style="padding: 5px" |02
|-
|style="padding: 5px" |'''SD-171'''
|style="padding: 5px" |03
|-
|style="padding: 5px" |'''SD-174'''
|style="padding: 5px" |04
|}
</div>
</div>
|}
 
 
====Squelch====
Most of the time you probably want this on. 0xC8 is the squelch byte. 00 is no squelch, 01 is squelch enabled
 
====Wide/Narrow====
W/N operation for a given channel is configured using the fifth byte after the end of the TX frequency. 00 is narrowband (default) and 01 is wide.
 
====Scan Enable====
Scan enable is the first byte after the frequency channel block. 00 is disabled, 01 is enabled.
 
 
===CTCSS/DCS===
----
====Enable Byte====
The RX CTCSS/DCS enable byte is located 13 bytes after the end of the channel frequency block. 00 for disabled, 01 for CTCSS, 02 for DCS. The TX CTCSS/DCS enable is 4 bytes after the RX byte.
 
 
====Channel/Freq.====
CTCSS is also stored as a float64 of the raw value. The values are stored starting 21 bytes after the channel frequency, with the first 8 for RX CTCSS, the last 8 for TX CTCSS.
 
 
Example: '''9A 99 99 99 99 F9 51 40''' = 71.9 (aka 71.9Hz)
 
 
 
 
DCS is stored starting 37 bytes from the end of the channel frequency block. It may use the 38th byte if the value is too high. These are uint8/uint16 respectively.
 
 
Example: '''17''' = 23 (aka DCS setting 023) | '''F2 02''' = 754 (aka DCS setting 754)
 
 
----
 
===Channel Frequencies===
Frequencies are stored as float64 16 byte blocks with the first 8 for the receive frequency, and the last 8 for the transmit frequency. These both end in 0x40.
 
{|
|+ <U>'''Channel Offsets (Hex)'''</U>
|<div style="display: flex;">
<div>
{| class="wikitable" style=""
|-
!Channel
!Start
!End
|-
|style="padding: 5px" |'''1'''
|style="padding: 5px" |DC
|style="padding: 5px" |EB
|-
|style="padding: 5px" |'''2'''
|style="padding: 5px" |140
|style="padding: 5px" |14F
|-
|style="padding: 5px" |'''3'''
|style="padding: 5px" |1A4
|style="padding: 5px" |1B3
|-
|style="padding: 5px" |'''4'''
|style="padding: 5px" |208
|style="padding: 5px" |217
|-
|style="padding: 5px" |'''5'''
|style="padding: 5px" |26C
|style="padding: 5px" |27B
|-
|style="padding: 5px" |'''6'''
|style="padding: 5px" |208
|style="padding: 5px" |217
|-
|style="padding: 5px" |'''7'''
|style="padding: 5px" |334
|style="padding: 5px" |343
|-
|style="padding: 5px" |'''8'''
|style="padding: 5px" |398
|style="padding: 5px" |3A7
|-
|style="padding: 5px" |'''9'''
|style="padding: 5px" |3FC
|style="padding: 5px" |40B
|-
|style="padding: 5px" |'''10'''
|style="padding: 5px" |460
|style="padding: 5px" |46F
|-
|style="padding: 5px" |'''11'''
|style="padding: 5px" |4C4
|style="padding: 5px" |4D3
|-
|style="padding: 5px" |'''12'''
|style="padding: 5px" |528
|style="padding: 5px" |537
|-
|style="padding: 5px" |'''13'''
|style="padding: 5px" |5BC
|style="padding: 5px" |59B
|-
|style="padding: 5px" |'''14'''
|style="padding: 5px" |5F0
|style="padding: 5px" |5FF
|-
|style="padding: 5px" |'''15'''
|style="padding: 5px" |654
|style="padding: 5px" |663
|-
|style="padding: 5px" |'''16'''
|style="padding: 5px" |6B8
|style="padding: 5px" |6C7
|-
|}
</div>
</div>
|}
 
----
 
 
===Channel 1 Offsets===
Since most people reusing these will probably only need one channel programmed, heres the exact offsets for channel 1
 
 
{|
|+ <U>'''Ch. 1 Offsets'''</U>
|<div style="display: flex;">
<div>
{| class="wikitable" style=""
|-
!Parameter
!Value(s)
|-
|style="padding: 5px" |'''RX Frequency'''
|style="padding: 5px"|0xDC-E3
|-
|style="padding: 5px" |'''TX Frequency'''
|style="padding: 5px" |0xE4-EB
|-
|style="padding: 5px" |'''Scan Enable'''
|style="padding: 5px" |0xEC
|-
|style="padding: 5px" |'''RX CTCSS/DCS Option'''
|style="padding: 5px" |0xF8
|-
|style="padding: 5px" |'''RX CTCSS Value'''
|style="padding: 5px" |0x100-107
|-
|style="padding: 5px" |'''TX CTCSS Value'''
|style="padding: 5px" |0x108-10F
|-
|style="padding: 5px" |'''RX DCS Value'''
|style="padding: 5px" |0x110 or 0x110-111
|-
|style="padding: 5px" |'''TX DCS Value'''
|style="padding: 5px" |0x114 or 0x114-115
|}
</div>
</div>
|}
===Programming (the hard way IMOWith Cable)===
These radios utilise a proprietary programming cable that converts RS-232 to TTL, as well as utilizing the RTS pin to control programming. That last part unfortunately prevents simply connecting TX and RX to a TTL to USB serial adapter...
<br />
===Programming (the easy wayWithout Cable & With Software)===
Inside the radio, there is a small 8 pin SOIC I2C EEPROM (Catalyst 24WC04) which stores all the programmed info. This chip can be easily read and written to using an inexpensive CH341a based programmer.
# Setup the channels with your desired info, you can (only tested on the SD-161 by me) go down into the ham bands. The software will let you force an out of band frequency, but from 147.5 and up, it won't say anything.
#* "S" is Standard (25kHz) bandwidth, and "N" is Narrow (12.5kHz) bandwidth. Choose standard if you are using for amateur radio, otherwise narrow for business band use.
# Once you have channels setup, you could save the config to a file just for safe keeping, but thats not really needed.# Click Use the W/R button on the topp nav bar saved .dat file (may need to open rename it) and flash the programming window. Here you will see the data to be written contents via CH341a programmer to the EEPROM.# Open   ===Programming (Without Cable or Software)===Using the copy of your backup in a hex editor like HxD info above and begin copying over the values from the preview windowblank .#* <B>Double check what dat files you enter here! I have no idea how much damage could probably piece together a wrong byte could do!</B># Once working EEPROM image, though this is risky. As always, you have checked over are doing any of this at your file, save it and load it into your programmer software and flash it to the EEPROM# Do a read verify to make sure the EEPROM accepted the flashed contentsown risk!