找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 11161|回复: 14

从固件里反编译dtb为dts

[复制链接]
发表于 2019-4-9 16:23 | 显示全部楼层 |阅读模式
本帖最后由 dato 于 2019-4-9 16:28 编辑

最近买了个4G便携路由,配置为mtk7620+8G 闪存+64M 内存+tf卡支持+仅usb供电+5200ma。虽然内存才64M,但由于有zram-swap跑个softether还是没问题的。tf卡空间理论上还是能扩展,但这点内存跑起来够呛。这要是个128M内存 16M闪存的硬件就完美了。当然作为4G路由它已经合格了。
https://item.taobao.com/item.htm?id=565142869705
卖家提供的DTS直接可以在cc 15.05.1合成固件,虽然指示灯不正常,但至少网口能驱动。只是这个版本太古老,似乎要打补丁才能支持EC20 4G模块。自从15.05.1版本以后就不知道如何通过imagebuilder来快速改动.dts,虽然网上有篇DTS support in imagebuilder,按他的方法并不成功,但是从源码编译还是可以随时修改.dts。
在将15.05.1的dts覆盖18.06.2版本以后,指示灯不正常连带网口也不正常,还有一些以前从来没见过的生成dtb错误,但对EC20的支持完美什么补丁都不需要打。求助卖家提供dts无效,今天终于东拼西凑把固件里的dts反编译出来,希望能帮到晚来的朋友。

1,原厂备份
root@G4:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "factory"
mtd3: 00010000 00010000 "backup"
mtd4: 00010000 00010000 "bdinfo"
mtd5: 00790000 00010000 "firmware"
mtd6: 0012215e 00010000 "kernel"
mtd7: 0066dea2 00010000 "rootfs"
mtd8: 00210000 00010000 "rootfs_data"

dd if=/dev/mtd0 | gzip > /tmp/u-boot.gz
dd if=/dev/mtd1 | gzip > /tmp/u-boot-env.gz
dd if=/dev/mtd2 | gzip > /tmp/factory.gz
dd if=/dev/mtd3 | gzip > /tmp/backup.gz
dd if=/dev/mtd4 | gzip > /tmp/bdinfo.gz
dd if=/dev/mtd5 | gzip > /tmp/firmware.gz
dd if=/dev/mtd6 | gzip > /tmp/kernel.gz
dd if=/dev/mtd7 | gzip > /tmp/rootfs.gz
dd if=/dev/mtd8 | gzip > /tmp/rootfs_data.gz

2,安装binwalk
通过binwalk -Me firmware 解出原始固件,注意是否有个叫40的文件
3,将40下载通过16进制编缉软件ultraedit,
将包含"OWRTDTB:"字符串之前的内容右击剪切,将dts内容后面的空白部分(此例为gpio-export,output....)到文件末尾右击剪切,这样就只剩下dtb文件
保存。
4,通过dtc -I dtb -O dts -o a.dts a.dtb
获得最终的a.dts文件


参考文档

DTS support in imagebuilder
https://forum.openwrt.org/t/dts-support-in-imagebuilder/12320
Finding power switch GPIO/ testing all possible GPIO
https://forum.openwrt.org/t/finding-power-switch-gpio-testing-all-possible-gpio/16787
openwrt: patch-dtb
https://www.cnblogs.com/sammei/p/3977848.html


