Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Dec 2013 21:28:17 +1100
From:      Edwin Groothuis - FreeBSD <edwin@freebsd.org>
To:        freebsd-usb@freebsd.org
Subject:   Huawei K4606 issues
Message-ID:  <529DB241.7030203@freebsd.org>

next in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--e91IfGTKCeDB3et3iPwJmwncq9tXgmkse
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

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=3D1 md=3DHOST spd=3DHIGH
(480Mbps) pwr=3DON (500mA)

  bLength =3D 0x0012
  bDescriptorType =3D 0x0001
  bcdUSB =3D 0x0200
  bDeviceClass =3D 0x0000
  bDeviceSubClass =3D 0x0000
  bDeviceProtocol =3D 0x00ff
  bMaxPacketSize0 =3D 0x0040
  idVendor =3D 0x12d1
  idProduct =3D 0x1f19
  bcdDevice =3D 0x0102
  iManufacturer =3D 0x0005  <Vodafone(Huawei)>
  iProduct =3D 0x0004  <K4606>
  iSerialNumber =3D 0x0007  <FFFFFFFFFFFFFFFF>
  bNumConfigurations =3D 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 =3D device_get_ivars(self);

+       printf(">>idVendor:0x%x\n", uaa->info.idVendor);
+       printf(">>idProduct:0x%x\n", uaa->info.idProduct);
+
+       if (uaa->info.idVendor !=3D 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 !=3D USB_MODE_HOST) {
                return (ENXIO);
        }
+       printf(">>u3g_probe - 2: bConfigIndex\n");
        if (uaa->info.bConfigIndex !=3D U3G_CONFIG_INDEX) {
                return (ENXIO);
        }
+       printf(">>u3g_probe - 3: bInterfaceClass\n");
        if (uaa->info.bInterfaceClass !=3D 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


--e91IfGTKCeDB3et3iPwJmwncq9tXgmkse
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - https://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBCgAGBQJSnbJDAAoJEBHEgofFk7N65bAH/3Z5rRM7cUDs1MLBJ/7UeS2A
LeLS9tMWnIpDvM7EAmb/iYuqMgoy+MVnoLj0997karPQ0I9vax4gAKTaih2e5qe2
a06CRNzmJ5Eyzv4SBSpYAHJdk+pfQx4vPcuZS2A7ONt/mncMX059Au3y6dHdDb4V
MBau97BA2+UWBX8vNX5hPSMeY4FuaukHnDuD3fwmzuLCYarTmJTopuakL8Ng9GLT
YEVjgKGN9oWT6KQXKx3iyUqroWODhKUdYcgoVX3CpsHCfa2gic+D2EhkJ765EVXe
Wf5bLjW95/bCOCmHrTHPKaxwAgssYqgc9ixlGc0uWvsd2M3XFTuYNvvw4cceNfc=
=Lg1g
-----END PGP SIGNATURE-----

--e91IfGTKCeDB3et3iPwJmwncq9tXgmkse--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?529DB241.7030203>