Author Topic: Hacking the Rigol DHO800/900 Scope  (Read 295752 times)

PELL, Slavius, Aleksandr, mhwlng, AceyTech and 22 Guests are viewing this topic.

Offline dmulligan

  • Regular Contributor
  • *
  • Posts: 85
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1500 on: February 19, 2024, 04:10:02 pm »
But the channel can be used! I am pretty sure that triggering works, and according to the manual, so does the DVM (and the counter?). I can't double-check this anymore since I no longer have my DHO.

If a channel is "off", i.e. its front panel button unlit and the settings field on the screen not coloured, that primarily means that it is not displayed on the screen. It can still acquire data, and hence take up part of the scope's sampling bandwidth.
Agreed, these are all valid points. I've just checked: yes, trigger, measurements, and counters all keep working when the respective trace display is off.

Then there has to be a way to disable the channel trace display and data acquisition separately :). It can still be annoying for the user to see that the sampling rate is not at the max level and sit there wondering why for a moment, then remember that it has to be dereferenced in measurements etc., and find and turn those off (sometimes one by one, when it's not desired to remove all).

Alternatively Rigol could change it so the referenced channel buttons blink to show they are still in use.
 

Offline norbert.kiszka

  • Regular Contributor
  • *
  • Posts: 227
  • Country: pl
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1501 on: February 19, 2024, 04:32:25 pm »
Alternatively Rigol could change it so the referenced channel buttons blink to show they are still in use.

That would be distracting.

Online shapirus

  • Super Contributor
  • ***
  • Posts: 1360
  • Country: ua
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1502 on: February 19, 2024, 04:57:31 pm »
Alternatively Rigol could change it so the referenced channel buttons blink to show they are still in use.
Blinking would be distracting indeed, but the idea is good: a small highligted spot like a dot in the corner of the channel button would do the job. Rigol should really opensource their UI app, or, alternatively, create a plugin API to allow the community to create mods, if they lack the resources to fix all the bugs and missing features themselves.
 
The following users thanked this post: AceyTech

Offline norbert.kiszka

  • Regular Contributor
  • *
  • Posts: 227
  • Country: pl
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1503 on: February 19, 2024, 06:25:23 pm »
Rigol should really opensource their UI app, or, alternatively, create a plugin API to allow the community to create mods, if they lack the resources to fix all the bugs and missing features themselves.

That will increase their sales, because that idea will increase usability and therefore much more people will want this. But accountants and managers of most companies think differently.

Offline Randy222

  • Frequent Contributor
  • **
  • Posts: 643
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1504 on: February 19, 2024, 06:48:32 pm »
For the software hackers in the thread. I installed a very simple Android/Kotlin program on the scope to capture the "key" events when twiddling all the knobs and dials. Attached is an image of the key codes each generates.

Useful if you want to write some side-loaded software that uses the scope's controls.

These were all captured and tested on a 924S even though the image shows an 814. Hopefully you can see where I added key codes for the missing buttons.

NOTE: Each of the key codes shown is added to 0x40000000, so the Run/Stop button produces key code 0x4000000C.
I am trying to keep up in this thread.
I had made a note to go dig on the keycode from your pic.

While sifting through java code of Sparrow.apk I came across Panel keycode file. This should ID everything else on the panel, plus some other keyevents. Some key events appear to have pre-req, like a CH needs to be on 1st, etc.
The Java uses decimal, so I converted the base hex to base decimal, then you just add the decimal mapped to the keyevent.

As a side note, I believe I found where CH colors are, so I will try and change CH1 to be "not-yellow", repack and resign the APK, then install & test.

code here, and attached. They appear to be common on 800-900 series. Eg; MODE on 800 gives a "hardware not present" err, which is expected as there is no sig gen on the 800.
Duly noted, there's a ton of other Android keyevents you can send in, this list is just for com.rigol.scope
Code: [Select]
adb shell input keyevent [keycode]
ADD the keycode decimal to base # 1073741824 = keycode for adb

package com.rigol.scope.views;

public interface PanelKeyCode {
    public static final int ALARM_CH1_OVERLOAD = 241;
    public static final int ALARM_CH2_OVERLOAD = 242;
    public static final int ALARM_CH3_OVERLOAD = 243;
    public static final int ALARM_CH4_OVERLOAD = 244;
    public static final int KEY_ACQUIRE = 4;
    public static final int KEY_ANALYSE = 18;
    public static final int KEY_AUTO = 13;
    public static final int KEY_CH1 = 21;
    public static final int KEY_CH1_MENU = 65;
    public static final int KEY_CH1_OFFSET_CCW = 4182;
    public static final int KEY_CH1_OFFSET_CW = 2134;
    public static final int KEY_CH1_OFFSET_Z = 88;
    public static final int KEY_CH1_SCALE_CCW = 4147;
    public static final int KEY_CH1_SCALE_CW = 2099;
    public static final int KEY_CH1_SCALE_Z = 53;
    public static final int KEY_CH2 = 22;
    public static final int KEY_CH2_MENU = 114;
    public static final int KEY_CH2_OFFSET_CCW = 4150;
    public static final int KEY_CH2_OFFSET_CW = 2102;
    public static final int KEY_CH2_OFFSET_Z = 56;
    public static final int KEY_CH2_SCALE_CCW = 4163;
    public static final int KEY_CH2_SCALE_CW = 2115;
    public static final int KEY_CH2_SCALE_Z = 69;
    public static final int KEY_CH3 = 23;
    public static final int KEY_CH3_MENU = 49;
    public static final int KEY_CH3_OFFSET_CCW = 4198;
    public static final int KEY_CH3_OFFSET_CW = 2150;
    public static final int KEY_CH3_OFFSET_Z = 104;
    public static final int KEY_CH3_SCALE_CCW = 4179;
    public static final int KEY_CH3_SCALE_CW = 2131;
    public static final int KEY_CH3_SCALE_Z = 85;
    public static final int KEY_CH4 = 24;
    public static final int KEY_CH4_MENU = 81;
    public static final int KEY_CH4_OFFSET_CCW = 4214;
    public static final int KEY_CH4_OFFSET_CW = 2166;
    public static final int KEY_CH4_OFFSET_Z = 120;
    public static final int KEY_CH4_SCALE_CCW = 4195;
    public static final int KEY_CH4_SCALE_CW = 2147;
    public static final int KEY_CH4_SCALE_Z = 101;
    public static final int KEY_CLEAR = 11;
    public static final int KEY_CURSOR = 16;
    public static final int KEY_DECODE_MENU = 55;
    public static final int KEY_DEFAULT = 17;
    public static final int KEY_DISPLAY = 121;
    public static final int KEY_DISP_CLEAR = 248;
    public static final int KEY_FORCE = 10;
    public static final int KEY_FUNC_CCW = 4179;
    public static final int KEY_FUNC_CW = 2131;
    public static final int KEY_FUNC_Z = 81;
    public static final int KEY_GI = 3;
    public static final int KEY_HORI_ZOOM = 113;
    public static final int KEY_LA = 2;
    public static final int KEY_LA_MENU = 40;
    public static final int KEY_LOCAL = 98;
    public static final int KEY_MATH = 25;
    public static final int KEY_MATH_MENU = 72;
    public static final int KEY_MEASURE = 15;
    public static final int KEY_MENU_BACK = 139;
    public static final int KEY_MENU_F1 = 75;
    public static final int KEY_MENU_F2 = 59;
    public static final int KEY_MENU_F3 = 43;
    public static final int KEY_MENU_F4 = 27;
    public static final int KEY_MENU_F5 = 107;
    public static final int KEY_MENU_F6 = 123;
    public static final int KEY_MENU_F7 = 135;
    public static final int KEY_MENU_OFF = 91;
    public static final int KEY_MODE = 97;
    public static final int KEY_MOTOR = 66;
    public static final int KEY_PLAY_NEXT = 122;
    public static final int KEY_PLAY_PRE = 58;
    public static final int KEY_PLAY_STOP = 42;
    public static final int KEY_QUICK = 20;
    public static final int KEY_RECORD_BACK = 8;
    public static final int KEY_RECORD_FORWARD = 6;
    public static final int KEY_RECORD_PLAY = 7;
    public static final int KEY_REF = 1;
    public static final int KEY_REF_MENU = 255;
    public static final int KEY_RUN_STOP = 12;
    public static final int KEY_SEARCH = 5;
    public static final int KEY_SINGLE = 14;
    public static final int KEY_SLPOE = 9;
    public static final int KEY_SOURCE1_MENU = 74;
    public static final int KEY_SOURCE2_MENU = 103;
    public static final int KEY_STORAGE = 137;
    public static final int KEY_TIME_NAVIGATE = 138;
    public static final int KEY_TIME_OFFSET_CCW = 4166;
    public static final int KEY_TIME_OFFSET_CW = 2118;
    public static final int KEY_TIME_OFFSET_Z = 72;
    public static final int KEY_TIME_SCALE_CCW = 4211;
    public static final int KEY_TIME_SCALE_CW = 2163;
    public static final int KEY_TIME_SCALE_Z = 117;
    public static final int KEY_TOUCH = 71;
    public static final int KEY_TOUCH_LOCK = 19;
    public static final int KEY_TRIGGER = 26;
    public static final int KEY_TRIG_FORCE = 39;
    public static final int KEY_TRIG_LEVEL_CCW = 4150;
    public static final int KEY_TRIG_LEVEL_CW = 2102;
    public static final int KEY_TRIG_LEVEL_Z = 52;
    public static final int KEY_TRIG_MENU = 120;
    public static final int KEY_TRIG_MODE = 87;
    public static final int KEY_USER = 82;
    public static final int KEY_UTILITY = 89;
    public static final int KEY_WAVE_POS_CCW = 4166;
    public static final int KEY_WAVE_POS_CW = 2118;
    public static final int KEY_WAVE_POS_Z = 68;
    public static final int KEY_WAVE_RECORD = 39;
    public static final int KEY_WAVE_RECORD_BACK = 38;
    public static final int KEY_WAVE_RECORD_FORWAD = 40;
    public static final int KEY_WAVE_VOLT_CCW = 4134;
    public static final int KEY_WAVE_VOLT_CW = 2086;
    public static final int KEY_WAVE_VOLT_Z = 36;
    public static final int KEY_ZOOM = 32;
    public static final int KNOB_FUNC1_ANTICLOCKWISE = 187;
    public static final int KNOB_FUNC1_CLOCKWISE = 186;
    public static final int KNOB_FUNC1_PRESSED = 188;
    public static final int KNOB_FUNC2_ANTICLOCKWISE = 171;
    public static final int KNOB_FUNC2_CLOCKWISE = 170;
    public static final int KNOB_FUNC2_PRESSED = 172;
    public static final int KNOB_HORIZONTAL_POS_ANTICLOCKWISE = 139;
    public static final int KNOB_HORIZONTAL_POS_CLOCKWISE = 138;
    public static final int KNOB_HORIZONTAL_POS_PRESSED = 140;
    public static final int KNOB_HORIZONTAL_SCALE_ANTICLOCKWISE = 203;
    public static final int KNOB_HORIZONTAL_SCALE_CLOCKWISE = 202;
    public static final int KNOB_HORIZONTAL_SCALE_PRESSED = 204;
    public static final int KNOB_POWEROFF = 27;
    public static final int KNOB_TRIG_ANTICLOCKWISE = 235;
    public static final int KNOB_TRIG_CLOCKWISE = 234;
    public static final int KNOB_TRIG_PRESSED = 236;
    public static final int KNOB_VERITICAL_LEVEL_ANTICLOCKWISE = 219;
    public static final int KNOB_VERITICAL_LEVEL_CLOCKWISE = 218;
    public static final int KNOB_VERITICAL_LEVEL_PRESSED = 220;
    public static final int KNOB_VERITICAL_POS_ANTICLOCKWISE = 155;
    public static final int KNOB_VERITICAL_POS_CLOCKWISE = 154;
    public static final int KNOB_VERITICAL_POS_PRESSED = 156;
« Last Edit: February 19, 2024, 07:15:00 pm by Randy222 »
 
The following users thanked this post: AceyTech

Online shapirus

  • Super Contributor
  • ***
  • Posts: 1360
  • Country: ua
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1505 on: February 19, 2024, 07:00:34 pm »
Speaking of interaction events, any idea of a way to get the time passed since the used turned or pressed any control knob or button or touched the screen? I want to write a script to dim the screen after a timeout and restore brightness when any interactive activity is detected.
 

Offline Randy222

  • Frequent Contributor
  • **
  • Posts: 643
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1506 on: February 19, 2024, 07:04:49 pm »
Speaking of interaction events, any idea of a way to get the time passed since the used turned or pressed any control knob or button or touched the screen? I want to write a script to dim the screen after a timeout and restore brightness when any interactive activity is detected.
I believe that's the Android timeout setting in getprop list
My 804 dims after 5min, any event brings it back to the set full-brightness.

ro.rk.screenoff.time

« Last Edit: February 19, 2024, 07:07:23 pm by Randy222 »
 
The following users thanked this post: shapirus

Offline AndyBig

  • Frequent Contributor
  • **
  • Posts: 391
  • Country: ru
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1507 on: February 19, 2024, 07:05:57 pm »
I decided to break down step by step the hack and upgrade of oscilloscopes of the DHO8xx/9xx series :) I translated it through Google, so please don’t scold me too much if you come across a translation error :)
Tools you will need:
  • USB-hub, any. You can buy a miniature one with 2-4 sockets and leave it on the oscilloscope permanently.
    2024360-0
    A hub is needed so that you can connect a keyboard and WiFi at the same time. If you plan to connect to the network via cable, then a hub is not necessary.
  • Keyboard - regular USB or wireless with its own receiver plugged into USB. This one works great for me:
    2024366-1
  • WiFi dongle or connecting to the network with a cable. In the case of WiFi, dongles based on the RTL8188EU chipset are suitable. This one definitely works:
    2024372-2
     If you don’t want to bother with WiFi, you can connect to the network with a cable. In any case, you must have network access to the oscilloscope.
