Hello,

I am the proud owner of a Huawei K4606 3G USB dongle and guess... It
doesn't work. In the past I managed to get the E220 and E169 working, so
I thought that this would be possible to.

Boy was I wrong :-(

The device shows up as:
ugen4.2: <K4606 VodafoneHuawei> at usbus4, cfg=1 md=HOST spd=HIGH
(480Mbps) pwr=ON (500mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x00ff
  bMaxPacketSize0 = 0x0040
  idVendor = 0x12d1
  idProduct = 0x1f19
  bcdDevice = 0x0102
  iManufacturer = 0x0005  <Vodafone(Huawei)>
  iProduct = 0x0004  <K4606>
  iSerialNumber = 0x0007  <FFFFFFFFFFFFFFFF>
  bNumConfigurations = 0x0002

I added this to usbdevs:
+product HUAWEI K4606           0x1f19  3G modem

And this to u3g.c:
+       U3G_DEV(HUAWEI, K4606, U3GINIT_HUAWEI),
(also used U3GINIT_HUAWEISCSI, didn't change)

And I added some debug information to u3g.c function u3g_probe:
 {
        struct usb_attach_arg *uaa = device_get_ivars(self);

+       printf(">>idVendor:0x%x\n", uaa->info.idVendor);
+       printf(">>idProduct:0x%x\n", uaa->info.idProduct);
+
+       if (uaa->info.idVendor != USB_VENDOR_HUAWEI)
+               return (ENXIO);
+
+       printf(">>uaa->info.bInterfaceClass:%d (must be %d)\n",
+           uaa->info.bInterfaceClass, UICLASS_VENDOR);
+       printf(">>uaa->info.bConfigIndex:%d (must be %d)\n",
+           uaa->info.bConfigIndex, U3G_CONFIG_INDEX);
+
+
+       printf(">>u3g_probe - 1: usb_mode\n");
        if (uaa->usb_mode != USB_MODE_HOST) {
                return (ENXIO);
        }
+       printf(">>u3g_probe - 2: bConfigIndex\n");
        if (uaa->info.bConfigIndex != U3G_CONFIG_INDEX) {
                return (ENXIO);
        }
+       printf(">>u3g_probe - 3: bInterfaceClass\n");
        if (uaa->info.bInterfaceClass != UICLASS_VENDOR) {
                return (ENXIO);
        }
+       printf(">>u3g_probe - 4: lookup\n");
        return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa));
 }

When I load the u3g.ko, it shows me that the device gets probed for the
right idVendor and idProduct, but that the expected values for
bInterfaceClass and bConfigIndex are never matching what is expected and
thus the attachment never will be done:

Dec  3 20:56:56 t43 root: Unknown USB device: vendor 0x0483 product
0x2016 bus uhub2
Dec  3 20:56:56 t43 kernel: >>u3g_driver_loaded
Dec  3 20:56:56 t43 kernel: >>idVendor:0x483
Dec  3 20:56:56 t43 kernel: >>idProduct:0x2016
Dec  3 20:56:56 t43 kernel: >>idVendor:0x12d1
Dec  3 20:56:56 t43 kernel: >>idProduct:0x1f19
Dec  3 20:56:56 t43 kernel: >>uaa->info.bInterfaceClass:2 (must be 255)
Dec  3 20:56:56 t43 kernel: >>uaa->info.bConfigIndex:1 (must be 0)
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 1: usb_mode
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 2: bConfigIndex
Dec  3 20:56:56 t43 kernel: >>idVendor:0x12d1
Dec  3 20:56:56 t43 kernel: >>idProduct:0x1f19
Dec  3 20:56:56 t43 kernel: >>uaa->info.bInterfaceClass:10 (must be 255)
Dec  3 20:56:56 t43 kernel: >>uaa->info.bConfigIndex:1 (must be 0)
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 1: usb_mode
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 2: bConfigIndex
Dec  3 20:56:56 t43 kernel: >>idVendor:0x12d1
Dec  3 20:56:56 t43 kernel: >>idProduct:0x1f19
Dec  3 20:56:56 t43 kernel: >>uaa->info.bInterfaceClass:2 (must be 255)
Dec  3 20:56:56 t43 kernel: >>uaa->info.bConfigIndex:1 (must be 0)
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 1: usb_mode
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 2: bConfigIndex
Dec  3 20:56:56 t43 kernel: >>idVendor:0x12d1
Dec  3 20:56:56 t43 kernel: >>idProduct:0x1f19
Dec  3 20:56:56 t43 kernel: >>uaa->info.bInterfaceClass:10 (must be 255)
Dec  3 20:56:56 t43 kernel: >>uaa->info.bConfigIndex:1 (must be 0)
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 1: usb_mode
Dec  3 20:56:56 t43 kernel: >>u3g_probe - 2: bConfigIndex
Dec  3 20:56:56 t43 root: Unknown USB device: vendor 0x12d1 product
0x1f19 bus uhub4

Doing the magic trick of taking out the USB device half-way and let it
reinitialize didn't change anything.

So, I'm now utterly confused.

If anybody can give me a pointer in the right direction, it would be
appreciated.


Edwin

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to