Questions about Supported Scopes

Hi! Colin. Thank you for your reply from the youtube. I’m using the Agilent DSO1024A Oscilloscope with the ChipWhisperer Capture, but from the GitDocumentation I see that the supported scopes are only Agilent MSO. And now I have already connected my DSO1024A to the PC, paste the right Connect String in the Scope Settings of the Capture Software, when I clicked the Scope button, Debug Logging says that:

line 152, in currentSettings
self.XDisplayedOrigin = (test[12] - test[5]) / test[4]
IndexError: list index out of range

Should I modify some parameters of scope settings or some codes in the file “VisaScope.py” ?
Could you give me some advice? Thank you very much!

Hello,

There is some changes needed to get other scopes supported - but it shouldn’t be too much. Before you do much work though let me double-check the current status of the VISA driver. I haven’t used it in a few months and have made some serious changes to the Capture software, so it might have problems working with the latest code. But the error you are getting sounds like the response from your scope differs from the scope I was using.

I’ll do that later this afternoon - the scope is in another lab so need to get into it. I might even be able to find a scope similar to the DSO1024A in one of our school labs. Give me a day or two to check through a few other labs, but I’m not sure on that part.

Normally what you end up needing to do is finding the ‘programming manual’ for your scope. This has the various commands and responses sent over VISA. That chunk showing the ‘xdisplayedorigin’ for example was specific to the response format for my scope.

Regards,

-Colin

Quick update:
I’m having trouble with the scope I was using for testing, so couldn’t double-check things. But there was at least one error, which is fixed in the GIT repository. Your best bet is to get a copy from there, but briefly:

Line 183 in VisaScope.py, change this:
def capture(self, Update=False, N=None, waitingCallback=None):

To this:
def capture(self, Update=False, N=None):

Once I get this working again will try to update a tutorial with this…

OK, I’ll try. I’m reading Agilent InfiniiVision 6000 Series(No 1000 Series found but the method should be the same)Oscilloscopes Programmer’s Guide, hopefully I can get some key information. Thanks anyway!

Quick additional update: still unable to confirm the existing changes, but I was able to add some beta DSO1024A code in. I’m basing this on the SASEBO waveform acquisition software (see github.com/newaetech/chipwhisperer) once the update gets pushed into that repo in ~5-10 mins during the next automatic clone.

The 1024A programmers guide is at keysight.com/upload/cmc_uplo … _guide.pdf too I think.

I’ve downloaded the latest capture software but still can not work with my DSO1024A, error like that:
pyvisa.errors.VisaIOError: VI_ERROR_TMO(-1073807339): Timeout expired before operation completed.

It seems that the connection failed for some reason, the scope string I used is the usb mode like that:
USB0::0x0957::0x0588::CN51034862::INSTR
not the TCPIP mode like the example string in the capture software, is that matter?

I’ve also downloaded SASEBO waveform acquisition software and successfully connected my DSO1024A to the acquisition program with SASEBO-W and ATMega163 card, but the waveform data captured was in the format of “.data”, is this format compatible with Chipwhisperer Analyzer software?

By the way, the ChipWhisperer® Main Documentation 6.5.2 “Example of Connecting to Agilent MSO 54831D” contains nothing when I click the link…The page only shows the content of 6.5.1 “Supported Scopes”…

Hmm… so you are using the 0.08 release (not RC1)?

The full MSO54831D docs are posted at newae.com/sidechannel/cwdocs/hwvisascope.html - you may need to clear the cache or force a refresh of the webpage, since previous versions didn’t have the tutorial. I need to lookup how to force a refresh via HTML tags…

When does the error occur? Do you connect at all, or does it happen after the first capture attempt? The system should try to print commands it is sending during initilization. The “USB:xxxx” should work… I haven’t tested it, but it should work.

Does the scope display anything on the screen during the attemps (i.e. something about invalid commands?)?

The .data format isn’t directly compatible… could do some work to change it over I think if nothing else (i.e. a python script). Ideally I’d love to see your scope supported directly, as there’s no technical reason for it not to work.

You can try the following from the Python console too (not typing the >>> portion), and see if you get an erroron this basic command:

[code]>>> import visa

scope = visa.instrument(“USB0::0x0957::0x0588::CN51034862::INSTR”)
print(scope.ask(“*IDN?”))[/code]

I’m away at CARDIS right now so won’t be too responsive.

I’m using 0.08 release and error occurs after I click the “CON” button(4-5 seconds later), the scope displayed nothing but “TRIG LVL = 2V” flashed by and the waveform image disappeared from the scope.

I tried the following commands and no error occurs as it displays the information of DSO1024A.

import visa
scope = visa.instrument(“USB0::0x0957::0x0588::CN54030784::INSTR”)
print(scope.ask(“*IDN?”))
Agilent Technologies,DSO1024A,CN54030784,00.04.06

Here are the full Traceback information from the command:

