STB Suite

February 2016

In this Issue:

Developer Toolbox (DTB) – Top 10 API’s

Top 10 DTB API's smallJust getting started using the Developer Toolbox APIs?

The purpose of this article is to cover the second biggest hurdle a developer encounters when tasked with using DTB – this hurdle can be summarized by the question “Can you get me started on some of the most common API, i.e. the APIs that ‘everyone uses’?”. (By the way, the first hurdle you have to overcome is ‘How do I link DTB to my development environment?’, and our document “Getting Started” covers those details).

As you can imagine, the very first task every developer is hit with is “What devices are there on my system?”, and the most common APIs are those that help you determine exactly what devices are on your system. So let’s jump right into the API.

APIs in Order:

  1. VCSCSIGetDLLVersion
  2. VCSCSIHostAdapterCount
  3. VCSCSITargetCount
  4. VCSCSIGetDeviceType
  5. VCSCSIGetVendor
  6. VCSCSIGetProduct
  7. VCSCSIGetVersion
  8. VCSCSIInquiry
  10. VCSCSIUserCdb

Click here to see the usages, sample code, and reasons behind each usage in the Full Top 10 DTB API article here.

Ask Dr. SCSI – What does it cost per drive to purge data with the STB Suite?

The Real Dr. SCSI Q. Our company is wanting to get into the service business of purging sensitive data off of disk drives, to government standards.

Many of the software disk purge solutions we are considering will have us pay them a fee for each disk that we purge. We hope to eventually be purging thousands of drives so we see that this per-drive-purge charge could amount to a LOT of money.

I can’t find any information on your web site showing how much STB charges me to purge drives – can you help me find this information?

A. Our per-drive purge price is not found anywhere on our web site because we do not charge per disk purge.

In other words, our “extra” charge for you using the STB Suite to purge drives is zero dollars per drive.

Zilch, nada, nothing.

As an example, if you purge 10 drives a month, you would owe us an extra $0 that month. Or if you purge 1,000 in a month, your add-on charge that month would be $0 too. The formula is easy. It isn’t graded by volume, there is no discount available – it’s just always “no extra charge”. Keep that money for yourself – do something fun with it – enjoy!

Disk purging used to actually require the purge method to be tested and approved/accepted by a government agency. If you wanted to have a product to purge disks you had to find a government agency to “sponsor” you and work with you in conjunction with (at the time) the Defense Investigative Service (DIS) to grant you an official approval.

All of which we did with our DataScrubber product. Way back in the dark ages of computing – around 1993 or so. All of that work to get approval…it took about a year of solid testing and proving to earn it. Memories fade in our quickly changing marketplace, but I seem to remember that at the time there was one other company which actually completed that same process. It was a lot of work!

These days all product-explicit (disk purge) testing and approving is done away with. The specifications for a purge operation are just published and companies providing purge solutions are supposed to just conform to that specification.

One thing that means is that pretty much without exception there is NO difference in the way ANY purge software on the market actually works to accomplish the purge. They all do the same thing, and the facts are the disk manufacturers are actually making this process easier and easier with the new SAS and SATA command specifications.

So, do we not charge per purge because our purge is somehow inferior?
In a word, “No!”.

In the 1990’s we knew enough about disk purging that we were able to earn our endorsement, working with the Air Force and DIS. Believe me, we haven’t forgotten how to purge disks! I don’t remember any of today s disk purge companies being around back then…If so it would be fun to compare notes about what getting that approval was like.
We were there then. We’re here today. Then it was MUCH harder to do the purge, and it was certainly much harder to provide purge software when than approval was required…

So here’s a few other purge questions and answers for you to consider:

  • Do our various disk purge techniques conform to government standards? – Yes
  • How many drives per system can STB Suite Purge? – Hundreds at a time. At full disk speed.
  • Can STB Suite Purge print a certificate detailing the purge process for each drive? – Yes
  • Is there any other audit trail created by STB Suite Purge? – Yes, three separate records and databases record everything on a per-drive basis in addition to the certificate for your customer.
  • Is the STB Suite Purge function being maintained? – Yes. All of the latest T10 & T13 purge technique proposals are already integrated (Sanitize, Crypto, SAS, SATA). Many new features in recent STB Suite releases have had to do with disk purging.
  • Does the STB Suite Purge functionality quit working if I don’t do annual maintenance? – No. Without annual maintenance you will miss getting new features, access to technical support and such, but you will always be able to run the version of STB Suite which you last had covered. Including Disk Purge with NO Per-Purge charges.
  • Can we customize the purge – number of passes, data patterns, how is the purge verified, etc? – Yes to all of that. We are even happy to help you configure your purge setup for getting the maximum number of drives purged per month.


