DSO firmware version 3.0

Attached is DSO Nano firmware v3.0 update. Functionality wise it is identical to version 2.5x however with improved SD card support. The undisclosed library has been replaced with a new version written from scratch. The code is no longer dependant on copyright material other than what is derived from STMicroelectronics (supplier of the ARM chip used in DSO Nano).

Micro-SD cards can use either FAT16 or FAT32 file system. SDHC cards and NTFS not supported. Cards must support the SPI access protocol. I’m using a 2GB SanDisk card supplied by Seedstudio and it works well with the new v3.0 firmware.

To use the new version both LIB and APP v3.0 files must be uploaded. Attached are also example files that can be copied to the SD card as templates for configuration (profile), reference and bitmap files. Copy and rename if you need additional files.

It´s good the firmware good work. Can you tell me how do I remove the purple wave permanent?

First use the various menu options to configure DSO Nano any way you prefer (e.g. Hide Ref).

Then choose menu “FI” and sub-option “Save Pro”. Choose profile 0 (S Flash) and press “B” (or long “M”). This will save all active settings to DSO internal flash memory for use as power on defaults.

Profiles other than 0 (e.g. S 001.CFG ) will be saved to SD card and can be recalled with sub-option “Load Pro”.

This is very nice work! I got my DSO a few days ago, and I wasn’t really happy with how it worked, after applying this update, the device is much faster/easier to use. The UI updates makes the whole thing much more intuitive.

I have a few questions (hope not too dumb):

  • Will you release the code? I’m very proficient in C/C++ and a lot of other languages, though I haven’t tried working on a device like this before.

  • Is it possible to control the signal generator in the code - besides freq - a sine output would be very, very useful.

Thanks again, great work!

Tomas Lindquist Olsen

Hi BenF,

Thanks for the reply. I notice a bug on your firmware the battery icon it´s always fully charge, and could you provide the source code.


Hi again BenF.

I also seem to have found a bug, I can reproduce this every time!

  1. turn on DSO
  2. Go to TR menu
  3. Select Tr. Sens.
  4. Make smaller (arrow left) until minimum is reached.


Trigger sensivity AND trigger level can no longer be adjusted. If the minimum sensitivity is never reached, they both seem to work great.

Otherwise, again, nice job!

Tomas Lindquist Olsen

Hi Ben

Well done. I can finally read and write the SD card from the NANO. Your new software didnt work at first with my SD card and the SD card became unreadable from windows. I reformatted it FAT32 and put your sample files on it, and lo and behold for the first time I was able to save waveforms including the bitmap and display on my Mac. I havn’t established whether it needed the combination of your sample files and your software, but I dont need to experiment further - thank you so much, again, Ben.

ps I can confirm what lindquist said about the bug - looks like a divide by zero error or similar. Its OK again after switch off and on.


A timer is used to generate the output square wave at a set frequency, but I haven’t looked into other possibilities. The microcontroller used by DSO Nano is an ARM Cortex M3 (STM32F103VBT6). Perhaps you could to read-up on its capabilities and share with the forum what would be possible and desirable?

Indeed, I’ll have a fix for that shortly. Thanks for sharing.

We should expect any SD card formatted with firmware version 2.5 and prior to require reformatting. As of V3 however, I expect cards to work as is (e.g. with OEM formatting) as long as they meet the basic requirements stated in the first post.

Hello BenF,
thank you very much for your firmware version - it’s an impressive
improvement in both UI clarity and responsiveness.

I too would like to add a pledge to consider sharing your code: it
would be a real pleasure to see it endorsed by Seeed and published
on the open repository.

Whatever your decision, thanks again and kudos for your brilliant


Here’s a minor update that will fix the following two issues:

  • Trigger sensivity AND trigger level can no longer be adjusted (thanks to lindquist)
  • Battery icon is always full charge (thanks to H3LIO)


The frequency output is a simple digital output pin so at best you might be able to get the processor to provide a pwm version of the output but that’s not readily convertible to a sine wave.