File “…\ChipWhispererCapture.py”, line 678, in doConDisScope
self.scope.con()
File “…\capture\scopes\VisaScope.py”, line 402, in con
self.scopetype.con(self.findParam(‘connStr’).value())
File “…\VisaScope.py” line 99 in con
self.updateCurrentSettings()
File “…\VisaScope.py” line 106 in updateCurrentSettins
self.currentSettings()
File “…\VisaScope.py” line 158 in updateCurrentSettins
self.XOffset = self.visaInst.ask_for_values(":TIMebase::POSition?")
File “…\python27\lib\site-packages\pyvisa\highlevel.py” line 771 in ask_for_values
return self.read_values(format)
File “…\python27\lib\site-packages\pyvisa\highlevel.py” line 722 in read_values
return parse_ascii(self.read())
File “…\python27\lib\site-packages\pyvisa\highlevel.py” line 690 in read
message = self.read_raw().decode(enco)
File “…\python27\lib\site-packages\pyvisa\highlevel.py” line 664 in read_raw
ret += self.visalib.read(self.session, size)
File “…\python27\lib\site-packages\pyvisa\ctwrapper\functions.py” line 1379, in read
library.viRead(session, buffer, count, byref(return_count))
File “…\python27\lib\site-packages\pyvisa\highlevel.py” line 171 in _return_handler
raise errors.VisaIOError(ret_value)
pyvisa.errors.VisaIOError: VI_ERROR_TMO(-1073807339): Timeout expired before operation completed.

My scope finally connected successfully to the capture software! (By changing the codes in VisaScope.py:
self.XOffset = self.visaInst.ask_for_values(":TIMebase:POSition?" to this:
self.XOffset = self.visaInst.ask_for_values(":TIMebase:OFFSet?")

Then I select the SimpleSerial Target and refresh the port to COM3, click the “CON” to make the target connection work. (After clicking the CON button, LED8 and LED12 turns on somehow, I don’t know why…)

Now CON of Master, Scope and Target are all turn green, but when I run a “Capure 1”, the debug window only shows:
1wait
1wait
2wait
2wait

2wait
No Waveform image showed on the capture software or the scope DSO1024A…

Ah… the “1wait”/“2wait” I put in for debugging! In this case the file has this code:

# Wait? while (self.visaInst.ask("*OPC?\n") != "1"): time.sleep(0.1) waitingCallback() print "2Waiting..."

It might be that the return value of self.visaInst.ask("*OPC?\n") isn’t as I expected. You’ll have to print the value and see, you can also remove the \n I realized. So perhaps change the code to:

# Wait? # while (self.visaInst.ask("*OPC?\n") != "1"): while(1): print self.visaInst.ask("*OPC?") time.sleep(0.1) waitingCallback() print "2Waiting..."

It might be that the return value is actually of integer type, or you might need to change this to something like this as there is a newline after the statement:

# Wait? while (self.visaInst.ask("*OPC?").startswith("1") == False): time.sleep(0.1) waitingCallback() print "2Waiting..."

After changing the code like you said:

Wait?

while (self.visaInst.ask("*OPC?").startswith(“1”) == False):
time.sleep(0.1)
waitingCallback()
print “2Waiting…”

Click “Capture 1” Button and this time debug information:
1Waiting…
Traceback (most recent call last):
File “C:\chipwhisperer\software\chipwhisperer\capture\ChipWhispererCapture.py”, line 714, in capture1
ac.doSingleReading()
File “c:\chipwhisperer\software\chipwhisperer\capture\AcquisitionController.py”, line 142, in doSingleReading
if self.scope.capture(update, N, waitingCallback=QApplication.processEvents) == True:
File “c:\chipwhisperer\software\chipwhisperer\capture\scopes\VisaScope.py”, line 429, in capture
return self.scopetype.capture(update, NumberPoints, waitingCallback)
File “c:\chipwhisperer\software\chipwhisperer\capture\scopes\VisaScope.py”, line 185, in capture
data = self.visaInst.read_raw()
File “C:\Python27\lib\site-packages\pyvisa\highlevel.py”, line 664, in read_raw
ret += self.visalib.read(self.session, size)
File “C:\Python27\lib\site-packages\pyvisa\ctwrapper\functions.py”, line 1379, in read
library.viRead(session, buffer, count, byref(return_count))
File “C:\Python27\lib\site-packages\pyvisa\highlevel.py”, line 171, in _return_handler
raise errors.VisaIOError(ret_value)
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

There is a “WARNING: Response too short (len=0)” before “Traceback (most recent call last)”

Hello,

The timeout suggests that perhaps the trigger didn’t occur. The error about ‘response too short’ also means it didn’t read any data from the target… what target device are you using again? You might need to unplug/replub the USB of the scope after a crash I’mnot sure, or reset your target.

-Colin

I’m using the SASEBO-W board and have inserted a smart card(ATMega 163 card) into the smart card reader,
the AES-128 algorithm has already programmed into the card and I have run the “sasebo_w_vcp_checker” (download from satoh.cs.uec.ac.jp/SAKURA/hardware/SASEBO-W.html)to verify the correctness of program.

The whole system(SASEBO-W + DSO1024A + ATMega163) can work on the SASEBO waveform acquisition software.

Ah… sorry that makes sense then! I’m pretty sure the first acquistion on the system might not work (on my side), which causes the timeout. Normally it wouldn’t be a big deal, but the system currently doesn’t handle faults well…

You could add a try…except clause around the visa statements (sorry will send details later just running out) to detect the fault and still return.

Did you only use openADC to do capture for target SASEBO-W , other scopes might not work?

The main problem here I think is the “viRead(session, buffer, count, byref(return_count))” function which is called in “C:\Python27\lib\site-packages\pyvisa\ctwrapper\functions.py”, add a "try…except"clause around viRead()?

Another thing… I wonder if I should choose “SmartCard” as the Target Module instead of “Simple Serial”, but no module named “smartcard.CardType”,“smartcard.CardRequest"and"smartcard.CardConnection” could be found in the directory of chipwhisperer project…