You will want to maximize the number of drives you can purge per day/week/month/year ASAP.

We want to help you do that, like we’ve been helping companies do for the past 24 years.

After all, it will cost you the same to purge 5,000 drives in a month as to do 1 – it will cost you nothing more!

DMM Advanced Options

DMM Advanced Options logo small

In the lower right corner of the DMM Test Setup Tab there is a button named Advanced Options

As the name implies, the Advanced Options page is full of options which you can change to effect various DMM tests and processes.

Advanced Options is one of the STB Suite pages which has grown over time. As new options are added they almost always go to the end of the page – so the order of the items available to change on this page is somewhat random.

There are a lot of options – currently 19 of them.

This article will go through the options one at a time and describe what tests each option may modify, and basically what each option does – and hopefully how to use these options in your day-to-day testing to improve your test throughput.

The Advanced Options Page

Here’s a picture of the Advanced Options (AO) page with numbers added to the options we will discuss. These numbers do not appear on the actual Advanced Options page.

But first – a general word of advice.

Whenever you change anything on the Advanced Options page you must click on the OK button in the upper right corner in order for your changes to be saved.

OTOH – if you made a change and want to discard the change, click the Cancel button instead.

All saved changes which you make to the Advanced Options page will be applied to each test step in your DMM test sequence. Make a change on the AO page and that change will be applied to all of your test steps.

Plus you can make Advanced Options changes that are different for every test step!

That means that you can have one test step use a Queue Depth of 32, and the next test step use a QD of 1.

The best example of this “Advanced Options – per-test” feature is AO #16 – the “Special Text to log for this Test”. For each of your DMM test sequence test steps you can enter unique text into this field and the text will be logged into the DMM .log files in that test steps section.

If you leave that text the same (don’t change it for the next test step) that same text will be repeated in all of the subsequent test steps. However you can change this text for each test step – giving your .log files your own unique and detailed annotations.

A good example of this is a 3-pass disk purge. Enter special text like “Write the entire drive will all 0’s” data in AO #16 for step 1, then for step 2 enter “Write the entire drive with all 1’s” ,etc – changing the text for each of your test steps.

In other words – if you set an advanced option it will be remembered and applied to all subsequent test steps – but you don’t have to.

You can have totally different Advanced Options set for each test step.

DMM’s Save & Load Setup will remember your Advanced Options for each test step!

Total versatility!

The Options

Below is a list of each of the Advanced Options.

  1. FUA
  2. Stop/Start
  3. Byte check On Verifies, Write Verifies
  4. Queue Depth
  5. Delay
  6. Timeout
  7. Write/Read I/O Ratios
  8. Adjacent Track Interference Test
  9. Start Seed
  10. Addtional Overlays – option 1
  11. Addtional Overlays – option 2
  12. Stop on Error – option 1
  13. Stop on Error – option 2
  14. Path to Log Files
  15. Add Date-Time stamp to Log file name
  16. Special Test for this step
  17. External Program Name and parameters
  18. Multiple Workers
  19. Delay Between Commands

Read the Full DMM Advanced Options Article with a description of what the option does and how you might use it in your testing.

Using BAM in your programs

Using BAM in your programs


BAM – the Bus Analyzer Module (included with the STB Suite) – is a piece of the STB Suite that is used daily by our in-house development programmers. It is so useful, to verify our programs as we write them, to watch that the proper command is being sent, the expected data is being returned, etc. The interactive, gui-based BAM is super useful!

Using BAM in a program

But there is a whole other “version” of BAM available for programmers who are writing their own programs, tests, or utilities. This consists of the BAM function calls in the Developers Toolbox (DTB) api.

Functions are available to completely control BAM programmatically. You can select the device(s) to monitor, the phases to capture, start and stop traces – all from within your programs.

Here are a few examples of what is possible –

  1. Start a BAM capture when any event occurs – on a drive error, when a certain command is executed. Any time you need to capture I/O you can.
  2. Stop the BAM capture when an event occurs. You can start the BAM trace, then stop it and save the trace when an event occurs. Have BAM running, stop and save the trace when an error occurs – now you have a record of all of the I/O leading up to the error.
  3. Put in an option to help you troubleshoot your users problems. If you are writing a utility or test you can put in a user option to grab a trace, save it, send it back in a report, etc.

An example –

Here is a simple example of how to use the BAM api functions, taken from the DTB reference documentation:

Appendix C – Using BAM from a Program


