Products > Test Equipment
Upgrading DSLogic Basic to Plus without EEPROM modification
(1/21) > >>
matbob:
Hello All,

I would like to share my experience with upgrading the DSLogic Basic to Plus. I saw discussions in EEVblog forum where some people were able to upgrade the basic version to plus version by soldering the 256Mbit RAM chip and renaming the firmware files (DSLogicBasic.fw/bin replaced by DSLogicPlus.fw/bin and renamed to *Basic.fw/bin). Even after these two steps, some were not able to get the upgrade and they had to modify the EEPROM content. The USB device PID in the EEPROM had to be changed to match the Plus version so that the DSView software recognizes the device as DSLogic Plus hardware.

Now, I will tell my story. I bought a DSLogic Basic clone from Ebay and I wanted to upgrade it to Plus. I bought the 256Mbit RAM and soldered it. I downloaded the DSView V0.99 from DreamSourceLab website and compiled and installed it (on Fedora 28, fingers crossed, installed successfully!). I ran the software, connected the hardware and it got detected as DSLogicBasic. Then I checked for the location in my PC where the firmware files are located, I found it was at: "/usr/local/share/DSView/res". I backed up all the files in the folder (you will need root privilages). Then I deleted the DSLogicBasic.fw and DSLogicBasic.bin files and made copies of DSLogicPlus.fw and DSLogicPlus.bin files and renamed them to DSLogicBasic.fw and DSLogicBasic.fw. By this step, the idea is to load the Plus firmware to the Basic (+RAM) hardware the next time the DSView software starts up. I opened DSView and connected my hardware, but it got detected only as DSLogic Basic.

So, the DSView software is checking the PID of the USB device to determine which version it is. Obviously, the PID was not getting modified by changing the firmware from Basic to Plus. The PID is stored inside the EEPROM and for the DSView software to recognize the hardware as Plus version, the EEPROM content had to be modified. I had a PICkit3 with me and I thought I will desolder the EEPROM, solder on a protoype board, solder the wires from PICkit3, read the EEPROM contents, modify the PID value at 2 locations (as suggested in another forum), write it back and solder it back. Unluckly, PICkit3 does not support EEPROM programming without a hardware hack. I did not want to do the hardware hack (beacuse the PICkit3 does not belong to me).

But I wanted to check that even though the DSView software recognized my hardware as Basic version, will it be capable of delivering the performace of the Plus version because the hardware and firmware is Plus version and only the PID is of Basic version. I checked the DSView software's user guide. The guide says that in the buffer mode, the maximum sample duration is given by: (maximum duration = hardware depth / sample rate / number of channels used). At 400MHz sample rate with 4 channels enabled, for a DSLogicBasic with 256Kbit memory, the maximum duration corresponds to: (256 x 1024 / 400M / 4) = 163.84us. For a DSLogicPlus with 256Mbit memory, the maximum duration is (256 x 1024 x 1024 / 400M / 4) = 167.77 ms! With my hardware (with the extra RAM and Plus firmware) I could see that in the DSView software, maximum duration is only 163.84us. That means the software is limiting the functionality even though the hardware is capable.

Now comes the interesting part. The DSView program was complied from the source. So, in the source code, there will be some place where the PIDs of the devices are defined. After a few minutes of searching, I found the file: .../DSView-0.99/libsigrok4DSL/hardware/DSL/dsl.h in which the DSLogic "profiles" for each version are defined. It was not very difficult to understand. I modified the following lines in the code:

    {0x2A0E, 0x0021, "DreamSourceLab", "DSLogic Basic", NULL,
     "DSLogicBasic.fw",
     "DSLogicBasic.bin",
     "DSLogicBasic.bin",
    {CAPS_MODE_LOGIC,
      CAPS_FEATURE_VTH,
      (1 << DSL_STREAM20x16) | (1 << DSL_STREAM25x12) | (1 << DSL_STREAM50x6) | (1 << DSL_STREAM100x3) |
      (1 << DSL_BUFFER100x16) | (1 << DSL_BUFFER200x8) | (1 << DSL_BUFFER400x4),
      SR_KB(256),
      0,
      DSL_STREAM20x16,
      0,
      0,
      DSL_STREAM20x16,
      SR_MHZ(1),
      SR_Mn(1),
      0,
      0}
   },