Software:
There are two ways to hack: 1 - turn your oscilloscope into an other model, 2 - generate options for it that expand its capabilities. In any case, the oscilloscope must be connected to the network and accessible over the network from the computer.
Important: The WiFi dongle must be connected to the oscilloscope before turning on the power, otherwise the oscilloscope will not see it.

Connect WiFi
  • Connect the WiFi dongle and keyboard, turn on the power to the oscilloscope.
  • After the oscilloscope is fully loaded, press the Win+N combination on the keyboard. This will cause the top curtain of Android to fall out, in which, among other things, there will be a settings gear.
    2024378-3
  • Tap on this gear and you will be taken to the standard Android settings, where you will go to the WiFi settings.
  • Here you turn on Wi-Fi, wait until your network is detected (the network must be in the 2.4 GHz range), select it, enter the password and make sure that the connection is successful. Now you can use Alt+Tab to return to the oscilloscope application itself.
These settings will be saved even when the power is turned off, so if the WiFi dongle is connected, the oscilloscope will automatically connect to the network when turned on (and automatically update the current date/time, albeit with the Chinese time zone).

Attention! Before changing the oscilloscope model, you need to make sure that it has firmware version 00.01.02.00.02 or later installed, otherwise after changing the model from 8xx to 9xx you will get unpleasant vertical shifts on the channels.
To see the full version of the firmware, and not just its first three numbers, click the "About Product" item in the "Utility" menu three times in a row.
If the current firmware version is less than 00.01.02.00.02, then update the firmware before using hacks. You can download the firmware update here - https://www.rigolna.com/products/digital-oscilloscopes/dho900/.