*2019年04月09日星期二
- 生成文档




  1. /dts-v1/;

  2. / {
  3.         #address-cells = <0x1>;
  4.         #size-cells = <0x1>;
  5.         compatible = "OEM,MT7620", "ralink,mt7620a-soc";
  6.         model = "R3";

  7.         cpus {

  8.                 cpu@0 {
  9.                         compatible = "mips,mips24KEc";
  10.                 };
  11.         };

  12.         chosen {
  13.                 bootargs = "console=ttyS0,115200";
  14.         };

  15.         cpuintc@0 {
  16.                 #address-cells = <0x0>;
  17.                 #interrupt-cells = <0x1>;
  18.                 interrupt-controller;
  19.                 compatible = "mti,cpu-interrupt-controller";
  20.                 linux,phandle = <0x3>;
  21.                 phandle = <0x3>;
  22.         };

  23.         aliases {
  24.                 spi0 = "/palmbus@10000000/spi@b00";
  25.                 spi1 = "/palmbus@10000000/spi@b40";
  26.                 serial0 = "/palmbus@10000000/uartlite@c00";
  27.         };

  28.         palmbus@10000000 {
  29.                 compatible = "palmbus";
  30.                 reg = <0x10000000 0x200000>;
  31.                 ranges = <0x0 0x10000000 0x1fffff>;
  32.                 #address-cells = <0x1>;
  33.                 #size-cells = <0x1>;

  34.                 sysc@0 {
  35.                         compatible = "ralink,mt7620a-sysc", "ralink,rt3050-sysc";
  36.                         reg = <0x0 0x100>;
  37.                 };

  38.                 timer@100 {
  39.                         compatible = "ralink,mt7620a-timer", "ralink,rt2880-timer";
  40.                         reg = <0x100 0x20>;
  41.                         interrupt-parent = <0x1>;
  42.                         interrupts = <0x1>;
  43.                 };

  44.                 watchdog@120 {
  45.                         compatible = "ralink,mt7620a-wdt", "ralink,rt2880-wdt";
  46.                         reg = <0x120 0x10>;
  47.                         resets = <0x2 0x8>;
  48.                         reset-names = "wdt";
  49.                         interrupt-parent = <0x1>;
  50.                         interrupts = <0x1>;
  51.                 };

  52.                 intc@200 {
  53.                         compatible = "ralink,mt7620a-intc", "ralink,rt2880-intc";
  54.                         reg = <0x200 0x100>;
  55.                         resets = <0x2 0x13>;
  56.                         reset-names = "intc";
  57.                         interrupt-controller;
  58.                         #interrupt-cells = <0x1>;
  59.                         interrupt-parent = <0x3>;
  60.                         interrupts = <0x2>;
  61.                         linux,phandle = <0x1>;
  62.                         phandle = <0x1>;
  63.                 };

  64.                 memc@300 {
  65.                         compatible = "ralink,mt7620a-memc", "ralink,rt3050-memc";
  66.                         reg = <0x300 0x100>;
  67.                         resets = <0x2 0x14>;
  68.                         reset-names = "mc";
  69.                         interrupt-parent = <0x1>;
  70.                         interrupts = <0x3>;
  71.                 };

  72.                 uart@500 {
  73.                         compatible = "ralink,mt7620a-uart", "ralink,rt2880-uart", "ns16550a";
  74.                         reg = <0x500 0x100>;
  75.                         resets = <0x2 0xc>;
  76.                         reset-names = "uart";
  77.                         interrupt-parent = <0x1>;
  78.                         interrupts = <0x5>;
  79.                         reg-shift = <0x2>;
  80.                         status = "disabled";
  81.                 };

  82.                 gpio@600 {
  83.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  84.                         reg = <0x600 0x34>;
  85.                         resets = <0x2 0xd>;
  86.                         reset-names = "pio";
  87.                         interrupt-parent = <0x1>;
  88.                         interrupts = <0x6>;
  89.                         gpio-controller;
  90.                         #gpio-cells = <0x2>;
  91.                         ralink,gpio-base = <0x0>;
  92.                         ralink,num-gpios = <0x18>;
  93.                         ralink,register-map = [00 04 08 0c 20 24 28 2c 30 34];
  94.                         status = "okay";
  95.                         linux,phandle = <0x11>;
  96.                         phandle = <0x11>;
  97.                 };

  98.                 gpio@638 {
  99.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  100.                         reg = <0x638 0x24>;
  101.                         interrupt-parent = <0x1>;
  102.                         interrupts = <0x6>;
  103.                         gpio-controller;
  104.                         #gpio-cells = <0x2>;
  105.                         ralink,gpio-base = <0x18>;
  106.                         ralink,num-gpios = <0x10>;
  107.                         ralink,register-map = [00 04 08 0c 10 14 18 1c 20 24];
  108.                         status = "okay";
  109.                         linux,phandle = <0x12>;
  110.                         phandle = <0x12>;
  111.                 };

  112.                 gpio@660 {
  113.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  114.                         reg = <0x660 0x24>;
  115.                         interrupt-parent = <0x1>;
  116.                         interrupts = <0x6>;
  117.                         gpio-controller;
  118.                         #gpio-cells = <0x2>;
  119.                         ralink,gpio-base = <0x28>;
  120.                         ralink,num-gpios = <0x20>;
  121.                         ralink,register-map = [00 04 08 0c 10 14 18 1c 20 24];
  122.                         status = "okay";
  123.                         linux,phandle = <0x13>;
  124.                         phandle = <0x13>;
  125.                 };

  126.                 gpio@688 {
  127.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  128.                         reg = <0x688 0x24>;
  129.                         interrupt-parent = <0x1>;
  130.                         interrupts = <0x6>;
  131.                         gpio-controller;
  132.                         #gpio-cells = <0x2>;
  133.                         ralink,gpio-base = <0x48>;
  134.                         ralink,num-gpios = <0x1>;
  135.                         ralink,register-map = [00 04 08 0c 10 14 18 1c 20 24];
  136.                         status = "disabled";
  137.                 };

  138.                 i2c@900 {
  139.                         compatible = "ralink,rt2880-i2c";
  140.                         reg = <0x900 0x100>;
  141.                         resets = <0x2 0x10>;
  142.                         reset-names = "i2c";
  143.                         #address-cells = <0x1>;
  144.                         #size-cells = <0x0>;
  145.                         status = "disabled";
  146.                         pinctrl-names = "default";
  147.                         pinctrl-0 = <0x4>;
  148.                 };

  149.                 i2s@a00 {
  150.                         compatible = "mediatek,mt7620-i2s";
  151.                         reg = <0xa00 0x100>;
  152.                         resets = <0x2 0x11>;
  153.                         reset-names = "i2s";
  154.                         interrupt-parent = <0x1>;
  155.                         interrupts = <0xa>;
  156.                         txdma-req = <0x2>;
  157.                         rxdma-req = <0x3>;
  158.                         dmas = <0x5 0x4 0x5 0x6>;
  159.                         dma-names = "tx", "rx";
  160.                         status = "disabled";
  161.                 };

  162.                 spi@b00 {
  163.                         compatible = "ralink,mt7620a-spi", "ralink,rt2880-spi";
  164.                         reg = <0xb00 0x40>;
  165.                         resets = <0x2 0x12>;
  166.                         reset-names = "spi";
  167.                         #address-cells = <0x1>;
  168.                         #size-cells = <0x0>;
  169.                         status = "okay";
  170.                         pinctrl-names = "default";
  171.                         pinctrl-0 = <0x6>;

  172.                         m25p80@0 {
  173.                                 #address-cells = <0x1>;
  174.                                 #size-cells = <0x1>;
  175.                                 compatible = "jedec,spi-nor";
  176.                                 reg = <0x0>;
  177.                                 spi-max-frequency = <0x989680>;

  178.                                 partition@0 {
  179.                                         label = "u-boot";
  180.                                         reg = <0x0 0x30000>;
  181.                                 };

  182.                                 partition@30000 {
  183.                                         label = "u-boot-env";
  184.                                         reg = <0x30000 0x10000>;
  185.                                 };

  186.                                 partition@40000 {
  187.                                         label = "factory";
  188.                                         reg = <0x40000 0x10000>;
  189.                                         linux,phandle = <0x10>;
  190.                                         phandle = <0x10>;
  191.                                 };

  192.                                 partition@fe0000 {
  193.                                         label = "backup";
  194.                                         reg = <0x7e0000 0x10000>;
  195.                                 };

  196.                                 partition@ff0000 {
  197.                                         label = "bdinfo";
  198.                                         reg = <0x7f0000 0x10000>;
  199.                                         linux,phandle = <0xd>;
  200.                                         phandle = <0xd>;
  201.                                 };

  202.                                 partition@50000 {
  203.                                         label = "firmware";
  204.                                         reg = <0x50000 0x790000>;
  205.                                 };
  206.                         };
  207.                 };

  208.                 spi@b40 {
  209.                         compatible = "ralink,rt2880-spi";
  210.                         reg = <0xb40 0x60>;
  211.                         resets = <0x2 0x12>;
  212.                         reset-names = "spi";
  213.                         #address-cells = <0x1>;
  214.                         #size-cells = <0x0>;
  215.                         status = "disabled";
  216.                         pinctrl-names = "default";
  217.                         pinctrl-0 = <0x7>;
  218.                 };

  219.                 uartlite@c00 {
  220.                         compatible = "ralink,mt7620a-uart", "ralink,rt2880-uart", "ns16550a";
  221.                         reg = <0xc00 0x100>;
  222.                         resets = <0x2 0x13>;
  223.                         reset-names = "uartl";
  224.                         interrupt-parent = <0x1>;
  225.                         interrupts = <0xc>;
  226.                         reg-shift = <0x2>;
  227.                         pinctrl-names = "default";
  228.                         pinctrl-0 = <0x8>;
  229.                 };

  230.                 systick@d00 {
  231.                         compatible = "ralink,mt7620a-systick", "ralink,cevt-systick";
  232.                         reg = <0xd00 0x10>;
  233.                         resets = <0x2 0x1c>;
  234.                         reset-names = "intc";
  235.                         interrupt-parent = <0x3>;
  236.                         interrupts = <0x7>;
  237.                 };

  238.                 pcm@2000 {
  239.                         compatible = "ralink,mt7620a-pcm";
  240.                         reg = <0x2000 0x800>;
  241.                         resets = <0x2 0xb>;
  242.                         reset-names = "pcm";
  243.                         interrupt-parent = <0x1>;
  244.                         interrupts = <0x4>;
  245.                         status = "disabled";
  246.                 };

  247.                 gdma@2800 {
  248.                         compatible = "ralink,mt7620a-gdma", "ralink,rt3883-gdma";
  249.                         reg = <0x2800 0x800>;
  250.                         resets = <0x2 0xe>;
  251.                         reset-names = "dma";
  252.                         interrupt-parent = <0x1>;
  253.                         interrupts = <0x7>;
  254.                         #dma-cells = <0x1>;
  255.                         #dma-channels = <0x10>;
  256.                         #dma-requests = <0x10>;
  257.                         status = "disabled";
  258.                         linux,phandle = <0x5>;
  259.                         phandle = <0x5>;
  260.                 };
  261.         };

  262.         pinctrl {
  263.                 compatible = "ralink,rt2880-pinmux";
  264.                 pinctrl-names = "default";
  265.                 pinctrl-0 = <0x9>;

  266.                 pinctrl0 {
  267.                         linux,phandle = <0x9>;
  268.                         phandle = <0x9>;

  269.                         default {
  270.                                 ralink,group = "ephy", "wled", "pa", "i2c", "wdt", "uartf", "rgmii1", "spi refclk";
  271.                                 ralink,function = "gpio";
  272.                         };
  273.                 };

  274.                 pcm_i2s {

  275.                         pcm_i2s {
  276.                                 ralink,group = "uartf";
  277.                                 ralink,function = "pcm i2s";
  278.                         };
  279.                 };

  280.                 uartf_gpio {

  281.                         uartf_gpio {
  282.                                 ralink,group = "uartf";
  283.                                 ralink,function = "gpio uartf";
  284.                         };
  285.                 };

  286.                 gpio_i2s {

  287.                         gpio_i2s {
  288.                                 ralink,group = "uartf";
  289.                                 ralink,function = "gpio i2s";
  290.                         };
  291.                 };

  292.                 spi {
  293.                         linux,phandle = <0x6>;
  294.                         phandle = <0x6>;

  295.                         spi {
  296.                                 ralink,group = "spi";
  297.                                 ralink,function = "spi";
  298.                         };
  299.                 };

  300.                 spi1 {
  301.                         linux,phandle = <0x7>;
  302.                         phandle = <0x7>;

  303.                         spi1 {
  304.                                 ralink,group = "spi_cs1";
  305.                                 ralink,function = "spi_cs1";
  306.                         };
  307.                 };

  308.                 i2c {
  309.                         linux,phandle = <0x4>;
  310.                         phandle = <0x4>;

  311.                         i2c {
  312.                                 ralink,group = "i2c";
  313.                                 ralink,function = "i2c";
  314.                         };
  315.                 };

  316.                 uartlite {
  317.                         linux,phandle = <0x8>;
  318.                         phandle = <0x8>;

  319.                         uart {
  320.                                 ralink,group = "uartlite";
  321.                                 ralink,function = "uartlite";
  322.                         };
  323.                 };

  324.                 mdio {

  325.                         mdio {
  326.                                 ralink,group = "mdio";
  327.                                 ralink,function = "mdio";
  328.                         };
  329.                 };

  330.                 ephy {
  331.                         linux,phandle = <0xc>;
  332.                         phandle = <0xc>;

  333.                         ephy {
  334.                                 ralink,group = "ephy";
  335.                                 ralink,function = "ephy";
  336.                         };
  337.                 };

  338.                 wled {

  339.                         wled {
  340.                                 ralink,group = "wled";
  341.                                 ralink,function = "wled";
  342.                         };
  343.                 };

  344.                 rgmii1 {

  345.                         rgmii1 {
  346.                                 ralink,group = "rgmii1";
  347.                                 ralink,function = "rgmii1";
  348.                         };
  349.                 };

  350.                 rgmii2 {

  351.                         rgmii2 {
  352.                                 ralink,group = "rgmii2";
  353.                                 ralink,function = "rgmii2";
  354.                         };
  355.                 };

  356.                 pcie {
  357.                         linux,phandle = <0xf>;
  358.                         phandle = <0xf>;

  359.                         pcie {
  360.                                 ralink,group = "pcie";
  361.                                 ralink,function = "pcie rst";
  362.                         };
  363.                 };
  364.         };

  365.         rstctrl {
  366.                 compatible = "ralink,mt7620a-reset", "ralink,rt2880-reset";
  367.                 #reset-cells = <0x1>;
  368.                 linux,phandle = <0x2>;
  369.                 phandle = <0x2>;
  370.         };

  371.         clkctrl {
  372.                 compatible = "ralink,rt2880-clock";
  373.                 #clock-cells = <0x1>;
  374.                 linux,phandle = <0xa>;
  375.                 phandle = <0xa>;
  376.         };

  377.         usbphy {
  378.                 compatible = "mediatek,mt7620-usbphy";
  379.                 #phy-cells = <0x1>;
  380.                 resets = <0x2 0x16 0x2 0x19>;
  381.                 reset-names = "host", "device";
  382.                 clocks = <0xa 0x16 0xa 0x19>;
  383.                 clock-names = "host", "device";
  384.                 linux,phandle = <0xe>;
  385.                 phandle = <0xe>;
  386.         };

  387.         ethernet@10100000 {
  388.                 compatible = "mediatek,mt7620-eth";
  389.                 reg = <0x10100000 0x10000>;
  390.                 #address-cells = <0x1>;
  391.                 #size-cells = <0x0>;
  392.                 interrupt-parent = <0x3>;
  393.                 interrupts = <0x5>;
  394.                 resets = <0x2 0x15 0x2 0x17>;
  395.                 reset-names = "fe", "esw";
  396.                 mediatek,switch = <0xb>;
  397.                 pinctrl-names = "default";
  398.                 pinctrl-0 = <0xc>;
  399.                 mtd-mac-address = <0xd 0xde00>;
  400.                 mediatek,portmap = "wllll";

  401.                 port@4 {
  402.                         compatible = "mediatek,mt7620a-gsw-port", "mediatek,eth-port";
  403.                         reg = <0x4>;
  404.                         status = "disabled";
  405.                 };

  406.                 port@5 {
  407.                         compatible = "mediatek,mt7620a-gsw-port", "mediatek,eth-port";
  408.                         reg = <0x5>;
  409.                         status = "disabled";
  410.                 };

  411.                 mdio-bus {
  412.                         #address-cells = <0x1>;
  413.                         #size-cells = <0x0>;
  414.                         status = "disabled";
  415.                 };
  416.         };

  417.         gsw@10110000 {
  418.                 compatible = "mediatek,mt7620-gsw";
  419.                 reg = <0x10110000 0x8000>;
  420.                 resets = <0x2 0x17>;
  421.                 reset-names = "esw";
  422.                 interrupt-parent = <0x1>;
  423.                 interrupts = <0x11>;
  424.                 mediatek,port4 = "ephy";
  425.                 linux,phandle = <0xb>;
  426.                 phandle = <0xb>;
  427.         };

  428.         sdhci@10130000 {
  429.                 compatible = "ralink,mt7620-sdhci";
  430.                 reg = <0x10130000 0x4000>;
  431.                 interrupt-parent = <0x1>;
  432.                 interrupts = <0xe>;
  433.                 status = "okay";
  434.         };

  435.         ehci@101c0000 {
  436.                 compatible = "generic-ehci";
  437.                 reg = <0x101c0000 0x1000>;
  438.                 interrupt-parent = <0x1>;
  439.                 interrupts = <0x12>;
  440.                 phys = <0xe 0x1>;
  441.                 phy-names = "usb";
  442.                 status = "okay";
  443.         };

  444.         ohci@101c1000 {
  445.                 compatible = "generic-ohci";
  446.                 reg = <0x101c1000 0x1000>;
  447.                 interrupt-parent = <0x1>;
  448.                 interrupts = <0x12>;
  449.                 phys = <0xe 0x1>;
  450.                 phy-names = "usb";
  451.                 status = "okay";
  452.         };

  453.         pcie@10140000 {
  454.                 compatible = "mediatek,mt7620-pci";
  455.                 reg = <0x10140000 0x100 0x10142000 0x100>;
  456.                 #address-cells = <0x3>;
  457.                 #size-cells = <0x2>;
  458.                 resets = <0x2 0x1a>;
  459.                 reset-names = "pcie0";
  460.                 clocks = <0xa 0x1a>;
  461.                 clock-names = "pcie0";
  462.                 interrupt-parent = <0x3>;
  463.                 interrupts = <0x4>;
  464.                 pinctrl-names = "default";
  465.                 pinctrl-0 = <0xf>;
  466.                 device_type = "pci";
  467.                 bus-range = <0x0 0xff>;
  468.                 ranges = <0x2000000 0x0 0x0 0x20000000 0x0 0x10000000 0x1000000 0x0 0x0 0x10160000 0x0 0x10000>;
  469.                 status = "okay";

  470.                 pcie-bridge {
  471.                         reg = <0x0 0x0 0x0 0x0 0x0>;
  472.                         #address-cells = <0x3>;
  473.                         #size-cells = <0x2>;
  474.                         device_type = "pci";
  475.                 };
  476.         };

  477.         wmac@10180000 {
  478.                 compatible = "ralink,rt7620-wmac", "ralink,rt2880-wmac";
  479.                 reg = <0x10180000 0x40000>;
  480.                 interrupt-parent = <0x3>;
  481.                 interrupts = <0x6>;
  482.                 ralink,eeprom = "soc_wmac.eeprom";
  483.                 ralink,mtd-eeprom = <0x10 0x0>;
  484.         };

  485.         gpio-keys-polled {
  486.                 compatible = "gpio-keys-polled";
  487.                 #address-cells = <0x1>;
  488.                 #size-cells = <0x0>;
  489.                 poll-interval = <0x14>;

  490.                 reset {
  491.                         label = "reset";
  492.                         gpios = <0x11 0x1 0x1>;
  493.                         linux,code = <0x198>;
  494.                 };
  495.         };

  496.         gpio-leds {
  497.                 compatible = "gpio-leds";

  498.                 4g_ok {
  499.                         label = "oem:green:4g_ok";
  500.                         gpios = <0x12 0xe 0x1>;
  501.                 };

  502.                 4g_err {
  503.                         label = "oem:green:4g_err";
  504.                         gpios = <0x12 0xf 0x1>;
  505.                 };

  506.                 eth_err {
  507.                         label = "oem:green:eth_err";
  508.                         gpios = <0x13 0x3 0x0>;
  509.                 };

  510.                 eth_ok {
  511.                         label = "oem:green:eth_ok";
  512.                         gpios = <0x13 0x4 0x0>;
  513.                 };
  514.         };

  515.         gpio_export {
  516.                 compatible = "gpio-export";
  517.                 #size-cells = <0x0>;

  518.                 3g_power {
  519.                         gpio-export,name = "3g_power";
  520.                         gpio-export,output = <0x1>;
  521.                         gpios = <0x13 0x2 0x0>;
  522.                 };

  523.                 usb_hub {
  524.                         gpio-export,name = "usb_hub";
  525.                         gpio-export,output = <0x0>;
  526.                         gpios = <0x11 0x11 0x0>;
  527.                 };
  528.         };
  529. };
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-4-9 16:49 | 显示全部楼层
好样的,支持你
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-4-9 18:35 来自手机 | 显示全部楼层
樓主你好,淘寶上有好幾個版本,dts能通用嗎?另外能不能上載一份dts? html複製可能會破壞格式。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-4-9 21:11 来自手机 | 显示全部楼层
很厉害的教程
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-4-9 21:42 | 显示全部楼层
看来坑还是蛮多的。官方的固件是lede17.01.5,尝试用这个dts在18062依然网口不通,连带4G也连不了了,看来需要填的坑还有非常多。

