Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
toh:tp-link:tl-mr3420:deep.mmc.hack [2018/02/16 15:10] tmomastoh:tp-link:tl-mr3420:deep.mmc.hack [2018/07/01 14:58] – added some info deoptim
Line 3: Line 3:
  
 <WRAP center important 70%> <WRAP center important 70%>
-This mod does not work on the new **trunk** and **Chaos Calmer 15.05** (since the revision [[https://dev.openwrt.org/changeset/47045|r47045]]).+This mod does not work on the older **//LEDE//** and **//Chaos Calmer 15.05//** (since the revision [[https://dev.openwrt.org/changeset/47045|r47045]]). 
 +**But it works completely on the newest kernel 4.14+(ath79) and does not need to delete anything.**
 \\ \\
-You need to discard this three changes to work property with this mod+If you use older version of branch then you need to discard/remove this three changes to work property with this mod:
-\\ +
-Now just remove three patches from git repository:+
 <code> <code>
 git rm target/linux/generic/patches-3.18/092-01-spi-Check-to-see-if-the-device-is-processing-a-messa.patch git rm target/linux/generic/patches-3.18/092-01-spi-Check-to-see-if-the-device-is-processing-a-messa.patch
Line 13: Line 12:
 git rm target/linux/generic/patches-3.18/092-03-spi-Only-idle-the-message-pump-in-the-worker-kthread.patch git rm target/linux/generic/patches-3.18/092-03-spi-Only-idle-the-message-pump-in-the-worker-kthread.patch
 </code> </code>
-You can also do this in same way for other branches...+**Note:** Instead of path **patches-3.18**, new versions already use **pending-3.18** path. 
 +You can also do remove those patches in same way for other branches...
 ---- ----
 Or you can use old **Barrier Breaker 14.07** branch or **Chaos Calmer 15.05** branch (up to revision r47042).\\ Or you can use old **Barrier Breaker 14.07** branch or **Chaos Calmer 15.05** branch (up to revision r47042).\\
Line 34: Line 34:
 And two ways for installing the required modules for detect and use the SD memory card is connected to the SPI bus of device.\\ And two ways for installing the required modules for detect and use the SD memory card is connected to the SPI bus of device.\\
  
-At software level, this modification is almost no different from [[:doc:howto:mmc_over_gpio|mmc_over_gpio]], the only difference in the [[wp>Serial_Peripheral_Interface_Bus#Independent_slave_SPI_configuration|Independent slave SPI configuration]] of controller - that means we are using ''CS0'', ''CS1...CSn'' line for each slave SPI-device. \\ On any platform with Atheros SoC we can see serial NOR-flash chip which is connected to SPI controller and it is used as primary boot device.+At software level, this modification is almost no different from [[docs:guide-user:hardware:mmc_over_gpio|mmc_over_gpio]], the only difference in the [[wp>Serial_Peripheral_Interface_Bus#Independent_slave_SPI_configuration|Independent slave SPI configuration]] of controller - that means we are using ''CS0'', ''CS1...CSn'' line for each slave SPI-device. \\ On any platform with Atheros SoC we can see serial NOR-flash chip which is connected to SPI controller and it is used as primary boot device.
  
-How to build your own firmware is covered here: [[:doc:howto:build]].\\+How to build your own firmware is covered here: [[:docs:guide-developer:build-system:start]].\\
 If you already have experience with compile own firmware, and you want to easy apply these changes as patch(es), you can just use this Linux console command: If you already have experience with compile own firmware, and you want to easy apply these changes as patch(es), you can just use this Linux console command:
 | Svn patch\\ file format: | <code>patch -u -p0 < patchfile.patch</code> | | Svn patch\\ file format: | <code>patch -u -p0 < patchfile.patch</code> |
Line 46: Line 46:
 **Note:** Keep in mind, very often the unused GPIOs a pulled-down to the ground or pulled-up to the power bus via resistor - this may affect on detection of SD memory cards. **Note:** Keep in mind, very often the unused GPIOs a pulled-down to the ground or pulled-up to the power bus via resistor - this may affect on detection of SD memory cards.
 |  {{media:doc:hardware:gpio_pullup_pulldown.png?nolink}}  | |  {{media:doc:hardware:gpio_pullup_pulldown.png?nolink}}  |
 +\\ 
 +\\
 ==== First way, using common CS0 ==== ==== First way, using common CS0 ====
 {{:meta:icons:tango:48px-emblem-important.svg.png?nolink&16|Important! }} Using this method, you need to purchase a Single (or Schmitt-Trigger) Inverter Gate (which can operates on voltage 3.3V). {{:meta:icons:tango:48px-emblem-important.svg.png?nolink&16|Important! }} Using this method, you need to purchase a Single (or Schmitt-Trigger) Inverter Gate (which can operates on voltage 3.3V).
  
 == Main changes in the source code of kernel: == == Main changes in the source code of kernel: ==
-<code diff>+<hidden Old patch for Openwrt (before LEDE project)><code diff>
 diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c
 index 9323b31..2c51142 100644 index 9323b31..2c51142 100644
Line 136: Line 137:
   tl_mr3x20_gpio_keys);   tl_mr3x20_gpio_keys);
  
-</code>+</code></hidden> 
 +<hidden Patch for Openwrt/LEDE (4.9, ar71xx platform, mach-*.c files)><code diff> 
 +diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c 
 +index e53d97d..269e469 100644 
 +--- a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c 
 ++++ b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c 
 +@@ -7,8 +7,10 @@ 
 +  */ 
 +  
 + #include <linux/init.h> 
 ++#include <linux/mmc/host.h> 
 + #include <linux/spi/spi.h> 
 + #include <linux/spi/flash.h> 
 ++#include <linux/spi/mmc_spi.h> 
 + #include <linux/mtd/mtd.h> 
 + #include <linux/mtd/partitions.h> 
 + #include <linux/mtd/concat.h> 
 +@@ -16,6 +18,11 @@ 
 + #include "dev-spi.h" 
 + #include "dev-m25p80.h" 
 +  
 ++static struct mmc_spi_platform_data ath79_mmc_data = { 
 ++ .detect_delay = 100, /* msecs */ 
 ++ .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, 
 ++}; 
 +
 + static struct spi_board_info ath79_spi_info[] = { 
 +  { 
 +  .bus_num = 0, 
 +@@ -27,18 +34,25 @@ static struct spi_board_info ath79_spi_info[] = { 
 +  .bus_num = 0, 
 +  .chip_select = 1, 
 +  .max_speed_hz   = 25000000, 
 +- .modalias = "m25p80", 
 ++ .modalias = "mmc_spi", 
 ++ .platform_data = &ath79_mmc_data, 
 +  } 
 + }; 
 +  
 ++static int device_spi_cs_gpios[2] = { 
 ++ -ENOENT, 
 ++ 2, /* GPIO Number */ 
 ++}; 
 +
 + static struct ath79_spi_platform_data ath79_spi_data; 
 +  
 + void __init ath79_register_m25p80(struct flash_platform_data *pdata) 
 + { 
 +  ath79_spi_data.bus_num = 0; 
 +- ath79_spi_data.num_chipselect = 1; 
 ++ ath79_spi_data.num_chipselect = 2; 
 ++ ath79_spi_data.cs_gpios = device_spi_cs_gpios; 
 +  ath79_spi_info[0].platform_data = pdata; 
 +- ath79_register_spi(&ath79_spi_data, ath79_spi_info, 1); 
 ++ ath79_register_spi(&ath79_spi_data, ath79_spi_info, 2); 
 + } 
 +  
 + static struct flash_platform_data *multi_pdata;
  
 +</code></hidden>
 +<hidden Patch for Openwrt (4.14+, ath79 platform, dts files)><code diff>
 +diff --git a/target/linux/ath79/dts/ar7241_tp-link.dtsi b/target/linux/ath79/dts/ar7241_tp-link.dtsi
 +index 3846d811ac..d845e06951 100644
 +--- a/target/linux/ath79/dts/ar7241_tp-link.dtsi
 ++++ b/target/linux/ath79/dts/ar7241_tp-link.dtsi
 +@@ -48,7 +48,19 @@
 + 
 + &spi {
 +  status = "okay";
 +- num-cs = <1>;
 ++ num-cs = <2>;
 ++ /*
 ++ * First value is default pin for flash, second value
 ++ * (via comma) the GPIO number for sdcard. But we used
 ++ * gpio 2 and it equivalent of internal CS0 line. And
 ++ * we use it because we use common bus SPI0.0 for two
 ++ * devices (default Low polarity chip-select, custom
 ++ * High polarity chip-select).
 ++ * In its core, this is a dummy, because internal CS0 line
 ++ * is locked by HW and SPI driver, and we can not use it at all.
 ++ * We use this to simply switch SPI bus to another device.
 ++ */
 ++ cs-gpios = <0>, <&gpio 2 GPIO_ACTIVE_HIGH>;
 + 
 +  flash@0 {
 +  #address-cells = <1>;
 +@@ -80,6 +92,13 @@
 +  };
 +  };
 +  };
 ++
 ++ sdcard@0 {
 ++ compatible = "mmc-spi-slot";
 ++ reg = <1>;
 ++ spi-max-frequency = <25000000>;
 ++ voltage-ranges = <3200 3400>;
 ++ };
 + };
 + 
 + &pcie {
 +
 +</code></hidden>
 +\\
 +\\
 ==== Second way, using GPIO as CS1 (Recommended) ==== ==== Second way, using GPIO as CS1 (Recommended) ====
 Recommended to use any unused GPIO-pin as CS1 for MMC/SD memory card. Recommended to use any unused GPIO-pin as CS1 for MMC/SD memory card.
  
 == Main changes in the source code of kernel: == == Main changes in the source code of kernel: ==
-<code diff>+<hidden Old patch for Openwrt (before LEDE project)><code diff>
 diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c
 index e5831d4..80760d5 100644 index e5831d4..80760d5 100644
Line 224: Line 327:
   tl_mr3x20_gpio_keys);   tl_mr3x20_gpio_keys);
  
-</code> +</code></hidden
 +<hidden Patch for Openwrt (4.14+, ath79 platform, dts files)><code diff> 
 +diff --git a/target/linux/ath79/dts/ar7241_tp-link.dtsi b/target/linux/ath79/dts/ar7241_tp-link.dtsi 
 +index 3846d811ac..58399eb4de 100644 
 +--- a/target/linux/ath79/dts/ar7241_tp-link.dtsi 
 ++++ b/target/linux/ath79/dts/ar7241_tp-link.dtsi 
 +@@ -48,7 +48,12 @@ 
 +  
 + &spi { 
 +  status = "okay"; 
 +- num-cs = <1>; 
 ++ num-cs = <2>; 
 ++ /* 
 ++ * Where first parameter <0> is default CS0 pin for flash 
 ++ * and second parameter is GPIO Number for sdcard. 
 ++ */ 
 ++ cs-gpios = <0>, <&gpio 7 GPIO_ACTIVE_HIGH>; 
 +  
 +  flash@0 { 
 +  #address-cells = <1>; 
 +@@ -80,6 +85,13 @@ 
 +  }; 
 +  }; 
 +  }; 
 +
 ++ sdcard@0 { 
 ++ compatible = "mmc-spi-slot"; 
 ++ reg = <1>; 
 ++ spi-max-frequency = <25000000>; 
 ++ voltage-ranges = <3200 3400>; 
 ++ }; 
 + }; 
 +  
 + &pcie {
  
 +</code></hidden>
 +\\
 +\\
 ==== Third way, using Internal CS1 ==== ==== Third way, using Internal CS1 ====
  
Line 242: Line 380:
  
 == Main changes in the source code of kernel: == == Main changes in the source code of kernel: ==
-<code diff>+<hidden Old patch for Openwrt (before LEDE project)><code diff>
 diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c
 index e5831d4..80760d5 100644 index e5831d4..80760d5 100644
Line 332: Line 470:
   tl_mr3x20_gpio_keys);   tl_mr3x20_gpio_keys);
  
-</code>+</code></hidden> 
 +<hidden Patch for Openwrt (4.14+, ath79 platform, dts files)><code diff> 
 +diff --git a/target/linux/ath79/dts/ar7241_tp-link.dtsi b/target/linux/ath79/dts/ar7241_tp-link.dtsi 
 +index 3846d811ac..ea915872dc 100644 
 +--- a/target/linux/ath79/dts/ar7241_tp-link.dtsi 
 ++++ b/target/linux/ath79/dts/ar7241_tp-link.dtsi 
 +@@ -48,7 +48,10 @@ 
 +  
 + &spi { 
 +  status = "okay"; 
 +- num-cs = <1>; 
 ++ pinctrl-names = "default"; 
 ++ pinctrl-0 = <&enable_cs1_bit>; 
 ++ num-cs = <2>; 
 ++ cs-gpios = <0>, <0>; 
 +  
 +  flash@0 { 
 +  #address-cells = <1>; 
 +@@ -80,6 +83,30 @@ 
 +  }; 
 +  }; 
 +  }; 
 +
 ++ sdcard@0 { 
 ++ compatible = "mmc-spi-slot"; 
 ++ reg = <1>; 
 ++ spi-max-frequency = <25000000>; 
 ++ voltage-ranges = <3200 3400>; 
 ++ }; 
 ++}; 
 +
 ++&pinmux { 
 ++ enable_cs1_bit: pinmux_enable_cs1_bit { 
 ++ pinctrl-single,bits = < 
 ++ /* 
 ++ * Set AR724X_GPIO_FUNC_SPI_CS_EN1 BIT(13) to 1, 
 ++ * i.e. enable hardware CS1 but it turn-off GPIO0; 
 ++ * Formula: *addr = (*addr & ~sub-mask) | 
 ++ * (value & sub-mask); 
 ++ * Where: addr is 0x18000000 + 0x40000 + 0x28 is 
 ++ * base address of AR724X GPIO functions; 
 ++ * <addr_offset value sub-mask> 
 ++ */ 
 ++ 0x0 0x2000 0x2000 
 ++ >; 
 ++ }; 
 + }; 
 +  
 + &pcie {
  
 +</code></hidden>
 +\\
 +\\
 == Switching GPIO0 to CS1 on AR71XX SoC: == == Switching GPIO0 to CS1 on AR71XX SoC: ==
 +<hidden Instruction for old Openwrt (including LEDE project)>
 <code c> <code c>
  /* Enabling internal CS1, disable GPIO 0 */  /* Enabling internal CS1, disable GPIO 0 */
  ath79_gpio_function_enable(AR71XX_GPIO_FUNC_SPI_CS1_EN);  ath79_gpio_function_enable(AR71XX_GPIO_FUNC_SPI_CS1_EN);
 </code> </code>
 +</hidden>
  
 == Switching GPIO0 to CS1 on AR724X SoC: == == Switching GPIO0 to CS1 on AR724X SoC: ==
 +<hidden Instruction for old Openwrt (including LEDE project)>
 <code c> <code c>
  /* Enabling internal CS1, disable GPIO 0 */  /* Enabling internal CS1, disable GPIO 0 */
  ath79_gpio_function_enable(AR724X_GPIO_FUNC_SPI_CS_EN1);  ath79_gpio_function_enable(AR724X_GPIO_FUNC_SPI_CS_EN1);
 </code> </code>
-//(Already used in the above example.)// +</hidden> 
 +<hidden Instruction for Openwrt (4.14+, ath79 platform, dts files)> 
 +<code c> 
 + ... 
 + ... 
 + /* Add this two lines to spi enum */ 
 + pinctrl-names = "default"; 
 + pinctrl-0 = <&enable_cs1_bit>; 
 + ... 
 + ... 
 +&pinmux { 
 + enable_cs1_bit: pinmux_enable_cs1_bit { 
 + pinctrl-single,bits = < 
 + /* 
 + * Set AR724X_GPIO_FUNC_SPI_CS_EN1 BIT(13) to 1, 
 + * i.e. enable hardware CS1 but it turn-off GPIO0; 
 + * Formula: *addr = (*addr & ~sub-mask) | 
 + * (value & sub-mask); 
 + * Where: addr is 0x18000000 + 0x40000 + 0x28 is 
 + * base address of AR724X GPIO functions; 
 + * <addr_offset value sub-mask> 
 + */ 
 + 0x0 0x2000 0x2000 
 + >; 
 + }; 
 + }; 
 +</code> 
 +</hidden> 
 +**Note:** Already used in the example above.
 == Turn off UART and switching GPIO9(Rx) to CS1 on AR933X SoC: == == Turn off UART and switching GPIO9(Rx) to CS1 on AR933X SoC: ==
 +<hidden Instruction for old Openwrt (including LEDE project)>
 <code c> <code c>
  /* Disable UART, enabling GPIO 9 and GPIO 10 */  /* Disable UART, enabling GPIO 9 and GPIO 10 */
Line 354: Line 574:
  ath79_gpio_function_enable(AR933X_GPIO_FUNC_SPI_CS_EN1);  ath79_gpio_function_enable(AR933X_GPIO_FUNC_SPI_CS_EN1);
 </code> </code>
 +</hidden>
  
 == Configure GPIO11 to CS1 on AR934X SoC: == == Configure GPIO11 to CS1 on AR934X SoC: ==
 +<hidden Instruction for old Openwrt (including LEDE project)>
 <code c> <code c>
  /* We chose GPIO11 - for this example. You can use any unused GPIOs(11-22) */  /* We chose GPIO11 - for this example. You can use any unused GPIOs(11-22) */
Line 365: Line 587:
  ath79_gpio_output_select(DEVICE_GPIO_CS1_MMC, AR934X_GPIO_OUT_SPI_CS1);  ath79_gpio_output_select(DEVICE_GPIO_CS1_MMC, AR934X_GPIO_OUT_SPI_CS1);
 </code> </code>
- +</hidden> 
 +<hidden Instruction for Openwrt (4.14+, ath79 platform, dts files)> 
 +<code c> 
 + ... 
 + ... 
 + /* Add this two lines to spi enum */ 
 + pinctrl-names = "default"; 
 + pinctrl-0 = <&gpio11_to_cs1_bit>; 
 + ... 
 + ... 
 +&pinmux { 
 + gpio11_to_cs1_bit: pinmux_gpio11_to_cs1_bit { 
 + pinctrl-single,bits = < 
 + /* 
 + * Set AR934X_GPIO_OUT_SPI_CS1 7 value to GPIO11, 
 + * i.e. enable hardware CS1 but it turn-off GPIO11; 
 + * Formula: *addr = (*addr & ~sub-mask) | 
 + * (value & sub-mask); 
 + * Where: addr is 0x18000000 + 0x40000 + 0x2C is 
 + * base address of AR934X GPIO Output functions; 
 + * <addr_offset value sub-mask>; 
 + */ 
 + /* 
 + * 0x2c+0x8 addr_offset for GPIO11(Bit 31:24); 
 + * 0x2c+0xc addr_offset for GPIO12-GPIO15; 
 + * 0x2c+0x10 addr_offset for GPIO16-GPIO19; 
 + * 0x7 value (with Bitwise Left Shift) for mux CS1 
 + * use 0x8 value for mux CS2; 
 + */ 
 + 0x8 0x7000000 0xff000000 
 + >; 
 + }; 
 + }; 
 +</code> 
 +</hidden> 
 +\\ 
 +\\
 ==== How to implement the Hotplug of SD-card ==== ==== How to implement the Hotplug of SD-card ====
 |  {{media:doc:hardware:memory_card_connectors_memory_card_billboard.gif?nolink}}  | |  {{media:doc:hardware:memory_card_connectors_memory_card_billboard.gif?nolink}}  |
Line 373: Line 630:
 Total we use two unused GPIOs: **GPIO7->CS1**, **GPIO18->CD**. \\ Total we use two unused GPIOs: **GPIO7->CS1**, **GPIO18->CD**. \\
 Create a new additional button on this example: Create a new additional button on this example:
-<code diff>+<hidden Old patch for Openwrt (before LEDE project)><code diff>
 diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c
 index e5831d4..80760d5 100644 index e5831d4..80760d5 100644
Line 475: Line 732:
   tl_mr3x20_gpio_keys);   tl_mr3x20_gpio_keys);
  
-</code>+</code></hidden>
 // We could use GPIO to IRQ event as card detection (implemented in ''mmc_spi'' module) or GPIO to IRQ event as new hotplug SPI-device (implemented in standart SPI bus driver) - but in all this cases, it was found that it not support hotplug detection with **removing** the SD-card or SPI-device via the IRQ trigger.\\ // We could use GPIO to IRQ event as card detection (implemented in ''mmc_spi'' module) or GPIO to IRQ event as new hotplug SPI-device (implemented in standart SPI bus driver) - but in all this cases, it was found that it not support hotplug detection with **removing** the SD-card or SPI-device via the IRQ trigger.\\
    Or FIXME   //    Or FIXME   //
Line 481: Line 738:
 The solution was found without the use of IRQ trigger: The solution was found without the use of IRQ trigger:
 **After build and compiling** the firmware, we just added additional button with the name **''mmc''**.\\ **After build and compiling** the firmware, we just added additional button with the name **''mmc''**.\\
-Next, you need to [[:doc:howto:hardware.button#using.atheros.00-button.uci|create a configuration]] for the button **''mmc''**:+Next, you need to [[docs:guide-user:hardware:hardware.button#using.atheros.00-button.uci|create a configuration]] for the button **''mmc''**:
 <code bash> <code bash>
 uci add system button uci add system button
Line 517: Line 774:
 ==== Modules installation ==== ==== Modules installation ====
 === First way, build it in kernel (Recommended) === === First way, build it in kernel (Recommended) ===
-| {{:meta:icons:tango:dialog-information.png?nolink}} | By using this variant - NO need to install external modules ''kmod-mmc'', ''kmod-mmc-spi'' and ''kmod-fs-ext4''. \\ You can use the SD memory card as [[doc:howto:extroot]] (block-mount) with no problem. |+| {{:meta:icons:tango:dialog-information.png?nolink}} | By using this variant - NO need to install external modules ''kmod-mmc'', ''kmod-mmc-spi'' and ''kmod-fs-ext4''. \\ You can use the SD memory card as [[docs:guide-user:additional-software:extroot_configuration]] (block-mount) with no problem. |
  
  
Line 543: Line 800:
  
 === Second way, using external modules === === Second way, using external modules ===
-| {{:meta:icons:tango:48px-emblem-important.svg.png?nolink |Important!}} | If we are using external modules ''kmod-mmc'' and ''kmod-mmc-spi'' - this does not allow to correctly mount ''<color magenta>/overlay</color>'' \\ or ''<color blue>/</color>'' (root) partitions through [[doc:howto:extroot]]. This problem is described in [[https://dev.openwrt.org/ticket/7768|this old ticket]]. \\ It's even considering that the use of these external modules, allow us to fully use the SD-card and mount it in the other mount points (except [[doc:howto:extroot]]). |+| {{:meta:icons:tango:48px-emblem-important.svg.png?nolink |Important!}} | If we are using external modules ''kmod-mmc'' and ''kmod-mmc-spi'' - this does not allow to correctly mount ''<color magenta>/overlay</color>'' \\ or ''<color blue>/</color>'' (root) partitions through [[docs:guide-user:additional-software:extroot_configuration]]. This problem is described in [[https://dev.openwrt.org/ticket/7768|this old ticket]]. \\ It's even considering that the use of these external modules, allow us to fully use the SD-card and mount it in the other mount points (except [[docs:guide-user:additional-software:extroot_configuration]]). |
  
 ** Update: ** The problem remained in **r37142** firmware revision.\\  ** Update: ** The problem remained in **r37142** firmware revision.\\ 
-For [[doc:howto:extroot]], use First way.+For [[docs:guide-user:additional-software:extroot_configuration]], use First way.
  
  
  • Last modified: 2021/10/15 09:06
  • by bobafetthotmail