1 - Changing the oscilloscope model
For example, you can turn the DHO804 into a DHO924, which will immediately have the appropriate bandwidth and maximum memory depth. Disadvantages of this method:
  • the inscription DHO814 will still remain on the face :))
  • a button for turning on the logic analyzer, which is in the 9xx series and not in the 8xx series, will be added to the interface below. There is nothing critical about this; you still won’t be able to turn it on; the message “The LA adapter is not connected".
How to do:
  • See the oscilloscope IP address in the menu:
    2024384-4
  • Go to the directory with unpacked ADB and launch the command line there.
  • On the command line write the command:
    adb connect 192.168.1.171:55555
    Of course, replace the address 192.168.1.171 with the address of your oscilloscope.
  • Now write the command:
    adb pull /rigol/data
    When this command completes, the "data" directory will appear in the current directory. I recommend saving this directory with the original files as a backup, just in case.
  • From this “data” directory, copy two files into the directory with the unpacked utility “rigol_vendor_bin”: 1 - vendor.bin, 2 - Key.data or RKey.data (depending on the oscilloscope firmware version).
  • Go to the directory with the unpacked utility "rigol_vendor_bin" and write the command there:
    rigol_vendor_bin.exe -M DHO924
    Instead of the DHO924, you can substitute another model into which you want to turn your oscilloscope. Options:
    • DHO802
    • DHO804
    • DHO814
    • DHO914
    • DHO914S
    • DHO924
    • DHO924S
  • As a result of the previous command, you should receive a vendor.enc file in the current directory. Copy it to the directory with ADB and rename it there to vendor.bin.
  • Go to the directory with ADB (in which you should already have a new vendor.bin file) and write the command there:
    adb push vendor.bin /rigol/data/
  • Reboot the oscilloscope and enjoy :)