官方有多个版本应该只是内置4G模块不一样,其它的应该一样的,具体还是请咨询卖家。卖家会提供针对cc15.05.1版本的DTS,这个文件可以成功启动机器并保持网口和无线可用,由于需要对系统打补丁才能支持Ec20,再加上cc对softether支持有问题,所以直接跳过。在18.06.2从源码编译直接覆盖卖家提供的Y1.dtsi Y1S.dts,再用imagebuilder合成以下包,什么补丁都不需要打就直接驱动Ec20 R2.1全网通模块。虽然网口不能用,4G模块led灯不显示,但4G功能和wifi都是能正常使用还是个可以用的4G路由。

-usbutils kmod-usb-ohci luci-proto-3g usb-modeswitch kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan uqmi  \
kmod-usb-serial-option kmod-usb-serial kmod-usb-serial-wwan \
-kmod-usb-net-cdc-mbim -umbim \
-comgt -chat -sdparm -comgt-ncm -kmod-usb-net-huawei-cdc-ncm \
-kmod-usb-net-rndis \



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-4-9 21:49 来自手机 | 显示全部楼层
都是大佬,学习看看
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-4-9 21:53 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-4-10 08:01 来自手机 | 显示全部楼层
感谢大佬分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-4-10 18:50 | 显示全部楼层
支持支持!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-4-10 19:16 | 显示全部楼层
太好了  谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-4-10 19:48 | 显示全部楼层
请教一下大佬,dts经过编译后生成的是dtb文件吗?我现在不确定我修改的dts文件是否被编译,所以想倒推一下看看。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-4-10 20:15 | 显示全部楼层
dts和dtb的转换过程真是问倒我了。

这也是cc15.05.1和后继lede版本不一样的地方。cc在imagbuilder里修改.dts就可以直接生效。而lede在imagebuilder却无法生效,根本不会生成新的dtb。

当时搜索到老外的这篇,还以为可以不需要编译源码就可以在imagebuilder里生成dtb,但直接在imagebuilder里尝试首先遇到的就是那些变量无法转换,然后就是不能在dts文件里尝试INCLUDE其它的dtsi文件,所以在经过几次尝试失败以后就放弃了,从源码编译时倒不会有这个问题。
DTS support in imagebuilder
https://forum.openwrt.org/t/dts-support-in-imagebuilder/12320
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2020-1-14 09:40 | 显示全部楼层
太好了 ,谢谢分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-12-27 04:36 | 显示全部楼层
感谢大佬分享
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-10-17 00:41 | 显示全部楼层
感谢楼主分享,很干货
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-25 14:43

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表