Temat: Tworzenie własnego obrazu z własną konfiguracją=zła wielkość obrazu

Witam
Tworząc obraz dla routera WDR3600 na domyslnym configu od profilu USB ściagnietym z Gita obraz tworzy sie poprawnie. I dla kości 8MB flash ma plik factory 8,1MB a plik sysupgrade ok 6,4MB.
1. Pierwsze pytanie czy mozliwe ze jak dodałem wpisy aby tworzyło obraz na kość 16MB dla tego routera to wtedy plik Factory zajmuje ok 16,3MB a plik sysupgrade tak jak dla kości 8MB tylko ok 6,4MB ?

2. Jesli zmienie w konfigu cokolwiek to zaczyna sie problem. Tzn jesli dodam np ze chce wkompilować dodatkowe pakiety i dodaje wpisy takie:

# USB Support
#

CONFIG_PACKAGE_kmod-usb-net-cdc-ether=y
CONFIG_PACKAGE_kmod-usb-net-cdc-ncm=y
CONFIG_PACKAGE_kmod-usb-net-qmi-wwan=y
CONFIG_PACKAGE_kmod-usb-net-rndis=y
CONFIG_PACKAGE_kmod-usb-wdm=y

to zaczyna sie problem bo gdy jest ustawiony obraz aby tworzył dla kości 8MB to Factory zajmuje 8,1MB a sysupgrade juz tylko 3,4MB i tak samo jest dla kosci 16MB flash ze Factory ma ok 16,3MB a sysupgrade tylko 3,4MB. I zaznaczam tylko jak cokolwiek dopisuje nowego do pliku config profilu USB. Nie wiem o co chodzi. Kasowałęm wszystko całe dane i zaczynałem wielokrotnie od początku od podstaw kompilacje i to samo. A mowie na oryginalnej konfiguracji profilu jaka jest na github kompilacja tworzy poprawne wielkości obrazów. Co jest nie tak ?

2

Odp: Tworzenie własnego obrazu z własną konfiguracją=zła wielkość obrazu

1. Tak jest.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Tworzenie własnego obrazu z własną konfiguracją=zła wielkość obrazu

Czyli pojemności obrazow dla 16MB flash to ok 16,3MB i ok 6,4MB...

Nie wiem tylko czemu jak cokolwiek dodam do konfiga profilu USB to nagle obraz sysupgrade ma tylko 3,4MB ?
Własnie kompiluje jeszcze raz i dodałem tylko wpis dla
CONFIG_PACKAGE_kmod-usb-net-cdc-ether=y

względem oryginału i zobaczę teraz czy wielkość obrazów będzie ok. ALe wydaje mi się ze będzie tez zła... Dziwne i nie wiem od czego takie coś tym bardziej ze mowie zmieniam tylko jeden wpis w konfigu nic więcej...

4

Odp: Tworzenie własnego obrazu z własną konfiguracją=zła wielkość obrazu

Juz wiem co było powodem złej wielkości obrazu... Wrzuciłem takiego patcha do
/gargoyle/downloaded/attitude_adjustment-37768/target/linux/generic/patches-3.3/

diff -Nuar a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
--- a/drivers/net/usb/cdc_ncm.c    2012-06-01 09:16:13.000000000 +0200
+++ b/drivers/net/usb/cdc_ncm.c    2013-08-21 23:34:31.000000000 +0200
@@ -140,14 +140,7 @@
 static struct usb_driver cdc_ncm_driver;
 static const struct ethtool_ops cdc_ncm_ethtool_ops;
 
-static const struct usb_device_id cdc_devs[] = {
-    { USB_INTERFACE_INFO(USB_CLASS_COMM,
-        USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE),
-        .driver_info = (unsigned long)&cdc_ncm_info,
-    },
-    {
-    },
-};
+
 
 MODULE_DEVICE_TABLE(usb, cdc_devs);
 
@@ -541,10 +534,12 @@
         (ctx->ether_desc == NULL) || (ctx->control != intf))
         goto error;
 
-    /* claim interfaces, if any */
-    temp = usb_driver_claim_interface(driver, ctx->data, dev);
-    if (temp)
-        goto error;
+    /* claim data interface, if different from control */
+    if (ctx->data != ctx->control) {
+        temp = usb_driver_claim_interface(driver, ctx->data, dev);
+        if (temp)
+            goto error;
+    }
 
     iface_no = ctx->data->cur_altsetting->desc.bInterfaceNumber;
 
@@ -621,6 +616,11 @@
     if (ctx == NULL)
         return;        /* no setup */
 
+    /* handle devices with combined control and data interface */
+    if (ctx->control == ctx->data)
+        ctx->data = NULL;
+
+
     /* disconnect master --> disconnect slave */
     if (intf == ctx->control && ctx->data) {
         usb_set_intfdata(ctx->data, NULL);
@@ -1209,6 +1209,39 @@
     .tx_fixup = cdc_ncm_tx_fixup,
 };
 
+/* Same as cdc_ncm_info, but with FLAG_WWAN */
+static const struct driver_info wwan_info = {
+    .description = "Mobile Broadband Network Device",
+    .flags = FLAG_POINTTOPOINT | FLAG_NO_SETINT | FLAG_MULTI_PACKET
+            | FLAG_WWAN,
+    .bind = cdc_ncm_bind,
+    .unbind = cdc_ncm_unbind,
+    .check_connect = cdc_ncm_check_connect,
+    .manage_power = cdc_ncm_manage_power,
+    .status = cdc_ncm_status,
+    .rx_fixup = cdc_ncm_rx_fixup,
+    .tx_fixup = cdc_ncm_tx_fixup,
+};
+
+static const struct usb_device_id cdc_devs[] = {
+    { USB_INTERFACE_INFO(USB_CLASS_COMM,
+        USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE),
+        .driver_info = (unsigned long)&cdc_ncm_info,
+    },
+    /* Huawei NCM devices disguised as vendor specific */
+    { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x16),
+        .driver_info = (unsigned long)&wwan_info,
+    },
+    { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x46),
+        .driver_info = (unsigned long)&wwan_info,
+    },
+    { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x76),
+      .driver_info = (unsigned long)&wwan_info,
+    },
+    {
+    },
+};
+
 static struct usb_driver cdc_ncm_driver = {
     .name = "cdc_ncm",
     .id_table = cdc_devs,

Jest to patch do CDC-NCM bo nie moge sobie  w dalszym ciagu poradzic z tym aby zadzialalo w moim obrazie. Znalazlem na necie takie patche i chcialem sprawdzic dlatego wrzucilem w sciezki jakie tez Cezary mi podał kiedys dajac patcha do QMI. Nie wiem czemu powodował blad bedac w tej lokalizacji. Czy musze go wrzucic gdzie indziej ? Cezary podpowiedz mi prosze chociaz czy z tym NCM dobrze kombinuje ?