2 - Generation of additional options that expand capabilities
With this method, the oscilloscope model remains the same, but you can expand the capabilities with additional options, which are usually sold for money :)
The first 5 points are similar to the previous method.
  • See the oscilloscope IP address in the menu:
    2024384-5
  • Go to the directory with unpacked ADB and launch the command line there.
  • On the command line write the command:
    adb connect 192.168.1.171:55555
    Of course, replace the address 192.168.1.171 with the address of your oscilloscope.
  • Now write the command:
    adb pull /rigol/data
    When this command completes, the "data" directory will appear in the current directory. I recommend saving this directory with the original files as a backup, just in case.
  • From this “data” directory, copy two files into the directory with the unpacked utility “rigol_vendor_bin”: 1 - vendor.bin, 2 - Key.data or RKey.data (depending on the oscilloscope firmware version).
  • Go to the directory with the unpacked utility "rigol_vendor_bin" and write the command there:
    rigol_vendor_bin.exe -o >opts.txt
    This command will create a file "opts.txt", at the end of which a list of all options available for your model will be generated in the form of ready-made SCPI commands in the following form:
    :SYST:OPT:INST DHO900-BW15T25@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Instead of "x" there will be many different numbers and letters.
  • Open the page with the address of your oscilloscope in your browser and select the “SCPI Panel Control” item there:
    2024417-6
  • Insert all the generated lines with options into the text field (one at a time) and click “Send & Read”. In response to an option that the oscilloscope recognizes, an “Option installed” notification will appear on its display. It seems that you can send several lines with options at once, but this is not 100% reliable.
  • Go to the “About” menu of the oscilloscope and enjoy the numbers of the new bandwidth, and in the Acquire settings you will be pleasantly surprised by the new memory depth :)

