Huawei E220 3G devices

Joao Barros joao.barros at gmail.com
Wed Feb 14 16:37:44 UTC 2007


On 2/5/07, Jes <argonaut at vodafone.es> wrote:
> Hi Volker:
>
> I've got the usbctl printouts. First the 'dmesg':
>
>
>
> ucom0: HUAWEI Technologies HUAWEI Mobile, rev 1.10/0.00, addr 2
> ucom0: Could not find interrupt in
> device_attach: ucom0 attach returned 6
> ucom0: HUAWEI Technologies HUAWEI Mobile, rev 1.10/0.00, addr 2
> ucom0: Could not find interrupt in
> device_attach: ucom0 attach returned 6
>
>
> usbctl -f /dev/usb0
>
> USB device 1: 9
> USB device 2: 0
> 2 USB devices found
> DEVICE addr 1
> DEVICE descriptor:
> bLength=18 bDescriptorType=device(1) bcdUSB=1.00 bDeviceClass=9
> bDeviceSubClass=0 bDeviceProtocol=0 bMaxPacketSize=64 idVendor=0x0000
> idProduct=0x0000 bcdDevice=100 iManufacturer=1(Intel) iProduct=2(UHCI
> root hub) iSerialNumber=0() bNumConfigurations=1
>
> CONFIGURATION descriptor 0:
> bLength=9 bDescriptorType=config(2) wTotalLength=25 bNumInterface=1
> bConfigurationValue=1 iConfiguration=0() bmAttributes=40 bMaxPower=0 mA
>
> INTERFACE descriptor 0:
> bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0
> bAlternateSetting=0 bNumEndpoints=1 bInterfaceClass=9
> bInterfaceSubClass=0 bInterfaceProtocol=0 iInterface=0()
>
> ENDPOINT descriptor:
> bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=1-in
> bmAttributes=interrupt wMaxPacketSize=8 bInterval=255
>
> current configuration 1
>
> HUB descriptor:
> bDescLength=9 bDescriptorType=41 bNbrPorts=2 wHubCharacteristics=0a
> bPwrOn2PwrGood=50 bHubContrCurrent=0 DeviceRemovable=0
>
> Hub status 0000 0000
>
> Port 1 status=0103 change=0000
>
> Port 2 status=0100 change=0000
>
> ----------
> DEVICE addr 2
> DEVICE descriptor:
> bLength=18 bDescriptorType=device(1) bcdUSB=1.10 bDeviceClass=0
> bDeviceSubClass=0 bDeviceProtocol=0 bMaxPacketSize=64 idVendor=0x12d1
> idProduct=0x1003 bcdDevice=0 iManufacturer=1(\u0c05¤)
> iProduct=2(\u0c05¤) iSerialNumber=0() bNumConfigurations=1
>
> CONFIGURATION descriptor 0:
> bLength=9 bDescriptorType=config(2) wTotalLength=32 bNumInterface=1
> bConfigurationValue=1 iConfiguration=0() bmAttributes=a0 bMaxPower=500
> mA
>
> INTERFACE descriptor 0:
> bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0
> bAlternateSetting=0 bNumEndpoints=2 bInterfaceClass=8
> bInterfaceSubClass=6 bInterfaceProtocol=80 iInterface=0()
>
> ENDPOINT descriptor:
> bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=3-in
> bmAttributes=bulk wMaxPacketSize=64 bInterval=0
>
> ENDPOINT descriptor:
> bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=4-out
> bmAttributes=bulk wMaxPacketSize=64 bInterval=0
>
> current configuration 1
>
> ----------
>
>
>
>
> usbctl -f /dev/usb1
>
>
> USB device 1: 9
> 1 USB devices found
> DEVICE addr 1
> DEVICE descriptor:
> bLength=18 bDescriptorType=device(1) bcdUSB=1.00 bDeviceClass=9
> bDeviceSubClass=0 bDeviceProtocol=0 bMaxPacketSize=64 idVendor=0x0000
> idProduct=0x0000 bcdDevice=100 iManufacturer=1(Intel) iProduct=2(UHCI
> root hub) iSerialNumber=0() bNumConfigurations=1
>
> CONFIGURATION descriptor 0:
> bLength=9 bDescriptorType=config(2) wTotalLength=25 bNumInterface=1
> bConfigurationValue=1 iConfiguration=0() bmAttributes=40 bMaxPower=0 mA
>
> INTERFACE descriptor 0:
> bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0
> bAlternateSetting=0 bNumEndpoints=1 bInterfaceClass=9
> bInterfaceSubClass=0 bInterfaceProtocol=0 iInterface=0()
>
> ENDPOINT descriptor:
> bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=1-in
> bmAttributes=interrupt wMaxPacketSize=8 bInterval=255
>
> current configuration 1
>
> HUB descriptor:
> bDescLength=9 bDescriptorType=41 bNbrPorts=2 wHubCharacteristics=0a
> bPwrOn2PwrGood=50 bHubContrCurrent=0 DeviceRemovable=0
>
> Hub status 0000 0000
>
> Port 1 status=0100 change=0000
>
> Port 2 status=0100 change=0000
>
> ----------
>
>
>
>
>
> usbctl -f /dev/usb2
>
> USB device 1: 9
> 1 USB devices found
> DEVICE addr 1
> DEVICE descriptor:
> bLength=18 bDescriptorType=device(1) bcdUSB=1.00 bDeviceClass=9
> bDeviceSubClass=0 bDeviceProtocol=0 bMaxPacketSize=64 idVendor=0x0000
> idProduct=0x0000 bcdDevice=100 iManufacturer=1(Intel) iProduct=2(UHCI
> root hub) iSerialNumber=0() bNumConfigurations=1
>
> CONFIGURATION descriptor 0:
> bLength=9 bDescriptorType=config(2) wTotalLength=25 bNumInterface=1
> bConfigurationValue=1 iConfiguration=0() bmAttributes=40 bMaxPower=0 mA
>
> INTERFACE descriptor 0:
> bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0
> bAlternateSetting=0 bNumEndpoints=1 bInterfaceClass=9
> bInterfaceSubClass=0 bInterfaceProtocol=0 iInterface=0()
>
> ENDPOINT descriptor:
> bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=1-in
> bmAttributes=interrupt wMaxPacketSize=8 bInterval=255
>
> current configuration 1
>
> HUB descriptor:
> bDescLength=9 bDescriptorType=41 bNbrPorts=2 wHubCharacteristics=0a
> bPwrOn2PwrGood=50 bHubContrCurrent=0 DeviceRemovable=0
>
> Hub status 0000 0000
>
> Port 1 status=0100 change=0000
>
> Port 2 status=0100 change=0000
>
> ----------
>
>
>
>
>
> usbctl -f /dev/usb3
>
>
> USB device 1: 9
> 1 USB devices found
> DEVICE addr 1
> DEVICE descriptor:
> bLength=18 bDescriptorType=device(1) bcdUSB=2.00 bDeviceClass=9
> bDeviceSubClass=0 bDeviceProtocol=1 bMaxPacketSize=64 idVendor=0x0000
> idProduct=0x0000 bcdDevice=100 iManufacturer=1(Intel) iProduct=2(EHCI
> root hub) iSerialNumber=0() bNumConfigurations=1
>
> CONFIGURATION descriptor 0:
> bLength=9 bDescriptorType=config(2) wTotalLength=25 bNumInterface=1
> bConfigurationValue=1 iConfiguration=0() bmAttributes=40 bMaxPower=0 mA
>
> INTERFACE descriptor 0:
> bLength=9 bDescriptorType=interface(4) bInterfaceNumber=0
> bAlternateSetting=0 bNumEndpoints=1 bInterfaceClass=9
> bInterfaceSubClass=0 bInterfaceProtocol=0 iInterface=0()
>
> ENDPOINT descriptor:
> bLength=7 bDescriptorType=endpoint(5) bEndpointAddress=1-in
> bmAttributes=interrupt wMaxPacketSize=8 bInterval=255
>
> current configuration 1
>
> HUB descriptor:
> bDescLength=11 bDescriptorType=41 bNbrPorts=8 wHubCharacteristics=80
> bPwrOn2PwrGood=200 bHubContrCurrent=0 DeviceRemovable=0
>
> Hub status 0000 0000
>
> Port 1 status=0500 change=0000
>
> Port 2 status=0500 change=0000
>
> Port 3 status=0500 change=0000
>
> Port 4 status=0500 change=0000
>
> Port 5 status=0500 change=0000
>
> Port 6 status=0500 change=0000
>
> Port 7 status=0500 change=0000
>
> Port 8 status=0500 change=0000
>
> ----------
>
>
>
>
>
> Thanks in advance,
>
>
> Jes
>
>
>
>
>
>
>
>
>
>
>
>
>
> On Fri, 19 Jan 2007 15:25:33 +0100
> Volker <volker at vwsoft.com> wrote:
>
> > Jes,
> >
> > sorry for the huge delay in respone... apologies
> >
> > On 12/18/06 17:00, Jes wrote:
> > > Hi:
> > >
> > > I have not such 'usbctl'... What is 'usbctl'? only 'usbdevs' and
> > > usbhidctl... and this, usbhidctl, is not very useful I guess...
> > > so... I put /var/log/messages and 'usbdevs'. Note that I haven't
> > > 'usbmass' in my kernel; it's compiled as a module and not loaded.
> > > Then the huawei modem cannot be interpreted as a mass-storage
> > > devices.... can it?
> >
> > usbctl is part of a package called usbutil.
> >
> > You may download a package from the website of Bernd Walter:
> > http://www.cosmo-project.de/~bernd/usbutil.tgz
> >
> > However, I don't why such a great tool isn't part of the ports tree
> > (obsd + nbsd do have it in the tree).
> >
> > usbctl shows the interfaces and endpoints of a usb device. You may
> > find a sample output of usbctl at
> > http://bsd.vwsoft.com/3g/merlin_u740.html
> >
> > I would like to see the same output for the Huawei devices. I guess
> > they have different interfaces and the first driver attaching to
> > _and_ interface wins the whole device as the driver might return
> > with UMATCH_DEVCLASS*, UMATCH_VENDOR* or similar.
> >
> > Greetings,
> >
> > Volker
> >

Hi all,

Sorry for my late coment on this, but after getting a new Macbook Pro
I got distracted ;)
In December I was looking into this and (I'm talking out of my head
now) after I patched ubsa with this device IDs I got it to be
detected, although it only connects to one of the two serial devices
present, the modem one I think. From what I recall I was able to
register the device to the network by sending the PIN command through
the modem port but after using a software usb sniffer in windows I
noticed that this command and others (network status maybe) are sent
using the 2nd serial port.
If this is correct, the PIN command can be sent through the normal
dialup script, with a pause before the dialing attempt to let the
device register. Of course after the device is registered this is
unnecessary and time consuming.
I'm thinking of doing a small daemon where you just need to configure
the 2nd serial port and the PIN and it takes cares of registering the
device on the network, monitor network status, signal strength,etc.
The Vodafone OSX driver+App does this, contrary to the "I'm on/off"
Windows App so if anyone knows a USB data software sniffer for OSX I
could get the reverse engineer the commands .
Of course, this will only work if the 2nd serial port gets usable in FreeBSD.
This small app can then be used to drive more 3G cards which I guess
some people would welcome :)


-- 
Joao Barros


More information about the freebsd-usb mailing list