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.