I'm getting a 2104xplus in 3 weeks, it should be already licensed for 200MHz. Or is that something I have to do on my own, 1st. And should I update firmware 1st or after ? (Will it still be labeled 2104 on the physical logo/label ?) Just skimming through this thread, there's a lot of little details I might be missing.
So when I get the scope and make sure the basic's are working, do I hook it up to PC, goto the web-based SPCI page, like with my 1204x-e ? Then find the scope ID and the Model, so would that be something like 2204 if it's lic'ed for 200MHz ?
And then take those, and enter them lower-case, into the below python script, for SCOPEID, Model.
Am I supposed to remove some of the stuff in the script that's not for the 2104x+ ?
And do I have run this multiple times to get a key, for each BW step up, and for each SW package I want to unlock ??
Is there any modern video on this ? I know very little about Python, I tried super basic stuff years ago.
The link on page 1 takes me no where, or am I supposed to sign up? Was that the same as the script ?
What else am I missing ?
Here's what I assume is the thing to use
By what means did you run the script?
This is the script I used. And I ran it on my own install of Python 3.6.1. It only needs the scope ID and the Model. Enter the SCOPEID without spaces.
import hashlib
SCOPEID = '0123456789abcdef'
Model = 'SDS2000X+'
bwopt = ('100M', '200M', '350M', '500M', 'AWG', 'MSO', 'FLX', 'CFD', 'I2S', '1553', 'PWA', 'MANC', 'SENT')
hashkey = '5zao9lyua01pp7hjzm3orcq90mds63z6zi5kv7vmv3ih981vlwn06txnjdtas3u2wa8msx61i12ueh14t7kqwsfskg032nhyuy1d9vv2wm925rd18kih9xhkyilobbgy'
def gen(x):
h = hashlib.md5((
hashkey +
(Model+'\n').ljust(32, '\x00') +
opt.ljust(5, '\x00') +
2*((SCOPEID + '\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)))
Update:
I just ran it again by pasting it in here : https://www.programiz.com/python-programming/online-compiler/
It ran correctly, so you don't need to install Python if you don't want to.