Beginning in the STB Suite version 8.1 the Developers Toolbox (DTB) api includes functions to use the Bus Analyzer Module (BAM) from within an application program.

This article will describe the DTB functions used to control BAM and show an example of a simple program to capture a trace and save it to a file.

The BAM-specific DTB functions

The DTB api calls to control BAM are as follows:
int VCSCSIBAMconfigure(long BufSize, long PhaseSize, int Flags, int Phases);
int VCSCSIBAMclearBuffer();
int VCSCSIBAMdrive(int ha, int target, int lun, int capture);
int VCSCSIBAMstartCapture();
int VCSCSIBAMstopCapture();
enum _BAM_FILE_TYPES {eBAMFileRaw, eBAMFileExcel };
int VCSCSIBAMsaveCapture(BYTE *fname,eBAM_FILE_TYPES eSaveType);

In short these functions are used to define the device which you wish to capture bus traffic to/from, which BAM phases you wish to capture, the size of your capture buffer, and flags such as STOP_ON_BUFFER_FULL to control trace capture behavior.

Once a capture session as been defined it is a simple matter to call one function to start the capture, another function to stop the capture, and finally a function to save the capture data to either raw BAM type data or to an Excel-type (comma delimited) text file.

A programming example

The following code snip shows how to control a complete BAM capture session via DTB:


Capturing BAM trace data for any device on your test system is simply a matter of a few basic DTB function calls. If you are interested in using BAM in your own programs we encourage you to look here at the DTB documentation –

And to feel free to contact us to discuss BAM, the BAM DTB api, or any other part of the STB Suite. Live training and support is part of your Performa coverage – we’d be happy to tailor an online meeting to help you accomplish your goals.

You can contact us online: Request Online Meeting or call 720-249-2641 to set up a meeting.

Can STB help with our “in-house” testing solution?

NI LabVIEWSTB Can Always Help!

For well over two decades the team at STB has been improving the incredible test tools that comprise what we call the STB Suite today!

The STB Suite tools are comprised of virtually every test tool you’ll need to accomplish your peripheral testing.

Engineering tools, Burn-In, ORT, MFG Screening, Compliance and more! The testing can be accomplished in a variety of ways also GUI setup, API’s, BUS Analysis, etc.

What happens if you’ve been using some in-house tools or a testing solution and for some reason you need to change? Maybe, someone has been developing the tests/tools internally for years and they’re no longer a viable option to maintain, change or improve those tests?

Recently we had a customer ask if we worked with National Instruments LabVIEW. We had reports of other customers using LabVIEW in the past with the STB Suite (in particular the Developer Toolbox API) but we hadn’t used it in-house at STB. So with a couple of on-site visits and technical support the Developer’s ToolBox (DTB), which is a set of APIs that are callable from other applications, was successfully imported into LabVIEW. In other words, if you have a LabVIEW application, and you need to issue I/O to a device (for example get Inquiry information from a drive, or read Log Pages), you can import our DTB into your LabVIEW application and call the API in DTB!

Once we verified that the APIs in our library was accessible from his LabVIEW application, anything is possible with the DTB library, including reading and writing from drives, to retrieving Log Page and Mode Sense data, to retrieving SMART data and IDENTIFY data from SATA drives, the sky is the limit!

So maybe you’re using LabVIEW another 3rd party test or automation system or maybe you’re using something that was written in-house, the simple fact is the STB Suite can be used to help improve, simplify and streamline your testing.

Contact STB today to find out how we can help improve your testing today!

What is Performa?

Performa is the STB Suite annual support and maintenance plan.

In most cases each purchase of the STB Suite includes 12 months of Performa coverage.

What does that coverage include?

  • Updates to the STB Suite
    • There are typically two major updates to the STB Suite per year. In between these major updates there are typically a number of maintenance updates which will be used to fix bugs and occasionally introduce new features.With Performa coverage you are entitled to all of these.
  • Product Support
    • Performa coverage provides you with contact with our development team, to answer questions, discuss changes or improvements, etc. With decades of storage experience our support team is willing and able to help you.Our World-class support typically responds to email support issues within one hour!
  • New License discounts
    • SCSI Toolbox now offers attractive discounts on new licenses when you keep your licenses covered by the Performa program.
        • 1-3 licenses actively covered you’ll receive an additional* 10% Performa Discount on New licenses.

SCSI Toolbox, LLC – PO Box 620520 – Littleton, CO 80162-0520
Sales: 720.249.2641
General: 303.972.2072
Questions or Comments
If you want to cancel your subscription, click here