The mobile broadband become a key item in making our lives eazy these days
But still most of Huawei Usb modems that are distributed with both dialog and Mobitel are not working on linux distributions
The following procedure is fully working with fedora 11
For device identification in fedora you may notice the file
/dev/ttyUSBn
n=0,1,2,3,---------------
should be created .
once u plugin the device try
[kasun@localhost ~]$ dmesg
then find Quote like following
usb 2-1: new high speed USB device using ehci_hcd and address 3 usb 2-1: New USB device found, idVendor=12d1, idProduct=1446 usb 2-1: New USB device strings: Mfr=2, Product=1, SerialNumber=0 usb 2-1: Product: HUAWEI Mobile usb 2-1: Manufacturer: HUAWEI Technology
The device is not selecting as high speed device of modem on ur first plugin
So u have to assign device binaries to identify as a USB modem
for that u may use modswitch
You may install usb_modeswitch.rpm
#content of /etc/usb_modeswitch.conf DefaultVendor = 0x12d1 DefaultProduct = 0x1446 MessageEndpoint = 0x01 MessageContent = "55534243000000000000000000000011060000000000000000000000000000"
SUBSYSTEM=="usb", ATTRS{idProduct}=="1446", ATTRS{idVendor}=="12d1", \ RUN+="/usr/bin/usb_modeswitch -c /etc/usb_modeswitch.conf"
/usr/share/hal/fdi/preprobe/20thirdparty/10-huawei-e1550.fdi
true true
And apply the following patch
e1550 patch
Following patch is found in the bugzilla so its correct
--- linux-2.6.27.37.orig/drivers/usb/storage/initializers.c 2009-10-12 20:40:01.000000000 +0200 +++ linux-2.6.27.37/drivers/usb/storage/initializers.c 2009-10-18 18:55:43.000000000 +0200 @@ -95,6 +95,7 @@ { int result; + printk("%s\n", __FUNCTION__); us->iobuf[0] = 0x1; result = usb_stor_control_msg(us, us->send_ctrl_pipe, USB_REQ_SET_FEATURE, @@ -103,3 +104,23 @@ US_DEBUGP("usb_control_msg performing result is %d\n", result); return (result ? 0 : -1); } + +/* This transmogrifies the HUAWEI E1550 3G modem to a E620 3g modem */ +int usb_stor_huawei_e1550_init(struct us_data *us) +{ + int result = 0; + static char init_string[] = + "\x55\x53\x42\x43\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x11" + "\x06\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00"; + + printk("%s\n", __FUNCTION__); + memcpy(us->iobuf, init_string, sizeof(init_string) - 1); + result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, + us->iobuf, + sizeof(init_string) - 1, + NULL); + US_DEBUGP("usb_stor_bulk_transfer_buf result is %d\n", result); + return (result ? -1 : 0); +} --- linux-2.6.27.37.orig/drivers/usb/storage/initializers.h 2009-10-12 20:40:01.000000000 +0200 +++ linux-2.6.27.37/drivers/usb/storage/initializers.h 2009-10-17 22:56:21.000000000 +0200 @@ -48,3 +48,6 @@ /* This places the HUAWEI E220 devices in multi-port mode */ int usb_stor_huawei_e220_init(struct us_data *us); + +/* This transmogrifies the HUAWEI E1550 3G modem to a E620 3g modem */ +int usb_stor_huawei_e1550_init(struct us_data *us); --- linux-2.6.27.37.orig/drivers/usb/storage/unusual_devs.h 2009-10-12 20:40:01.000000000 +0200 +++ linux-2.6.27.37/drivers/usb/storage/unusual_devs.h 2009-10-18 14:05:51.000000000 +0200 @@ -2004,6 +2004,11 @@ "Mass Storage", US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, 0), +UNUSUAL_DEV( 0x12d1, 0x1446, 0x0000, 0x0000, + "HUAWEI Mobile", + "Mass Storage", + US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e1550_init, + 0), /* Reported by Vilius Bilinkevicius
The following procedure is 100% working