Alcatel X220L 3G Modem
Mike Barnard
mike.barnardq at gmail.com
Mon Oct 4 16:16:31 UTC 2010
On Mon, Oct 4, 2010 at 1:23 PM, Hans Petter Selasky <hselasky at c2i.net>wrote:
> On Monday 04 October 2010 10:52:06 Mike Barnard wrote:
> > Hi,
> >
> > I have myself an Alcatel X220L HSPA modem that is not detected under
> > FreeBSD 8.1-RC1. When plugged in, get this:
>
> Look at the u3g driver. Maybe you need to add the idVendor and idProduct
> there, and an autoinstall quirk.
>
>
I have patched up u3g.c and usbdevs and I get the same dump as in my first
email when I plug in the device.
root at trinity# diff -u usbdevs.original usbdevs
--- usbdevs.original 2010-06-14 17:00:13.000000000 +0300
+++ usbdevs 2010-10-04 18:22:53.000000000 +0300
@@ -576,6 +576,7 @@
vendor SIEMENS3 0x11f5 Siemens
vendor PROLIFIC2 0x11f6 Prolific
vendor ALCATEL 0x11f7 Alcatel
+vendor ALCATEL3G 0x1bbb Alcatel USBModem
vendor UNKNOWN3 0x1233 Unknown vendor
vendor TSUNAMI 0x1241 Tsunami
vendor PHEENET 0x124a Pheenet
@@ -876,6 +877,9 @@
/* AKS products */
product AKS USBHASP 0x0001 USB-HASP 0.06
+/* Alcatel Lucent Products */
+product ALCATEL X220L 0xf000 HSPA Modem
+
/* Alcor Micro, Inc. products */
product ALCOR2 KBD_HUB 0x2802 Kbd Hub
and u3g diffs look like this:
root at trinity# diff -u u3g.c.original u3g.c
--- u3g.c.original 2010-06-14 17:00:12.000000000 +0300
+++ u3g.c 2010-10-04 19:13:44.000000000 +0300
@@ -93,6 +93,7 @@
#define U3GINIT_WAIT 7 /* Device reappears after a
delay */
#define U3GINIT_SAEL_M460 8 /* Requires vendor init */
#define U3GINIT_HUAWEISCSI 9 /* Requires Huawei SCSI init
command */
+#define U3GINIT_ALCATEL 10 /* Requires Alcatel init
command */
enum {
U3G_BULK_WR,
@@ -184,6 +185,7 @@
U3G_DEV(ACERP, H10, 0),
U3G_DEV(AIRPLUS, MCD650, 0),
U3G_DEV(AIRPRIME, PC5220, 0),
+ U3G_DEV(ALCATEL, X220L, U3GINIT_ALCATEL),
U3G_DEV(ALINK, 3G, 0),
U3G_DEV(ALINK, 3GU, 0),
U3G_DEV(ALINK, DWM652U5, 0),
@@ -542,6 +544,24 @@
return (0);
}
+static int
+u3g_alcatel_init(struct usb_device *udev)
+{
+ struct usb_device_request req;
+
+ req.bmRequestType = UT_WRITE_DEVICE;
+ req.bRequest = UR_SET_FEATURE;
+ USETW(req.wValue, UF_DEVICE_REMOTE_WAKEUP);
+ USETW(req.wIndex, UHF_PORT_SUSPEND);
+ USETW(req.wLength, 0);
+
+ if (usbd_do_request_flags(udev, NULL, &req,
+ NULL, 0, NULL, USB_MS_HZ)) {
+ /* ignore any errors */
+ }
+ return (0);
+}
+
static void
u3g_sael_m460_init(struct usb_device *udev)
{
@@ -655,6 +675,12 @@
case U3GINIT_HUAWEISCSI:
error = usb_msc_eject(udev, 0, MSC_EJECT_HUAWEI);
break;
+ case U3GINIT_ALCATEL:
+ error = u3g_alcatel_init(udev);
+ break;
+ case U3GINIT_ALCATELSCSI:
+ error = usb_msc_eject(udev, 0, MSC_EJECT_ALCATEL);
+ break;
case U3GINIT_SCSIEJECT:
error = usb_msc_eject(udev, 0, MSC_EJECT_STOPUNIT);
break;
I may have done something wrong... any pointers are most welcome
--
Mike
Of course, you might discount this possibility, but remember that one in
a million chances happen 99% of the time.
------------------------------------------------------------
More information about the freebsd-usb
mailing list