ZeeTweak is an overhaul of the UI for the Zeeweii DSO3D12 oscilloscope, including replacement fonts, most UI elements, and various fixes.
- To customize the firmware, place the desired mod files in a directory and use FLSTweak to generate a new firmware file. See Flashing below to apply the firmware.
- The mods in this repo cover resources that are directly stored in the firmware (not part of the compiled code). It will take reverse engineering of the code to functionally change the UI, so the replacements here are a starting point for further work.
- UI preferences are highly subjective - post an Issue or Pull Request for what you'd like to see, there is plenty of room for improvement. Discussion and (especially) contributions are welcome!
- 3.1
- New:
zrle2bmp.pytool to convert Zeeweii-custom RLE compressed images - New: images from @Dmitur: sig. gen. numbers, trigger edge icon
- New: images for channel level icon, trigger icon
- Updated: measurement label background
- Updated: menu display setting for persistance relabeled from 1s to 3s based on measured fade time
- New:
- 3.0
- New bitmaps for most UI elements
- Added image previews
- Forked from FLSTweak repo
- 2.0
- Updated example
mod.flsfile with measurement label changes, fixedNormallabel
- Updated example
- 1.1
- Rendered new small font with all characters shifted down 1 pixel
- 1.0
- Initial release
The Zeeweii_DSO3D12 directory contains:
dso3d12_v3.0.6_III_mod_v3.1.fls- an example firmware with all mods applied.images- viewable files of the original and modified UI images.mods- binary files of the original and modified data for use with FLSTweak.
The tools directory contains:
zrle2bmp.py- converts Zeeweii's custom RLE compression used on some images to a standard RGB565 bitmap (example: boot logo)
The mods directory contains:
-
font_large, font_small- fonts covering ASCII characters 32-126 as 1-bit data.- ImageMagick can convert the raw data to a series of images:
$ magick -depth 1 -size 8x13 gray:font_small_ref.bin font_small_ref.png$ magick -depth 1 -size 16x16 gray:font_large_ref.bin font_large_ref.png
- Thanks to @timschuerewegen for developing the fonts (originally for the DSO2512G) and permitting their addition to this repo! Check out the Discord channel for a detailed discussion of Zeeweii firmware and reverse engineering work for the DSO2512G.
- ImageMagick can convert the raw data to a series of images:
-
image_XXXXXX- images are either monochrome 1-bit per pixel or color 16-bits per pixel (RGB565 format); filenames are the offset of the data in the firmware file.- 1bpp images:
- Viewable as PNG files in the
imagesdirectory - Convert raw data to image (must specify the size):
$ magick -depth 1 -size 67x198 gray:image_368172_ref.bin image_368172_ref.png - Convert image to raw data:
$ magick image.png -depth 1 gray:image.bin
- Viewable as PNG files in the
- 16bpp images:
- Viewable as BMP files in
images
- Viewable as BMP files in
- Thanks to @Dmitur on the EEVBlog forums for locating and documenting these resources! See the post for additional info.
- 1bpp images:
-
label_calib- fixes typos for DMM calibration text -
label_measurements- alters the measurements labels and matches the labels inimage_364864_mod.bin -
label_normal- fixes typo for the "Normal" trigger message
Linux/macOS:
- Download and extract the WM IoT SDK.
- Install required packages - from the
wm_iot_sdkdirectory:python -m pip install --user -r tools/wm/requirements.txt - With the DSO3D12 turned off, press and hold the power button - the scope will enter a boot loop and enable the scope's serial port to allow for flashing. Keep the power button pressed until flashing is complete.
- Check the name of the serial port - on macOS, use the
tty.wchusbserialdevice:% ls /dev/tty* /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbserial-1410 /dev/tty.wchusbserial1410 - From the
wm_iot_sdk/tools/wm/directory, runflash.pywith the serial port and firmware:% python3 flash.py --port /dev/tty.wchusbserial1410 --image dso3d12_v3.0.6_III_mod.fls connecting serial... serial connected trying reset device... wait serial sync... serial sync success trying baudrate 2000000... start download image... download dso3d12_v3.0.6_III_mod.fls... 0% [##############################] 100% flash device complete - Done! Release the power button.
Windows:
- Download Upgrade Tools.
- Change the language to English from the top left menu (third option).
- Set "Chip" to
W80Xand set the image to the firmware .fls file. - Press and hold the scope power button to enable the serial port until flashing is complete.
- Select the new COM port, click "Open Serial", and then "Download" to flash.
- Done! Release the power button.

The home screen (accessed by pressing the power button once) is a 320x240 16bpp image in image_153880, which opens up the possibilities for modification. I've included a few different options as an example of customizing this UI.
Original -> Mod:
mod_mono / mod_texture:
mod_smoke / mod_webb:
Original -> Mod:
- Firmware: Available through Zeeweii's official support page
- Discussion thread: EEVBlog forums Another DSO+DMM - Zeeweii DSO3D12, claimed 120MHz/250MSps (june 2023)









