UltimaSerial Hacking the file system on Dataq's DI-710 series
 
Data logger
UltimaSerial

 

Windaq add-ons
Windaq Add-ons

 

Spectrogram
UltimaWaterfall

 

Ultimaserial XChart
XChart

 

FFT1024
FFT1024

 

Ultimaserial Classroom
Lessons

 

If you just need to find a way to retrieve data files from a DATAQ DI-71x SD with corrupted file system, check out Windaq SD Rescue instead.

If you need to read the files from the SD card on DATAQ's DI-710 series, including DI-710, DI-718, DI-715 and DI-718Bx, as well as Dataforth's isoLynx SLX718, here is the trick

Note: Some asked if they could  modify this utility to retrieve data from an accidentally formatted 710 SD. Yes, you can do it, but you need to understand the CODAS Data Storage Format first. Here are some tips:

  • When a SD is formatted in DI-710, only the Boot sector, FAT, directory and the first data file HARDWARE.DAT are modified, the actual .WDC files in data sectors are NOT erased
  • The first data file is HARDWARE.BIN, which is 2048 bytes in length, then the Windaq (.WDC) files
  • All the .WDC files are stored in data sectors sequentially, with NO empty sectors between files
  • By examining the header of the first .WDC file, one can determine the size of the .WDC file, and duration of the recording session and the beginning sector of the next .WDC file, and from there, one can determine the second, third .WDC, etc
  • Depending on the firmware rev, data sector starts at difference locations, see below
  • If you can get your hand on the corrupted SD, check out Windaq SD Rescue instead!

Before you start,

  • Don't bother with the USB-based DI-710's, it is totally not worth the effort since you can easily pull the SD card out of a DI-710 and use the SD reader
  • For ethernet-based DI-710s, don't try to download big files, for the ethernet controller on DI-710s is virtual COMM-based and is too slow to retrieve big files
  • The following commands provides way to access the SD card, to better understand the file system, please go to Wikipedia
  • The file system on DI-710s are
    • Single FAT
    • FAT16
    • Up to 512 file entries
    • 8.3 file format
    • Support
      • up to 1GB SD card with firmware version below 2.11
      • up to 2GB SD card with firmware version 2.11 and above
    • File entries must occupy the directory sequentially, without any empty entry
    • File must occupy sequential sectors, thus no fragmentation
  • You must stop the acquisition before you can access the SD card
  • To connect to a DI-710E, use telnet to connect to port 10001
  • Every command to DI-710E starts with NULL (0x00)
  • The OEM name in Boot Sector starts with "DATAQXC", and must not be changed, or DI-710 will refuse to use the SD card until it is reformatted

Commands to access the SD card (Command code will be echoed)

Warning: All commands to 710s are case sensitive, please do not try commands that you don't know, or it may totally ruin the device!

s0    Stop acquisition 
       Return: None

s1    Start SD acquisition
        Return: V if acquisition is started successfully, otherwise X

FX   Format SD
        Return:  V if operation is successful, otherwise X

ennnnnnnn 
        where nnnnnnnnn is 00000000 thru FFFFFFFF 
        Specifies the address on the SD so that we can read from it.
        
The address must be 512-byte aligned, so the lower 9 bits are ignored

m0    Read 512 bytes from SD. The address is incremented by 512 after the read
         Return: The first byte is an error code, 0=OK. 512 bytes will follow if read is OK

Warning: All commands to 710s are case sensitive, please do not try commands that you don't know, or it may totally ruin the device!

Here are some import addresses for the File System on DI-710:

    1. Bootsector: offset 0
      1. Bytes 0x3-0xA: OEM name:
        1. "DATAQXC1" for firmware 2.10 and below
        2. "DATAQXC2" for firmware 2.11 and above
      2. Bytes 0xB-C: Bytes per sector: 0x200
      3. Bytes 0xD: Sector per cluster
    2. FAT: offset 0x200
    3. Root Directory
      1. Firmware before 2.11: offset 0xFA00
      2. Firmware after 2.11: offset 0x1E800
      3. Each file entry contains 32 bytes
        1. Bytes 0-7: Filename
        2. Bytes 8-A: Extension
        3. Byte B: File attribute
        4. Bytes C-15: Reserved
        5. Bytes 16-17: Time created (UCT based)
        6. Bytes 18-19: Date created (UCT based)
        7. Bytes 1A-1B: Starting cluster
        8. Bytes 1C-1F: Filesize
    4. Data
      1. Firmware before 2.11: offset 0x13A00
      2. Firmware after 2.11: offset 0x22800
    5. After formatting, there are two default files
      1. Disk volume lable, occupying the first entry in the root directory
      2. Hardware.bin, occupying the second entry in the root directory

Utility:

710FileSystemHacker & VB source codes

Further study:

If you need to explore the file structure of Windaq file, check out The CODAS Data Storage Format

Check out this Bonus:

DI-710 Scheduler

Hardware: All Ethernet and USB-based Dataq DI-710, DI-715B, DI-718B, DI-718Bx and Dataforth's isoLynx SLX718 stand-alone data acquisition devices

This provides VCR-like daily/one-time recording operation for DATAQ's 710 series stand-alone data acquisition device.

Output samples from 710 File System Hacker:

The boot sector:

The dir sector:

 

Last update: 02/24/12

Copyright: 2000-2005  www.UltimaSerial.com