to:

    {0x2A0E, 0x0021, "DreamSourceLab", "DSLogic Basic", NULL,
     "DSLogicBasic.fw",
     "DSLogicBasic.bin",
     "DSLogicBasic.bin",
     {CAPS_MODE_LOGIC,
      CAPS_FEATURE_VTH | CAPS_FEATURE_BUF,
      (1 << DSL_STREAM20x16) | (1 << DSL_STREAM25x12) | (1 << DSL_STREAM50x6) | (1 << DSL_STREAM100x3) |
      (1 << DSL_BUFFER100x16) | (1 << DSL_BUFFER200x8) | (1 << DSL_BUFFER400x4),
      SR_MB(256),
      0,
      DSL_BUFFER100x16,
      0,
      0,
      DSL_STREAM20x16,
      SR_MHZ(1),
      SR_Mn(1),
      0,
      0}
   },
   
I assume that the modification is self explanatory if you go through the code. 0x2A0E is VID, 0x0021 is PID of Basic version, the SR_KB(256) is modified to SR_MB(256).... By this modification, I force the software to use the features offered for Plus hardware for the Basic hardware (already upgraded to Plus) as well. After this, I compiled and installed DSView again. This time also the name of the hardare appeared as DSLogic Basic (becasue I did not modify this in the source) but I see that the maximum duration available with my hardware is 167.77 ms!

The only catch is that if you connect a Basic hardware without the RAM soldered to the hacked DSView software, it will use the Plus firmware and because the RAM is not available, it won't show any results. But as long as you have only one hardware with the RAM soldered to it, this method works well.
tsman:
Using the CyConsole tool didn't work for reprogramming the EEPROM?
matbob:
Hello tsman,

Thanks for the comment. I was unaware of CyConsole. I went online and read about this software, it seems that it is a tool in the Cypress SuiteUSB which is available only for Windows. I run Linux (Fedora) on my  PC and therefore I can't try this.

If I want to modify the PID in the EEPROM, I should be knowing the address where the PID is stored. According to this post in one of the forums: https://time4ee.com/news.php?readmore=453, there are 2 locations: 00000003 and 0000186A. The value has to be changed from 0x21 (PID of Basic) to 0x20 (PID of Plus). This might be possible using CyConsole. Please let me know whether you have successfully tried this. This would be much elegant method rather than modifying the DSView software.

Thank you.
Microcheap:
I just upgraded my DSLogic Basic to the Plus version and I can confirm that it works. The steps I followed:

1- I got the MT48LC16M16A2-6A SDRAM IC from here https://www.aliexpress.com/item/in-stock-can-pay-MT48LC16M16A2-TG-75D-MT48LC16M16A2P-6A-MT48LC16M16A2TG-7E-MT48LC32M16A2-5pcs-lot/32805462396.html

2- Desoldered the EEPROM from the LA board (U4) and attached it to a programmer like this https://www.aliexpress.com/item/SOIC8-SOP8-Test-Clip-For-EEPROM-93CXX-25CXX-24CXX-CH341A-24-25-Series-EEPROM-Flash-BIOS/32898599200.html I used a DIP8-SOIC8 adapter.

3- Read the EEPROM and save a backup just in case. Search for the Hex values "0E2A2100" and change it to "0E2A2000" (It appears 2 times, you need to change both). I've used HxD editor to edit the file extracted from the memory.

4- Just reprogram the EEPROM e solder the ICs to the board.

5- Now, when you open DSView it should identify the device as DSLogic Plus, no need to rename firmware files.
cv007:
This happened before-
https://www.eevblog.com/forum/testgear/dslogic-plus/msg2011508/#msg2011508

Simply rename the fw file from Plus to Basic. That's it.

I wonder if maybe the eeprom firmware has changed on newer ones where the fw file is no longer loaded/needed?

It seems odd that I can rename the fw file all day long (0.9.8,0.9.9) and switch between Plus/Basic, and some others don't seem to be able to.
If there is a newer eeprom firmware on newer ones, one way to check would be to remove all fw files and see if dsview is still happy (or if on Windows, just listen for the usb detection/re-enumerate when dsview starts).
Navigation
Message Index
Next page
There was an error while thanking
Thanking...

Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod