PeterSuh-Q3 / tcrp-addons

6 stars 4 forks source link

What is dtbpatch used for? #2

Closed 007revad closed 1 year ago

007revad commented 1 year ago

I see dtbpatch in https://github.com/PeterSuh-Q3/tcrp-addons/tree/main/dtbpatch/releases

When I search for dtbpatch in all the .sh files and dtbpatch is never run. What is it used for?

If I run dtbpatch --help it shows:

# dtbpatch --help
Use: dtbpatch <model.dtb> <model_patched.dtb>

But that is not clear to me on what it is doing.

  1. Is a patch that's injected into ?
  2. Or is dtbpatch patching and saving it to ?

If it's 2, then where is dtbpatch getting the data to patch ?

PeterSuh-Q3 commented 1 year ago

I see dtbpatch in https://github.com/PeterSuh-Q3/tcrp-addons/tree/main/dtbpatch/releases

When I search for dtbpatch in all the .sh files and dtbpatch is never run. What is it used for?

If I run dtbpatch --help it shows:

# dtbpatch --help
Use: dtbpatch <model.dtb> <model_patched.dtb>

But that is not clear to me on what it is doing.

  1. Is a patch that's injected into ?
  2. Or is dtbpatch patching and saving it to ?

If it's 2, then where is dtbpatch getting the data to patch ?

dtbpatch bin is an early tool for dtb patch developed by fabio, the founder of arpl. It is a tool that has been stabilized and has slightly complicated C code. However, the dtbpatch bin has been deprecated since Arc adopted the simpler and clearer dts approach. Control of the nvme power part starting from the recent 7.2 u2 is not possible with dtbpatch.

007revad commented 1 year ago

For nvme power is that like:

    nvme_slot@1 {
        pcie_root = "00:01.3";
        port_type = "ssdcache";
        pcie_power = "100"
    };

And what about NVMe drives in an adaptor card? Do they need something like this:

    M2D20 {
        compatible = "Synology";
        model = "synology_m2d20";
        pcie_power = "100"

        m2_card@1 {

            nvme {
                pcie_postfix = "00.0,08.0,00.0";
                port_type = "ssdcache";
            };
        };

Or like this:

    M2D20 {
        compatible = "Synology";
        model = "synology_m2d20";

        m2_card@1 {

            nvme {
                pcie_postfix = "00.0,08.0,00.0";
                port_type = "ssdcache";
                pcie_power = "100"
            };
        };
PeterSuh-Q3 commented 1 year ago

My thoughts are a bit different. It seems that M2D20 will eventually be one of the M.2 NVMe RAID CARDs that support PCIE Bifurcation as shown below.

Is separate dtb file manipulation necessary? And, if dts manipulation is necessary, this original dtb file must be extracted from the genuine Synology product and only the values in it must be entered based on this.

Today, I applied PCIE Bifurcation to the M.2 NVMe RAID CARD below to recognize 4 NVMe and turn it into your M.2 NMVe volume. Tested with DT-based DS923+.

https://xpenology.com/forum/topic/69667-collection-of-reviews-on-using-multiple-m2-nvme-pcie-x16-raid-card/

If M2D20's NVMe is listed under /sys/block, wouldn't it be mapped automatically according to the existing mapping method?

007revad commented 1 year ago

I've seen comments about losing NVMe storage pool in 7.2 U2 and U3. You mentioned power_limit="100" here: https://xpenology.com/forum/topic/69462-m2-nvme-unrecognized-issue-after-device-tree-base-platform-72-64570-u2/?do=findComment&comment=447800

Where is power_limit="100" being added?

I'm trying to get M2D18 working on my bare metal DS1821+ with DSM 7.2 U3 but I have 3 issues:

  1. The NVMe drive does not show in storage manager.
  2. The M2D18 does not show in storage manager.
  3. The fans run full speed when M2D18 is installed.

The NVMe drive does show up in /sys/block and my syno_m2_volume script appears to create the volume... except cat /proc/mdstat does not show the NVMe.

PeterSuh-Q3 commented 1 year ago

As if you see it version = <0x01> It's right below.

https://github.com/PeterSuh-Q3/tcrp-addons/blob/main/dtbpatch/releases/install.sh#L76

If power_limit="100" is missing, the phenomenon you experienced in DSM 7.2 U3 may occur.

007revad commented 1 year ago

My real DS720+ has power_limit = "11.55,5.775" in /run/model.dtb

My real DS1821+ does not have power_limit in model.dtb. But it does have /sys/firmware/devicetree/base/power_limit which is 14.85,9.075

Is setting power_limit to 100 on a real Synology going to damage anything?

007revad commented 1 year ago

Ignore my previous question.

I've discovered on a real Synology NAS that uses device tree I can get the power limit with: cat /sys/firmware/devicetree/base/power_limit

PeterSuh-Q3 commented 1 year ago

Ignore my previous question.

I've discovered on a real Synology NAS that uses device tree I can get the power limit with: cat /sys/firmware/devicetree/base/power_limit

The file below appears to be missing in XPE DS1823+. Why is there a difference?

admin2@NAS5:~$ uname -a Linux NAS5 4.4.302+ #64570 SMP Fri Jun 2 23:59:36 CST 2023 x86_64 GNU/Linux synology_v1000_1823xs+ admin2@NAS5:~$ cat /sys/firmware/devicetree/base/power_limit cat: /sys/firmware/devicetree/base/power_limit: No such file or directory

admin2@NAS5:~$ cd /sys/firmware/devicetree/ admin2@NAS5:/sys/firmware/devicetree$ ll total 0 drwxr-xr-x 2 root root 0 Sep 23 21:04 . drwxr-xr-x 7 root root 0 Sep 23 21:03 ..

007revad commented 1 year ago

Is that XPE DS1823xs+ running 64570 update 1, 2 or 3 ?

PeterSuh-Q3 commented 1 year ago

It's 64570 update 0

스크린샷 2023-09-24 오후 6 51 32

007revad commented 1 year ago

Maybe it only exists in 64570 update 1 and later.