With some additional circuitry on the frequency output you could filter the square wave output and filter out the higher order frequency components. The problem is that you would need a tracking low pass filter to cover the whole frequency range, this could be achieved using a programmable active filter perhaps like a MAX262 that could track the standard frequency output. However the MAX262 would only allow the cutoff frequency of the filter to be 140KHz so not the full Nano output range even then.

There is something else to say though, as the Nano is limited to 1Msps viewing a sine wave comprising less than say 10 points would look pretty square anyway so perhaps an upper limit of 140KHz for the filter wouldn’t be so much of a problem.

I’d also like to see the full V3 source code but I understand if Benf is protective.

Hi again Ben.

The 3.01 firmware looks good, although there a small nitpick… When the sensivity S is 0mV, the trigger level line becomes invisible, except for a few flashing pixels when moving it.


So that just leaves, are you going to let us in on your plans regarding the source code? I’m quite interested in hacking on it, hopefully learning a thing or two, but with your BenF firmware out, it seems rather pointless to play with the original sources…

Kind regards,

Hi BenF and all!

Must try this soon :slight_smile: Really impressive to replace the whole lib!

I hear you feel more or less done BenF, may I suggest something new for you to work on if that might intrest you? Do you work with data communications? If you do, what do you think about beeing able to use the DSO nano for analyzing such? View eye diagrams of diffrent communication interfaces like RS232 and RS485 (many industrial protocols is based on slightly modified versions of RS485) at different baud rates or even view the transmission in hex or ascii? Some fluke scopemeters can do this. It does not show the eye diagram but it tells you the quality of signal like crosstalk and bad edges for the selected baud.

Bravo sir!

Excellent work. Everything now works and works well!

Hello Ben,

I can understand step 2, but I don’t understand the step 1. How do I get to the “various menu options”?


Hi Ben,

I wanted to say thank you for this Version 3.01.
Now the Single mode is working perfectly and the UI and usability is much more clearer than before.
The only prob i get is the no file error but i already post a message in the MicroSD error thread



Dear BenF

Now you have provided a stable working NANO, even including the working SD card for which I am very greatful, would you be able to provide details of the calls to your library, so that others may use it?
I guess you dont feel able to publish the source code, but something so we can make use of it for further development would be great.


This is the way it is implemented today, but it may be possible to use the ARM DAC (digital to analog converter) to generate more complex waveforms. I haven’t looked at the DAC capabilities of the DSO Nano processor specifically, but generally this approach is used to synthesize just about any waveform, including replay of pre-recorded samples. Input to the DAC is typically by DMA (Direct memory Access) from either RAM or FLASH.

Ah …, we don’t want that – I’ll provide an update (APP 3.02) to fix this.

The new approach to sampling makes the Nano useful also for a crude view of RS-232/RS-485 and even I2C and SPI at moderate frequencies. The Nano can also supplement a protocol analyzer in that we can see the shape of digital pulses to determine if we have issues with decoupling, floating grounds, transients etc. To make a good digital protocol analyzer however we would need an additional connector for general purpose I/O (e.g. 8 channels).

In the thread on V2.5x I wrote a brief guide on how to use the firmware and you may want to read this.

“No File” suggests that the card is present and we have successfully read the FAT table. Next step is to locate the directory entry and this where it fails. That is, the requested file was not found or some other error occurred. Some early Nano’s had hardware issues with SD cards (search the forum for more input on this) and if this applies to you, further testing may not help. As a general guide however, these are the steps that work for me:

Format the SD card in the DSO Nano with either FAT16 or FAT32 (not NTFS)
Download the file “DSO Files.zip” from the first post in this thread and then extract and copy the files to your card
Select menu option “FI” and sub option “Save Img”
Make sure you select (left/right key) a file that actually exists (e.g. S 0001.BMP)
Press B (or long M) to save
If successful, the info field will advance to “S002.BMP” and you should be able to open and view the screen capture bitmap file on your host computer

I’m using my DSO Nano (first generation) with Windows XP and have tried with FAT16, FAT32 and also a blank OEM formatted card (2GB SanDisk)

Here’s a small update (APP v3.02) that solves the issue pointed out by lindquist (thanks). No change to the LIB file this time.

Hi Ben.

The procedure you write about the saving in the SD card is exactly what i did …the only difference is that i have a DSO Nano V2