Thanks.
I have no problem connecting to the AWG and I can issues the *IDN? command and get teh model and serial numbers, but it does not respond when I enter SCOPEID?.
Any suggestion?
Never mind. I figured out you have to enter the model number as SDG1000X, not SDG1032X.
All good now and reporting as and running as a SDG1062X!
So, in improving my SDG1032X to SDG1062X performance, I followed this procedure
1. Telnet on port 5024 to the device. Your telnet app should be setup for local echo.
2. Issue a MCBD? query. This will return your current licence key. Record this for later.
3. Issue a MD5_SRLN? query. This will return you serial number. Record this too.
4. Issue a MD5_PR? Query. This will return your model number (should be SDG1000X)
5. Update the python script (below) such that SCOPEID and SN are set to your serial number.
6. Run the script. It will return keys for a number of options. Make sure the key for 30M matches the key you recorded in step 2 above.
7. If your key and the 30M key match exactly then note the key for 60M. This is the one you will use.
8. Back at the telnet session issue the command MCBD 0123456789ABCDEF where 0123456789ABCDEF is whatever the python script returned for the 60M key.
9. Issue a *IDN? Command. It should return a string that now identifies your unit as a SDG1062X.
import hashlib
SCOPEID = '0123456789ABCD' # Set to your serial number
SN = '0123456789ABCD' # Also set to your serial number
Model = 'SDG1000X'
# 'SDG1000X', 'SDS1000X-E', 'SDS2000X-E', 'SDS2000X+', 'SDS5000X', 'ZODIAC-'
bwopt = ('25M', '30M', '40M', '50M', '60M', '70M', '100M', '150M', '200M', '250M', '300M', '350M', '500M', '750M', '1000M', 'MAX')
otheropt = ('AWG', 'WIFI', 'MSO', 'FLX', 'CFD', 'I2S', '1553', 'FG', '16LA')
hashkey = '5zao9lyua01pp7hjzm3orcq90mds63z6zi5kv7vmv3ih981vlwn06txnjdtas3u2wa8msx61i12ueh14t7kqwsfskg032nhyuy1d9vv2wm925rd18kih9xhkyilobbgy'
def gen(x):
h = hashlib.md5((
hashkey +
(Model+'\n').ljust(32, '\x00') +
opt.ljust(5, '\x00') +
2*(((SCOPEID if opt in bwopt else SN) + '\n').ljust(32, '\x00')) +
'\x00'*16).encode('ascii')
).digest()
key = ''
for b in h:
if (b <= 0x2F or b > 0x39) and (b <= 0x60 or b > 0x7A):
m = b % 0x24
b = m + (0x57 if m > 9 else 0x30)
if b == 0x30: b = 0x32
if b == 0x31: b = 0x33
if b == 0x6c: b = 0x6d
if b == 0x6f: b = 0x70
key += chr(b)
return key.upper()
for opt in bwopt:
print('{:5} {}'.format(opt, gen(SCOPEID)))
for opt in otheropt:
print('{:5} {}'.format(opt, gen(SN)))