DS203 quad user interface design


I like the small ds203 very much and currently I am working on completely new user interface design. Here is a concept how should it look like:

It’s a screenshot of simple application made in Visual Studio 2005 C++. I am planning to do all the development on PC and then to compile it for STM32 processor. For this purpose I made a abstraction class “BIOS” that implements all the device dependent functions. I am curious if the hardware will be ever able to handle so much drawing… But I will test it on the device soon…

If you have any ideas how to improve the UI design, please drop message in this thread.
And if you are brave enough, here is a source code and compiled exe (absolutelly not optimized)
http://pub.valky.eu/ds203ui.rar. What it actually does is drawing some noisy sine wave and a few windows on top of it.


Here is a very early preview of my own user interface for ds203, only few functions are implemented (Input and Generator tabs), but at least, it shows some waveforms

download source codes & compiled hex file here:

This looks very promising and in my opinion is much more intuitive than the original f/w. In fact, if you added triggering this would do for my purposes. I beleive that a scope is primarily for visualising the signal and estimating amplitude and timing. All the other stuff is “bells and whistles”.

Keep up the good work.


Excellent concept and good luck with it.

I am a VS .net coder and have created a PC client to read the XML OP from the Nano, I have started work on something for the quad but stopped when I found out that the data save was non usable. Perhaps when you come to designing the OP file we could collaborate so that the PC client makes best use of the available data. My Client currently does FFT spectrum analysis and decodes I2C ans SPI and UART signals.

I would love to get a look at your abstraction for the BIOS. I really good dev tool would be an emulator to debug and test on interactively but I guess this project is not main stream enough to attract the work required to create one especially since the FPGA stuff would have to be update-able as new versions where released.

Once again Good Luck … Good Job and drop me a PM if I can help.

BTW if you are looking for Beta testers stick me on the list.

Cheers Pete.

Hi Gabonator1

I too am a fan of the quad. However, I am sure the original authors must be busy with something else. Otherwise, it seems to me a brilliant idea to have a pocket scope that can do so much. In fact I loved the Nano so much, I blindly purchased the quad and sold my nano to a client. Now I realise it wasn’t a smart move.

I like what you’re doing with the UI and I wish I can help. I wish I can help in some way. I am used to coding a few types of processors and Arm7 is one of them. I haven’t really had the time to indulge in the hacking of this scope, but your idea looks promising.

Let me know if you need any specific help and I’ll try to assist whichever way I can. I cannot promise much because I am pretty loaded at the moment.

I sure hope to have some of the following

  • better / reliable triggering
  • better calibration procedures
  • a better DSO quad.


Hi everyone!

I really appreciate your interest. The progress of this project is highly dependent on my free time, which is currently very precious. What you see is what have I done mostly during nights when I returned from work :slight_smile:. My plan was to design a powerful and easy to read/write C++ framework for developing custom exensions for ds203. After implementing all the basic functions, it shoud be quite simple for everyone to change/implement new features with the basic knowledge of C/C++. The reason I released the early preview application is to find more people who would like to involve in this project. They don’t need to be programmers, after some time when the application will be more or less working, we will need testers and people with good ideas to improve functions of the ds203.

Currently I am looking for someone from the hardware/software designers of ds203 (maybe some seeedstudio stuff?), I am having some stupid problems with configuring stm32’s peripherals and I can’t move forward…
It would be nice to have some experienced FPGA designer for developing advanced triggering algorithms.

My application can be compiled for two platforms - ArmM3 and for Win32, the project file “ds203.sln” can be opened with Visual Studio 2005. All the development and testing was made in Windows environment and Visual Studio. And when I thought it is working well, I compiled it with batch file “ds203ui/OnArmM3/makefile.bat” which automatically loads the compiled .hex file onto ds203 device. So even if this is reading someone who doesn’t have ds203 scope, can try to compile and run the project to get the basic overview of the firmware features.

I am planning these features for the new firmware:

  • Advanced signal generator (I need it for my current project)
    • more types of waveforms and better resolution than 36 points importable from the 2MB disk
    • simple AM/FM modulation
    • transferring waves from scope view into generator (you will record some wave form at first and then the dso will synthetize it - simple recorder/player)
  • Realtime USB transfer of sampled data (2nd planned feature)
  • Realtime Uart decoder with automatic baud rate calculator
  • True RMS voltmeter (I found many posts about the low accurancy of ds203, but I believe it is a simple task to calibrate it)
  • Export to WAV (Windows PCM), SVG http://gabonator.yweb.sk/sim/download/sources/Owon%20PDS5022S%20driver/samples/nice.svghttp://valky.eu/?data/news/owon.txt, TEXT file
  • FFT (I don’t know whether this feature can be used for anything meaningful, but it looks good)

I am sick of all the expensive oscilloscopes that have a full range of nice features, but their architecture is closed and does not offer any way of implementing new features. I am happy that I found ds203, maybe it does not have input circuits or frequency range as normal oscilloscopes, but for visualizing and analysing signals it’s a perfect tool.
At least it can be considered as development board with 32 bit microcontroller + fpga + display, a nice toy for everyone who want to start learning how to work with these devices and don’t want to spend money on some dev-board and JTAG programmer.

Here is my current problem:
I cannot change the number of samples for the generator. It does not work by calling __Set(ANALOG_CNT, xxx), nor by settings the DMA values directly (*((vu32 *)(0x40020400+0x48))) = xxx. I can change the pointer for source data (DMA2_CMAR4), but it always sythesize only the first 36 values. Any idea?

If you look at the DS0Quad_SourceCode/SYS_V1.50/source directory from github, in the file Config.c on line 425 you will see the offending code DMA2_CNDTR4 = 36 // DMA2_CH4 number of data(*2 Bytes) In theory, if you call __Set(ANALOG_CNT, XXX) it should reset this value to the specified value. I haven’t looked at the ARM spec, but my guess is that you cannot change the value of the CNDTR4 register unless you first stop the DMA. You should be able to stop it by:

DMA2_CCR4 &= ~1;

and restart by

DMA2_CCR4 |= 1;


I was trying to compile your code in Linux to see if I could add some stuff but it doesn’t have a Makefile. I tried to make one but there are lots of microsoft specific things that I didn’t want to invest in fixing without having a way to check them back in. Two issues so far: it seems that filenames and how they are included are not consistent in term of upper/lower case (windows doesn’t seem to care), and there seems to be references to include files that are probably microsoft only (like windows.h). Also, I think you build both the arm version and a windows version, but I’m not sure which files go with which version. Right now all the top level files need a windows.h file. It would be nice at a minimum the arm code could build without window, and better if even the debug version could build in a cross-platform way.

relavak, try this:

I tried to use correct names of files in includes, also I put there simple makefile for linux, but I didn’t try it. Please tell me if you succeed building it for linux, or what steps were necessary to successfully build the code on linux machinue. For better cooperation, I would like to place this project on sourceforge or github. Which one do you prefer (svn/git) ?

I tried to compile in linux and found some problems. The first problem is that I didn’t have instructions on how you expected to compile the code so I did this:

cd Build/arm_linux make

which is not what I think you did, but anyway that is what I eventually got to work. Unfortunately I had to change quite a bit of stuff including:

mv Source/HwLayer/bios.h Source/HwLayer/Bios.h mv Source/Core/design.h Source/Core/Design.h mv Source/Gui/toolbar.h Source/Core/Toolbar.h in Source/HwLayer/ArmM3/src/interrupt.c use interrupt.h not Interrupt.h in Source/HwLayer/ArmM3/src/startup.c use interrupt.h not Interrupt.h in Source/HwLayer/ArmM3/src/cbios.cpp use BIOS.h not bios.h (line 5)

You also need new versions of the common/build.mk and arm_linux/Makefile files. You can see I changed quite a bit of stuff especially in build.mk.

I prefer github mainly because I’m trying to learn to use git. I hate svn but like cvs.

UPDATE: I found a way to eliminate the need to change the .lds files. New updates2.zip file.
updates2.zip (1.39 KB)

Hey all, I’m definitely interested in helping out where I can. I’m familiar with C/C++, but mostly for pc. I’ve never worked with ARM before, but am interested in learning.

@gabonator1, two things: First, GREAT WORK! :slight_smile: It looks pretty sweet compared to stock, and secont: for what it’s worth, I vote Git, though as a newcomer I know my vote may not mean much.

Hi guys,

I am really very happy that there are more people that would like to participate in this project. Here is a github repository where is a little improved version of the firmware:

I was having really hard time to configure everything - this was for me the first time to make a git repository, most problems I was having with rsa keys… But now it seems that it is working, so I hope you will enjoy it :slight_smile:

unfortunatelly, I didn’t have time to implement new features, I spent all my time preparing for a medical conference that was in Boston (IEEE AMA), where I was demonstrating a wireless ECG system with visualization on android phone. For more informations see the last PDF link on this page http://ama-ieee.embs.org/program/final-program/. For demonstrating this device I have used the DS203 oscilloscope for generating ECG waveforms. Oscilloscope was connected through resistor divider to the ECG electrodes. Everyone on the conference liked this project very much :slight_smile: Maybe I will later write some report to my blog

Thank you for trying to make something useful from the DSO Quad.

Also I think this thread would be more visible for other DSO Quad users if you reference it from the Tech Support -> DSO Quad section.


Good idea cex, I put there link to this discussion.

I downloaded APP_G251.hex from github to my new DSO QUAD. The DFU came back with an extension of .err, and it does not appear to have loaded. I tried booting each button on top.

I have the Frequency response application in the 4th button, and I have upgraded the official firmware. So it appears I can change the firmware’s. Can some one offer some insight into what went wrong?

I upgraded the default firmware first thing when I got it. I now have 1.52 and 2.52 released on 2011-11-15. Could there be an issue with this Oct 28th firmware being older than the latest firmware I have? I have upgrade firmware 3.10, which is what it came with. Perhaps that is a newer firmware. I just got the Quad yesterday evening.

Your GUI looks great, I can’t wait to try it out.

I got the same ERR. I tried downgrading to FPGA 2.5 and sys 1.5 first and it still failed.

Try renaming it to APP.HEX

It still doesn’t work…

HEX load SOLVED, I got it to install and boot. I did a git clone, instead of web page download. The file I got from the git clone was 76KB, while the web download claimed to be 227KB. Once I got the correct file, it worked just fine.

The 227KB download file is a web page. Thanks for finding this!

Even with the HEX load, I don’t get the error but I don’t get a change in the scope app either.

I tried both APP_G251.hex and copying it as APP.hex.
I tried Linux and Windows both. Do I need to downgrade the FPGA and SYS code for this?
Does it install as the default app or is it on another startup button? I tried buttons 2-3-4 and get no app.

I have the most recent FPGA according to the firmware wiki page. So that’s probably not the issue. I upload my firmware from an XP box, I couldn’t get it quite right with Ubuntu.

Did it come back with a file after you uploaded the firmware? Have you been successful in uploading another firmware? I used the name found in the git repo. Did you obtain your file via git, or by web page? Is your firmware about 76KB?