2 - Same as the previous one, alternative method
  • See the oscilloscope IP address in the menu:
    2024384-7
  • From the directory of the unpacked utility "rigol_vendor_bin" copy the file "generate_all_options" to the directory with the unpacked ADB.
  • Go to the directory with unpacked ADB and launch the command line there.
  • On the command line write the command:
    adb connect 192.168.1.171:55555
    Of course, replace the address 192.168.1.171 with the address of your oscilloscope.
  • Now write the command:
    adb push generate_all_options /rigol/data/
    This will copy the "generate_all_options" file to the oscilloscope in the "/rigol/data" directory.
  • Launch the terminal to the oscilloscope in ADB:
    adb shell
    Now you should see the oscilloscope terminal command line with the following prompt - "rk3399_rigol:/$".
  • Here write the command:
    su
    The $ sign in the tooltip should change to #. This gives administrator rights to manipulate files.
  • Go to the "/rigol/data" directory:
    cd /rigol/data
  • Make the file "generate_all_options" in this directory executable:
    chmod 777 generate_all_options
  • Run the file "generate_all_options" for execution:
    ./generate_all_options
    As a result of executing this file, information about the operation of the program should appear in the terminal, something like this:
    Rigol 'vendor.bin' encoder/decoder v1.2 - Zelea
    -------------------------------------------------- ---------
    Model: DHO914
    SN: DHO9A25xxxxxxxx
    MAC: 0019xxxxxxxx
    -------------------------------------------------- ---------
    Generating options for DHO914
    -------------------------------------------------- ---------
    BW15T25 EMBD AUTO COMP BODE
    -------------------------------------------------- ---------

    To check, you can run the file list command:
    ls -l
    And make sure that files with the .lic extension appear:
    2024390-8
  • Write the command:
    exit
    And repeat it again to exit to the command line of the operating system.
  • Reboot the oscilloscope, go to the oscilloscope's "About" menu and enjoy the new bandwidth numbers, and in the Acquire settings you will be pleasantly surprised by the new memory depth :)
« Last Edit: April 02, 2024, 11:32:07 am by AndyBig »
 

Offline AndyBig

  • Frequent Contributor
  • **
  • Posts: 391
  • Country: ru
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1508 on: February 19, 2024, 07:22:54 pm »
Speaking of interaction events, any idea of a way to get the time passed since the used turned or pressed any control knob or button or touched the screen? I want to write a script to dim the screen after a timeout and restore brightness when any interactive activity is detected.
I did this simply in the Android settings :)
 

Online AceyTech

  • Regular Contributor
  • *
  • Posts: 176
  • Country: us
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1509 on: February 19, 2024, 10:59:01 pm »
I decided to break down step by step the hack and upgrade of oscilloscopes of the DHO8xx/9xx series :)

Wow, @AndyBig that's THE most comprehensive guide to date.  Hopefully that will reduce the confusion & questions for newcomers. 

Not scolding, but there are a couple trivial translation errors that slipped by:

--turn your oscilloscope into an older other model...
--Important: The WiFi whistle dongle must be...
--These settings will be saved even when the power is turned off, so if the WiFi whistle dongle is connected...

Thank you for your awesome effort!  :clap:

p.s., They should make that post a sticky.
« Last Edit: February 20, 2024, 10:42:53 pm by AceyTech »
 
The following users thanked this post: AndyBig

Offline AndyBig

  • Frequent Contributor
  • **
  • Posts: 391
  • Country: ru
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1510 on: February 19, 2024, 11:20:39 pm »
Not scolding, but there is a couple trivial translation errors that slipped by:
I tried to proofread and remove language-specific idioms, but I still missed some of them :) Thanks, I fixed it :)
 
The following users thanked this post: AceyTech

Offline gamerpaddy

  • Contributor
  • Posts: 33
  • Country: de
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1511 on: February 19, 2024, 11:49:31 pm »
Has anyone tried if SCRCPY over ADB works?
https://github.com/Genymobile/scrcpy
 
The following users thanked this post: AndyBig

Offline AndyBig

  • Frequent Contributor
  • **
  • Posts: 391
  • Country: ru
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1512 on: February 20, 2024, 02:09:19 am »
Has anyone tried if SCRCPY over ADB works?
https://github.com/Genymobile/scrcpy
I tried it. The screen slows down as soon as the image begins to change dynamically over most of it - for example, when the signal changes quickly with a span of half a screen or more. Web control in the oscilloscope's native interface works much better in this regard.
The only plus is that this program allows you to transfer special keyboard shortcuts, such as Alt+H (home screen), Alt+S (switching between running applications), etc.
Although it’s actually an interesting thing, I’ll keep it, thanks for the link :)
 
The following users thanked this post: gamerpaddy

Offline Randy222

  • Frequent Contributor
  • **
  • Posts: 643
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1513 on: February 20, 2024, 05:13:45 pm »
Good news. Found where all the colors are set.
With that step completed I need to move onto making an edit in a file, repack, resign, and then swap out the Sparrow app.
This will tell us if a resign will work ok. I suspect it will, we can toggle the Android switch "allow apps from unknown sources".

Progress.
 
The following users thanked this post: AndyBig, RAPo, shapirus

Online shapirus

  • Super Contributor
  • ***
  • Posts: 1360
  • Country: ua
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1514 on: February 20, 2024, 06:54:28 pm »
Whoever will be taking apart their scope next, including the removal of the heat sink, please measure the size and thickness of the thermal pads. I have a crazy idea of trying those "phase change thermal pads", but need to know what size to order, and I don't want to take the scope apart again, given that someone here will surely do it sooner or later :).
 

Offline Randy222

  • Frequent Contributor
  • **
  • Posts: 643
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1515 on: February 20, 2024, 07:22:29 pm »
Good news. Found where all the colors are set.
With that step completed I need to move onto making an edit in a file, repack, resign, and then swap out the Sparrow app.
This will tell us if a resign will work ok. I suspect it will, we can toggle the Android switch "allow apps from unknown sources".

Progress.
Update:

In testing, was able to uninstall system app com.rigol.scope, and reinstall it (Sparrow.apk), the OEM stuff.

I did edit, repack, resign, and zipalign.
pm install did not complain about any signature stuff, but I did get a failed install due to missing "NativeLibs". I do believe I can fix this problem by editing manifest to not call for "extractNativeLibs".
I need to investigate further.
 
The following users thanked this post: AndyBig, RAPo, AceyTech

Offline kcs

  • Regular Contributor
  • *
  • Posts: 162
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1516 on: February 21, 2024, 11:08:59 am »
I am not sure if it is the right place to ask, but maybe someone will know.

Does DHO900 keep track of how long it was in use (working hours)? There is nothing I can see in Rigol's menu, but maybe Android keeps track of it? Is there any way to check?
 

Offline S2084

  • Regular Contributor
  • *
  • Posts: 72
  • Country: cz
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1517 on: February 21, 2024, 12:42:34 pm »
Here guys is the result of my modification.  My assumption that reducing the resistance of the resistor in the divider will lead to a decrease in the fan speed turned out to be correct.  The resistance of the pre-soldered resistor I measured was 55.6 kOhm.  In parallel, a 1MOhm variable resistance resistor was connected to it, this gave a very large range of fan speed adjustment.  I adjusted the noise level so that it is not audible at all, even up close.  With this setting, the temperature on the board did not exceed 61°C for about one hour of operation at maximum load.  Photos are attached.
My modification is V 2.0.  the second resistor in the divider was replaced with a 10 kOhm NTC thermistor.  I left the 1 MOhm parallel variable resistor for adjustment; it still regulates the fan speed.  Now everything works as I originally planned, the speed increases very smoothly along with the temperature.  A variable resistor makes it possible to adjust the desired speed at the desired temperature.  With these ratings, it turned out to be possible to set the maximum voltage on the fan at 10V, which is even higher than what was in the factory version.  Damn this works great!!!

Made a video about it
https://youtu.be/nCtWG5JYNDo

Offline norbert.kiszka

  • Regular Contributor
  • *
  • Posts: 227
  • Country: pl
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1518 on: February 21, 2024, 01:34:52 pm »
Whoever will be taking apart their scope next, including the removal of the heat sink, please measure the size and thickness of the thermal pads. I have a crazy idea of trying those "phase change thermal pads", but need to know what size to order, and I don't want to take the scope apart again, given that someone here will surely do it sooner or later :).

Probably I will do my modifications today, so I will measure it.

Does DHO900 keep track of how long it was in use (working hours)? There is nothing I can see in Rigol's menu, but maybe Android keeps track of it? Is there any way to check?

I suggest to install some Android app working in the background.

Offline norbert.kiszka

  • Regular Contributor
  • *
  • Posts: 227
  • Country: pl
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1519 on: February 21, 2024, 01:39:52 pm »
I own 924S from couple months, but from the beginning I wanted to run Heroes III. Now I can confirm it works.


Offline Randy222

  • Frequent Contributor
  • **
  • Posts: 643
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1520 on: February 21, 2024, 02:48:43 pm »
I own 924S from couple months, but from the beginning I wanted to run Heroes III. Now I can confirm it works.


Rigol sells a rooted Android, so you can run whatever.
But why did you want to run a game on a scope device?
 

Offline norbert.kiszka

  • Regular Contributor
  • *
  • Posts: 227
  • Country: pl
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1521 on: February 21, 2024, 05:26:29 pm »
Rigol sells a rooted Android, so you can run whatever.
But why did you want to run a game on a scope device?

Just for fun.

Installing wasn't so easy. At the beginning Rigol app was randomly switching up to front.

Now I think to install Linux instead of Android. Maybe Rigol app will work on anbox (app to use Android apps on Linux). That will be much more useful.

Offline Randy222

  • Frequent Contributor
  • **
  • Posts: 643
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1522 on: February 21, 2024, 06:10:01 pm »
Is the 800/900 screen natively better than 1024x600 ?

Code: [Select]
<meta-data android:name="design_width_in_dp" android:value="1024"/>
<meta-data android:name="design_height_in_dp" android:value="600"/>

If it's better than that we can increase app resolution within same aspect ratio.
 

Online ebastler

  • Super Contributor
  • ***
  • Posts: 6510
  • Country: de
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1523 on: February 21, 2024, 06:14:34 pm »
Is the 800/900 screen natively better than 1024x600 ?

Rigol might get some things wrong, but they are no idiots. Of course they run the screen at its native resolution, and they put that (being the highest and hence best-looking number) in the datasheet too.
 

Offline Randy222

  • Frequent Contributor
  • **
  • Posts: 643
  • Country: ca
Re: Hacking the Rigol DHO800/900 Scope
« Reply #1524 on: February 21, 2024, 07:13:24 pm »
Is the 800/900 screen natively better than 1024x600 ?

Rigol might get some things wrong, but they are no idiots. Of course they run the screen at its native resolution, and they put that (being the highest and hence best-looking number) in the datasheet too.

The screen device runs it's own native "resolution", it has physical pixels. I'll look into the screen model and driver file to see if that's really the best res it is.
The app runs on a specified resolution. If that's not the native device res then the driver would need to interpolate. If the aspect is not the same then you get squishing and such.

I think perhaps the spec sheet tells us what the Scope app is, and less about the underlying devices of the hardware.

All good info.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf